/**
  *
  * @param \Core_Dto_Search $dto
  * @return \Doctrine\DBAL\Query\QueryBuilder
  */
 public function listGrid(\Core_Dto_Search $dto)
 {
     $rsm = new \Doctrine\ORM\Query\ResultSetMapping();
     $rsm->addScalarResult('total_record', 'totalRecord', 'integer');
     $rsm->addScalarResult('sq_artefato', 'sqArtefato', 'integer');
     $rsm->addScalarResult('digital_numero', 'digitalNumero', 'string');
     $rsm->addScalarResult('dt_arquivamento', 'dtArquivamento', 'zenddate');
     $rsm->addScalarResult('no_pessoa_arquivamento', 'noPessoaArquivamento', 'string');
     $rsm->addScalarResult('tx_assunto', 'txAssunto', 'string');
     $rsm->addScalarResult('no_tipo_documento', 'noTipoDocumento', 'string');
     $rsm->addScalarResult('no_pessoa_origem', 'noPessoaOrigem', 'string');
     $caseNuDigital = "sgdoce.formata_numero_digital(a.nu_digital)";
     $sql = "\n               SELECT DISTINCT\n                      COUNT(a.sq_artefato) OVER() AS total_record\n                      ,a.sq_artefato\n                      ,COALESCE({$caseNuDigital}, formata_numero_artefato(a.nu_artefato,ap.co_ambito_processo)) AS digital_numero\n                      ,dt_arquivamento\n                      ,p.no_pessoa as no_pessoa_arquivamento\n                      ,ass.tx_assunto\n                      ,td.no_tipo_documento\n                      ,ps.no_pessoa AS no_pessoa_origem\n                 FROM artefato_arquivo_setorial aas\n                 JOIN vw_pessoa p ON aas.sq_pessoa_arquivamento = p.sq_pessoa\n                 JOIN artefato a USING(sq_artefato)\n                 JOIN sgdoce.tipo_artefato_assunto taa USING(sq_tipo_artefato_assunto)\n                 JOIN sgdoce.assunto ass ON ass.sq_assunto = taa.sq_assunto\n                 JOIN sgdoce.pessoa_artefato pa ON pa.sq_artefato = a.sq_artefato and pa.sq_pessoa_funcao = %1\$d\n                 JOIN sgdoce.pessoa_sgdoce ps ON ps.sq_pessoa_sgdoce = pa.sq_pessoa_sgdoce\n            LEFT JOIN artefato_processo ap ON a.sq_artefato = ap.sq_artefato\n            LEFT JOIN tipo_documento td USING(sq_tipo_documento)\n                WHERE dt_desarquivamento IS NULL\n                  AND sq_unidade_arquivamento = %2\$d\n                  AND sq_tipo_artefato = %3\$d\n                  %4\$s\n             ORDER BY dt_arquivamento DESC";
     $optionalCondition = '';
     $search = mb_strtolower($dto->getSearch(), 'UTF-8');
     if ($search) {
         $queryBuild = $this->_em->createQueryBuilder();
         if ($dto->getSqTipoArtefato() == \Core_Configuration::getSgdoceTipoArtefatoProcesso()) {
             $nuArtefato = $this->_em->createQueryBuilder()->expr()->lower("TRANSLATE(a.nu_artefato, './-', '')")->__toString();
             $optionalCondition = " AND (" . $queryBuild->expr()->eq('a.nu_artefato', $queryBuild->expr()->literal($search))->__toString() . " OR " . $queryBuild->expr()->eq($nuArtefato, $queryBuild->expr()->literal(str_replace(array('.', '/', '-'), '', $search)))->__toString() . ")";
         } else {
             $optionalCondition = " AND " . $queryBuild->expr()->eq('a.nu_digital', $search)->__toString();
         }
     }
     $strSql = sprintf($sql, \Core_Configuration::getSgdocePessoaFuncaoOrigem(), \Core_Integration_Sica_User::getUserUnit(), $dto->getSqTipoArtefato(), $optionalCondition);
     return $this->_em->createNativeQuery($strSql, $rsm)->useResultCache(false);
 }
