EvaldoMaciel

Dataset que consulta CSV com muitas linhas (Fluig)

Dec 6th, 2019
197
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function createDataset(fields, constraints, sortFields) {
  2.     var codigoDocumento = null;
  3.  
  4.     for (var i = 0; i < constraints.length; i++) {
  5.         if (constraints[i].fieldName == "codigoDocumento") {
  6.             codigoDocumento = constraints[i].initialValue;
  7.         }
  8.     }
  9.  
  10.     var dataset = DatasetBuilder.newDataset();
  11.     dataset.addColumn('codigoDocumento');
  12.     dataset.addColumn('TIPO_REGISTRO');
  13.     dataset.addColumn('COD_EMPRESA');
  14.  
  15.     if (codigoDocumento == null) {
  16.         dataset.addRow(new Array("codigo do documento é null"));
  17.     } else {
  18.         try {
  19.             var dto = docAPI.getDocumentVersion(parseInt(codigoDocumento), 1000);
  20.             var documentProvider = ServiceManager.getServiceInstance('ECMDocumentService');
  21.             var serviceLocator = documentProvider.instantiate('com.totvs.technology.ecm.dm.ws.ECMDocumentServiceService');
  22.             var documentService = serviceLocator.getDocumentServicePort();
  23.  
  24.             // Chama o dataset que usuário e senha do fluig (mais prático)
  25.             var connector = DatasetFactory.getDataset('dsConnector', null, null, null);
  26.  
  27.             var result = documentService.getDocumentContent(
  28.                 connector.getValue(0, 'fUser'),
  29.                 connector.getValue(0, 'fSenha'),
  30.                 1,
  31.                 parseInt(dto.getDocumentId()),
  32.                 getValue('WKUser'),
  33.                 1000,
  34.                 dto.getPhisicalFile()
  35.             );
  36.  
  37.             for (var i = 0; i < result.length; ++i) {
  38.                 if (i == 0) {
  39.                     objetoRecebido = new Array(0);
  40.                 }
  41.                 novoResult += (String.fromCharCode(result[i]));
  42.                 if (result[i] == 10) {
  43.                     var dadosDataset = adicionaPrevs(novoResult);
  44.                     dataset.addRow(new Array(codigoDocumento,
  45.                         dadosDataset[0].TIPO_REGISTRO,
  46.                         dadosDataset[0].COD_EMPRESA);
  47.                 }
  48.             }
  49.  
  50.         } catch (e) {
  51.             dataset.addRow(new Array(e.message));
  52.         }
  53.     }
  54.     return dataset;
  55.  
  56. }
  57.  
  58. /* Variáveis globais */
  59. var novoResult = "";
  60. var objetoRecebido = new Array(0);
  61.  
  62. function adicionaPrevs(data) {
  63.     objetoRecebido = new Array(0); // sempre que chama a função cria um novo objeto, dessa forma não excede o limite
  64.     if (data != undefined) {
  65.         var aLine = data.split(/\r?\n|\r/);
  66.         //aLine.splice(0, 2); // Pula primeira linha
  67.         aLine.forEach(function (element, index) {
  68.             var cols = element.split(';');
  69.             if (cols.length >= 4) {
  70.                 objetoRecebido.push(getObjPrev(cols));
  71.             }
  72.         });
  73.     } else {
  74.         // não faz nada
  75.     }
  76.     return objetoRecebido;
  77. }
  78.  
  79. function getObjPrev(colunas) {
  80.     var obj = {
  81.         TIPO_REGISTRO: colunas[0] != undefined ? colunas[0] : null,
  82.         COD_EMPRESA: colunas[1] != undefined ? colunas[1] : null
  83.     };
  84.     novoResult = ""; // aqui ele limpa a variável para não execeder o limite
  85.     return obj;
  86. }
RAW Paste Data