package br.com.centralit.citgerencial.generateservices.servicos;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import br.com.centralit.citcorpore.bean.ContratoDTO;
import br.com.centralit.citcorpore.bean.ServicoContratoDTO;
import br.com.centralit.citcorpore.integracao.ContratoDao;
import br.com.centralit.citcorpore.integracao.ServicoContratoDao;
import br.com.centralit.citcorpore.integracao.SolicitacaoServicoDao;
import br.com.centralit.citcorpore.negocio.AcordoNivelServicoService;
import br.com.centralit.citcorpore.negocio.AcordoServicoContratoService;
import br.com.centralit.citcorpore.util.CITCorporeUtil;
import br.com.centralit.citcorpore.util.Enumerados.TipoDate;
import br.com.centralit.citgerencial.bean.GerencialGenerateService;
import br.com.citframework.excecao.PersistenceException;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.integracao.JdbcEngine;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.Constantes;
import br.com.citframework.util.SQLConfig;
import br.com.citframework.util.UtilDatas;
import br.com.citframework.util.UtilStrings;
/**
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
public class GenerateServiceRelatorioServicos extends GerencialGenerateService {
public List execute(HashMap parametersValues, Collection paramtersDefinition) throws ParseException {
String datainicial = (String) parametersValues.get("PARAM.dataInicial");
String datafinal = (String) parametersValues.get("PARAM.dataFinal");
Date datafim = new Date();
Date datainicio = new Date();
try {
datainicio = UtilDatas.convertStringToDate(TipoDate.DATE_DEFAULT, datainicial, super.getLanguage(paramtersDefinition));
datafim = UtilDatas.convertStringToDate(TipoDate.DATE_DEFAULT, datafinal, super.getLanguage(paramtersDefinition));
} catch (ParseException e) {
e.printStackTrace();
}
String idImportanciaNegocioStr = (String) parametersValues.get("PARAM.idImportanciaNegocio");
Integer idImportanciaNegocio = null;
try {
idImportanciaNegocio = new Integer(idImportanciaNegocioStr);
} catch (Exception e) {
e.printStackTrace();
}
// ---
String idSituacaoServicoStr = (String) parametersValues.get("PARAM.idSituacaoServico");
Integer idSituacaoServico = null;
try {
idSituacaoServico = new Integer(idSituacaoServicoStr);
} catch (Exception e) {
e.printStackTrace();
}
// ---
String idTipoServicoStr = (String) parametersValues.get("PARAM.idTipoServico");
Integer idTipoServico = null;
try {
idTipoServico = new Integer(idTipoServicoStr);
} catch (Exception e) {
e.printStackTrace();
}
// ---
String idCategoriaServicoStr = (String) parametersValues.get("PARAM.idCategoriaServico");
Integer idCategoriaServico = null;
try {
idCategoriaServico = new Integer(idCategoriaServicoStr);
} catch (Exception e) {
e.printStackTrace();
}
// ---
List parametros = new ArrayList();
String sql = "Select nomesituacaoservico, nomeservico, detalheservico, s.datainicio, nometiposervico, nomeimportancianegocio, nomeCategoriaServico, s.idservico from servico s inner join tiposervico ts on ts.idtiposervico = s.idtiposervico ";
sql += "left join importancianegocio inn on inn.idimportancianegocio = s.idimportancianegocio ";
sql += "inner join situacaoservico ss on ss.idsituacaoservico = s.idsituacaoservico ";
sql += "inner join categoriaservico cs on cs.idCategoriaServico = s.idCategoriaServico ";
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql += ("where to_char(s.datainicio, 'YYYY-MM-DD') BETWEEN ? AND ? ");
String dataInicialDate = UtilDatas.convertDateToString(TipoDate.FORMAT_DATABASE, datainicio, super.getLanguage(paramtersDefinition));
String dataFinalDate = UtilDatas.convertDateToString(TipoDate.FORMAT_DATABASE, datafim, super.getLanguage(paramtersDefinition));
parametros.add(dataInicialDate);
parametros.add(dataFinalDate);
} else {
sql += "where s.datainicio between ? and ? ";
parametros.add(UtilDatas.convertStringToSQLDate(TipoDate.DATE_DEFAULT, datainicial, super.getLanguage(paramtersDefinition)));
parametros.add(UtilDatas.convertStringToSQLDate(TipoDate.DATE_DEFAULT, datafinal, super.getLanguage(paramtersDefinition)));
}
if (idImportanciaNegocio != null && idImportanciaNegocio.intValue() != -1) {
sql += "AND s.idimportancianegocio = ? ";
parametros.add(idImportanciaNegocio);
}
if (idSituacaoServico != null && idSituacaoServico.intValue() != -1) {
sql += "AND s.idsituacaoservico = ? ";
parametros.add(idSituacaoServico);
}
if (idTipoServico != null && idTipoServico.intValue() != -1) {
sql += "AND s.idtiposervico = ? ";
parametros.add(idTipoServico);
}
if (idCategoriaServico != null && idCategoriaServico.intValue() != -1) {
sql += "AND s.idCategoriaServico = ? ";
parametros.add(idCategoriaServico);
}
List lista = null;
JdbcEngine jdbcEngine = new JdbcEngine(Constantes.getValue("DATABASE_ALIAS"), null);
try {
lista = jdbcEngine.execSQL(sql.toString(), parametros.toArray(), 0);
} catch (PersistenceException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
List listaFinal = null;
if (lista != null) {
listaFinal = new ArrayList();
ServicoContratoDao servicoContratoDao = new ServicoContratoDao();
ContratoDao contratoDao = new ContratoDao();
SolicitacaoServicoDao solicitacaoServicoDao = new SolicitacaoServicoDao();
AcordoNivelServicoService acordoNivelServicoService = null;
try {
acordoNivelServicoService = (AcordoNivelServicoService) ServiceLocator.getInstance().getService(AcordoNivelServicoService.class, null);
} catch (ServiceException e1) {
e1.printStackTrace();
} catch (Exception e1) {
e1.printStackTrace();
}
AcordoServicoContratoService acordoServicoContratoService = null;
try {
acordoServicoContratoService = (AcordoServicoContratoService) ServiceLocator.getInstance().getService(AcordoServicoContratoService.class, null);
} catch (ServiceException e1) {
e1.printStackTrace();
} catch (Exception e1) {
e1.printStackTrace();
}
String contratos = (String) parametersValues.get("grupovisao.contratos");
String temSLA = (String) parametersValues.get("citcorpore.comum.temSLA");
String naoTemSLA = (String) parametersValues.get("citcorpore.comum.naoTemSLA");
String numeroSolicitacoesIncidentes = (String) parametersValues.get("citcorpore.comum.numeroSolicitacoesIncidentes");
for (Iterator it = lista.iterator(); it.hasNext();) {
Object[] objs = (Object[]) it.next();
Object[] objFinal = new Object[8];
for (int i = 0; i <= 6; i++) {
objFinal[i] = objs[i];
}
try {
Integer idServ = null;
if (objs[7] instanceof Long) {
idServ = new Integer(((Long) objs[7]).intValue());
} else if (objs[7] instanceof Integer) {
idServ = new Integer(((Integer) objs[7]).intValue());
}
Collection col = servicoContratoDao.findByIdServico(idServ);
if (col != null && col.size() > 0) {
String aux = "";
aux += contratos + ":\n";
for (Iterator it2 = col.iterator(); it2.hasNext();) {
ServicoContratoDTO servicoContratoDTO = (ServicoContratoDTO) it2.next();
ContratoDTO contratoDTO = new ContratoDTO();
contratoDTO.setIdContrato(servicoContratoDTO.getIdContrato());
contratoDTO = (ContratoDTO) contratoDao.restore(contratoDTO);
if (contratoDTO != null) {
aux += "" + contratoDTO.getNumero() + " (" + UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, servicoContratoDTO.getDataInicio(), super.getLanguage(paramtersDefinition)) + " - "
+ UtilStrings.nullToVazio(UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, servicoContratoDTO.getDataFim(), super.getLanguage(paramtersDefinition))) + ") ";
Collection colX = acordoNivelServicoService.findByIdServicoContrato(servicoContratoDTO.getIdServicoContrato());
Collection colVincs = acordoServicoContratoService.findByIdServicoContrato(servicoContratoDTO.getIdServicoContrato());
if ((colX != null && colX.size() > 0) || (colVincs != null && colVincs.size() > 0)) {
aux += " - " + temSLA;
} else {
aux += " - " + naoTemSLA;
}
}
}
Integer qtde = solicitacaoServicoDao.getQuantidadeByIdServico(idServ);
if (qtde != null) {
aux += "\n\n" + numeroSolicitacoesIncidentes + ": " + qtde;
}
objFinal[7] = aux;
}
} catch (Exception e) {
e.printStackTrace();
}
listaFinal.add(objFinal);
}
}
if (listaFinal == null || listaFinal.size() == 0) {
return null;
}
return listaFinal;
}
}