package br.com.centralit.citcorpore.integracao; import java.sql.Date; import java.util.ArrayList; import java.util.Collection; import java.util.List; import br.com.centralit.citcorpore.bean.FaturaDTO; import br.com.centralit.citcorpore.bean.OSDTO; import br.com.centralit.citcorpore.bean.RelatorioAcompanhamentoDTO; import br.com.centralit.citcorpore.bean.RelatorioOrdemServicoUstDTO; import br.com.centralit.citcorpore.util.CITCorporeUtil; import br.com.citframework.dto.IDto; import br.com.citframework.excecao.PersistenceException; import br.com.citframework.integracao.Condition; import br.com.citframework.integracao.CrudDaoDefaultImpl; import br.com.citframework.integracao.Field; import br.com.citframework.integracao.Order; import br.com.citframework.util.Constantes; import br.com.citframework.util.SQLConfig; @SuppressWarnings({ "unchecked", "rawtypes" }) public class OSDao extends CrudDaoDefaultImpl { public OSDao() { super(Constantes.getValue("DATABASE_ALIAS"), null); } @Override public Collection<Field> getFields() { Collection<Field> listFields = new ArrayList<>(); listFields.add(new Field("idOS", "idOS", true, true, false, false)); listFields.add(new Field("idContrato", "idContrato", false, false, false, false)); listFields.add(new Field("idClassificacaoOS", "idClassificacaoOS", false, false, false, false)); listFields.add(new Field("idServicoContrato", "idServicoContrato", false, false, false, false)); listFields.add(new Field("ano", "ano", false, false, false, false)); listFields.add(new Field("numero", "numero", false, false, false, false)); listFields.add(new Field("dataInicio", "dataInicio", false, false, false, false)); listFields.add(new Field("dataFim", "dataFim", false, false, false, false)); listFields.add(new Field("demanda", "demanda", false, false, false, false)); listFields.add(new Field("objetivo", "objetivo", false, false, false, false)); listFields.add(new Field("nomeAreaRequisitante", "nomeAreaRequisitante", false, false, false, false)); listFields.add(new Field("situacaoOS", "situacaoOS", false, false, false, false)); listFields.add(new Field("obsFinalizacao", "obsFinalizacao", false, false, false, false)); listFields.add(new Field("quantidadeGlosasAnterior", "quantidadeGlosasAnterior", false, false, false, false)); listFields.add(new Field("idOSPai", "idOSPai", false, false, false, false)); listFields.add(new Field("quantidade", "quantidade", false, false, false, false)); listFields.add(new Field("dataEmissao", "dataEmissao", false, false, false, false)); listFields.add(new Field("idgrupoassinatura", "idGrupoAssinatura", false, false, false, false)); return listFields; } @Override public String getTableName() { return this.getOwner() + "OS"; } @Override public Collection list() throws PersistenceException { return null; } @Override public Class getBean() { return OSDTO.class; } @Override public Collection find(IDto arg0) throws PersistenceException { return null; } public Collection findByIdContratoAndSituacao(Integer parm, Integer sit) throws PersistenceException { List condicao = new ArrayList(); List ordenacao = new ArrayList(); condicao.add(new Condition("idContrato", "=", parm)); condicao.add(new Condition("situacaoOS", "=", sit)); ordenacao.add(new Order("numero")); return super.findByCondition(condicao, ordenacao); } public Collection findByIdContrato(Integer parm) throws PersistenceException { List condicao = new ArrayList(); List ordenacao = new ArrayList(); condicao.add(new Condition("idContrato", "=", parm)); ordenacao.add(new Order("numero")); return super.findByCondition(condicao, ordenacao); } public void deleteByIdContrato(Integer parm) throws PersistenceException { List condicao = new ArrayList(); condicao.add(new Condition("idContrato", "=", parm)); super.deleteByCondition(condicao); } public Collection findByIdClassificacaoOS(Integer parm) throws PersistenceException { List condicao = new ArrayList(); List ordenacao = new ArrayList(); condicao.add(new Condition("idClassificacaoOS", "=", parm)); ordenacao.add(new Order("numero")); return super.findByCondition(condicao, ordenacao); } public void deleteByIdClassificacaoOS(Integer parm) throws PersistenceException { List condicao = new ArrayList(); condicao.add(new Condition("idClassificacaoOS", "=", parm)); super.deleteByCondition(condicao); } public Collection findByAno(Integer parm) throws PersistenceException { List condicao = new ArrayList(); List ordenacao = new ArrayList(); condicao.add(new Condition("ano", "=", parm)); ordenacao.add(new Order("numero")); return super.findByCondition(condicao, ordenacao); } public Collection findByIdOsPai(Integer idospai) throws PersistenceException { List condicao = new ArrayList(); List ordenacao = new ArrayList(); condicao.add(new Condition("idOSPai", "=", idospai)); ordenacao.add(new Order("numero")); return super.findByCondition(condicao, ordenacao); } public void deleteByAno(Integer parm) throws PersistenceException { List condicao = new ArrayList(); condicao.add(new Condition("ano", "=", parm)); super.deleteByCondition(condicao); } public void updateSituacao(Integer idOs, Integer situacao) throws PersistenceException { OSDTO osDTO = new OSDTO(); osDTO.setIdOS(idOs); osDTO.setSituacaoOS(situacao); super.updateNotNull(osDTO); } public void updateObsFinal(Integer idOs, String obsFinal) throws PersistenceException { OSDTO osDTO = new OSDTO(); osDTO.setIdOS(idOs); osDTO.setObsFinalizacao(obsFinal); super.updateNotNull(osDTO); } public void updateQuantidade(Integer idOs, Integer quantidade) throws PersistenceException { OSDTO osDTO = new OSDTO(); osDTO.setIdOS(idOs); osDTO.setQuantidade(quantidade); super.updateNotNull(osDTO); } @Override public void updateNotNull(IDto obj) throws PersistenceException { super.updateNotNull(obj); } public void cancelaOSFilhas(OSDTO os) throws PersistenceException { Collection<OSDTO> resp = this.retornaSeExisteOSFilha(os.getIdOS()); if((resp != null) && (resp.size() > 0)){ for (OSDTO osDto : resp) { this.updateSituacao(osDto.getIdOS(), OSDTO.CANCELADA); } } } /** * @author rodrigo.oliveira * @param idOSPai * @return * @throws Exception */ public Collection retornaSeExisteOSFilha(Integer idOSPai) throws PersistenceException { List lstParametros = new ArrayList(); String sql = "SELECT * FROM "+ this.getTableName() +" WHERE idospai = ? "; lstParametros.add(idOSPai); List lstDados = super.execSQL(sql, lstParametros.toArray()); List fields = new ArrayList(); fields.add("idOS"); return super.listConvertion(OSDTO.class, lstDados, fields); } public Collection findByIdContratoAndPeriodoAndSituacao(Integer idContrato, Date dataInicio, Date dataFim, Integer[] situacao) throws PersistenceException { List lstParametros = new ArrayList(); String sql = "SELECT idOS, O.idServicoContrato, numero, ano, O.dataInicio, O.dataFim, demanda, O.objetivo, situacaoOS, nomeServico, quantidadeGlosasAnterior, quantidade, idOSPai, "; sql = sql + " (SELECT SUM(custoAtividade) FROM ATIVIDADESOS ATVOS WHERE ATVOS.idOS = O.idOS) AS custoOS, "; sql = sql + " (SELECT SUM(glosaAtividade) FROM ATIVIDADESOS ATVOS WHERE ATVOS.idOS = O.idOS) AS glosaOS "; sql = sql + " FROM " + this.getTableName() + " O "; sql = sql + " INNER JOIN SERVICOCONTRATO SC ON SC.idServicoContrato = O.idServicoContrato "; sql = sql + " INNER JOIN SERVICO S ON S.idServico = SC.idServico "; sql = sql + "WHERE O.idServicoContrato IN (SELECT idServicoContrato FROM SERVICOCONTRATO WHERE idContrato = ?) "; lstParametros.add(idContrato); if ((situacao != null) || ((dataInicio != null) || (dataFim != null))) { if ((dataInicio != null) && (dataFim != null)) { sql = sql + "AND "; sql = sql + " (O.dataInicio BETWEEN ? AND ?) "; lstParametros.add(dataInicio); lstParametros.add(dataFim); } else { if (dataInicio != null) { sql = sql + "AND "; sql = sql + " (O.dataInicio = ?) "; lstParametros.add(dataInicio); } if (dataFim != null) { sql = sql + "AND "; sql = sql + " (O.dataFim = ?) "; lstParametros.add(dataFim); } } if (situacao != null) { sql = sql + "AND "; sql = sql + " (situacaoOS IN ("; String strSqlAux = ""; for (Integer element : situacao) { if (!strSqlAux.equalsIgnoreCase("")) { strSqlAux = strSqlAux + ","; } strSqlAux = strSqlAux + "" + element.intValue() + ""; } sql = sql + strSqlAux; sql = sql + ")) "; } } //sql += " AND IDOSPAI IS NOT NULL "; sql = sql + "ORDER BY O.dataInicio, O.dataFim, idOS "; Object[] parametros = lstParametros.toArray(); List lstDados = super.execSQL(sql, parametros); List fields = new ArrayList(); fields.add("idOS"); fields.add("idServicoContrato"); fields.add("numero"); fields.add("ano"); fields.add("dataInicio"); fields.add("dataFim"); fields.add("demanda"); fields.add("objetivo"); fields.add("situacaoOS"); fields.add("nomeServico"); fields.add("quantidadeGlosasAnterior"); fields.add("quantidade"); fields.add("idOSPai"); fields.add("custoOS"); fields.add("glosaOS"); return super.listConvertion(OSDTO.class, lstDados, fields); } public Collection findByIdContratoAndPeriodoAndSituacao(Integer idContrato, Date dataInicio, Date dataFim, Integer[] situacao, Integer idosPai) throws PersistenceException { List lstParametros = new ArrayList(); String sql = "SELECT idOS, O.idServicoContrato, numero, ano, O.dataInicio, O.dataFim, demanda, O.objetivo, situacaoOS, nomeServico, quantidadeGlosasAnterior, quantidade, idOSPai, "; sql = sql + " (SELECT SUM(custoAtividade) FROM ATIVIDADESOS ATVOS WHERE ATVOS.idOS = O.idOS) AS custoOS, "; sql = sql + " (SELECT SUM(glosaAtividade) FROM ATIVIDADESOS ATVOS WHERE ATVOS.idOS = O.idOS) AS glosaOS "; sql = sql + " FROM " + this.getTableName() + " O "; sql = sql + " INNER JOIN SERVICOCONTRATO SC ON SC.idServicoContrato = O.idServicoContrato "; sql = sql + " INNER JOIN SERVICO S ON S.idServico = SC.idServico "; sql = sql + "WHERE O.idServicoContrato IN (SELECT idServicoContrato FROM SERVICOCONTRATO WHERE idContrato = ?) "; lstParametros.add(idContrato); if ((situacao != null) || ((dataInicio != null) || (dataFim != null))) { if ((dataInicio != null) && (dataFim != null)) { sql = sql + "AND "; sql = sql + " (O.dataInicio BETWEEN ? AND ?) "; lstParametros.add(dataInicio); lstParametros.add(dataFim); } else { if (dataInicio != null) { sql = sql + "AND "; sql = sql + " (O.dataInicio = ?) "; lstParametros.add(dataInicio); } if (dataFim != null) { sql = sql + "AND "; sql = sql + " (O.dataFim = ?) "; lstParametros.add(dataFim); } } if (situacao != null) { sql = sql + "AND "; sql = sql + " (situacaoOS IN ("; String strSqlAux = ""; for (Integer element : situacao) { if (!strSqlAux.equalsIgnoreCase("")) { strSqlAux = strSqlAux + ","; } strSqlAux = strSqlAux + "" + element.intValue() + ""; } sql = sql + strSqlAux; sql = sql + ")) "; } } if (idosPai != null) { sql += " AND IDOSPAI = ? "; lstParametros.add(idosPai); } else { sql += " AND IDOSPAI IS NULL "; } sql = sql + "ORDER BY O.dataInicio, O.dataFim, idOS "; Object[] parametros = lstParametros.toArray(); List lstDados = super.execSQL(sql, parametros); List fields = new ArrayList(); fields.add("idOS"); fields.add("idServicoContrato"); fields.add("numero"); fields.add("ano"); fields.add("dataInicio"); fields.add("dataFim"); fields.add("demanda"); fields.add("objetivo"); fields.add("situacaoOS"); fields.add("nomeServico"); fields.add("quantidadeGlosasAnterior"); fields.add("quantidade"); fields.add("idOSPai"); fields.add("custoOS"); fields.add("glosaOS"); return super.listConvertion(OSDTO.class, lstDados, fields); } public Collection listOSHomologadasENaoAssociadasFatura(Integer idContrato) throws PersistenceException { List lstParametros = new ArrayList(); String sql = "SELECT idOS, O.idServicoContrato, numero, ano, O.dataInicio, O.dataFim, demanda, O.objetivo, situacaoOS, nomeServico, "; sql = sql + " (SELECT SUM(custoAtividade) FROM ATIVIDADESOS ATVOS WHERE ATVOS.idOS = O.idOS) AS custoOS, "; sql = sql + " (SELECT SUM(glosaAtividade) FROM ATIVIDADESOS ATVOS WHERE ATVOS.idOS = O.idOS) AS glosaOS "; sql = sql + " FROM " + this.getTableName() + " O "; sql = sql + " INNER JOIN SERVICOCONTRATO SC ON SC.idServicoContrato = O.idServicoContrato "; sql = sql + " INNER JOIN SERVICO S ON S.idServico = SC.idServico "; sql = sql + "WHERE O.idServicoContrato IN (SELECT idServicoContrato FROM SERVICOCONTRATO WHERE idContrato = ?) AND "; sql = sql + " idOS NOT IN (SELECT fos.idOs FROM faturaos fos JOIN fatura f ON f.idfatura = fos.idfatura WHERE f.situacaofatura <> ? AND fos.idos = idOs) AND O.situacaoOS = ? "; sql = sql + "ORDER BY O.dataInicio, O.dataFim, idOS "; lstParametros.add(idContrato); lstParametros.add(FaturaDTO.CANCELADA); lstParametros.add(OSDTO.EXECUTADA); Object[] parametros = lstParametros.toArray(); List lstDados = super.execSQL(sql, parametros); List fields = new ArrayList(); fields.add("idOS"); fields.add("idServicoContrato"); fields.add("numero"); fields.add("ano"); fields.add("dataInicio"); fields.add("dataFim"); fields.add("demanda"); fields.add("objetivo"); fields.add("situacaoOS"); fields.add("nomeServico"); fields.add("custoOS"); fields.add("glosaOS"); return super.listConvertion(OSDTO.class, lstDados, fields); } public Collection listOSAssociadasFatura(Integer idFatura) throws PersistenceException { List lstParametros = new ArrayList(); String sql = "SELECT idOS, O.idServicoContrato, numero, ano, O.dataInicio, O.dataFim, demanda, O.objetivo, situacaoOS, nomeServico, "; sql = sql + " (SELECT SUM(custoAtividade) FROM ATIVIDADESOS ATVOS WHERE ATVOS.idOS = O.idOS) AS custoOS, "; sql = sql + " (SELECT SUM(glosaAtividade) FROM ATIVIDADESOS ATVOS WHERE ATVOS.idOS = O.idOS) AS glosaOS, "; sql = sql + " (SELECT SUM(qtdeExecutada) FROM ATIVIDADESOS ATVOS WHERE ATVOS.idOS = O.idOS) AS executadoOS "; sql = sql + " FROM " + this.getTableName() + " O "; sql = sql + " INNER JOIN SERVICOCONTRATO SC ON SC.idServicoContrato = O.idServicoContrato "; sql = sql + " INNER JOIN SERVICO S ON S.idServico = SC.idServico "; sql = sql + "WHERE idOS IN (SELECT idOs FROM FaturaOS where idFatura = ?) "; sql = sql + "ORDER BY O.dataInicio, O.dataFim, idOS "; lstParametros.add(idFatura); Object[] parametros = lstParametros.toArray(); List lstDados = super.execSQL(sql, parametros); List fields = new ArrayList(); fields.add("idOS"); fields.add("idServicoContrato"); fields.add("numero"); fields.add("ano"); fields.add("dataInicio"); fields.add("dataFim"); fields.add("demanda"); fields.add("objetivo"); fields.add("situacaoOS"); fields.add("nomeServico"); fields.add("custoOS"); fields.add("glosaOS"); fields.add("executadoOS"); return super.listConvertion(OSDTO.class, lstDados, fields); } public Collection listOSByIdAtividadePeriodica(Integer idatividadeperiodica) throws PersistenceException { String sql = "SELECT os.idOS, os.idcontrato, os.idclassificacaoos, os.idservicocontrato, os.ano, os.numero, " + " os.datainicio, os.datafim, os.demanda, os.objetivo, os.nomearearequisitante, os.situacaoos, os.obsfinalizacao " + "FROM osatividadeperiodica osAtv INNER JOIN os ON os.idos = osAtv.idos WHERE osAtv.idatividadeperiodica = ?"; List lstParametros = new ArrayList(); lstParametros.add(idatividadeperiodica); Object[] parametros = lstParametros.toArray(); List lstDados = super.execSQL(sql, parametros); List listFields = new ArrayList<>(); listFields.add("idOS"); listFields.add("idContrato"); listFields.add("idClassificacaoOS"); listFields.add("idServicoContrato"); listFields.add("ano"); listFields.add("numero"); listFields.add("dataInicio"); listFields.add("dataFim"); listFields.add("demanda"); listFields.add("objetivo"); listFields.add("nomeAreaRequisitante"); listFields.add("situacaoOS"); listFields.add("obsFinalizacao"); return super.listConvertion(OSDTO.class, lstDados, listFields); } public Collection listAtividadePeridodicaByIdos(Integer idos) throws PersistenceException { String sql = "SELECT os.idOS, os.idcontrato, os.idclassificacaoos, os.idservicocontrato, os.ano, os.numero, " + " os.datainicio, os.datafim, os.demanda, os.objetivo, os.nomearearequisitante, os.situacaoos, os.obsfinalizacao, atvper.tituloAtividade, atvper.idAtividadePeriodica " + "FROM osatividadeperiodica osAtv " + "INNER JOIN os ON os.idos = osAtv.idos " + "INNER JOIN atividadeperiodica atvper on osAtv.idatividadeperiodica = atvper.idatividadeperiodica " + "WHERE os.idos = ?"; List lstParametros = new ArrayList(); lstParametros.add(idos); Object[] parametros = lstParametros.toArray(); List lstDados = super.execSQL(sql, parametros); List listFields = new ArrayList<>(); listFields.add("idOS"); listFields.add("idContrato"); listFields.add("idClassificacaoOS"); listFields.add("idServicoContrato"); listFields.add("ano"); listFields.add("numero"); listFields.add("dataInicio"); listFields.add("dataFim"); listFields.add("demanda"); listFields.add("objetivo"); listFields.add("nomeAreaRequisitante"); listFields.add("situacaoOS"); listFields.add("obsFinalizacao"); listFields.add("tituloAtividade"); listFields.add("idAtividadePeriodica"); return super.listConvertion(OSDTO.class, lstDados, listFields); } public Collection listOSByIds(Integer idContrato, Integer[] idOSs) throws PersistenceException { List lstParametros = new ArrayList(); String sql = "SELECT idOS, O.idServicoContrato, numero, ano, O.dataInicio, O.dataFim, demanda, O.objetivo, situacaoOS, nomeServico, "; sql = sql + " (SELECT SUM(custoAtividade) FROM ATIVIDADESOS ATVOS WHERE ATVOS.idOS = O.idOS) AS custoOS, "; sql = sql + " (SELECT SUM(glosaAtividade) FROM ATIVIDADESOS ATVOS WHERE ATVOS.idOS = O.idOS) AS glosaOS, "; sql = sql + " (SELECT SUM(qtdeExecutada) FROM ATIVIDADESOS ATVOS WHERE ATVOS.idOS = O.idOS) AS executadoOS "; sql = sql + " FROM " + this.getTableName() + " O "; sql = sql + " INNER JOIN SERVICOCONTRATO SC ON SC.idServicoContrato = O.idServicoContrato "; sql = sql + " INNER JOIN SERVICO S ON S.idServico = SC.idServico "; sql = sql + "WHERE O.idServicoContrato IN (SELECT idServicoContrato FROM SERVICOCONTRATO WHERE idContrato = ?) AND "; sql = sql + " idOS IN (-999"; if (idOSs != null) { for (Integer idOS : idOSs) { sql = sql + ", " + idOS; } } sql = sql + ") "; sql = sql + "ORDER BY O.dataInicio, O.dataFim, idOS "; lstParametros.add(idContrato); Object[] parametros = lstParametros.toArray(); List lstDados = super.execSQL(sql, parametros); List fields = new ArrayList(); fields.add("idOS"); fields.add("idServicoContrato"); fields.add("numero"); fields.add("ano"); fields.add("dataInicio"); fields.add("dataFim"); fields.add("demanda"); fields.add("objetivo"); fields.add("situacaoOS"); fields.add("nomeServico"); fields.add("custoOS"); fields.add("glosaOS"); fields.add("executadoOS"); return super.listConvertion(OSDTO.class, lstDados, fields); } /** * M�todo que atualiza observacao das OS's n�o homologadas * * @param observacao * @throws throws Exception */ public List<OSDTO> buscaOsEmCriacao() throws PersistenceException { List parametros = new ArrayList(); parametros.add(OSDTO.EM_CRIACAO.intValue()); // Selecionar o id das OS que est�o cria��o String sql = "SELECT idos FROM " + this.getTableName() + " WHERE situacaoos = ? "; List respOs = super.execSQL(sql, parametros.toArray()); List fields = new ArrayList(); fields.add("idOS"); List<OSDTO> listOs = super.listConvertion(OSDTO.class, respOs, fields); return listOs; } public Collection<RelatorioOrdemServicoUstDTO> listaCustoAtividadeOrdemServicoPorPeriodo(RelatorioOrdemServicoUstDTO relatorio) throws PersistenceException { StringBuilder sql = new StringBuilder(); List parametro = new ArrayList(); List listaRetornor = new ArrayList(); sql.append("select sum(tabelaAux.somacustoatividade) , tabelaAux.mes, count(tabelaAux.idtipoeventoservico), tabelaAux.nometipoeventoservico From "); sql.append("(SELECT sum(atividadesos.custoatividade) as somacustoatividade , "); if(CITCorporeUtil.SGBD_PRINCIPAL.trim().equalsIgnoreCase(SQLConfig.ORACLE)|| CITCorporeUtil.SGBD_PRINCIPAL.trim().equalsIgnoreCase(SQLConfig.POSTGRESQL)){ sql.append("EXTRACT(MONTH FROM os.datainicio) as mes ,"); }else{ sql.append("month(os.datainicio) as mes, "); } sql.append("servico.idtipoeventoservico, "); sql.append("nometipoeventoservico, "); sql.append("os.idos "); sql.append("FROM os, atividadesos, servicocontrato, servico, tipoeventoservico, contratos "); sql.append("where os.idservicocontrato = servicocontrato.idservicocontrato "); sql.append("and servicocontrato.idservico = servico.idservico "); sql.append("and contratos.idcontrato = servicocontrato.idcontrato "); sql.append("and tipoeventoservico.idtipoeventoservico = servico.idtipoeventoservico "); sql.append("and atividadesos.idos = os.idos "); if (CITCorporeUtil.SGBD_PRINCIPAL.trim().equalsIgnoreCase(SQLConfig.ORACLE)|| CITCorporeUtil.SGBD_PRINCIPAL.trim().equalsIgnoreCase(SQLConfig.POSTGRESQL)){ sql.append("AND EXTRACT(YEAR FROM os.datainicio)= ? "); }else{ sql.append("and year(os.datainicio) = ? "); } sql.append("and os.idospai is not null "); sql.append("and contratos.idcontrato = ? "); sql.append("and os.situacaoos = "+ OSDTO.EXECUTADA +" " ); if (CITCorporeUtil.SGBD_PRINCIPAL.trim().equalsIgnoreCase(SQLConfig.ORACLE)|| CITCorporeUtil.SGBD_PRINCIPAL.trim().equalsIgnoreCase(SQLConfig.POSTGRESQL)){ sql.append("GROUP BY EXTRACT(MONTH FROM OS.DATAINICIO), SERVICO.IDTIPOEVENTOSERVICO, NOMETIPOEVENTOSERVICO, OS.IDOS) TABELAAUX "); }else{ if(CITCorporeUtil.SGBD_PRINCIPAL.trim().equalsIgnoreCase(SQLConfig.SQLSERVER)){ sql.append("group by month(os.datainicio),servico.idtipoeventoservico, nometipoeventoservico, os.idos ) as tabelaAux "); }else{ sql.append("group by 2,3,4, os.idos) as tabelaAux "); } } sql.append("inner join os on tabelaAux.idos = os.idos "); if (CITCorporeUtil.SGBD_PRINCIPAL.trim().equalsIgnoreCase(SQLConfig.ORACLE)|| CITCorporeUtil.SGBD_PRINCIPAL.trim().equalsIgnoreCase(SQLConfig.POSTGRESQL)){ sql.append("GROUP BY TABELAAUX.NOMETIPOEVENTOSERVICO, TABELAAUX.MES "); }else{ if(CITCorporeUtil.SGBD_PRINCIPAL.trim().equalsIgnoreCase(SQLConfig.SQLSERVER)){ sql.append("group by tabelaAux.nometipoeventoservico , tabelaAux.mes"); }else{ sql.append("group by 2,4 "); } } parametro.add(relatorio.getAnoInteger()); parametro.add(relatorio.getIdContrato()); List list = super.execSQL(sql.toString(), parametro.toArray()); listaRetornor.add("custoAtividade"); listaRetornor.add("periodoDouble"); listaRetornor.add("quantidadePorTipoEventoServico"); listaRetornor.add("tipoEventoServico"); if ((list != null) && !list.isEmpty()) { Collection<RelatorioOrdemServicoUstDTO> listaCustoAtividadePorPeriodo = this.listConvertion(RelatorioOrdemServicoUstDTO.class, list, listaRetornor); return listaCustoAtividadePorPeriodo; } return null; } public Collection<RelatorioOrdemServicoUstDTO> listaAnos() throws PersistenceException { StringBuilder sql = new StringBuilder(); List listaRetornor = new ArrayList(); if(CITCorporeUtil.SGBD_PRINCIPAL.trim().equalsIgnoreCase(SQLConfig.ORACLE) || CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.POSTGRESQL) ) { sql.append("select distinct EXTRACT(YEAR FROM os.datainicio) from " + this.getTableName() + " order by EXTRACT(YEAR FROM os.datainicio) "); } else{ sql.append("select distinct year(os.datainicio) from " + this.getTableName() + " order by year(os.datainicio) "); } List list = super.execSQL(sql.toString(), null); listaRetornor.add("ano"); if ((list != null) && !list.isEmpty()) { Collection<RelatorioOrdemServicoUstDTO> listaCustoAtividadePorPeriodo = this.listConvertion(RelatorioOrdemServicoUstDTO.class, list, listaRetornor); return listaCustoAtividadePorPeriodo; } return null; } public Collection<RelatorioAcompanhamentoDTO> listaAcompanhamentoPorPeriodoDoContrato(RelatorioAcompanhamentoDTO relatorio) throws PersistenceException { StringBuilder sql = new StringBuilder(); List parametro = new ArrayList(); List listaRetornor = new ArrayList(); if(CITCorporeUtil.SGBD_PRINCIPAL.trim().equalsIgnoreCase(SQLConfig.ORACLE) || CITCorporeUtil.SGBD_PRINCIPAL.trim().equalsIgnoreCase(SQLConfig.POSTGRESQL) ){ sql.append("SELECT sum(atividadesos.custoatividade) , EXTRACT(MONTH FROM os.datainicio), EXTRACT(YEAR FROM os.datainicio), contratos.valorestimado , contratos.datacontrato,contratos.datafimcontrato "); }else{ sql.append("SELECT sum(atividadesos.custoatividade) , month(os.datainicio), year(os.datainicio), contratos.valorestimado , contratos.datacontrato,contratos.datafimcontrato "); } sql.append("FROM os "); sql.append("inner join atividadesos atividadesos on atividadesos.idos = os.idos "); sql.append("inner join servicocontrato servicocontrato on os.idservicocontrato = servicocontrato.idservicocontrato "); sql.append("inner join servico servico on servicocontrato.idservico = servico.idservico "); sql.append("inner join contratos contratos on contratos.idcontrato = servicocontrato.idcontrato "); sql.append("where os.idospai is not null "); sql.append("and contratos.idcontrato = ? "); sql.append("and os.situacaoos = " + OSDTO.EXECUTADA +" "); if(CITCorporeUtil.SGBD_PRINCIPAL.trim().equalsIgnoreCase(SQLConfig.ORACLE)|| CITCorporeUtil.SGBD_PRINCIPAL.trim().equalsIgnoreCase(SQLConfig.POSTGRESQL)){ sql.append("GROUP BY EXTRACT(MONTH FROM os.datainicio),EXTRACT(YEAR FROM OS.DATAINICIO),contratos.valorestimado , contratos.datacontrato,contratos.datafimcontrato "); }else{ sql.append("group by month(os.datainicio), year(os.datainicio), contratos.valorestimado , contratos.datacontrato,contratos.datafimcontrato "); } parametro.add(relatorio.getIdContrato()); List list = super.execSQL(sql.toString(), parametro.toArray()); listaRetornor.add("custoAtividade"); listaRetornor.add("numeroMesDouble"); listaRetornor.add("anoDouble"); listaRetornor.add("valorEstimadoContrato"); listaRetornor.add("dataInicioContrato"); listaRetornor.add("dataFimContrato"); if ((list != null) && !list.isEmpty()) { Collection<RelatorioAcompanhamentoDTO> listaAcompanhamentoPorPeriodoDoContrato = this.listConvertion(RelatorioAcompanhamentoDTO.class, list, listaRetornor); return listaAcompanhamentoPorPeriodoDoContrato; } return null; } }