Ejemplo n.º 2
0
 /**
  * Listagem de artefatos de migração inconsistentes.
  *
  * @param \Core_Dto_Abstract $dto
  * @return \Doctrine\ORM\QueryBuilder
  */
 public function listGridArtefatosInconsistentes(\Core_Dto_Search $dto)
 {
     $rsm = new \Doctrine\ORM\Query\ResultSetMapping();
     $rsm->addScalarResult('total_record', 'totalRecord', 'integer');
     $rsm->addScalarResult('sq_artefato', 'sqArtefato', 'integer');
     $rsm->addScalarResult('nu_digital', 'nuDigital', 'string');
     $rsm->addScalarResult('nu_artefato', 'nuArtefato', 'string');
     $rsm->addScalarResult('dt_cadastro', 'dtCadastro', 'zenddate');
     $not = "NOT";
     $proc = "LEFT";
     if ($dto->sqTipoArtefato == \Core_Configuration::getSgdoceTipoArtefatoProcesso()) {
         $not = "";
         $proc = "";
     }
     $sql = 'SELECT COUNT(sq_artefato) OVER() AS total_record, *
               FROM  (
                         SELECT a.sq_artefato,
                                LPAD(CAST(a.nu_digital AS VARCHAR), 7, \'0\') AS nu_digital,
                                a.dt_cadastro,
                                sgdoce.formata_numero_artefato(a.nu_artefato, ap.co_ambito_processo ) as nu_artefato
                           FROM sgdoce.artefato a
                      LEFT JOIN sgdoce.tramite_artefato ta using(sq_artefato)
                 ' . $proc . ' JOIN sgdoce.artefato_processo ap ON a.sq_artefato = ap.sq_artefato
                          WHERE a.st_migracao
                            AND a.nu_digital IS ' . $not . ' NULL
                            AND a.ar_inconsistencia IS NOT NULL
                            AND FALSE = ANY(a.ar_inconsistencia)
                            AND ta.st_ultimo_tramite
                            AND ta.sq_pessoa_destino IS NULL
                            %1$s
                     ) AS totalizador
           ORDER BY nu_digital, nu_artefato NULLS LAST';
     $optionalCondition = '';
     $search = mb_strtolower($dto->getSearch(), 'UTF-8');
     if ($search) {
         $queryBuild = $this->_em->createQueryBuilder();
         if ($dto->sqTipoArtefato == \Core_Configuration::getSgdoceTipoArtefatoProcesso()) {
             $nuArtefato = $this->_em->createQueryBuilder()->expr()->lower("TRANSLATE(a.nu_artefato, './-', '')")->__toString();
             $optionalCondition = " AND (" . $queryBuild->expr()->eq('a.nu_artefato', $queryBuild->expr()->literal($search))->__toString() . " OR " . $queryBuild->expr()->eq($nuArtefato, $queryBuild->expr()->literal(str_replace(array('.', '/', '-'), '', $search)))->__toString() . ")";
         } else {
             $optionalCondition = " AND " . $queryBuild->expr()->eq('a.nu_digital', $search)->__toString();
         }
     }
     $query = $this->_em->createNativeQuery(sprintf($sql, $optionalCondition), $rsm);
     $query->setParameter('sqUnidadeOrg', \Core_Integration_Sica_User::getUserUnit())->useResultCache(false);
     return $query;
 }
Ejemplo n.º 3
0
 /**
  * método que retorna dados para grid da área de trabalho
  * @param \Core_Dto_Abstract $dto
  * @return \Doctrine\ORM\QueryBuilder
  */
 public function listGridAreaTrabalho(\Core_Dto_Search $dto)
 {
     $search = mb_strtolower($dto->getSearch(), 'UTF-8');
     /*
      *  se $search is numeric "is_numeric($search)" // procura nas colunas numericas (nuDigital, nuArtefato)
      *
      * caso contrario procura em todas as colunas com "OR"
      *
      */
     $subQuery = $this->_em->createQueryBuilder()->select('max(hh.sqHistoricoArtefato)')->from('app:HistoricoArtefato', 'hh')->where('hh.sqArtefato = hia.sqArtefato');
     $queryBuilder = $this->_em->createQueryBuilder();
     $query = $queryBuilder->select('a.sqArtefato', 'IDENTITY(a.nuDigital) as nuDigital', 'a.nuArtefato', 'a.dtArtefato', 'td.noTipoDocumento as tipo', 'td.inAbreProcesso', 'ass.txAssunto as assunto', 'ps.noPessoa as origem')->distinct('a.sqArtefato')->from('app:Artefato', 'a')->innerJoin('a.sqHistoricoArtefato', 'hia')->leftJoin('a.sqTipoDocumento', 'td')->innerJoin('a.sqTipoArtefatoAssunto', 'tas')->innerJoin('tas.sqAssunto', 'ass')->innerJoin('a.sqPessoaArtefato', 'pa', 'WITH', 'pa.sqPessoaFuncao = :sqPessoaFuncao')->innerJoin('pa.sqPessoaSgdoce', 'ps', 'WITH')->andWhere('tas.sqTipoArtefato = :sqTipoArtefato')->andWhere('hia.sqPessoa = :sqPessoa')->andWhere('hia.sqHistoricoArtefato = (' . $subQuery->getDQL() . ')')->setParameter('sqPessoa', $dto->sqPessoa)->setParameter('sqTipoArtefato', $dto->sqTipoArtefato)->setParameter('sqPessoaFuncao', \Core_Configuration::getSgdocePessoaFuncaoOrigem())->orderBy('a.sqArtefato');
     //        if($search){
     //            $nuArtefato = $queryBuilder->expr()
     //            ->lower($queryBuilder->expr()->trim('a.nuArtefato'));
     //
     //            if (is_numeric($search)) {
     //                $query->orWhere('a.nuDigital = :search');
     //
     //
     //                $query->orWhere($queryBuilder->expr()->like(
     //                            'clear_accentuation(' . $nuArtefato .')',
     //                            $queryBuilder->expr()
     //                                ->literal($this->removeAccent('%' . $search . '%'))
     //                        )
     //                    );
     //            }else{
     //
     //            }
     //            $query->setParameter('search', $search);
     //        }
     return $query;
 }