package br.com.centralit.citgerencial.generateservices.requisicaoMudanca;
import java.sql.Timestamp;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import br.com.centralit.citcorpore.bean.RequisicaoMudancaDTO;
import br.com.centralit.citcorpore.integracao.GraficosDao;
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.util.SQLConfig;
import br.com.citframework.util.UtilDatas;
/**
* @author rodrigo.oliveira
* @since 14/08/2012
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
public class GenerateServiceMudancaPorSLA extends GerencialGenerateService {
private HashMap novoParametro = new HashMap();
public List execute(HashMap parametersValues, Collection paramtersDefinition) throws ParseException {
Set set = parametersValues.entrySet();
Iterator i = set.iterator();
while (i.hasNext()) {
Map.Entry entrada = (Map.Entry) i.next();
getNovoParametro().put(entrada.getKey(), entrada.getValue());
}
String datainicial = (String) getNovoParametro().get("PARAM.dataInicial");
String datafinal = (String) getNovoParametro().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();
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(datafim);
calendar.add(GregorianCalendar.DATE, 1);
if (CITCorporeUtil.SGBD_PRINCIPAL.equalsIgnoreCase(SQLConfig.MYSQL)) {
getNovoParametro().put("PARAM.dataInicial", UtilDatas.convertDateToString(TipoDate.FORMAT_DATABASE, datainicio, super.getLanguage(paramtersDefinition)));
getNovoParametro().put("PARAM.dataFinal", UtilDatas.convertDateToString(TipoDate.FORMAT_DATABASE, calendar.getTime(), super.getLanguage(paramtersDefinition)));
} else {
getNovoParametro().put("PARAM.dataInicial", new java.sql.Date(datainicio.getTime()));
getNovoParametro().put("PARAM.dataFinal", new java.sql.Date(calendar.getTime().getTime()));
}
GraficosDao graficosDao = new GraficosDao();
Object[] listaGenericaPrazo = new Object[2];
Object[] listaGenericaAtrazo = new Object[2];
List listaRetorno = new ArrayList();
String descricaoPrazo = "";
String descricaoAtrazo = "";
int qtdePrazo = 0;
int qtdeAtrazo = 0;
long atrasoSLA = 0;
try {
ArrayList<RequisicaoMudancaDTO> colPorSLA = (ArrayList<RequisicaoMudancaDTO>) graficosDao.consultaMudancaPorSLAAtrazo(getNovoParametro(), "I");
if (colPorSLA != null) {
for (RequisicaoMudancaDTO requisicaoMudancaDTO : colPorSLA) {
if (requisicaoMudancaDTO.getDataHoraTermino() != null) {
Timestamp dataHoraLimite = requisicaoMudancaDTO.getDataHoraTermino();
Timestamp dataHoraComparacao = UtilDatas.getDataHoraAtual();
// if (!requisicaoMudancaDTO.getStatus().equals("Concluida")) {
if (requisicaoMudancaDTO.getDataHoraConclusao() != null) {
dataHoraComparacao = requisicaoMudancaDTO.getDataHoraConclusao();
}
if (dataHoraComparacao.compareTo(dataHoraLimite) > 0) {
atrasoSLA = UtilDatas.calculaDiferencaTempoEmMilisegundos(dataHoraComparacao, dataHoraLimite) / 1000;
requisicaoMudancaDTO.setAtraso(atrasoSLA);
String atrasoSLAStr = requisicaoMudancaDTO.getAtrasoStr();
descricaoAtrazo += "\n" + requisicaoMudancaDTO.getTitulo() + " Atraso: " + atrasoSLAStr;
qtdeAtrazo++;
} else {
if (requisicaoMudancaDTO.getPrazoHH() > 0 || requisicaoMudancaDTO.getPrazoMM() > 0) {
descricaoPrazo += "\n" + "\n" + requisicaoMudancaDTO.getTitulo();
String prazoHH = " Prazo: ";
String PrazoMM = "";
if (requisicaoMudancaDTO.getPrazoHH() < 10) {
prazoHH += "0" + requisicaoMudancaDTO.getPrazoHH() + ":";
} else {
prazoHH += requisicaoMudancaDTO.getPrazoHH() + ":";
}
if (requisicaoMudancaDTO.getPrazoMM() < 10) {
PrazoMM += "0" + requisicaoMudancaDTO.getPrazoMM();
} else {
PrazoMM += requisicaoMudancaDTO.getPrazoMM();
}
descricaoPrazo += prazoHH += PrazoMM;
qtdePrazo++;
}
// }
}
}
}
if (descricaoAtrazo.trim().length() > 0) {
listaGenericaAtrazo[0] = descricaoAtrazo + " ";
} else {
listaGenericaAtrazo[0] = "Atraso: ";
}
listaGenericaAtrazo[1] = qtdeAtrazo;
if (descricaoPrazo.trim().length() > 0) {
listaGenericaPrazo[0] = descricaoPrazo + " ";
} else {
listaGenericaPrazo[0] = "Prazo: ";
}
listaGenericaPrazo[1] = qtdePrazo;
listaRetorno.add(listaGenericaAtrazo);
listaRetorno.add(listaGenericaPrazo);
}
} catch (Exception e) {
e.printStackTrace();
}
// resetando par�metro
setNovoParametro(null);
return listaRetorno;
}
public HashMap getNovoParametro() {
return novoParametro;
}
public void setNovoParametro(HashMap novoParametro) {
this.novoParametro = novoParametro;
}
}