/**
* CentralIT - CITSmart
*/
package br.com.centralit.citcorpore.negocio;
import java.io.File;
import java.sql.Date;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import net.htmlparser.jericho.Source;
import org.apache.commons.lang.StringUtils;
import br.com.centralit.bpm.dto.FluxoDTO;
import br.com.centralit.bpm.dto.TarefaFluxoDTO;
import br.com.centralit.bpm.dto.TipoFluxoDTO;
import br.com.centralit.bpm.integracao.FluxoDao;
import br.com.centralit.bpm.integracao.TipoFluxoDao;
import br.com.centralit.bpm.negocio.ItemTrabalho;
import br.com.centralit.bpm.negocio.Tarefa;
import br.com.centralit.citcorpore.bean.AcordoNivelServicoDTO;
import br.com.centralit.citcorpore.bean.AcordoServicoContratoDTO;
import br.com.centralit.citcorpore.bean.BaseConhecimentoDTO;
import br.com.centralit.citcorpore.bean.CalculoJornadaDTO;
import br.com.centralit.citcorpore.bean.ConhecimentoSolicitacaoDTO;
import br.com.centralit.citcorpore.bean.ContatoSolicitacaoServicoDTO;
import br.com.centralit.citcorpore.bean.ContratoDTO;
import br.com.centralit.citcorpore.bean.ControleQuestionariosDTO;
import br.com.centralit.citcorpore.bean.EmpregadoDTO;
import br.com.centralit.citcorpore.bean.ExecucaoSolicitacaoDTO;
import br.com.centralit.citcorpore.bean.FaseServicoDTO;
import br.com.centralit.citcorpore.bean.FluxoServicoDTO;
import br.com.centralit.citcorpore.bean.GerenciamentoServicosDTO;
import br.com.centralit.citcorpore.bean.GrupoDTO;
import br.com.centralit.citcorpore.bean.ItemCfgSolicitacaoServDTO;
import br.com.centralit.citcorpore.bean.ItemConfiguracaoDTO;
import br.com.centralit.citcorpore.bean.JustificativaSolicitacaoDTO;
import br.com.centralit.citcorpore.bean.ModeloEmailDTO;
import br.com.centralit.citcorpore.bean.PastaDTO;
import br.com.centralit.citcorpore.bean.PesquisaSolicitacaoServicoDTO;
import br.com.centralit.citcorpore.bean.PrioridadeAcordoNivelServicoDTO;
import br.com.centralit.citcorpore.bean.PrioridadeDTO;
import br.com.centralit.citcorpore.bean.PrioridadeServicoUnidadeDTO;
import br.com.centralit.citcorpore.bean.PrioridadeServicoUsuarioDTO;
import br.com.centralit.citcorpore.bean.ProblemaDTO;
import br.com.centralit.citcorpore.bean.RelatorioCausaSolucaoDTO;
import br.com.centralit.citcorpore.bean.RelatorioDocumentacaoDeFuncionalidadesNovasOuAlteradasNoPeriodoDTO;
import br.com.centralit.citcorpore.bean.RelatorioEficaciaTesteDTO;
import br.com.centralit.citcorpore.bean.RelatorioIncidentesNaoResolvidosDTO;
import br.com.centralit.citcorpore.bean.RelatorioKpiProdutividadeDTO;
import br.com.centralit.citcorpore.bean.RelatorioQuantitativoRetornoDTO;
import br.com.centralit.citcorpore.bean.RelatorioQuantitativoSolicitacaoDTO;
import br.com.centralit.citcorpore.bean.RelatorioQuantitativoSolicitacaoProblemaPorServicoDTO;
import br.com.centralit.citcorpore.bean.RelatorioSolicitacaoPorExecutanteDTO;
import br.com.centralit.citcorpore.bean.RequisicaoMudancaDTO;
import br.com.centralit.citcorpore.bean.ServicoContratoDTO;
import br.com.centralit.citcorpore.bean.ServicoDTO;
import br.com.centralit.citcorpore.bean.SolicitacaoServicoDTO;
import br.com.centralit.citcorpore.bean.SolicitacaoServicoEvtMonDTO;
import br.com.centralit.citcorpore.bean.SolicitacaoServicoMudancaDTO;
import br.com.centralit.citcorpore.bean.SolicitacaoServicoProblemaDTO;
import br.com.centralit.citcorpore.bean.SolicitacaoServicoQuestionarioDTO;
import br.com.centralit.citcorpore.bean.TemplateSolicitacaoServicoDTO;
import br.com.centralit.citcorpore.bean.TempoAcordoNivelServicoDTO;
import br.com.centralit.citcorpore.bean.TipoDemandaServicoDTO;
import br.com.centralit.citcorpore.bean.UnidadeDTO;
import br.com.centralit.citcorpore.bean.UploadDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.bpm.negocio.ExecucaoSolicitacao;
import br.com.centralit.citcorpore.integracao.AcordoNivelServicoDao;
import br.com.centralit.citcorpore.integracao.AcordoServicoContratoDao;
import br.com.centralit.citcorpore.integracao.BaseConhecimentoDAO;
import br.com.centralit.citcorpore.integracao.ConhecimentoSolicitacaoDao;
import br.com.centralit.citcorpore.integracao.ContatoSolicitacaoServicoDao;
import br.com.centralit.citcorpore.integracao.ContratoDao;
import br.com.centralit.citcorpore.integracao.ControleQuestionariosDao;
import br.com.centralit.citcorpore.integracao.EmpregadoDao;
import br.com.centralit.citcorpore.integracao.ExecucaoSolicitacaoDao;
import br.com.centralit.citcorpore.integracao.FaseServicoDao;
import br.com.centralit.citcorpore.integracao.FluxoServicoDao;
import br.com.centralit.citcorpore.integracao.GrupoDao;
import br.com.centralit.citcorpore.integracao.ItemCfgSolicitacaoServDAO;
import br.com.centralit.citcorpore.integracao.MatrizPrioridadeDAO;
import br.com.centralit.citcorpore.integracao.ModeloEmailDao;
import br.com.centralit.citcorpore.integracao.OcorrenciaSolicitacaoDao;
import br.com.centralit.citcorpore.integracao.PastaDAO;
import br.com.centralit.citcorpore.integracao.PrioridadeAcordoNivelServicoDao;
import br.com.centralit.citcorpore.integracao.PrioridadeServicoUnidadeDao;
import br.com.centralit.citcorpore.integracao.PrioridadeServicoUsuarioDao;
import br.com.centralit.citcorpore.integracao.ServicoContratoDao;
import br.com.centralit.citcorpore.integracao.ServicoDao;
import br.com.centralit.citcorpore.integracao.SolicitacaoServicoDao;
import br.com.centralit.citcorpore.integracao.SolicitacaoServicoEvtMonDao;
import br.com.centralit.citcorpore.integracao.SolicitacaoServicoMudancaDao;
import br.com.centralit.citcorpore.integracao.SolicitacaoServicoProblemaDao;
import br.com.centralit.citcorpore.integracao.SolicitacaoServicoQuestionarioDao;
import br.com.centralit.citcorpore.integracao.TempoAcordoNivelServicoDao;
import br.com.centralit.citcorpore.mail.MensagemEmail;
import br.com.centralit.citcorpore.util.CITCorporeUtil;
import br.com.centralit.citcorpore.util.CriptoUtils;
import br.com.centralit.citcorpore.util.Enumerados;
import br.com.centralit.citcorpore.util.Enumerados.CategoriaOcorrencia;
import br.com.centralit.citcorpore.util.Enumerados.OrigemOcorrencia;
import br.com.centralit.citcorpore.util.Enumerados.ParametroSistema;
import br.com.centralit.citcorpore.util.Enumerados.SituacaoSLA;
import br.com.centralit.citcorpore.util.Enumerados.SituacaoSolicitacaoServico;
import br.com.centralit.citcorpore.util.Enumerados.TipoSolicitacaoServico;
import br.com.centralit.citcorpore.util.ParametroUtil;
import br.com.centralit.citcorpore.util.Util;
import br.com.centralit.citged.bean.ControleGEDDTO;
import br.com.centralit.citged.integracao.ControleGEDDao;
import br.com.centralit.citquestionario.integracao.RespostaItemQuestionarioDao;
import br.com.centralit.citquestionario.negocio.RespostaItemQuestionarioServiceBean;
import br.com.citframework.dto.IDto;
import br.com.citframework.excecao.LogicException;
import br.com.citframework.excecao.PersistenceException;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.integracao.Condition;
import br.com.citframework.integracao.TransactionControler;
import br.com.citframework.integracao.TransactionControlerImpl;
import br.com.citframework.service.CrudServiceImpl;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.Constantes;
import br.com.citframework.util.UtilDatas;
import br.com.citframework.util.UtilFormatacao;
import br.com.citframework.util.UtilI18N;
import br.com.citframework.util.UtilStrings;
import com.google.gson.Gson;
@SuppressWarnings({ "unchecked", "rawtypes", "unused", "static-access" })
public class SolicitacaoServicoServiceEjb extends CrudServiceImpl implements SolicitacaoServicoService {
private SolicitacaoServicoDao solicitacaoServicoDao;
@Override
public IDto create(IDto model) throws ServiceException, LogicException {
TransactionControler tc = new TransactionControlerImpl(this.getDao().getAliasDB());
try {
tc.start();
model = create(model, tc, true, true, true);
if(model == null)
throw new Exception();
tc.commit();
} catch (Exception e) {
this.rollbackTransaction(tc, e);
} finally {
try {
tc.close();
} catch (PersistenceException e) {
e.printStackTrace();
}
}
return model;
}
public IDto create(IDto model, TransactionControler tc, boolean determinaPrioridadePrazo, boolean determinaHoraInicio, boolean determinaDataHoraSolicitacao) throws Exception {
SolicitacaoServicoDTO solicitacaoServicoDto = (SolicitacaoServicoDTO) model;
ExecucaoSolicitacaoServiceEjb execucaoSolicitacaoService = new ExecucaoSolicitacaoServiceEjb();
ContatoSolicitacaoServicoDao contatoSolicitacaoServicoDao = new ContatoSolicitacaoServicoDao();
ContatoSolicitacaoServicoDTO contatoSolicitacaoServicoDTO = new ContatoSolicitacaoServicoDTO();
SolicitacaoServicoProblemaDao solicitacaoServicoProblemaDao = new SolicitacaoServicoProblemaDao();
SolicitacaoServicoMudancaDao solicitacaoServicoMudancaDao = new SolicitacaoServicoMudancaDao();
ConhecimentoSolicitacaoDao conhecimentoSolicitacaoDao = new ConhecimentoSolicitacaoDao();
ItemCfgSolicitacaoServDAO itemCfgSolicitacaoServDAO = new ItemCfgSolicitacaoServDAO();
SolicitacaoServicoEvtMonDao solicitacaoServicoEvtMonDao = new SolicitacaoServicoEvtMonDao();
ServicoContratoDao servicoContratoDao = new ServicoContratoDao();
GrupoDao grupoDao = new GrupoDao();
// Faz validacao, caso exista.
validaCreate(model);
this.getDao().setTransactionControler(tc);
contatoSolicitacaoServicoDao.setTransactionControler(tc);
contatoSolicitacaoServicoDTO.setNomecontato(solicitacaoServicoDto.getNomecontato());
contatoSolicitacaoServicoDTO.setEmailcontato(solicitacaoServicoDto.getEmailcontato());
contatoSolicitacaoServicoDTO.setTelefonecontato(solicitacaoServicoDto.getTelefonecontato());
contatoSolicitacaoServicoDTO.setObservacao(solicitacaoServicoDto.getObservacao());
contatoSolicitacaoServicoDTO.setRamal(solicitacaoServicoDto.getRamal());
solicitacaoServicoProblemaDao.setTransactionControler(tc);
solicitacaoServicoMudancaDao.setTransactionControler(tc);
conhecimentoSolicitacaoDao.setTransactionControler(tc);
itemCfgSolicitacaoServDAO.setTransactionControler(tc);
solicitacaoServicoEvtMonDao.setTransactionControler(tc);
servicoContratoDao.setTransactionControler(tc);
grupoDao.setTransactionControler(tc);
if (solicitacaoServicoDto.getIdLocalidade() != null) {
contatoSolicitacaoServicoDTO.setIdLocalidade(solicitacaoServicoDto.getIdLocalidade());
}
contatoSolicitacaoServicoDTO = (ContatoSolicitacaoServicoDTO) contatoSolicitacaoServicoDao.create(contatoSolicitacaoServicoDTO);
ServicoContratoDTO servicoContratoDto = servicoContratoDao.findByIdContratoAndIdServico(solicitacaoServicoDto.getIdContrato(), solicitacaoServicoDto.getIdServico());
if (servicoContratoDto == null)
throw new LogicException(i18nMessage("solicitacaoservico.validacao.servicolocalizado"));
if (solicitacaoServicoDto.getIdServicoContrato() == null) {
solicitacaoServicoDto.setIdServicoContrato(servicoContratoDto.getIdServicoContrato());
}
UsuarioDTO usuarioDto = solicitacaoServicoDto.getUsuarioDto();
solicitacaoServicoDto.setIdResponsavel(usuarioDto.getIdUsuario());
solicitacaoServicoDto.setIdCalendario(servicoContratoDto.getIdCalendario());
solicitacaoServicoDto.setTempoDecorridoHH(new Integer(0));
solicitacaoServicoDto.setTempoDecorridoMM(new Integer(0));
solicitacaoServicoDto.setDataHoraSuspensao(null);
solicitacaoServicoDto.setDataHoraReativacao(null);
solicitacaoServicoDto.setDataHoraInicioSLA(null);
solicitacaoServicoDto.setSituacaoSLA(SituacaoSLA.N.name());
if (solicitacaoServicoDto.getIdGrupoNivel1() == null || solicitacaoServicoDto.getIdGrupoNivel1().intValue() <= 0) {
Integer idGrupoNivel1 = null;
if (servicoContratoDto.getIdGrupoNivel1() != null && servicoContratoDto.getIdGrupoNivel1().intValue() > 0) {
idGrupoNivel1 = servicoContratoDto.getIdGrupoNivel1();
} else {
String idGrupoN1 = ParametroUtil.getValor(ParametroSistema.ID_GRUPO_PADRAO_NIVEL1, null, null);
if (idGrupoN1 != null && !idGrupoN1.trim().equalsIgnoreCase("")) {
try {
idGrupoNivel1 = new Integer(idGrupoN1);
} catch (Exception e) {
e.printStackTrace();
}
}
}
if (idGrupoNivel1 == null || idGrupoNivel1.intValue() <= 0)
throw new LogicException(i18nMessage("solicitacaoservico.validacao.grupoatendnivel"));
GrupoDTO grupoDto = new GrupoDTO();
grupoDto.setIdGrupo(idGrupoNivel1);
grupoDto = (GrupoDTO) grupoDao.restore(grupoDto);
if (grupoDto == null || grupoDto.getDataFim() != null)
throw new LogicException(i18nMessage("solicitacaoservico.validacao.grupoatendnivel"));
solicitacaoServicoDto.setIdGrupoNivel1(idGrupoNivel1);
}
FluxoServicoDao fluxoServicoDao = new FluxoServicoDao();
TipoFluxoDao tipoFluxoDao = new TipoFluxoDao();
TipoFluxoDTO tipoFluxoDto = new TipoFluxoDTO();
FluxoServicoDTO fluxoServicoDto = fluxoServicoDao.findPrincipalByIdServicoContrato(servicoContratoDto.getIdServicoContrato());
int idTipoFluxoSolicitacaoServico = 0;
// Verifica se h� fluxo associado ao servi�o contrato
if (fluxoServicoDto != null && fluxoServicoDto.getIdTipoFluxo() != null) {
idTipoFluxoSolicitacaoServico = fluxoServicoDto.getIdTipoFluxo();
} else {
// Verifica o fluxo padr�o para Solicita��o Servi�o definido em Par�metro
String nomeFluxoPadraoSolicitacaoServico = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.NomeFluxoPadraoServicos, "SolicitacaoServico");
if (nomeFluxoPadraoSolicitacaoServico != null) {
tipoFluxoDto = tipoFluxoDao.findByNome(nomeFluxoPadraoSolicitacaoServico);
if (tipoFluxoDto != null && tipoFluxoDto.getIdTipoFluxo() != null) {
idTipoFluxoSolicitacaoServico = tipoFluxoDto.getIdTipoFluxo();
}
}
}
int idGrupo = 0;
if (solicitacaoServicoDto != null && solicitacaoServicoDto.getIdGrupoAtual() != null) {
idGrupo = solicitacaoServicoDto.getIdGrupoAtual();
/* Inserido por Carlos Santos em 05/11/2013 -> Antes de testar o n�vel 1, deve ser testado o grupo executor do contrato */
} else if (servicoContratoDto != null && servicoContratoDto.getIdGrupoExecutor() != null){
idGrupo = servicoContratoDto.getIdGrupoExecutor();
}else if (solicitacaoServicoDto != null && solicitacaoServicoDto.getIdGrupoNivel1() != null) {
idGrupo = solicitacaoServicoDto.getIdGrupoNivel1();
}
if (idGrupo > 0 && idTipoFluxoSolicitacaoServico > 0) {
boolean resultado = permissaoGrupoExecutorServico(idGrupo, idTipoFluxoSolicitacaoServico);
if (resultado == false) {
throw new LogicException(i18nMessage("solicitacaoServico.grupoSemPermissao"));
}
} else {
throw new LogicException(i18nMessage("fluxo.fluxoserviconaodefinido "));
}
solicitacaoServicoDto.setIdContatoSolicitacaoServico(contatoSolicitacaoServicoDTO.getIdcontatosolicitacaoservico());
if (determinaDataHoraSolicitacao) {
solicitacaoServicoDto.setDataHoraSolicitacao(new Timestamp(new java.util.Date().getTime()));
}
if (determinaPrioridadePrazo) {
determinaPrioridadeEPrazo(solicitacaoServicoDto, tc);
}
if (determinaHoraInicio) {
solicitacaoServicoDto.setDataHoraInicio(new Timestamp(new java.util.Date().getTime()));
}
solicitacaoServicoDto.setSeqReabertura(new Integer(0));
if (solicitacaoServicoDto.escalada()) {
String tipoCaptura = ParametroUtil.getValor(ParametroSistema.TIPO_CAPTURA_SOLICITACOES, tc, "1");
if (tipoCaptura.equals("2"))
solicitacaoServicoDto.setDataHoraCaptura(solicitacaoServicoDto.getDataHoraInicio());
}
solicitacaoServicoDto = (SolicitacaoServicoDTO) solicitacaoServicoDao.create(solicitacaoServicoDto);
if (solicitacaoServicoDto.getColItensProblema() != null) {
for (Iterator it = solicitacaoServicoDto.getColItensProblema().iterator(); it.hasNext();) {
ProblemaDTO problemaDTO = (ProblemaDTO) it.next();
SolicitacaoServicoProblemaDTO solicitacaoServicoProblemaDTO = new SolicitacaoServicoProblemaDTO();
solicitacaoServicoProblemaDTO.setIdProblema(problemaDTO.getIdProblema());
solicitacaoServicoProblemaDTO.setIdSolicitacaoServico(solicitacaoServicoDto.getIdSolicitacaoServico());
solicitacaoServicoProblemaDao.create(solicitacaoServicoProblemaDTO);
}
}
if (solicitacaoServicoDto.getColItensMudanca() != null) {
for (Iterator it = solicitacaoServicoDto.getColItensMudanca().iterator(); it.hasNext();) {
RequisicaoMudancaDTO requisicaoMudancaDTO = (RequisicaoMudancaDTO) it.next();
SolicitacaoServicoMudancaDTO solicitacaoServicoMudancaDTO = new SolicitacaoServicoMudancaDTO();
solicitacaoServicoMudancaDTO.setIdRequisicaoMudanca(requisicaoMudancaDTO.getIdRequisicaoMudanca());
solicitacaoServicoMudancaDTO.setIdSolicitacaoServico(solicitacaoServicoDto.getIdSolicitacaoServico());
solicitacaoServicoMudancaDao.create(solicitacaoServicoMudancaDTO);
}
}
if (solicitacaoServicoDto.getColItensICSerialize() != null) {
for (ItemConfiguracaoDTO bean : solicitacaoServicoDto.getColItensICSerialize()) {
ItemCfgSolicitacaoServDTO dto = new ItemCfgSolicitacaoServDTO();
dto.setIdItemConfiguracao(bean.getIdItemConfiguracao());
dto.setIdSolicitacaoServico(solicitacaoServicoDto.getIdSolicitacaoServico());
dto.setDataInicio(Util.getSqlDataAtual());
itemCfgSolicitacaoServDAO.create(dto);
}
}
if (solicitacaoServicoDto.getColItensBaseConhecimento() != null) {
for (Iterator it = solicitacaoServicoDto.getColItensBaseConhecimento().iterator(); it.hasNext();) {
BaseConhecimentoDTO baseConhecimentoDTO = (BaseConhecimentoDTO) it.next();
ConhecimentoSolicitacaoDTO conhecimentoSolicitacaoDTO = new ConhecimentoSolicitacaoDTO();
conhecimentoSolicitacaoDTO.setIdBaseConhecimento(baseConhecimentoDTO.getIdBaseConhecimento());
conhecimentoSolicitacaoDTO.setIdSolicitacaoServico(solicitacaoServicoDto.getIdSolicitacaoServico());
conhecimentoSolicitacaoDao.create(conhecimentoSolicitacaoDTO);
}
}
if (solicitacaoServicoDto.getInformacoesComplementares() != null || solicitacaoServicoDto.getSolicitacaoServicoQuestionarioDTO() != null) {
TemplateSolicitacaoServicoDTO templateDto = new TemplateSolicitacaoServicoServiceEjb().recuperaTemplateServico(solicitacaoServicoDto);
if (templateDto != null) {
if (templateDto.isQuestionario()) {
atualizaInformacoesQuestionario(solicitacaoServicoDto, tc);
} else if (templateDto.getNomeClasseServico() != null) {
ComplemInfSolicitacaoServicoService informacoesComplementaresService = getInformacoesComplementaresService(templateDto.getNomeClasseServico());
informacoesComplementaresService.create(tc, solicitacaoServicoDto, solicitacaoServicoDto.getInformacoesComplementares());
}
}
}
try {
OcorrenciaSolicitacaoServiceEjb.create(solicitacaoServicoDto, null, null, OrigemOcorrencia.OUTROS, CategoriaOcorrencia.Criacao, new Gson().toJson(contatoSolicitacaoServicoDTO),
CategoriaOcorrencia.Criacao.getDescricao(), usuarioDto, 0, null, tc);
} catch (Exception e) {
e.printStackTrace();
}
ExecucaoSolicitacao execucaoSolicitacao = execucaoSolicitacaoService.registraSolicitacao(solicitacaoServicoDto, tc);
if(execucaoSolicitacao == null){
tc.rollback();
return null;
}
if (solicitacaoServicoDto.getColArquivosUpload() != null && solicitacaoServicoDto.getColArquivosUpload().size() > 0) {
gravaInformacoesGED(solicitacaoServicoDto.getColArquivosUpload(), 1, solicitacaoServicoDto, tc);
}
Source source = new Source(solicitacaoServicoDto.getRegistroexecucao());
solicitacaoServicoDto.setRegistroexecucao(source.getTextExtractor().toString());
if (solicitacaoServicoDto.getRegistroexecucao() != null && !solicitacaoServicoDto.getRegistroexecucao().trim().equalsIgnoreCase("")) {
TarefaFluxoDTO tarefaDto = null;
if (solicitacaoServicoDto.getIdTarefa() != null) {
tarefaDto = new TarefaFluxoDTO();
tarefaDto.setIdItemTrabalho(solicitacaoServicoDto.getIdTarefa());
}
OcorrenciaSolicitacaoServiceEjb.create(solicitacaoServicoDto, tarefaDto, solicitacaoServicoDto.getRegistroexecucao(), OrigemOcorrencia.OUTROS, CategoriaOcorrencia.Execucao, null,
CategoriaOcorrencia.Execucao.getDescricao(), usuarioDto, 0, null, tc);
}
if (solicitacaoServicoDto.getColSolicitacaoServicoEvtMon() != null) {
for (Iterator it = solicitacaoServicoDto.getColSolicitacaoServicoEvtMon().iterator(); it.hasNext();) {
SolicitacaoServicoEvtMonDTO solicitacaoServicoEvtMonDTO = (SolicitacaoServicoEvtMonDTO) it.next();
solicitacaoServicoEvtMonDTO.setIdSolicitacaoServico(solicitacaoServicoDto.getIdSolicitacaoServico());
solicitacaoServicoEvtMonDao.create(solicitacaoServicoEvtMonDTO);
}
}
if (solicitacaoServicoDto != null && solicitacaoServicoDto.getBeanBaseConhecimento() != null && solicitacaoServicoDto.getBeanBaseConhecimento().getTitulo() != null
&& !solicitacaoServicoDto.getBeanBaseConhecimento().getTitulo().isEmpty()) {
this.InserirNaBaseConhecimento(solicitacaoServicoDto, tc);
}
return solicitacaoServicoDto;
}
// Criado por Bruno.Aquino
// Se a Situa��o estiver como "Resolvida" Capturo: a descricao do problema e a Solu��o/Resposta
public void InserirNaBaseConhecimento(SolicitacaoServicoDTO solicitacaoServicoDTO, TransactionControler tc) throws ServiceException, Exception {
BaseConhecimentoDTO beanBaseConhecimento = solicitacaoServicoDTO.getBeanBaseConhecimento();
beanBaseConhecimento.setIdSolicitacaoServico(solicitacaoServicoDTO.getIdSolicitacaoServico());
BaseConhecimentoDAO baseConhecimentoDAO = new BaseConhecimentoDAO();
PastaDAO pastaDao = new PastaDAO();
pastaDao.setTransactionControler(tc);
baseConhecimentoDAO.setTransactionControler(tc);
BaseConhecimentoDTO baseAux = baseConhecimentoDAO.findByIdSolicitacaoServico(solicitacaoServicoDTO);
// verifica se j� n�o existe uma registro na base de conhecimento referente a essa solicita��o, s� pode armazenar um.
if (baseAux == null) {
PastaServiceEjb pastaEjb = new PastaServiceEjb();
PastaDTO pastaBean = new PastaDTO();
int cont = 0;
// verifica se a pasta existe
Collection<PastaDTO> lista = pastaEjb.consultarPastasAtivas();
for (PastaDTO p : lista) {
if (p.getNome() != null) {
if (p.getNome().equals(
ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.PASTA_SALVA_DESCRICAO_RESPOSTA_DE_SOLICITACAOSERVICO_EM_BASECONHECIMENTO,
"Descri��o_Resposta_Para_BaseConhecimento"))) {
pastaBean.setId(p.getId());
cont++;
}
}
}
// se a pasta n�o existir, pasta vai ser criada pelo parametro ou com o nome do padr�o
if (cont == 0) {
pastaBean.setNome(ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.PASTA_SALVA_DESCRICAO_RESPOSTA_DE_SOLICITACAOSERVICO_EM_BASECONHECIMENTO,
"Descri��o_Resposta_Para_BaseConhecimento"));
pastaDao.create(pastaBean);
Collection<PastaDTO> lista2 = pastaEjb.consultarPastasAtivas();
for (PastaDTO p2 : lista2) {
if (p2.getNome() != null) {
if (p2.getNome().equals(
ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.PASTA_SALVA_DESCRICAO_RESPOSTA_DE_SOLICITACAOSERVICO_EM_BASECONHECIMENTO,
"Descri��o_Resposta_Para_BaseConhecimento"))) {
pastaBean.setId(p2.getId());
}
}
}
}
beanBaseConhecimento.setIdPasta(pastaBean.getId());
baseConhecimentoDAO.create(beanBaseConhecimento);
}
}
public void PersistirItemBaseConhecimento(SolicitacaoServicoDTO solicitacaoServicoDto, ConhecimentoSolicitacaoDao conhecimentoSolicitacaoDao) throws Exception {
List<ConhecimentoSolicitacaoDTO> listaTelaConhecimentoDTO = solicitacaoServicoDto.getColConhecimentoSolicitacaoSerialize();
if (listaTelaConhecimentoDTO != null) {
ConhecimentoSolicitacaoDTO dto;
// Inserindo no Banco de Dados os Itens da lista ainda n�o cadastrados
for (ConhecimentoSolicitacaoDTO bean : listaTelaConhecimentoDTO) {
dto = new ConhecimentoSolicitacaoDTO();
dto.setIdBaseConhecimento(bean.getIdBaseConhecimento());
dto.setIdSolicitacaoServico(solicitacaoServicoDto.getIdSolicitacaoServico());
if (!conhecimentoSolicitacaoDao.seCadastrada(dto)) {
conhecimentoSolicitacaoDao.create(dto);
}
}
// Apagando Itens no banco que n�o est�o na lista informada
Collection<ConhecimentoSolicitacaoDTO> listaDBConhecimentoSolicitacaoDTO = conhecimentoSolicitacaoDao.findByidSolicitacaoServico(solicitacaoServicoDto.getIdSolicitacaoServico());
Boolean encontrou;
for (ConhecimentoSolicitacaoDTO elemento : listaDBConhecimentoSolicitacaoDTO) {
encontrou = new Boolean("False");
for (ConhecimentoSolicitacaoDTO itemBaseConhecimento : listaTelaConhecimentoDTO) {
if (elemento.getIdBaseConhecimento().equals(itemBaseConhecimento.getIdBaseConhecimento())) {
encontrou = true;
break;
}
}
if (!encontrou) {
conhecimentoSolicitacaoDao.delete(elemento);
}
}
// Para o Garbage Collection agir mais r�pido
listaTelaConhecimentoDTO = null;
dto = null;
listaDBConhecimentoSolicitacaoDTO = null;
encontrou = null;
}
}
@Override
public void deserializaInformacoesComplementares(SolicitacaoServicoDTO solicitacaoServicoDto, SolicitacaoServicoQuestionarioDTO solQuestionarioDto) throws Exception {
if (solicitacaoServicoDto.getInformacoesComplementares_serialize() != null) {
TemplateSolicitacaoServicoDTO templateDto = new TemplateSolicitacaoServicoServiceEjb().recuperaTemplateServico(solicitacaoServicoDto);
if (templateDto != null && templateDto.getNomeClasseServico() != null) {
if (templateDto.isQuestionario()) {
solicitacaoServicoDto.setSolicitacaoServicoQuestionarioDTO(solQuestionarioDto);
} else {
ComplemInfSolicitacaoServicoService informacoesComplementaresService = getInformacoesComplementaresService(templateDto.getNomeClasseServico());
IDto informacoesComplementares = informacoesComplementaresService.deserializaObjeto(solicitacaoServicoDto.getInformacoesComplementares_serialize());
solicitacaoServicoDto.setInformacoesComplementares(informacoesComplementares);
}
}
solicitacaoServicoDto.setInformacoesComplementares_serialize(null);
}
}
public void determinaPrazoLimiteSolicitacaoACombinarReclassificada(SolicitacaoServicoDTO solicitacaoDto, Integer idCalendarioParm, TransactionControler tc) throws Exception {
new ExecucaoSolicitacaoServiceEjb().determinaPrazoLimiteSolicitacaoACombinarReclassificada(solicitacaoDto, idCalendarioParm, tc);
}
public void determinaPrioridadeEPrazo(SolicitacaoServicoDTO solicitacaoServicoDto, TransactionControler tc) throws Exception {
if (solicitacaoServicoDto.getIdSolicitante() != null) {
EmpregadoDao empregadoDao = new EmpregadoDao();
if (tc != null)
empregadoDao.setTransactionControler(tc);
EmpregadoDTO empregadoDTO = null;
empregadoDTO = (EmpregadoDTO) empregadoDao.restoreByIdEmpregado(solicitacaoServicoDto.getIdSolicitante());
if (empregadoDTO != null && empregadoDTO.getIdUnidade() != null) {
if (solicitacaoServicoDto.getIdUnidade() == null || solicitacaoServicoDto.getIdUnidade().intValue() == 0) {
solicitacaoServicoDto.setIdUnidade(empregadoDTO.getIdUnidade());
}
PrioridadeServicoUnidadeDao prioridadeServicoUnidadeDao = new PrioridadeServicoUnidadeDao();
if (tc != null)
prioridadeServicoUnidadeDao.setTransactionControler(tc);
PrioridadeServicoUnidadeDTO prioridadeServicoUnidadeDto = prioridadeServicoUnidadeDao.restore(solicitacaoServicoDto.getIdServicoContrato(), empregadoDTO.getIdUnidade());
if (prioridadeServicoUnidadeDto != null)
solicitacaoServicoDto.setIdPrioridade(prioridadeServicoUnidadeDto.getIdPrioridade());
}
}
AcordoNivelServicoDao acordoNivelServicoDao = new AcordoNivelServicoDao();
if (tc != null)
acordoNivelServicoDao.setTransactionControler(tc);
AcordoNivelServicoDTO acordoNivelServicoDto = acordoNivelServicoDao.findAtivoByIdServicoContrato(solicitacaoServicoDto.getIdServicoContrato(), "T");
if (acordoNivelServicoDto == null) {
AcordoServicoContratoDao acordoServicoContratoDao = new AcordoServicoContratoDao();
if (tc != null)
acordoServicoContratoDao.setTransactionControler(tc);
// Se nao houver acordo especifico, ou seja, associado direto ao
// servicocontrato, entao busca um acordo geral que esteja vinculado
// ao servicocontrato.
AcordoServicoContratoDTO acordoServicoContratoDTO = acordoServicoContratoDao.findAtivoByIdServicoContrato(solicitacaoServicoDto.getIdServicoContrato(), "T");
if (acordoServicoContratoDTO == null) {
throw new Exception(i18nMessage("solicitacaoservico.validacao.tempoacordo"));
}
// Apos achar a vinculacao do acordo com o servicocontrato, entao
// faz um restore do acordo de nivel de servico.
acordoNivelServicoDto = new AcordoNivelServicoDTO();
acordoNivelServicoDto.setIdAcordoNivelServico(acordoServicoContratoDTO.getIdAcordoNivelServico());
acordoNivelServicoDto = (AcordoNivelServicoDTO) acordoNivelServicoDao.restore(acordoNivelServicoDto);
if (acordoNivelServicoDto == null) {
// Se nao houver acordo especifico, ou seja, associado direto ao
// servicocontrato
throw new Exception(i18nMessage("solicitacaoservico.validacao.tempoacordo"));
}
solicitacaoServicoDto.setIdAcordoNivelServico(acordoServicoContratoDTO.getIdAcordoNivelServico());
// Consulta prioridade do usu�rio de acordo com sla global
PrioridadeServicoUsuarioDao prioridadeServicoUsuarioDao = new PrioridadeServicoUsuarioDao();
if (tc != null)
prioridadeServicoUsuarioDao.setTransactionControler(tc);
PrioridadeServicoUsuarioDTO prioridadeServicoUsuarioDTO = prioridadeServicoUsuarioDao.findByIdAcordoNivelServicoAndIdUsuario(solicitacaoServicoDto.getIdAcordoNivelServico(),
solicitacaoServicoDto.getIdSolicitante());
if (prioridadeServicoUsuarioDTO != null)
solicitacaoServicoDto.setIdPrioridade(prioridadeServicoUsuarioDTO.getIdPrioridade());
// Consulta prioridade da unidade do usu�rio de acordo com sla global
PrioridadeAcordoNivelServicoDao prioridadeAcordoNivelServicoDao = new PrioridadeAcordoNivelServicoDao();
if (tc != null)
prioridadeAcordoNivelServicoDao.setTransactionControler(tc);
PrioridadeAcordoNivelServicoDTO prioridadeAcordoNivelServicoDTO = prioridadeAcordoNivelServicoDao.findByIdAcordoNivelServicoAndIdUnidade(solicitacaoServicoDto.getIdAcordoNivelServico(),
solicitacaoServicoDto.getIdUnidade());
if (prioridadeAcordoNivelServicoDTO != null)
solicitacaoServicoDto.setIdPrioridade(prioridadeAcordoNivelServicoDTO.getIdPrioridade());
} else {
solicitacaoServicoDto.setIdAcordoNivelServico(acordoNivelServicoDto.getIdAcordoNivelServico());
}
if (solicitacaoServicoDto.getUrgencia() == null || solicitacaoServicoDto.getUrgencia().equalsIgnoreCase("")) {
solicitacaoServicoDto.setUrgencia("B");
}
if (solicitacaoServicoDto.getImpacto() == null || solicitacaoServicoDto.getImpacto().equalsIgnoreCase("")) {
solicitacaoServicoDto.setImpacto("B");
}
String calcularDinamicamente = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.CALCULAR_PRIORIDADE_SOLICITACAO_DINAMICAMENTE, "N");
if (!calcularDinamicamente.trim().equalsIgnoreCase("S")) {
if (solicitacaoServicoDto.getIdPrioridade() == null) { // Aqui determina
// prazo pela
// Urgencia e
// Impacto -
// Como mando o
// ITIL.
if (solicitacaoServicoDto.getUrgencia().equalsIgnoreCase("B") && solicitacaoServicoDto.getImpacto().equalsIgnoreCase("B")) {
solicitacaoServicoDto.setIdPrioridade(5);
}
if (solicitacaoServicoDto.getUrgencia().equalsIgnoreCase("B") && solicitacaoServicoDto.getImpacto().equalsIgnoreCase("M")) {
solicitacaoServicoDto.setIdPrioridade(4);
}
if (solicitacaoServicoDto.getUrgencia().equalsIgnoreCase("B") && solicitacaoServicoDto.getImpacto().equalsIgnoreCase("A")) {
solicitacaoServicoDto.setIdPrioridade(3);
}
if (solicitacaoServicoDto.getUrgencia().equalsIgnoreCase("M") && solicitacaoServicoDto.getImpacto().equalsIgnoreCase("B")) {
solicitacaoServicoDto.setIdPrioridade(4);
}
if (solicitacaoServicoDto.getUrgencia().equalsIgnoreCase("M") && solicitacaoServicoDto.getImpacto().equalsIgnoreCase("M")) {
solicitacaoServicoDto.setIdPrioridade(3);
}
if (solicitacaoServicoDto.getUrgencia().equalsIgnoreCase("M") && solicitacaoServicoDto.getImpacto().equalsIgnoreCase("A")) {
solicitacaoServicoDto.setIdPrioridade(2);
}
if (solicitacaoServicoDto.getUrgencia().equalsIgnoreCase("A") && solicitacaoServicoDto.getImpacto().equalsIgnoreCase("B")) {
solicitacaoServicoDto.setIdPrioridade(3);
}
if (solicitacaoServicoDto.getUrgencia().equalsIgnoreCase("A") && solicitacaoServicoDto.getImpacto().equalsIgnoreCase("M")) {
solicitacaoServicoDto.setIdPrioridade(2);
}
if (solicitacaoServicoDto.getUrgencia().equalsIgnoreCase("A") && solicitacaoServicoDto.getImpacto().equalsIgnoreCase("A")) {
solicitacaoServicoDto.setIdPrioridade(1);
}
}
} else {
MatrizPrioridadeDAO matrizPrioriDao = new MatrizPrioridadeDAO();
if (tc != null)
matrizPrioriDao.setTransactionControler(tc);
String siglaImpacto = solicitacaoServicoDto.getImpacto();
String siglaUrgencia = solicitacaoServicoDto.getUrgencia();
Integer valorPrioridade = matrizPrioriDao.consultaValorPrioridade(siglaImpacto.trim().toUpperCase(), siglaUrgencia.trim().toUpperCase());
solicitacaoServicoDto.setIdPrioridade(valorPrioridade);
}
if (solicitacaoServicoDto.getIdPrioridade() == null) {// Se ainda a
// prioridade
// estiver NULA,
// vai a padrao
solicitacaoServicoDto.setIdPrioridade(acordoNivelServicoDto.getIdPrioridadePadrao());
}
if (solicitacaoServicoDto.getIdPrioridade() == null)
throw new Exception(i18nMessage("solicitacaoservico.validacao.prioridadesolicitacao"));
int prazoCapturaHH = 0;
int prazoCapturaMM = 0;
int prazoHH = 0;
int prazoMM = 0;
TempoAcordoNivelServicoDao tempoAcordoNivelServicoDao = new TempoAcordoNivelServicoDao();
if (tc != null)
tempoAcordoNivelServicoDao.setTransactionControler(tc);
Collection<TempoAcordoNivelServicoDTO> colTempos = tempoAcordoNivelServicoDao.findByIdAcordoAndIdPrioridade(acordoNivelServicoDto.getIdAcordoNivelServico(),
solicitacaoServicoDto.getIdPrioridade());
if (colTempos != null) {
FluxoServicoDao fluxoServicoDao = new FluxoServicoDao();
if (tc != null)
fluxoServicoDao.setTransactionControler(tc);
String idFasePadraoStr = ParametroUtil.getValor(ParametroSistema.IDFaseExecucaoServicos, tc, null);
if (idFasePadraoStr == null)
throw new Exception(i18nMessage("solicitacaoservico.validacao.padraoexecucao"));
FaseServicoDao faseServicoDao = new FaseServicoDao();
if (tc != null)
faseServicoDao.setTransactionControler(tc);
Collection<FaseServicoDTO> colFases = faseServicoDao.list();
HashMap<String, FaseServicoDTO> mapFasesCaptura = new HashMap();
if (colFases != null) {
for (FaseServicoDTO faseDto : colFases) {
if (faseDto.getFaseCaptura() != null && faseDto.getFaseCaptura().equalsIgnoreCase("S"))
mapFasesCaptura.put("" + faseDto.getIdFase(), faseDto);
}
}
Collection colFluxos = fluxoServicoDao.findByIdServicoContrato(solicitacaoServicoDto.getIdServicoContrato());
boolean bExisteFluxo = colFluxos != null && !colFluxos.isEmpty();
for (TempoAcordoNivelServicoDTO tempoAcordoDto : colTempos) {
boolean bAcumula = false;
if (bExisteFluxo) {
colFluxos = fluxoServicoDao.findByIdServicoContratoAndIdFase(solicitacaoServicoDto.getIdServicoContrato(), tempoAcordoDto.getIdFase());
bAcumula = colFluxos != null && !colFluxos.isEmpty();
} else
bAcumula = tempoAcordoDto.getIdFase().intValue() == new Integer(idFasePadraoStr).intValue();
/*
* -- RETIRADO POR EMAURI EM 13/08/2012. NAO JUSTIFICA A EXCLUSAO DO CALCULO DO SLA. if (!bAcumula) continue;
*/
if (tempoAcordoDto.getTempoHH() != null) {
if (mapFasesCaptura.get("" + tempoAcordoDto.getIdFase()) != null)
prazoCapturaHH += tempoAcordoDto.getTempoHH().intValue();
prazoHH += tempoAcordoDto.getTempoHH().intValue();
}
if (tempoAcordoDto.getTempoMM() != null) {
if (mapFasesCaptura.get("" + tempoAcordoDto.getIdFase()) != null)
prazoCapturaMM += tempoAcordoDto.getTempoMM().intValue();
prazoMM += tempoAcordoDto.getTempoMM().intValue();
}
}
}
if ((prazoHH + prazoMM) == 0) {
if (solicitacaoServicoDto.getIdPrioridade() != null && solicitacaoServicoDto.getIdPrioridade().intValue() == 5) {
solicitacaoServicoDto.setPrazoCapturaHH(0);
solicitacaoServicoDto.setPrazoCapturaMM(0);
solicitacaoServicoDto.setPrazoHH(0);
solicitacaoServicoDto.setPrazoMM(0);
solicitacaoServicoDto.setSlaACombinar("S");
} else {
throw new Exception(i18nMessage("solicitacaoservico.prazoacordonivel") + " " + solicitacaoServicoDto.getIdPrioridade());
}
}
while (prazoCapturaMM > 60) {
prazoCapturaMM = prazoCapturaMM - 60;
prazoCapturaHH += 1;
}
while (prazoMM > 60) {
prazoMM = prazoMM - 60;
prazoHH += 1;
}
solicitacaoServicoDto.setPrazoCapturaHH(prazoCapturaHH);
solicitacaoServicoDto.setPrazoCapturaMM(prazoCapturaMM);
solicitacaoServicoDto.setPrazoHH(prazoHH);
solicitacaoServicoDto.setPrazoMM(prazoMM);
//tratamento especial para solicita��es a combinar reclassificadas
SolicitacaoServicoDTO solAux = null;
if(solicitacaoServicoDto != null && solicitacaoServicoDto.getIdSolicitacaoServico() != null){
solAux = (SolicitacaoServicoDTO) this.getDao().restore(solicitacaoServicoDto);
if(solAux.getDataHoraLimiteStr()!=null){
if(solAux.getDataHoraLimiteStr().contains("--") && solAux.getSlaACombinar().equalsIgnoreCase("S")){
determinaPrazoLimiteSolicitacaoACombinarReclassificada(solicitacaoServicoDto, null, tc);
return;
}
}
}
if(solicitacaoServicoDto.getDataHoraInicio() != null && solicitacaoServicoDto.getDataHoraInicioSLA() == null){
solicitacaoServicoDto.setDataHoraInicioSLA(UtilDatas.getDataHoraAtual());
}
determinaPrazoLimite(solicitacaoServicoDto, null, tc);
}
@Override
public void encerra(SolicitacaoServicoDTO solicitacaoServicoDto) throws Exception {
TransactionControler tc = new TransactionControlerImpl(getDao().getAliasDB());
try {
tc.start();
encerra(solicitacaoServicoDto, tc);
tc.commit();
} catch (Exception e) {
this.rollbackTransaction(tc, e);
throw new ServiceException(e);
}finally {
try {
tc.close();
} catch (PersistenceException e) {
e.printStackTrace();
}
}
}
public void encerra(SolicitacaoServicoDTO solicitacaoServicoDto, TransactionControler tc) throws Exception {
SolicitacaoServicoDTO solicitacaoAuxDto = restoreAll(solicitacaoServicoDto.getIdSolicitacaoServico(), tc);
new ExecucaoSolicitacaoServiceEjb().encerra(solicitacaoAuxDto, tc);
}
public void fechaSolicitacaoServicoVinculadaByProblemaOrMudanca(SolicitacaoServicoDTO solicitacaoServicoDto, TransactionControler tc) throws Exception {
SolicitacaoServicoDTO solicitacaoAuxDto = restoreAll(solicitacaoServicoDto.getIdSolicitacaoServico(), tc);
new ExecucaoSolicitacaoServiceEjb().encerra(solicitacaoAuxDto, tc);
this.getDao().setTransactionControler(tc);
if (solicitacaoAuxDto != null && solicitacaoAuxDto.getIdSolicitacaoServico() != null) {
solicitacaoAuxDto.setSituacao("Resolvida");
this.getDao().updateNotNull(solicitacaoAuxDto);
}
}
@Override
public Collection findByConhecimento(BaseConhecimentoDTO baseConhecimentoDto) throws ServiceException, LogicException {
try {
return this.getDao().findByConhecimento(baseConhecimentoDto);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public Collection findByIdSolictacaoServico(Integer parm) throws ServiceException, LogicException {
SolicitacaoServicoProblemaDao solicitacaoServicoProblemaDao = new SolicitacaoServicoProblemaDao();
try {
return solicitacaoServicoProblemaDao.findByIdSolictacaoServico(parm);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
public Collection<SolicitacaoServicoDTO> findByServico(Integer idServico) throws Exception {
return this.getDao().findByServico(idServico);
}
@Override
public Collection<SolicitacaoServicoDTO> findByServico(Integer idServico, String nome) throws Exception {
return this.getDao().findByServico(idServico, nome);
}
/**
* @author breno.guimaraes
* @return Resumo das solicita��es relacionadas ao clinte passado como argumento.
*/
public ArrayList<SolicitacaoServicoDTO> findSolicitacoesServicosUsuario(Integer idUsuario, Integer idItemConfiguracao) {
Collection<SolicitacaoServicoDTO> solicitacoesSimplificada = null;
ArrayList<SolicitacaoServicoDTO> solicitacoesCompleta = new ArrayList<SolicitacaoServicoDTO>();
List condicoes = new ArrayList();
if (idUsuario != null) {
condicoes.add(new Condition("idSolicitante", "=", idUsuario.intValue()));
}
if (idItemConfiguracao != null) {
condicoes.add(new Condition("idItemConfiguracao", "=", idItemConfiguracao.intValue()));
}
try {
solicitacoesSimplificada = ((SolicitacaoServicoDao) getDao()).findByCondition(condicoes, null);
int i = 0;
if (solicitacoesSimplificada != null) {
for (SolicitacaoServicoDTO s : solicitacoesSimplificada) {
solicitacoesCompleta.add(this.restoreAll(s.getIdSolicitacaoServico()));
}
}
} catch (ServiceException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return solicitacoesCompleta;
}
public ArrayList<SolicitacaoServicoDTO> findSolicitacoesServicosUsuario(Integer idUsuario, String status, String campoBusca) throws Exception {
ArrayList<SolicitacaoServicoDTO> solicitacoesRetorno = new ArrayList<SolicitacaoServicoDTO>();
if (status == null || status.isEmpty()) {
status = "EmAndamento";
}
ArrayList<SolicitacaoServicoDTO> solicitacoes = getSolicitacaoServicoDao().findSolicitacoesServicosUsuario(idUsuario, status, campoBusca);
;
if (solicitacoes != null) {
for (SolicitacaoServicoDTO solicitacao : solicitacoes) {
solicitacoesRetorno.add(this.restoreAll(solicitacao.getIdSolicitacaoServico()));
}
}
return solicitacoesRetorno;
}
public boolean hasSolicitacoesServicosUsuario(Integer idUsuario, String status) throws Exception {
return getSolicitacaoServicoDao().hasSolicitacoesServicosUsuario(idUsuario, status);
}
protected SolicitacaoServicoDao getDao() {
if(solicitacaoServicoDao == null) {
solicitacaoServicoDao = new SolicitacaoServicoDao();
}
return solicitacaoServicoDao;
}
public Collection<SolicitacaoServicoDTO> getHistoricoByIdSolicitacao(Integer idSolicitacao) throws Exception {
try {
return this.getSolicitacaoServicoDao().getHistoricoByIdSolicitacao(idSolicitacao);
} catch (Exception e) {
throw e;
}
}
@Override
public ComplemInfSolicitacaoServicoService getInformacoesComplementaresService(ItemTrabalho itemTrabalho) throws Exception {
TemplateSolicitacaoServicoDTO templateDto = new TemplateSolicitacaoServicoServiceEjb().recuperaTemplateServico(itemTrabalho);
if (templateDto != null) {
return getInformacoesComplementaresService(templateDto.getNomeClasseServico());
} else {
return null;
}
}
public ComplemInfSolicitacaoServicoService getInformacoesComplementaresService(String nomeClasse) throws Exception {
ComplemInfSolicitacaoServicoService informacoesComplementaresService = (ComplemInfSolicitacaoServicoService) Class.forName(nomeClasse).newInstance();
return informacoesComplementaresService;
}
public ItemTrabalho getItemTrabalho(Integer idItemTrabalho) throws Exception {
return new Tarefa().getItemTrabalho(idItemTrabalho);
}
public Integer getQuantidadeByIdServico(int idServico) throws Exception {
try {
return this.getDao().getQuantidadeByIdServico(idServico);
} catch (Exception e) {
throw new ServiceException(e);
}
}
public Integer getQuantidadeByIdServicoContrato(int idServicoContrato) throws Exception {
try {
return this.getDao().getQuantidadeByIdServicoContrato(idServicoContrato);
} catch (Exception e) {
throw new ServiceException(e);
}
}
/**
* Retorna DAO de solicitacao servico.
*
* @return SolicitacaoServicoDao
* @throws ServiceException
* @author valdoilo
*/
public SolicitacaoServicoDao getSolicitacaoServicoDao() throws ServiceException {
return (SolicitacaoServicoDao) this.getDao();
}
@Override
public String getUrlInformacoesComplementares(SolicitacaoServicoDTO solicitacaoServicoDto) throws Exception {
String url = "";
TemplateSolicitacaoServicoDTO templateDto = new TemplateSolicitacaoServicoServiceEjb().recuperaTemplateServico(solicitacaoServicoDto);
if (templateDto != null) {
url = Constantes.getValue("CONTEXTO_APLICACAO");
// url = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.URL_Sistema, "");
if (templateDto.isQuestionario()) {
SolicitacaoServicoQuestionarioDTO solicitacaoServicoQuestionarioDto = null;
if (solicitacaoServicoDto.getIdSolicitacaoServico() != null)
solicitacaoServicoQuestionarioDto = new SolicitacaoServicoQuestionarioDao().findByIdSolicitacaoServico(solicitacaoServicoDto.getIdSolicitacaoServico());
url += "/pages/visualizacaoQuestionario/visualizacaoQuestionario.load?tabela100=true";
if (solicitacaoServicoQuestionarioDto != null && solicitacaoServicoQuestionarioDto.getIdSolicitacaoQuestionario() != null) {
// if (solicitacaoServicoDto.getIdTarefa() == null) {
url += "&idQuestionario=" + solicitacaoServicoQuestionarioDto.getIdQuestionario();
url += "&idIdentificadorResposta=" + solicitacaoServicoQuestionarioDto.getIdSolicitacaoQuestionario();
if (solicitacaoServicoQuestionarioDto.getSituacao().equalsIgnoreCase("F"))
url += "&modo=somenteleitura";
else
url += "&modo=edicao";
// }else{
// url += "&idQuestionarioOrigem=" + templateDto.getIdQuestionario();
// url += "&modo=edicao";
// }
} else {
url += "&idQuestionarioOrigem=" + templateDto.getIdQuestionario();
url += "&modo=edicao";
}
url += "&";
} else {
url += templateDto.getUrlRecuperacao();
url += "?";
}
String editar = "S";
if (solicitacaoServicoDto.getIdSolicitacaoServico() != null && solicitacaoServicoDto.getIdSolicitacaoServico().intValue() > 0) {
url += "idSolicitacaoServico=" + solicitacaoServicoDto.getIdSolicitacaoServico() + "&";
if (solicitacaoServicoDto.getIdTarefa() == null)
editar = "N";
else
url += "idTarefa=" + solicitacaoServicoDto.getIdTarefa() + "&";
}
url += "idServico=2007&idContrato=" + solicitacaoServicoDto.getIdContrato();
url += "&editar=" + editar;
}
return url;
}
public void gravaInformacoesGED(Collection colArquivosUpload, int idEmpresa, SolicitacaoServicoDTO solicitacaoServicoDto, TransactionControler tc) throws Exception {
// Setando a transaction no GED
ControleGEDDao controleGEDDao = new ControleGEDDao();
if (tc != null) {
controleGEDDao.setTransactionControler(tc);
}
String PRONTUARIO_GED_DIRETORIO = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.GedDiretorio, "");
if (PRONTUARIO_GED_DIRETORIO == null || PRONTUARIO_GED_DIRETORIO.trim().equalsIgnoreCase("")) {
PRONTUARIO_GED_DIRETORIO = "";
}
if (PRONTUARIO_GED_DIRETORIO.equalsIgnoreCase("")) {
PRONTUARIO_GED_DIRETORIO = Constantes.getValue("DIRETORIO_GED");
}
if (PRONTUARIO_GED_DIRETORIO == null || PRONTUARIO_GED_DIRETORIO.equalsIgnoreCase("")) {
PRONTUARIO_GED_DIRETORIO = "/ged";
}
String PRONTUARIO_GED_INTERNO = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.GedInterno, "S");
if (PRONTUARIO_GED_INTERNO == null) {
PRONTUARIO_GED_INTERNO = "S";
}
String prontuarioGedInternoBancoDados = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.GedInternoBD, "N");
if (!UtilStrings.isNotVazio(prontuarioGedInternoBancoDados))
prontuarioGedInternoBancoDados = "N";
String pasta = "";
if (PRONTUARIO_GED_INTERNO.equalsIgnoreCase("S")) {
pasta = controleGEDDao.getProximaPastaArmazenar();
File fileDir = new File(PRONTUARIO_GED_DIRETORIO);
if (!fileDir.exists()) {
fileDir.mkdirs();
}
fileDir = new File(PRONTUARIO_GED_DIRETORIO + "/" + idEmpresa);
if (!fileDir.exists()) {
fileDir.mkdirs();
}
fileDir = new File(PRONTUARIO_GED_DIRETORIO + "/" + idEmpresa + "/" + pasta);
if (!fileDir.exists()) {
fileDir.mkdirs();
}
}
for (Iterator it = colArquivosUpload.iterator(); it.hasNext();) {
UploadDTO uploadDTO = (UploadDTO) it.next();
ControleGEDDTO controleGEDDTO = new ControleGEDDTO();
controleGEDDTO.setIdTabela(ControleGEDDTO.TABELA_SOLICITACAOSERVICO);
controleGEDDTO.setId(solicitacaoServicoDto.getIdSolicitacaoServico());
controleGEDDTO.setDataHora(UtilDatas.getDataAtual());
controleGEDDTO.setDescricaoArquivo(uploadDTO.getDescricao());
controleGEDDTO.setExtensaoArquivo(Util.getFileExtension(uploadDTO.getNameFile()));
controleGEDDTO.setPasta(pasta);
controleGEDDTO.setNomeArquivo(uploadDTO.getNameFile());
if (!uploadDTO.getTemporario().equalsIgnoreCase("S")) { // Se nao //
// for //
// temporario
continue;
}
if (PRONTUARIO_GED_INTERNO.trim().equalsIgnoreCase("S") && "S".equalsIgnoreCase(prontuarioGedInternoBancoDados.trim())) { // Se
// utiliza
// GED
// interno e eh BD
controleGEDDTO.setPathArquivo(uploadDTO.getPath()); // Isso vai
// fazer a
// gravacao
// no BD.
// dento do
// create
// abaixo.
} else {
controleGEDDTO.setPathArquivo(null);
}
controleGEDDTO = (ControleGEDDTO) controleGEDDao.create(controleGEDDTO);
if (controleGEDDTO != null) {
uploadDTO.setIdControleGED(controleGEDDTO.getIdControleGED());
}
if (PRONTUARIO_GED_INTERNO.equalsIgnoreCase("S") && !"S".equalsIgnoreCase(prontuarioGedInternoBancoDados)) { // Se
// utiliza
// GED
// interno e nao eh BD
if (controleGEDDTO != null) {
try {
File arquivo = new File(PRONTUARIO_GED_DIRETORIO + "/" + idEmpresa + "/" + pasta + "/" + controleGEDDTO.getIdControleGED() + "."
+ Util.getFileExtension(uploadDTO.getNameFile()));
CriptoUtils.encryptFile(uploadDTO.getPath(), PRONTUARIO_GED_DIRETORIO + "/" + idEmpresa + "/" + pasta + "/" + controleGEDDTO.getIdControleGED() + ".ged", System
.getProperties().get("user.dir") + Constantes.getValue("CAMINHO_CHAVE_PUBLICA"));
arquivo.delete();
} catch (Exception e) {
}
}
} /*
* else if (!PRONTUARIO_GED_INTERNO.equalsIgnoreCase("S")) { // Se // utiliza // GED // externo // FALTA IMPLEMENTAR!!! }
*/
}
Collection<ControleGEDDTO> colAnexo = controleGEDDao.listByIdTabelaAndIdBaseConhecimento(ControleGEDDTO.TABELA_SOLICITACAOSERVICO, solicitacaoServicoDto.getIdSolicitacaoServico());
if (colAnexo != null) {
for (ControleGEDDTO dtoGed : colAnexo) {
boolean b = false;
for (Iterator it = colArquivosUpload.iterator(); it.hasNext();) {
UploadDTO uploadDTO = (UploadDTO) it.next();
if (uploadDTO.getIdControleGED() == null) {
b = true;
break;
}
if (uploadDTO.getIdControleGED().intValue() == dtoGed.getIdControleGED().intValue()) {
b = true;
}
if (b) {
break;
}
}
if (!b) {
controleGEDDao.delete(dtoGed);
}
}
}
}
@Override
public Collection<SolicitacaoServicoDTO> listAll() throws Exception {
return null;
}
@Override
public Collection<SolicitacaoServicoDTO> listAllIncidentes(Integer idEmpregado) throws Exception {
return this.getDao().listAllIncidentes(idEmpregado);
}
@Override
public Collection<SolicitacaoServicoDTO> listAllServicos() throws Exception {
return this.getDao().listAllServicos();
}
@Override
public Collection<SolicitacaoServicoDTO> listAllServicosLikeNomeServico(String nome) throws Exception {
return this.getDao().listAllServicosLikeNomeServico(nome);
}
@Override
public Collection<RelatorioQuantitativoSolicitacaoDTO> listaQuantidadeSolicitacaoPorFase(SolicitacaoServicoDTO solicitacaoDto) throws Exception {
return this.getDao().listaQuantidadeSolicitacaoPorFase(solicitacaoDto);
}
@Override
public Collection<SolicitacaoServicoDTO> listarSLA() throws Exception {
return this.getDao().listarSLA();
}
@Override
public Collection<RelatorioQuantitativoSolicitacaoDTO> listaQuantidadeSolicitacaoPorGrupo(HttpServletRequest request, SolicitacaoServicoDTO solicitacaoDto) throws Exception {
Collection<RelatorioQuantitativoSolicitacaoDTO> listaQuantidadeSolicitacaoPorGrupo = this.getDao().listaQuantidadeSolicitacaoPorGrupo(solicitacaoDto);
List<RelatorioQuantitativoSolicitacaoDTO> lista = new ArrayList<RelatorioQuantitativoSolicitacaoDTO>();
lista.addAll(listaQuantidadeSolicitacaoPorGrupo);
if (!lista.isEmpty()) {
String grupoRegistroAnterior = lista.get(0).getGrupo();
int totalGrupo = 0;
for (int i = 0; i < lista.size(); i++) {
if (lista.get(i).getGrupo() != null) {
if (lista.get(i).getGrupo().equals(grupoRegistroAnterior)) {
totalGrupo += lista.get(i).getQuantidadeServico();
} else {
RelatorioQuantitativoSolicitacaoDTO relatorioQuantitativoSolicitacaoDTO = new RelatorioQuantitativoSolicitacaoDTO();
relatorioQuantitativoSolicitacaoDTO.setServico(UtilI18N.internacionaliza(request, "citcorpore.comum.totalGrupo"));
relatorioQuantitativoSolicitacaoDTO.setQuantidadeServico(totalGrupo);
relatorioQuantitativoSolicitacaoDTO.setGrupo(grupoRegistroAnterior);
lista.add(i++, relatorioQuantitativoSolicitacaoDTO);
totalGrupo = lista.get(i).getQuantidadeServico();
grupoRegistroAnterior = lista.get(i).getGrupo();
}
}
}
RelatorioQuantitativoSolicitacaoDTO relatorioQuantitativoSolicitacaoDTO = new RelatorioQuantitativoSolicitacaoDTO();
relatorioQuantitativoSolicitacaoDTO.setServico(UtilI18N.internacionaliza(request, "citcorpore.comum.totalGrupo"));
relatorioQuantitativoSolicitacaoDTO.setQuantidadeServico(totalGrupo);
relatorioQuantitativoSolicitacaoDTO.setGrupo(grupoRegistroAnterior);
lista.add(relatorioQuantitativoSolicitacaoDTO);
}
return lista;
}
@Override
public Collection<RelatorioQuantitativoSolicitacaoDTO> listaQuantidadeSolicitacaoPorHoraAbertura(SolicitacaoServicoDTO solicitacaoDto) throws Exception {
return this.getDao().listaQuantidadeSolicitacaoPorHoraAbertura(solicitacaoDto);
}
@Override
public Collection<RelatorioQuantitativoSolicitacaoDTO> listaQuantidadeSolicitacaoPorItemConfiguracao(SolicitacaoServicoDTO solicitacaoDto) throws Exception {
return this.getDao().listaQuantidadeSolicitacaoPorItemConfiguracao(solicitacaoDto);
}
@Override
public Collection<RelatorioQuantitativoSolicitacaoDTO> listaQuantidadeSolicitacaoPorOrigem(SolicitacaoServicoDTO solicitacaoDto) throws Exception {
return this.getDao().listaQuantidadeSolicitacaoPorOrigem(solicitacaoDto);
}
@Override
public Collection<RelatorioQuantitativoSolicitacaoDTO> listaQuantidadeSolicitacaoPorPesquisaSatisfacao(HttpServletRequest request, SolicitacaoServicoDTO solicitacaoDto) throws Exception {
Collection<RelatorioQuantitativoSolicitacaoDTO> listaQuantidadeSolicitacaoPorPesquisaSatisfacao = this.getDao().listaQuantidadeSolicitacaoPorPesquisaSatisfacao(solicitacaoDto);
List<RelatorioQuantitativoSolicitacaoDTO> lista = new ArrayList<RelatorioQuantitativoSolicitacaoDTO>();
lista.addAll(listaQuantidadeSolicitacaoPorPesquisaSatisfacao);
if (!lista.isEmpty()) {
String grupoRegistroAnterior = lista.get(0).getGrupoPesquisaSatisfacao();
int totalGrupo = 0;
for (int i = 0; i < lista.size(); i++) {
if (lista.get(i).getGrupoPesquisaSatisfacao() != null && lista.get(i).getGrupoPesquisaSatisfacao().equals(grupoRegistroAnterior)) {
totalGrupo += lista.get(i).getQuantidadePesquisaSatisfacao();
} else {
RelatorioQuantitativoSolicitacaoDTO relatorioQuantitativoSolicitacaoDTO = new RelatorioQuantitativoSolicitacaoDTO();
relatorioQuantitativoSolicitacaoDTO.setServicoPesquisaSatisfacao(UtilI18N.internacionaliza(request, "citcorpore.comum.totalGrupo"));
relatorioQuantitativoSolicitacaoDTO.setQuantidadePesquisaSatisfacao(totalGrupo);
relatorioQuantitativoSolicitacaoDTO.setGrupoPesquisaSatisfacao(grupoRegistroAnterior);
lista.add(i++, relatorioQuantitativoSolicitacaoDTO);
totalGrupo = lista.get(i).getQuantidadePesquisaSatisfacao();
grupoRegistroAnterior = lista.get(i).getGrupoPesquisaSatisfacao();
}
}
RelatorioQuantitativoSolicitacaoDTO relatorioQuantitativoSolicitacaoDTO = new RelatorioQuantitativoSolicitacaoDTO();
relatorioQuantitativoSolicitacaoDTO.setServicoPesquisaSatisfacao(UtilI18N.internacionaliza(request, "citcorpore.comum.totalGrupo"));
relatorioQuantitativoSolicitacaoDTO.setQuantidadePesquisaSatisfacao(totalGrupo);
relatorioQuantitativoSolicitacaoDTO.setGrupoPesquisaSatisfacao(grupoRegistroAnterior);
lista.add(relatorioQuantitativoSolicitacaoDTO);
}
return lista;
}
@Override
public Collection<RelatorioQuantitativoSolicitacaoDTO> listaQuantidadeSolicitacaoPorPrioridade(SolicitacaoServicoDTO solicitacaoDto) throws Exception {
return this.getDao().listaQuantidadeSolicitacaoPorPrioridade(solicitacaoDto);
}
@Override
public Collection<RelatorioQuantitativoSolicitacaoDTO> listaQuantidadeSolicitacaoPorResponsavel(SolicitacaoServicoDTO solicitacaoDto) throws Exception {
return this.getDao().listaQuantidadeSolicitacaoPorResponsavel(solicitacaoDto);
}
@Override
public Collection<RelatorioQuantitativoSolicitacaoDTO> listaQuantidadeSolicitacaoPorServico(SolicitacaoServicoDTO solicitacaoServicoDto) throws Exception {
return this.getDao().listaQuantidadeSolicitacaoPorServico(solicitacaoServicoDto);
}
@Override
public Collection<RelatorioQuantitativoSolicitacaoDTO> listaServicosAbertosAprovados(SolicitacaoServicoDTO solicitacaoServicoDto) throws Exception {
return this.getDao().listaServicosAbertosAprovados(solicitacaoServicoDto);
}
@Override
public Collection<RelatorioQuantitativoSolicitacaoDTO> listaQuantidadeSolicitacaoPorSituacao(SolicitacaoServicoDTO solicitacaoDto) throws Exception {
Collection<RelatorioQuantitativoSolicitacaoDTO> listaQuantidadeSolicitacaoPorSituacao = null;
try {
listaQuantidadeSolicitacaoPorSituacao = ((SolicitacaoServicoDao) getDao()).listaQuantidadeSolicitacaoPorSituacao(solicitacaoDto);
if (listaQuantidadeSolicitacaoPorSituacao != null) {
for (RelatorioQuantitativoSolicitacaoDTO relatorioQuantitativoSolicitacaoDTO : listaQuantidadeSolicitacaoPorSituacao) {
if (StringUtils.contains(StringUtils.upperCase(relatorioQuantitativoSolicitacaoDTO.getSituacao()), StringUtils.upperCase("EmAndamento"))) {
relatorioQuantitativoSolicitacaoDTO.setSituacao("Em Andamento");
}
}
}
} catch (ServiceException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return listaQuantidadeSolicitacaoPorSituacao;
}
@Override
public Collection<RelatorioQuantitativoSolicitacaoDTO> listaQuantidadeSolicitacaoPorSituacaoSLA(HttpServletRequest request, SolicitacaoServicoDTO solicitacaoDto) throws Exception {
List<RelatorioQuantitativoSolicitacaoDTO> listaQuantidadeSolicitacaoPorSituacaoSLA = this.getDao().listaQuantidadeSolicitacaoPorSituacaoSLA(solicitacaoDto);
// A LISTA DEVE TER APENAS DOIS REGISTROS: QUANTIDADE DE ATRAZOS DE SLA (PRIMEIRO) E QUANTIDADE DE SLA DENTRO DO PRAZO (SEGUNDO)
if (listaQuantidadeSolicitacaoPorSituacaoSLA != null && listaQuantidadeSolicitacaoPorSituacaoSLA.size() == 2) {
listaQuantidadeSolicitacaoPorSituacaoSLA.get(0).setSituacaoSLA(UtilI18N.internacionaliza(request, "citcorpore.comum.comAtraso"));
listaQuantidadeSolicitacaoPorSituacaoSLA.get(1).setSituacaoSLA(UtilI18N.internacionaliza(request, "citcorpore.comum.semAtraso"));
}
return listaQuantidadeSolicitacaoPorSituacaoSLA;
}
@Override
public Collection<RelatorioQuantitativoSolicitacaoDTO> listaQuantidadeSolicitacaoPorSolicitante(SolicitacaoServicoDTO solicitacaoDto) throws Exception {
return this.getDao().listaQuantidadeSolicitacaoPorSolicitante(solicitacaoDto);
}
@Override
public Collection<RelatorioQuantitativoSolicitacaoDTO> listaQuantidadeSolicitacaoPorTipo(SolicitacaoServicoDTO solicitacaoDto) throws Exception {
return this.getDao().listaQuantidadeSolicitacaoPorTipo(solicitacaoDto);
}
@Override
public Collection<RelatorioQuantitativoSolicitacaoDTO> listaQuantidadeSolicitacaoPorTipoServico(SolicitacaoServicoDTO solicitacaoDto) throws Exception {
return this.getDao().listaQuantidadeSolicitacaoPorTipoServico(solicitacaoDto);
}
@Override
public String listaServico(Integer idSolicitacaoservico) throws Exception {
return this.getDao().listaServico(idSolicitacaoservico);
}
@Override
public Collection<SolicitacaoServicoDTO> listaSolicitacaoPorBaseConhecimento(SolicitacaoServicoDTO solicitacao) throws Exception {
Collection<SolicitacaoServicoDTO> listaSolicitacaoServicoPorBaseConhecimento = null;
try {
listaSolicitacaoServicoPorBaseConhecimento = ((SolicitacaoServicoDao) getDao()).listaSolicitacaoPorBaseConhecimento(solicitacao);
for (SolicitacaoServicoDTO solicitacaoServicoDto : listaSolicitacaoServicoPorBaseConhecimento) {
Source source = new Source(solicitacaoServicoDto.getDescricao());
solicitacaoServicoDto.setDescricao(source.getTextExtractor().toString());
if (StringUtils.contains(StringUtils.upperCase(solicitacaoServicoDto.getSituacao()), StringUtils.upperCase("EmAndamento"))) {
solicitacaoServicoDto.setSituacao("Em Andamento");
}
}
} catch (ServiceException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return listaSolicitacaoServicoPorBaseConhecimento;
}
@Override
public Collection<SolicitacaoServicoDTO> listaSolicitacaoServicoPorCriterios(PesquisaSolicitacaoServicoDTO pesquisaSolicitacaoServicoDto) throws Exception {
Collection<SolicitacaoServicoDTO> listaSolicitacaoServicoPorCriterios = null;
try {
listaSolicitacaoServicoPorCriterios = ((SolicitacaoServicoDao) getDao()).listaSolicitacaoServicoPorCriterios(pesquisaSolicitacaoServicoDto);
// Retirando devido ao stress que o mesmo gerava
/*
* Timestamp t = UtilDatas.getDataHoraAtual(); for (SolicitacaoServicoDTO solicitacaoServicoDto : listaSolicitacaoServicoPorCriterios) { Source source = new
* Source(solicitacaoServicoDto.getDescricao()); solicitacaoServicoDto.setDescricao(source.getTextExtractor().toString());
*
* if (solicitacaoServicoDto.getSituacao().equalsIgnoreCase("Fechada")) { SolicitacaoServicoDTO solicitacao = new SolicitacaoServicoDTO();
* solicitacao.setIdSolicitacaoServico(solicitacaoServicoDto.getIdSolicitacaoServico()); solicitacao = (SolicitacaoServicoDTO) this.restore(solicitacao);
* solicitacaoServicoDto.setTempoAtendimentoHH(solicitacao.getTempoAtendimentoHH()); solicitacaoServicoDto.setTempoAtendimentoMM(solicitacao.getTempoAtendimentoMM()); }
*
* if (StringUtils.contains(StringUtils.upperCase(solicitacaoServicoDto.getSituacao()), StringUtils.upperCase("EmAndamento"))) { solicitacaoServicoDto.setSituacao("Em Andamento"); }
*
* } Timestamp y = UtilDatas.getDataHoraAtual(); System.out.println("Tempo Execu��o For: " + UtilDatas.calculaDiferencaTempoEmMilisegundos(y, t) );
*/
// Retirando devido ao stress que o mesmo gerava
// for (SolicitacaoServicoDTO solicitacaoServicoDto : listaSolicitacaoServicoPorCriterios) {
// Source source = new Source(solicitacaoServicoDto.getDescricao());
// solicitacaoServicoDto.setDescricao(source.getTextExtractor().toString());
/*
* if (solicitacaoServicoDto.getSituacao().equalsIgnoreCase("Fechada")) { SolicitacaoServicoDTO solicitacao = new SolicitacaoServicoDTO();
* solicitacao.setIdSolicitacaoServico(solicitacaoServicoDto.getIdSolicitacaoServico()); solicitacao = (SolicitacaoServicoDTO) this.restore(solicitacao);
* solicitacaoServicoDto.setTempoAtendimentoHH(solicitacao.getTempoAtendimentoHH()); solicitacaoServicoDto.setTempoAtendimentoMM(solicitacao.getTempoAtendimentoMM()); }
*
* if (StringUtils.contains(StringUtils.upperCase(solicitacaoServicoDto.getSituacao()), StringUtils.upperCase("EmAndamento"))) { solicitacaoServicoDto.setSituacao("Em Andamento"); }
*/
// }
} catch (ServiceException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return listaSolicitacaoServicoPorCriterios;
}
@Override
public Collection<SolicitacaoServicoDTO> listaSolicitacaoServicoPorServicoContrato(Integer idServicoContratoContabil) throws Exception {
try {
return this.getDao().listaSolicitacaoServicoPorServicoContrato(idServicoContratoContabil);
} catch (Exception e) {
throw new ServiceException(e);
}
}
public Collection listaSolicitacoesSemPesquisaSatisfacao() throws Exception {
return this.getDao().listaSolicitacoesSemPesquisaSatisfacao();
}
public Collection<SolicitacaoServicoDTO> listByTarefas(Collection<TarefaFluxoDTO> listTarefas, TransactionControler tc) throws Exception {
if (tc != null)
this.getDao().setTransactionControler(tc);
Collection<SolicitacaoServicoDTO> listSolicitacaoServicoDto = new ArrayList();
listSolicitacaoServicoDto = this.getDao().listByTarefas(listTarefas);
if (listSolicitacaoServicoDto != null && !listSolicitacaoServicoDto.isEmpty()) {
for (SolicitacaoServicoDTO solicitacaoDto : listSolicitacaoServicoDto) {
if (solicitacaoDto != null) {
solicitacaoDto.setDataHoraLimiteStr(solicitacaoDto.getDataHoraLimiteStr());
solicitacaoDto.setDataHoraInicioSLA(solicitacaoDto.getDataHoraInicioSLA());
solicitacaoDto.setNomeServico(solicitacaoDto.getServico());
if (solicitacaoDto.getNomeUnidadeSolicitante() != null && !solicitacaoDto.getNomeUnidadeSolicitante().trim().equalsIgnoreCase(""))
solicitacaoDto.setSolicitanteUnidade(solicitacaoDto.getSolicitante() + " (" + solicitacaoDto.getNomeUnidadeSolicitante() + ")");
if (solicitacaoDto.getNomeUnidadeResponsavel() != null && !solicitacaoDto.getNomeUnidadeResponsavel().trim().equalsIgnoreCase(""))
solicitacaoDto.setResponsavel(solicitacaoDto.getResponsavel() + " (" + solicitacaoDto.getNomeUnidadeResponsavel() + ")");
solicitacaoDto = this.verificaSituacaoSLA(solicitacaoDto, tc);
}
}
}
return listSolicitacaoServicoDto;
}
public Collection<SolicitacaoServicoDTO> listByTarefas(Collection<TarefaFluxoDTO> listTarefas, TipoSolicitacaoServico[] tiposSolicitacao, TransactionControler tc) throws Exception {
if (tc != null)
this.getDao().setTransactionControler(tc);
Collection<SolicitacaoServicoDTO> listSolicitacaoServicoDto = new ArrayList();
listSolicitacaoServicoDto = this.getDao().listByTarefas(listTarefas, tiposSolicitacao);
if (listSolicitacaoServicoDto != null && !listSolicitacaoServicoDto.isEmpty()) {
for (SolicitacaoServicoDTO solicitacaoDto : listSolicitacaoServicoDto) {
if (solicitacaoDto != null) {
solicitacaoDto.setDataHoraLimiteStr(solicitacaoDto.getDataHoraLimiteStr());
solicitacaoDto.setDataHoraInicioSLA(solicitacaoDto.getDataHoraInicioSLA());
solicitacaoDto.setNomeServico(solicitacaoDto.getServico());
if (solicitacaoDto.getNomeUnidadeSolicitante() != null && !solicitacaoDto.getNomeUnidadeSolicitante().trim().equalsIgnoreCase(""))
solicitacaoDto.setSolicitanteUnidade(solicitacaoDto.getSolicitante() + " (" + solicitacaoDto.getNomeUnidadeSolicitante() + ")");
if (solicitacaoDto.getNomeUnidadeResponsavel() != null && !solicitacaoDto.getNomeUnidadeResponsavel().trim().equalsIgnoreCase(""))
solicitacaoDto.setResponsavel(solicitacaoDto.getResponsavel() + " (" + solicitacaoDto.getNomeUnidadeResponsavel() + ")");
solicitacaoDto = this.verificaSituacaoSLA(solicitacaoDto, tc);
}
}
}
return listSolicitacaoServicoDto;
}
@Override
public SolicitacaoServicoDTO listIdentificacao(Integer idItemConfiguracao) throws Exception {
try {
return this.getDao().listIdentificacao(idItemConfiguracao);
} catch (Exception e) {
throw new ServiceException(e);
}
}
public Collection<SolicitacaoServicoDTO> listIncidentesNaoFinalizados() throws Exception {
try {
return this.getSolicitacaoServicoDao().listIncidentesNaoFinalizados();
} catch (Exception e) {
throw e;
}
}
@Override
public SolicitacaoServicoDTO listInformacaoContato(String nomeContato) throws Exception {
try {
return this.getDao().retornaSolicitacaoServicoComInformacoesDoContato(nomeContato);
} catch (Exception e) {
throw new ServiceException(e);
}
}
/**
* Retorna Solicita��es de Servi�os de acordo com o Tipo de Demanda e Usu�rio.
*
* @param tipoDemandaServico
* @param grupoSeguranca
* @param usuario
* @return
* @throws Exception
*/
@Override
public Collection<SolicitacaoServicoDTO> listSolicitacaoServico(String tipoDemandaServico, GrupoDTO grupoSeguranca, UsuarioDTO usuario, Date dataInicio, Date dataFim, String situacao)
throws Exception {
try {
return this.getSolicitacaoServicoDao().listSolicitacaoServico(tipoDemandaServico, grupoSeguranca, usuario, dataInicio, dataFim, situacao);
} catch (Exception e) {
throw e;
}
}
public Collection<SolicitacaoServicoDTO> listSolicitacaoServicoByCriterios(Collection colCriterios) throws Exception {
Collection<SolicitacaoServicoDTO> listaSolicitacaoServico = null;
try {
listaSolicitacaoServico = ((SolicitacaoServicoDao) getDao()).listSolicitacaoServicoByCriterios(colCriterios);
/*
* for (SolicitacaoServicoDTO solicitacaoServicoDto : listaSolicitacaoServico) { Source source = new Source(solicitacaoServicoDto.getDescricao()); solicitacaoServicoDto
* .setDescricao(source.getTextExtractor().toString());
*
* if (solicitacaoServicoDto.getSituacao().equalsIgnoreCase("Fechada")) { SolicitacaoServicoDTO solicitacao = new SolicitacaoServicoDTO();
* solicitacao.setIdSolicitacaoServico(solicitacaoServicoDto .getIdSolicitacaoServico()); solicitacao = (SolicitacaoServicoDTO) this.restore(solicitacao); solicitacaoServicoDto
* .setTempoAtendimentoHH(solicitacao.getTempoAtendimentoHH()); solicitacaoServicoDto .setTempoAtendimentoMM(solicitacao.getTempoAtendimentoMM()); }
*
* if (StringUtils.contains(StringUtils.upperCase(solicitacaoServicoDto .getSituacao()), StringUtils.upperCase("EmAndamento"))) { solicitacaoServicoDto.setSituacao("Em Andamento"); }
*
* }
*/
} catch (ServiceException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return listaSolicitacaoServico;
}
@Override
public List<SolicitacaoServicoDTO> listSolicitacaoServicoByItemConfiguracao(Integer idItemConfiguracao) throws Exception {
return this.getDao().listSolicitacaoServicoByItemConfiguracao(idItemConfiguracao);
}
public Collection<SolicitacaoServicoDTO> listSolicitacaoServicoEmAndamento(Integer idSolicitacaoServico) {
Collection<SolicitacaoServicoDTO> listSolicitacaoServicoEmAndamento = new ArrayList<SolicitacaoServicoDTO>();
try {
listSolicitacaoServicoEmAndamento = this.getDao().listSolicitacaoServicoEmAndamento(idSolicitacaoServico);
} catch (Exception e) {
e.printStackTrace();
}
return listSolicitacaoServicoEmAndamento;
}
public Collection<SolicitacaoServicoDTO> listSolicitacaoServicoNaoFinalizadas() throws Exception {
try {
return this.getSolicitacaoServicoDao().listSolicitacaoServicoNaoFinalizadas();
} catch (Exception e) {
throw e;
}
}
public Collection<SolicitacaoServicoDTO> listSolicitacaoServicoRelacionada(int idSolicitacaoPai) {
Collection<SolicitacaoServicoDTO> listSolicitacaoServicoRelacionada = new ArrayList<SolicitacaoServicoDTO>();
try {
listSolicitacaoServicoRelacionada = this.getDao().listSolicitacaoServicoRelacionada(idSolicitacaoPai);
} catch (Exception e) {
e.printStackTrace();
}
return listSolicitacaoServicoRelacionada;
}
public Collection<SolicitacaoServicoDTO> listSolicitacaoServicoRelacionadaPai(int idSolicitacaoPai) {
Collection<SolicitacaoServicoDTO> listSolicitacaoServicoRelacionada = new ArrayList<SolicitacaoServicoDTO>();
try {
listSolicitacaoServicoRelacionada = this.getDao().listSolicitacaoServicoRelacionadaPai(idSolicitacaoPai);
} catch (Exception e) {
e.printStackTrace();
}
return listSolicitacaoServicoRelacionada;
}
public Collection<SolicitacaoServicoDTO> listSolicitacoesFilhas(TransactionControler tc) throws Exception {
if (tc != null)
this.getDao().setTransactionControler(tc);
return this.getDao().listSolicitacoesFilhas();
}
public SolicitacaoServicoDTO obterQuantidadeSolicitacoesServico(Integer idServicoContrato, java.util.Date dataInicio, java.util.Date dataFim) throws Exception {
try {
return this.getDao().obterQuantidadeSolicitacoesServico(idServicoContrato, dataInicio, dataFim);
} catch (Exception e) {
throw new ServiceException(e);
}
}
@Override
public Collection<SolicitacaoServicoDTO> quantidadeSolicitacaoPorBaseConhecimento(SolicitacaoServicoDTO solicitacao) throws Exception {
return this.getDao().quantidadeSolicitacaoPorBaseConhecimento(solicitacao);
}
@Override
public void reabre(UsuarioDTO usuarioDto, SolicitacaoServicoDTO solicitacaoServicoDto) throws Exception {
TransactionControler tc = new TransactionControlerImpl(getDao().getAliasDB());
try {
tc.start();
reabre(usuarioDto, solicitacaoServicoDto, tc);
tc.commit();
} catch (Exception e) {
this.rollbackTransaction(tc, e);
throw new ServiceException(e);
}finally {
try {
tc.close();
} catch (PersistenceException e) {
e.printStackTrace();
}
}
}
public void reabre(UsuarioDTO usuarioDto, SolicitacaoServicoDTO solicitacaoServicoDto, TransactionControler tc) throws Exception {
SolicitacaoServicoDTO solicitacaoAuxDto = restoreAll(solicitacaoServicoDto.getIdSolicitacaoServico(), tc);
new ExecucaoSolicitacaoServiceEjb().reabre(usuarioDto, solicitacaoAuxDto, tc);
}
@Override
public void reativa(UsuarioDTO usuarioDto, SolicitacaoServicoDTO solicitacaoServicoDto) throws Exception {
TransactionControler tc = new TransactionControlerImpl(getDao().getAliasDB());
try {
tc.start();
reativa(usuarioDto, solicitacaoServicoDto, tc);
tc.commit();
} catch (Exception e) {
this.rollbackTransaction(tc, e);
throw new ServiceException(e);
}finally {
try {
tc.close();
} catch (PersistenceException e) {
e.printStackTrace();
}
}
}
public void reativa(UsuarioDTO usuarioDto, SolicitacaoServicoDTO solicitacaoServicoDto, TransactionControler tc) throws Exception {
if(solicitacaoServicoDto.getSituacaoSLA()!=null && (solicitacaoServicoDto.getSituacaoSLA().equalsIgnoreCase(SituacaoSLA.M.name()) || solicitacaoServicoDto.getSituacaoSLA().equalsIgnoreCase(SituacaoSLA.A.name()))){
new ExecucaoSolicitacaoServiceEjb().reativa(usuarioDto, solicitacaoServicoDto, tc);
}
else{
SolicitacaoServicoDTO solicitacaoAuxDto = restoreAll(solicitacaoServicoDto.getIdSolicitacaoServico(), tc);
new ExecucaoSolicitacaoServiceEjb().reativa(usuarioDto, solicitacaoAuxDto, tc);
}
}
@Override
public FluxoDTO recuperaFluxo(SolicitacaoServicoDTO solicitacaoServicoDto) throws Exception {
return recuperaFluxo(solicitacaoServicoDto, null);
}
public FluxoDTO recuperaFluxo(SolicitacaoServicoDTO solicitacaoServicoDto, TransactionControler tc) throws Exception {
if (solicitacaoServicoDto == null || solicitacaoServicoDto.getIdSolicitacaoServico() == null)
throw new Exception(i18nMessage("solicitacaoservico.validacao.solicitacaoservico"));
FluxoDTO fluxoDto = null;
ExecucaoSolicitacaoDao execucaoSolicitacaoDao = new ExecucaoSolicitacaoDao();
if (tc != null)
execucaoSolicitacaoDao.setTransactionControler(tc);
Collection<ExecucaoSolicitacaoDTO> colExecucao = execucaoSolicitacaoDao.listByIdSolicitacao(solicitacaoServicoDto.getIdSolicitacaoServico());
if (colExecucao != null && !colExecucao.isEmpty()) {
fluxoDto = new FluxoDTO();
ExecucaoSolicitacaoDTO execucaoDto = (ExecucaoSolicitacaoDTO) ((List) colExecucao).get(0);
fluxoDto.setIdFluxo(execucaoDto.getIdFluxo());
fluxoDto = (FluxoDTO) new FluxoDao().restore(fluxoDto);
}
return fluxoDto;
}
public Collection<SolicitacaoServicoDTO> relatorioControleSla(SolicitacaoServicoDTO solicitacao) throws Exception {
return this.getDao().relatorioControleSla(solicitacao);
}
/**
* @param solicitacaoServicoDTO
* @return Cole��o de Solicita��o de servi�o com datas horas de sla da solicitacao servi�o.
* @throws Exception
*/
public SolicitacaoServicoDTO relatorioControlePercentualQuantitativoSla(SolicitacaoServicoDTO solicitacaoServicoDTO) throws Exception {
SolicitacaoServicoDTO solicitacaoServicoBean = solicitacaoServicoDTO;
List<SolicitacaoServicoDTO> listSolicitacaoservico = (List<SolicitacaoServicoDTO>) this.getDao().relatorioControleSla(solicitacaoServicoDTO);
/*for (SolicitacaoServicoDTO solicitacaoServicoDTO2 : listSolicitacaoservico) {
if(solicitacaoServicoDTO2.getPrazoHH()!= null && solicitacaoServicoDTO2.getPrazoMM()!=null && solicitacaoServicoDTO2.getPrazoHH()==0 && solicitacaoServicoDTO2.getPrazoMM()==0){
solicitacaoServicoDTO2.setAtrasoSLA(0);
solicitacaoServicoDTO2.setDataHoraLimiteStr("");
solicitacaoServicoDTO2.setDataHoraLimite(null);
}
}
*/
verificaSituacaoSLA(listSolicitacaoservico);
solicitacaoServicoBean.setMapPorcentagemSla(this.calculaProcentagemSLAComAtraso(listSolicitacaoservico));
return solicitacaoServicoBean;
}
public Map<String, Object> calculaProcentagemSLAComAtraso(List<SolicitacaoServicoDTO> listSolicitacaoservico) {
int[] totalPrioridade = { 0, 0, 0, 0, 0 };
int[] totalPrioridadeDentroPrazoSla = { 0, 0, 0, 0, 0 };
int[] totalPrioridadeForaPrazoSla = { 0, 0, 0, 0, 0 };
double totalPrioridadeDentroPrazo = 0;
double totalPrioridadeForaDoPrazo = 0;
double totalPrioridadeGeral = 0;
double[] percentualPrioridadeDentroSla = { 0, 0, 0, 0, 0 };
double[] percentualPrioridadeForaSla = { 0, 0, 0, 0, 0 };
double percentualTotalPrioridadeDentroSla = 0;
double percentualTotalPrioridadeForaSla = 0;
Map<String, Object> parametros = new HashMap<String, Object>();
if (listSolicitacaoservico != null && listSolicitacaoservico.size() > 0) {
for (SolicitacaoServicoDTO solicitacaoServicoDTO : listSolicitacaoservico) {
if (solicitacaoServicoDTO.getIdPrioridade() != null) {
switch (solicitacaoServicoDTO.getIdPrioridade().intValue()) {
case 1:
totalPrioridade[0]++;
if ((solicitacaoServicoDTO.getAtrasoSLAStr() != null && solicitacaoServicoDTO.getAtrasoSLAStr().equalsIgnoreCase("S")) || solicitacaoServicoDTO.getAtrasoSLA() > 0) {
totalPrioridadeForaPrazoSla[0]++;
} else {
totalPrioridadeDentroPrazoSla[0]++;
}
break;
case 2:
totalPrioridade[1]++;
if ((solicitacaoServicoDTO.getAtrasoSLAStr() != null && solicitacaoServicoDTO.getAtrasoSLAStr().equalsIgnoreCase("S")) || solicitacaoServicoDTO.getAtrasoSLA() > 0) {
totalPrioridadeForaPrazoSla[1]++;
} else {
totalPrioridadeDentroPrazoSla[1]++;
}
break;
case 3:
totalPrioridade[2]++;
if ((solicitacaoServicoDTO.getAtrasoSLAStr() != null && solicitacaoServicoDTO.getAtrasoSLAStr().equalsIgnoreCase("S")) || solicitacaoServicoDTO.getAtrasoSLA() > 0) {
totalPrioridadeForaPrazoSla[2]++;
} else {
totalPrioridadeDentroPrazoSla[2]++;
}
break;
case 4:
totalPrioridade[3]++;
if ((solicitacaoServicoDTO.getAtrasoSLAStr() != null && solicitacaoServicoDTO.getAtrasoSLAStr().equalsIgnoreCase("S")) || solicitacaoServicoDTO.getAtrasoSLA() > 0) {
totalPrioridadeForaPrazoSla[3]++;
} else {
totalPrioridadeDentroPrazoSla[3]++;
}
break;
case 5:
totalPrioridade[4]++;
if ((solicitacaoServicoDTO.getAtrasoSLAStr() != null && solicitacaoServicoDTO.getAtrasoSLAStr().equalsIgnoreCase("S")) || solicitacaoServicoDTO.getAtrasoSLA() > 0) {
totalPrioridadeForaPrazoSla[4]++;
} else {
totalPrioridadeDentroPrazoSla[4]++;
}
break;
default:
break;
}
}
}
// Calcula Porcentagem dentro e fora do Prazo individual
for (int i = 0; totalPrioridade.length > i; i++) {
double prioridadeDentroPrazoSla = 0;
double totalPrioridadeSla = 0;
double prioridadeForaPrazoSla = 0;
int prioridade = 1;
prioridade += i;
if (totalPrioridade[i] > 0) {
// Verifica se existe sla dentro do pazo e calcula porcentagem
if (totalPrioridadeDentroPrazoSla[i] > 0) {
prioridadeDentroPrazoSla = totalPrioridadeDentroPrazoSla[i];
totalPrioridadeSla = totalPrioridade[i];
parametros.put("percentDentroSlaPrio" + prioridade, UtilFormatacao.formatDouble(((prioridadeDentroPrazoSla / totalPrioridadeSla) * 100), 2));
parametros.put("quantDentroSlaPrio" + prioridade, UtilFormatacao.formatDouble(prioridadeDentroPrazoSla, 0));
parametros.put("quantDentroSlaPrio" + prioridade, UtilFormatacao.formatDouble(prioridadeDentroPrazoSla, 0));
totalPrioridadeDentroPrazo += prioridadeDentroPrazoSla;
} else {
parametros.put("percentDentroSlaPrio" + prioridade, "" + 0);
parametros.put("quantDentroSlaPrio" + prioridade, UtilFormatacao.formatDouble(prioridadeDentroPrazoSla, 0));
}
// Verifica se existe sla fora do pazo e calcula porcentagem
if (totalPrioridadeForaPrazoSla[i] > 0) {
prioridadeForaPrazoSla = totalPrioridadeForaPrazoSla[i];
totalPrioridadeSla = totalPrioridade[i];
parametros.put("percentForaSlaPrio" + prioridade, UtilFormatacao.formatDouble(((prioridadeForaPrazoSla / totalPrioridadeSla) * 100), 2));
parametros.put("quantForaSlaPrio" + prioridade, UtilFormatacao.formatDouble(prioridadeForaPrazoSla, 0));
totalPrioridadeForaDoPrazo += prioridadeForaPrazoSla;
} else {
parametros.put("percentForaSlaPrio" + prioridade, "" + 0);
parametros.put("quantForaSlaPrio" + prioridade, "" + 0);
}
parametros.put("totalPercentPri" + prioridade, UtilFormatacao.formatDouble(100.00, 0));
} else {
parametros.put("percentDentroSlaPrio" + prioridade, "" + 0);
parametros.put("percentForaSlaPrio" + prioridade, "" + 0);
parametros.put("quantDentroSlaPrio" + prioridade, "" + 0);
parametros.put("quantForaSlaPrio" + prioridade, "" + 0);
parametros.put("totalPercentPri" + prioridade, "" + 0);
}
parametros.put("totalQuantPri" + prioridade, UtilFormatacao.formatDouble((prioridadeForaPrazoSla + prioridadeDentroPrazoSla), 0));
}
// Calcula porcentagem dentro e fora do prazo total
totalPrioridadeGeral = listSolicitacaoservico.size();
percentualTotalPrioridadeDentroSla = (totalPrioridadeDentroPrazo / totalPrioridadeGeral) * 100;
percentualTotalPrioridadeForaSla = (totalPrioridadeForaDoPrazo / totalPrioridadeGeral) * 100;
// Carrega objeto de valores.
parametros.put("totalPrioridadeDentroPrazo", "" + UtilFormatacao.formatDouble(totalPrioridadeDentroPrazo, 0));
parametros.put("totalPrioridadeForaDoPrazo", "" + UtilFormatacao.formatDouble(totalPrioridadeForaDoPrazo, 0));
parametros.put("totalPrioridadeGeral", "" + UtilFormatacao.formatDouble(totalPrioridadeGeral, 0));
parametros.put("percentualTotalPrioridadeDentroSla", UtilFormatacao.formatDouble(percentualTotalPrioridadeDentroSla, 2));
parametros.put("percentualTotalPrioridadeForaSla", UtilFormatacao.formatDouble(percentualTotalPrioridadeForaSla, 2));
parametros.put("percentualTotalPrioridadeSla", UtilFormatacao.formatDouble((percentualTotalPrioridadeForaSla + percentualTotalPrioridadeDentroSla), 2));
}
return parametros;
}
public Collection<SolicitacaoServicoDTO> listarSLA(SolicitacaoServicoDTO solicitacao) throws Exception {
return this.getDao().relatorioControleSla(solicitacao);
}
public SolicitacaoServicoDTO restoreAll(Integer idSolicitacaoServico) throws Exception {
return restoreAll(idSolicitacaoServico, null);
}
public SolicitacaoServicoDTO restoreAll(Integer idSolicitacaoServico, TransactionControler tc) throws Exception {
if (tc != null) {
this.getDao().setTransactionControler(tc);
}
SolicitacaoServicoDTO solicitacaoDto = null;
try {
solicitacaoDto = (SolicitacaoServicoDTO) this.getDao().restoreAll(idSolicitacaoServico);
} catch (Exception e) {
throw new Exception(i18nMessage("solicitacaoservico.erro.recuperardadosolicitacao") + " " + idSolicitacaoServico);
}
if (solicitacaoDto != null) {
// Parece estranho, mas isto executa o metodo interno do DTO. Isto
// eh necessario!!!
solicitacaoDto.setDataHoraLimiteStr(solicitacaoDto.getDataHoraLimiteStr());
solicitacaoDto.setNomeServico(solicitacaoDto.getServico());
if (solicitacaoDto.getNomeUnidadeSolicitante() != null && !solicitacaoDto.getNomeUnidadeSolicitante().trim().equalsIgnoreCase(""))
solicitacaoDto.setSolicitanteUnidade(solicitacaoDto.getSolicitante() + " (" + solicitacaoDto.getNomeUnidadeSolicitante() + ")");
else
solicitacaoDto.setSolicitanteUnidade(solicitacaoDto.getSolicitante());
if (solicitacaoDto.getNomeUnidadeResponsavel() != null && !solicitacaoDto.getNomeUnidadeResponsavel().trim().equalsIgnoreCase(""))
solicitacaoDto.setResponsavel(solicitacaoDto.getResponsavel() + " (" + solicitacaoDto.getNomeUnidadeResponsavel() + ")");
}
return verificaSituacaoSLA(solicitacaoDto, tc);
}
public SolicitacaoServicoDTO restoreByIdInstanciaFluxo(Integer idInstanciaFluxo, TransactionControler tc) throws Exception {
if (tc != null)
this.getDao().setTransactionControler(tc);
SolicitacaoServicoDTO solicitacaoDto = null;
try {
solicitacaoDto = (SolicitacaoServicoDTO) this.getDao().restoreByIdInstanciaFluxo(idInstanciaFluxo);
} catch (Exception e) {
System.out.println("CITSMART - Erro na recupera��o dos dados da solicita��o da inst�ncia fluxo" + " " + idInstanciaFluxo);
e.printStackTrace();
}
if (solicitacaoDto != null) {
// Parece estranho, mas isto executa o metodo interno do DTO. Isto eh necessario!!!
solicitacaoDto.setDataHoraLimiteStr(solicitacaoDto.getDataHoraLimiteStr());
solicitacaoDto.setNomeServico(solicitacaoDto.getServico());
if (solicitacaoDto.getNomeUnidadeSolicitante() != null && !solicitacaoDto.getNomeUnidadeSolicitante().trim().equalsIgnoreCase(""))
solicitacaoDto.setSolicitanteUnidade(solicitacaoDto.getSolicitante() + " (" + solicitacaoDto.getNomeUnidadeSolicitante() + ")");
if (solicitacaoDto.getNomeUnidadeResponsavel() != null && !solicitacaoDto.getNomeUnidadeResponsavel().trim().equalsIgnoreCase(""))
solicitacaoDto.setResponsavel(solicitacaoDto.getResponsavel() + " (" + solicitacaoDto.getNomeUnidadeResponsavel() + ")");
}
return verificaSituacaoSLA(solicitacaoDto, tc);
}
public SolicitacaoServicoDTO restoreByIdInstanciaFluxo(Integer idInstanciaFluxo) throws Exception {
return restoreByIdInstanciaFluxo(idInstanciaFluxo, null);
}
@Override
public SolicitacaoServicoDTO retornaSolicitacaoServicoComItemConfiguracaoDoSolicitante(String login) throws Exception {
try {
return this.getDao().retornaSolicitacaoServicoComItemConfiguracaoDoSolicitante(login);
} catch (Exception e) {
throw new ServiceException(e);
}
}
@Override
public void suspende(UsuarioDTO usuarioDto, SolicitacaoServicoDTO solicitacaoServicoDto) throws Exception {
TransactionControler tc = new TransactionControlerImpl(getDao().getAliasDB());
try {
tc.start();
suspende(usuarioDto, solicitacaoServicoDto, tc);
tc.commit();
} catch (Exception e) {
this.rollbackTransaction(tc, e);
throw new ServiceException(e);
}finally {
try {
tc.close();
} catch (PersistenceException e) {
e.printStackTrace();
}
}
}
public void suspende(UsuarioDTO usuarioDto, SolicitacaoServicoDTO solicitacaoServicoDto, TransactionControler tc) throws Exception {
if(solicitacaoServicoDto.getSituacaoSLA()!=null && (solicitacaoServicoDto.getSituacaoSLA().equalsIgnoreCase(SituacaoSLA.M.name()) || solicitacaoServicoDto.getSituacaoSLA().equalsIgnoreCase(SituacaoSLA.A.name()))){
new ExecucaoSolicitacaoServiceEjb().suspende(usuarioDto, solicitacaoServicoDto, tc);
}else{
SolicitacaoServicoDTO solicitacaoAuxDto = restoreAll(solicitacaoServicoDto.getIdSolicitacaoServico(), tc);
solicitacaoAuxDto.setIdJustificativa(solicitacaoServicoDto.getIdJustificativa());
solicitacaoAuxDto.setComplementoJustificativa(solicitacaoServicoDto.getComplementoJustificativa());
}
}
public boolean temSolicitacaoServicoAbertaDoEmpregado(Integer idEmpregado) {
List retorno = null;
ArrayList<Condition> condicoes = new ArrayList<Condition>();
condicoes.add(new Condition("idSolicitante", "=", idEmpregado));
try {
retorno = (List) ((SolicitacaoServicoDao) getDao()).findByCondition(condicoes, null);
} catch (Exception e) {
e.printStackTrace();
}
if (retorno != null && retorno.size() > 0) {
return retorno.get(0) == null ? false : true;
} else {
return false;
}
}
public void update(IDto model) throws LogicException, ServiceException {
ExecucaoSolicitacaoServiceEjb execucaoSolicitacaoService = new ExecucaoSolicitacaoServiceEjb();
TransactionControler tc = new TransactionControlerImpl(this.getDao().getAliasDB());
try {
tc.start();
// Faz validacao, caso exista.
validaUpdate(model);
this.getDao().setTransactionControler(tc);
this.getDao().updateNotNull(model);
// Executa operacoes pertinentes ao negocio.
SolicitacaoServicoDTO solicitacaoServicoDto = (SolicitacaoServicoDTO) model;
//valida email
if(solicitacaoServicoDto.getEmailcontato() != null && !Util.isValidEmailAddress(solicitacaoServicoDto.getEmailcontato())){
throw new LogicException(i18nMessage("citcorpore.validacao.emailInvalido"));
}
if (solicitacaoServicoDto.getIdTarefa() != null)
execucaoSolicitacaoService.executa(solicitacaoServicoDto, solicitacaoServicoDto.getIdTarefa(), solicitacaoServicoDto.getAcaoFluxo(), tc);
tc.commit();
} catch (Exception e) {
this.rollbackTransaction(tc, e);
throw new ServiceException(e);
} finally {
try {
tc.close();
} catch (PersistenceException e) {
e.printStackTrace();
}
}
}
public void updateSimples(IDto model) throws LogicException, ServiceException {
TransactionControler tc = new TransactionControlerImpl(this.getDao().getAliasDB());
try {
tc.start();
// Faz validacao, caso exista.
validaUpdate(model);
this.getDao().setTransactionControler(tc);
this.getDao().update(model);
// Executa operacoes pertinentes ao negocio.
SolicitacaoServicoDTO solicitacaoServicoDto = (SolicitacaoServicoDTO) model;
tc.commit();
} catch (Exception e) {
this.rollbackTransaction(tc, e);
throw new ServiceException(e);
} finally {
try {
tc.close();
} catch (PersistenceException e) {
e.printStackTrace();
}
}
}
public IDto updateInfo(IDto model) throws ServiceException, LogicException {
SolicitacaoServicoDTO solicitacaoServicoDto = (SolicitacaoServicoDTO) model;
TransactionControler tc = new TransactionControlerImpl( this.getDao().getAliasDB());
try {
tc.start();
validaCreate(model);
updateInfo(solicitacaoServicoDto, tc, true);
tc.commit();
} catch (Exception e) {
this.rollbackTransaction(tc, e);
throw new ServiceException(e);
} finally {
try {
tc.close();
} catch (PersistenceException e) {
e.printStackTrace();
}
}
return solicitacaoServicoDto;
}
/**
* Faz a atualizacao de informacoes da solicitacao, mas nao altera as informacoes da classificacao.
*
* @param model
* @return
* @throws ServiceException
* @throws LogicException
*/
public SolicitacaoServicoDTO updateInfo(SolicitacaoServicoDTO solicitacaoServicoDto, TransactionControler tc, boolean atualizarRelacionados) throws Exception{
boolean mudancaDescricao = false;
ExecucaoSolicitacaoServiceEjb execucaoSolicitacaoService = new ExecucaoSolicitacaoServiceEjb();
ContatoSolicitacaoServicoDao contatoSolicitacaoServicoDao = new ContatoSolicitacaoServicoDao();
SolicitacaoServicoProblemaDao solicitacaoServicoProblemaDao = new SolicitacaoServicoProblemaDao();
SolicitacaoServicoMudancaDao solicitacaoServicoMudancaDao = new SolicitacaoServicoMudancaDao();
ConhecimentoSolicitacaoDao conhecimentoSolicitacaoDao = new ConhecimentoSolicitacaoDao();
ItemCfgSolicitacaoServDAO itemCfgSolicitacaoServDAO = new ItemCfgSolicitacaoServDAO();
ServicoContratoDao servicoContratoDao = new ServicoContratoDao();
GrupoDao grupoDao = new GrupoDao();
ContatoSolicitacaoServicoDTO contatoSolicitacaoServicoDTO = new ContatoSolicitacaoServicoDTO();
SolicitacaoServicoDTO dtoAux = this.restoreAll(solicitacaoServicoDto.getIdSolicitacaoServico());
if (dtoAux != null && solicitacaoServicoDto != null && dtoAux.getDescricao() != null && StringUtils.isNotEmpty(dtoAux.getDescricao()) && solicitacaoServicoDto.getDescricao() != null
&& StringUtils.isNotEmpty(solicitacaoServicoDto.getDescricao())) {
if(solicitacaoServicoDto.getDescricao().hashCode() == dtoAux.getDescricao().hashCode()){
mudancaDescricao = true;
}
}
this.getDao().setTransactionControler(tc);
contatoSolicitacaoServicoDao.setTransactionControler(tc);
solicitacaoServicoProblemaDao.setTransactionControler(tc);
itemCfgSolicitacaoServDAO.setTransactionControler(tc);
solicitacaoServicoMudancaDao.setTransactionControler(tc);
conhecimentoSolicitacaoDao.setTransactionControler(tc);
servicoContratoDao.setTransactionControler(tc);
grupoDao.setTransactionControler(tc);
//valida email
if(solicitacaoServicoDto.getEmailcontato() != null && !Util.isValidEmailAddress(solicitacaoServicoDto.getEmailcontato())){
throw new LogicException(i18nMessage("citcorpore.validacao.emailInvalido"));
}
// Executa operacoes pertinentes ao negocio.
solicitacaoServicoDto.setIdContatoSolicitacaoServico(contatoSolicitacaoServicoDTO.getIdcontatosolicitacaoservico());
String nomeServicoAnterior = "";
String nomeContratoAnterior = "";
String strDescricaoAnterior = "";
SolicitacaoServicoDTO solicitacaoServicoAux = (SolicitacaoServicoDTO) this.getDao().restore(solicitacaoServicoDto);
if (solicitacaoServicoAux != null && solicitacaoServicoDto.getIdGrupoNivel1() == null)
solicitacaoServicoDto.setIdGrupoNivel1(solicitacaoServicoAux.getIdGrupoNivel1());
if (solicitacaoServicoDto.getReclassificar() != null && solicitacaoServicoDto.getReclassificar().equalsIgnoreCase("S")) {
ServicoContratoDTO servicoContratoDto = servicoContratoDao.findByIdContratoAndIdServico(solicitacaoServicoDto.getIdContrato(), solicitacaoServicoDto.getIdServico());
if (servicoContratoDto == null)
throw new LogicException(i18nMessage("solicitacaoservico.validacao.servicolocalizado"));
if (solicitacaoServicoDto.getIdServicoContrato() == null) {
solicitacaoServicoDto.setIdServicoContrato(servicoContratoDto.getIdServicoContrato());
}
if (solicitacaoServicoDto.getIdGrupoNivel1() == null || solicitacaoServicoDto.getIdGrupoNivel1().intValue() <= 0) {
Integer idGrupoNivel1 = null;
if (servicoContratoDto.getIdGrupoNivel1() != null && servicoContratoDto.getIdGrupoNivel1().intValue() > 0) {
idGrupoNivel1 = servicoContratoDto.getIdGrupoNivel1();
} else {
String idGrupoN1 = ParametroUtil.getValor(ParametroSistema.ID_GRUPO_PADRAO_NIVEL1, tc, null);
if (idGrupoN1 != null && !idGrupoN1.trim().equalsIgnoreCase("")) {
try {
idGrupoNivel1 = new Integer(idGrupoN1);
} catch (Exception e) {
e.printStackTrace();
}
}
}
if (idGrupoNivel1 == null || idGrupoNivel1.intValue() <= 0)
throw new LogicException(i18nMessage("solicitacaoservico.validacao.grupoatendnivel"));
GrupoDTO grupoDto = new GrupoDTO();
grupoDto.setIdGrupo(idGrupoNivel1);
grupoDto = (GrupoDTO) grupoDao.restore(grupoDto);
if (grupoDto == null || grupoDto.getDataFim() != null)
throw new LogicException(i18nMessage("solicitacaoservico.validacao.grupoatendnivel"));
solicitacaoServicoDto.setIdGrupoNivel1(idGrupoNivel1);
}
if (solicitacaoServicoAux != null) {
solicitacaoServicoDto.setDataHoraSolicitacao(solicitacaoServicoAux.getDataHoraSolicitacao());
solicitacaoServicoDto.setDataHoraInicio(solicitacaoServicoAux.getDataHoraInicio());
solicitacaoServicoDto.setDataHoraCaptura(solicitacaoServicoAux.getDataHoraCaptura());
strDescricaoAnterior = solicitacaoServicoAux.getDescricao();
ServicoContratoDTO servicoContratoDTO = new ServicoContratoDTO();
servicoContratoDTO.setIdServicoContrato(solicitacaoServicoAux.getIdServicoContrato());
servicoContratoDTO = (ServicoContratoDTO) servicoContratoDao.restore(servicoContratoDTO);
if (servicoContratoDTO != null) {
ServicoDao servicoDao = new ServicoDao();
servicoDao.setTransactionControler(tc);
ServicoDTO servicoDto = new ServicoDTO();
servicoDto.setIdServico(servicoContratoDTO.getIdServico());
servicoDto = (ServicoDTO) servicoDao.restore(servicoDto);
if (servicoDto != null) {
nomeServicoAnterior = i18nMessage("citcorpore.comum.codigo") + ": " + servicoDto.getIdServico() + " - " + i18nMessage("citcorpore.comum.nome") + ": "
+ servicoDto.getNomeServico();
}
ContratoDao contratoDao = new ContratoDao();
contratoDao.setTransactionControler(tc);
ContratoDTO contratoDto = new ContratoDTO();
contratoDto.setIdContrato(servicoContratoDTO.getIdContrato());
contratoDto = (ContratoDTO) contratoDao.restore(contratoDto);
if (contratoDto != null) {
nomeContratoAnterior = i18nMessage("citcorpore.comum.codigo") + ": " + contratoDto.getIdContrato() + " - " + i18nMessage("citcorpore.comum.numero") + ": "
+ contratoDto.getNumero();
}
}
}
if (solicitacaoServicoDto.getIdGrupoNivel1() == null || solicitacaoServicoDto.getIdGrupoNivel1().intValue() <= 0) {
Integer idGrupoNivel1 = null;
if (servicoContratoDto.getIdGrupoNivel1() != null) {
idGrupoNivel1 = servicoContratoDto.getIdGrupoNivel1();
} else {
String idGrupoN1 = ParametroUtil.getValor(ParametroSistema.ID_GRUPO_PADRAO_NIVEL1, tc, null);
if (idGrupoN1 != null && !idGrupoN1.trim().equalsIgnoreCase("")) {
try {
idGrupoNivel1 = new Integer(idGrupoN1);
} catch (Exception e) {
e.printStackTrace();
}
}
}
if (idGrupoNivel1 == null || idGrupoNivel1.intValue() <= 0)
throw new LogicException(i18nMessage("solicitacaoservico.validacao.grupoatendnivel"));
solicitacaoServicoDto.setIdGrupoNivel1(idGrupoNivel1);
}
if (solicitacaoServicoDto.getIdGrupoNivel1() == null || solicitacaoServicoDto.getIdGrupoNivel1().intValue() <= 0) {
Integer idGrupoNivel1 = null;
if (servicoContratoDto.getIdGrupoNivel1() != null) {
idGrupoNivel1 = servicoContratoDto.getIdGrupoNivel1();
} else {
String idGrupoN1 = ParametroUtil.getValor(ParametroSistema.ID_GRUPO_PADRAO_NIVEL1, tc, null);
if (idGrupoN1 != null && !idGrupoN1.trim().equalsIgnoreCase("")) {
try {
idGrupoNivel1 = new Integer(idGrupoN1);
} catch (Exception e) {
e.printStackTrace();
}
}
}
if (idGrupoNivel1 == null || idGrupoNivel1.intValue() <= 0)
throw new LogicException("Grupo de atendimento nivel 1 n�o parametrizado");
solicitacaoServicoDto.setIdGrupoNivel1(idGrupoNivel1);
}
determinaPrioridadeEPrazo(solicitacaoServicoDto, tc);
} else {
solicitacaoServicoDto.setIdServico(null);
solicitacaoServicoDto.setIdServicoContrato(null);
solicitacaoServicoDto.setIdPrioridade(null);
solicitacaoServicoDto.setPrazoCapturaHH(null);
solicitacaoServicoDto.setPrazoCapturaMM(null);
solicitacaoServicoDto.setPrazoHH(null);
solicitacaoServicoDto.setPrazoMM(null);
solicitacaoServicoDto.setDataHoraInicio(null);
solicitacaoServicoDto.setDataHoraFim(null);
solicitacaoServicoDto.setDataHoraLimite(null);
solicitacaoServicoDto.setDataHoraSolicitacao(null);
solicitacaoServicoDto.setIdTipoDemandaServico(null);
solicitacaoServicoDto.setIdFaseAtual(null);
solicitacaoServicoDto.setSlaACombinar(null);
}
if (solicitacaoServicoAux != null && !solicitacaoServicoAux.escalada() && solicitacaoServicoDto.escalada()) {
String tipoCaptura = ParametroUtil.getValor(ParametroSistema.TIPO_CAPTURA_SOLICITACOES, tc, "1");
if (tipoCaptura.equals("2"))
solicitacaoServicoDto.setDataHoraCaptura(solicitacaoServicoDto.getDataHoraInicio());
}
this.getDao().updateNotNull(solicitacaoServicoDto);
if (solicitacaoServicoAux != null && solicitacaoServicoAux.getIdTarefaEncerramento() == null && solicitacaoServicoDto.atendida()) {
if (solicitacaoServicoDto.getIdTarefa() != null
&& (solicitacaoServicoDto.getAcaoFluxo().equalsIgnoreCase(br.com.centralit.bpm.util.Enumerados.ACAO_INICIAR) || solicitacaoServicoDto.getAcaoFluxo().equalsIgnoreCase(
br.com.centralit.bpm.util.Enumerados.ACAO_EXECUTAR))) {
solicitacaoServicoDto.setIdTarefaEncerramento(solicitacaoServicoDto.getIdTarefa());
this.getDao().atualizaIdTarefaEncerramento(solicitacaoServicoDto);
}
} else if (solicitacaoServicoAux != null && solicitacaoServicoAux.atendida() && !solicitacaoServicoDto.atendida()) {
solicitacaoServicoDto.setIdTarefaEncerramento(null);
this.getDao().atualizaIdTarefaEncerramento(solicitacaoServicoDto);
}
if (solicitacaoServicoDto.getInformacoesComplementares() != null || solicitacaoServicoDto.getSolicitacaoServicoQuestionarioDTO() != null) {
TemplateSolicitacaoServicoDTO templateDto = new TemplateSolicitacaoServicoServiceEjb().recuperaTemplateServico(solicitacaoServicoDto);
if (templateDto != null) {
if (templateDto.isQuestionario()) {
atualizaInformacoesQuestionario(solicitacaoServicoDto, tc);
} else if (templateDto.getNomeClasseServico() != null) {
ComplemInfSolicitacaoServicoService informacoesComplementaresService = getInformacoesComplementaresService(templateDto.getNomeClasseServico());
informacoesComplementaresService.update(tc, solicitacaoServicoDto, solicitacaoServicoDto.getInformacoesComplementares());
}
}
}
UsuarioDTO usuarioDTO = new UsuarioDTO();
usuarioDTO.setLogin(solicitacaoServicoDto.getRegistradoPor());
if (solicitacaoServicoDto.getReclassificar() != null && solicitacaoServicoDto.getReclassificar().equalsIgnoreCase("S")) {
String strRecl = i18nMessage("citcorpore.comum.reclassificaosolicitacao");
strRecl += "\n" + i18nMessage("citcorpore.comum.servicoanterior") + ": " + nomeServicoAnterior;
strRecl += "\n" + i18nMessage("citcorpore.comum.contratoanterior") + ": " + nomeContratoAnterior;
strRecl += "\n" + i18nMessage("citcorpore.comum.descricaoanterior") + ": " + strDescricaoAnterior;
OcorrenciaSolicitacaoServiceEjb.create(solicitacaoServicoDto, null, strRecl, OrigemOcorrencia.OUTROS, CategoriaOcorrencia.Reclassificacao, null,
CategoriaOcorrencia.Reclassificacao.getDescricao(), usuarioDTO, 0, null, tc);
}
if (solicitacaoServicoDto.getRegistroexecucao() != null && !solicitacaoServicoDto.getRegistroexecucao().trim().equalsIgnoreCase("")) {
OcorrenciaSolicitacaoServiceEjb.create(solicitacaoServicoDto, null, solicitacaoServicoDto.getRegistroexecucao(), OrigemOcorrencia.OUTROS, CategoriaOcorrencia.Execucao, null,
CategoriaOcorrencia.Execucao.getDescricao(), usuarioDTO, 0, null, tc);
}
if(atualizarRelacionados){
contatoSolicitacaoServicoDTO.setNomecontato(solicitacaoServicoDto.getNomecontato());
contatoSolicitacaoServicoDTO.setEmailcontato(solicitacaoServicoDto.getEmailcontato());
contatoSolicitacaoServicoDTO.setTelefonecontato(solicitacaoServicoDto.getTelefonecontato());
contatoSolicitacaoServicoDTO.setObservacao(solicitacaoServicoDto.getObservacao());
contatoSolicitacaoServicoDTO.setRamal(solicitacaoServicoDto.getRamal());
if (CITCorporeUtil.SGBD_PRINCIPAL.equalsIgnoreCase("SQLSERVER")) {
if (tc != null) {
contatoSolicitacaoServicoDao.setTransactionControler(tc);
}
}
if (solicitacaoServicoDto.getIdLocalidade() != null) {
contatoSolicitacaoServicoDTO.setIdLocalidade(solicitacaoServicoDto.getIdLocalidade());
}
if (solicitacaoServicoDto.getIdContatoSolicitacaoServico() != null) {
contatoSolicitacaoServicoDTO.setIdcontatosolicitacaoservico(solicitacaoServicoDto.getIdContatoSolicitacaoServico());
contatoSolicitacaoServicoDao.update(contatoSolicitacaoServicoDTO);
} else {
contatoSolicitacaoServicoDTO = (ContatoSolicitacaoServicoDTO) contatoSolicitacaoServicoDao.create(contatoSolicitacaoServicoDTO);
}
solicitacaoServicoProblemaDao.deleteByIdSolictacaoServico(solicitacaoServicoDto.getIdSolicitacaoServico());
if (solicitacaoServicoDto.getColItensProblema() != null) {
solicitacaoServicoProblemaDao.deleteByIdSolictacaoServico(solicitacaoServicoDto.getIdSolicitacaoServico());
for (Iterator it = solicitacaoServicoDto.getColItensProblema().iterator(); it.hasNext();) {
ProblemaDTO problemaDTO = (ProblemaDTO) it.next();
SolicitacaoServicoProblemaDTO solicitacaoServicoProblemaDTO = new SolicitacaoServicoProblemaDTO();
solicitacaoServicoProblemaDTO.setIdProblema(problemaDTO.getIdProblema());
solicitacaoServicoProblemaDTO.setIdSolicitacaoServico(solicitacaoServicoDto.getIdSolicitacaoServico());
solicitacaoServicoProblemaDao.create(solicitacaoServicoProblemaDTO);
}
// solicitacaoServicoProblemaDao
}
solicitacaoServicoMudancaDao.deleteByIdSolictacaoServico(solicitacaoServicoDto.getIdSolicitacaoServico());
if (solicitacaoServicoDto.getColItensMudanca() != null) {
for (Iterator it = solicitacaoServicoDto.getColItensMudanca().iterator(); it.hasNext();) {
RequisicaoMudancaDTO requisicaoMudancaDTO = (RequisicaoMudancaDTO) it.next();
SolicitacaoServicoMudancaDTO solicitacaoServicoMudancaDTO = new SolicitacaoServicoMudancaDTO();
solicitacaoServicoMudancaDTO.setIdRequisicaoMudanca(requisicaoMudancaDTO.getIdRequisicaoMudanca());
solicitacaoServicoMudancaDTO.setIdSolicitacaoServico(solicitacaoServicoDto.getIdSolicitacaoServico());
solicitacaoServicoMudancaDao.create(solicitacaoServicoMudancaDTO);
}
// solicitacaoServicoProblemaDao
}
conhecimentoSolicitacaoDao.deleteByIdSolictacaoServico(solicitacaoServicoDto.getIdSolicitacaoServico());
if (solicitacaoServicoDto.getColItensBaseConhecimento() != null) {
for (Iterator it = solicitacaoServicoDto.getColItensBaseConhecimento().iterator(); it.hasNext();) {
BaseConhecimentoDTO baseConhecimentoDTO = (BaseConhecimentoDTO) it.next();
ConhecimentoSolicitacaoDTO conhecimentoSolicitacaoDTO = new ConhecimentoSolicitacaoDTO();
conhecimentoSolicitacaoDTO.setIdBaseConhecimento(baseConhecimentoDTO.getIdBaseConhecimento());
conhecimentoSolicitacaoDTO.setIdSolicitacaoServico(solicitacaoServicoDto.getIdSolicitacaoServico());
conhecimentoSolicitacaoDao.create(conhecimentoSolicitacaoDTO);
}
// solicitacaoServicoProblemaDao
}
//PersistirItemBaseConhecimento(solicitacaoServicoDto, conhecimentoSolicitacaoDao);
itemCfgSolicitacaoServDAO.deleteByIdSolicitacaoServico(solicitacaoServicoDto.getIdSolicitacaoServico());
if (solicitacaoServicoDto.getColItensICSerialize() != null) {
for (ItemConfiguracaoDTO bean : solicitacaoServicoDto.getColItensICSerialize()) {
ItemCfgSolicitacaoServDTO dto = new ItemCfgSolicitacaoServDTO();
dto.setIdItemConfiguracao(bean.getIdItemConfiguracao());
dto.setIdSolicitacaoServico(solicitacaoServicoDto.getIdSolicitacaoServico());
dto.setDataInicio(Util.getSqlDataAtual());
itemCfgSolicitacaoServDAO.create(dto);
solicitacaoServicoDto = this.verificaSituacaoSLA(solicitacaoServicoDto, tc);
}
}
if (solicitacaoServicoDto.getColArquivosUpload() != null) {
gravaInformacoesGED(solicitacaoServicoDto.getColArquivosUpload(), 1, solicitacaoServicoDto, tc);
}
if (solicitacaoServicoDto.getSituacao() != null && solicitacaoServicoDto.getSituacao().equalsIgnoreCase("Resolvida")) {
if (solicitacaoServicoDto.getBeanBaseConhecimento().getTitulo() != null && !solicitacaoServicoDto.getBeanBaseConhecimento().getTitulo().isEmpty()) {
this.InserirNaBaseConhecimento(solicitacaoServicoDto, tc);
}
}
}
if (solicitacaoServicoDto.getIdTarefa() != null)
execucaoSolicitacaoService.executa(solicitacaoServicoDto, solicitacaoServicoDto.getIdTarefa(), solicitacaoServicoDto.getAcaoFluxo(), tc);
if (solicitacaoServicoAux != null && solicitacaoServicoDto.getIdGrupoAtual() != null
&& UtilStrings.nullToVazio(solicitacaoServicoDto.getAcaoFluxo()).equals(br.com.centralit.bpm.util.Enumerados.ACAO_EXECUTAR)
&& (!solicitacaoServicoAux.escalada() || solicitacaoServicoAux.getIdGrupoAtual().intValue() != solicitacaoServicoDto.getIdGrupoAtual().intValue())) {
execucaoSolicitacaoService.direcionaAtendimento(solicitacaoServicoDto, tc);
}
/*
* Bruno.aquino 29/05/2014
*
* Se ocorrerem alguma altera�ao na solicita��o, � enviado um email ao solicitante informando que ocorreu alguma altera��o. Se a altera��o foi feita na Descri��o da solicita��o, ser� enviado
* por email a descri��o tamb�m.
*/
EmpregadoDao empregadoDao = new EmpregadoDao();
if (dtoAux != null && dtoAux.getIdTipoDemandaServico().intValue() == 3
&& ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.ATIVAR_ENVIO_EMAIL_UPDATE_INCIDENTE, "N").equalsIgnoreCase("S")) {
SolicitacaoServicoDTO aux = solicitacaoServicoDto;
EmpregadoDTO empregatoDto = empregadoDao.restoreByIdEmpregado(aux.getIdSolicitante());
String emailPara = "";
if(empregatoDto!=null){
emailPara = empregatoDto.getEmail();
}
String remetente = ParametroUtil.getValor(ParametroSistema.RemetenteNotificacoesSolicitacao);
if (remetente != null && emailPara!=null && StringUtils.isNotEmpty(emailPara) && StringUtils.isNotEmpty(remetente) && empregatoDto != null) {
if(!mudancaDescricao){
ModeloEmailDTO modeloEmailDto = new ModeloEmailDao().findByIdentificador("alterSolServDesc");
if(modeloEmailDto!=null){
MensagemEmail mensagem = new MensagemEmail(modeloEmailDto.getIdModeloEmail(), new IDto[] { aux });
if(mensagem!=null){
mensagem.envia(emailPara, null, remetente);
}
}
}else{
ModeloEmailDTO modeloEmailDto = new ModeloEmailDao().findByIdentificador("alterSolServico");
if(modeloEmailDto!=null){
MensagemEmail mensagem = new MensagemEmail(modeloEmailDto.getIdModeloEmail(), new IDto[] { aux });
if(mensagem!=null){
mensagem.envia(emailPara, null, remetente);
}
}
}
}
}
return solicitacaoServicoDto;
}
/**
* Faz a atualizacao dos anexos da solicitacao, mas nao altera as informacoes da solicia��o.
*
* @param model
* @return
* @throws ServiceException
* @throws LogicException
*/
public IDto updateInfoCollection(IDto model) throws ServiceException, LogicException {
SolicitacaoServicoDTO solicitacaoServicoDto = (SolicitacaoServicoDTO) model;
return solicitacaoServicoDto;
}
@Override
public void updateNotNull(IDto obj) throws Exception {
this.getDao().updateNotNull(obj);
}
/**
* Faz a mudanca de SLA
*
* @param model
* @return
* @throws ServiceException
* @throws LogicException
*/
public void updateSLA(IDto model) throws ServiceException, LogicException {
SolicitacaoServicoDTO solicitacaoServicoDto = (SolicitacaoServicoDTO) model;
ExecucaoSolicitacaoServiceEjb execucaoSolicitacaoService = new ExecucaoSolicitacaoServiceEjb();
TransactionControler tc = new TransactionControlerImpl(this.getDao().getAliasDB());
try {
tc.start();
// Faz validacao, caso exista.
validaUpdate(model);
this.getDao().setTransactionControler(tc);
solicitacaoServicoDto.setDataHoraInicioSLA(null);
solicitacaoServicoDto.setDataHoraReativacao(null);
if (solicitacaoServicoDto.getTempoDecorridoHH() == null) {
solicitacaoServicoDto.setTempoDecorridoHH(new Integer(0));
}
if (solicitacaoServicoDto.getTempoDecorridoMM() == null) {
solicitacaoServicoDto.setTempoDecorridoMM(new Integer(0));
}
if (solicitacaoServicoDto.getSlaACombinar().equalsIgnoreCase("S")) {
solicitacaoServicoDto.setPrazoCapturaHH(0);
solicitacaoServicoDto.setPrazoCapturaMM(0);
solicitacaoServicoDto.setPrazoHH(0);
solicitacaoServicoDto.setPrazoMM(0);
} else {
SolicitacaoServicoDTO solicitacaoAuxDto = new SolicitacaoServicoDTO();
solicitacaoAuxDto.setIdSolicitacaoServico(solicitacaoServicoDto.getIdSolicitacaoServico());
solicitacaoAuxDto = (SolicitacaoServicoDTO) solicitacaoServicoDao.restore(solicitacaoAuxDto);
solicitacaoServicoDto.setDataHoraInicioSLA(solicitacaoAuxDto.getDataHoraInicioSLA());
solicitacaoServicoDto.setDataHoraReativacaoSLA(solicitacaoAuxDto.getDataHoraReativacaoSLA());
determinaPrazoLimite(solicitacaoServicoDto, solicitacaoServicoDto.getIdCalendario(), tc);
}
solicitacaoServicoDao.updateNotNull(model);
solicitacaoServicoDao.limpaDataReativacao(solicitacaoServicoDto);
String strOcorr = "\n" + i18nMessage("gerenciaservico.mudarsla.tiposla") + ": ";
if (solicitacaoServicoDto.getSlaACombinar().equalsIgnoreCase("S")) {
strOcorr += i18nMessage("citcorpore.comum.acombinar");
} else {
strOcorr += i18nMessage("citcorpore.comum.definicaonovotempo");
}
// SolicitacaoServicoDTO solicitacaoAuxDto =
// restoreAll(solicitacaoServicoDto.getIdSolicitacaoServico());
strOcorr += "\n " + i18nMessage("gerenciamento.mudarsla.prazoanterior");
if (solicitacaoServicoDto.getPrazohhAnterior() != null) {
strOcorr += solicitacaoServicoDto.getPrazohhAnterior() + "h ";
}
if (solicitacaoServicoDto.getPrazommAnterior() != null) {
strOcorr += solicitacaoServicoDto.getPrazommAnterior() + "m ";
}
JustificativaSolicitacaoDTO justificativaDto = new JustificativaSolicitacaoDTO();
justificativaDto.setIdJustificativa(solicitacaoServicoDto.getIdJustificativa());
justificativaDto.setComplementoJustificativa(solicitacaoServicoDto.getComplementoJustificativa());
UsuarioDTO usuarioDTO = new UsuarioDTO();
usuarioDTO.setLogin(solicitacaoServicoDto.getRegistradoPor());
OcorrenciaSolicitacaoServiceEjb.create(solicitacaoServicoDto, null, strOcorr, OrigemOcorrencia.OUTROS, CategoriaOcorrencia.MudancaSLA, null, CategoriaOcorrencia.MudancaSLA.getDescricao(),
usuarioDTO, 0, justificativaDto, tc);
tc.commit();
} catch (Exception e) {
this.rollbackTransaction(tc, e);
throw new ServiceException(e);
} finally {
try {
tc.close();
} catch (PersistenceException e) {
e.printStackTrace();
}
}
}
/**
*
* @author breno.guimaraes
*/
public void updateSolicitacaoPai(int idSolicitacaoPai, int idSolicitacao) {
try {
((SolicitacaoServicoDao) getDao()).updateSolicitacaoPai(idSolicitacao, idSolicitacaoPai);
} catch (Exception e) {
e.printStackTrace();
}
}
public void updateTimeAction(Integer idGrupoRedirect, Integer idPrioridadeRedirect, Integer idSolicitacaoServicoParm, TransactionControler tc) throws ServiceException, LogicException {
ExecucaoSolicitacaoServiceEjb execucaoSolicitacaoService = new ExecucaoSolicitacaoServiceEjb();
OcorrenciaSolicitacaoDao ocorrenciaSolicitacaoDao = new OcorrenciaSolicitacaoDao();
if(tc == null)
tc = new TransactionControlerImpl(this.getDao().getAliasDB());
try {
if(!tc.isStarted())
tc.start();
// Faz validacao, caso exista.
this.getDao().setTransactionControler(tc);
ocorrenciaSolicitacaoDao.setTransactionControler(tc);
List<SolicitacaoServicoDTO> listaSolicitacao = new ArrayList<SolicitacaoServicoDTO>();
SolicitacaoServicoDTO solicitacaoAuxDto = new SolicitacaoServicoDTO();
solicitacaoAuxDto.setIdSolicitacaoServico(idSolicitacaoServicoParm);
listaSolicitacao = (List<SolicitacaoServicoDTO>) this.getDao().find(solicitacaoAuxDto);
if (listaSolicitacao != null) {
solicitacaoAuxDto = listaSolicitacao.get(0);
}
// if(solicitacaoAuxDto.getIdGrupoAtual() != null){
// return;
// }
SolicitacaoServicoDTO solicitacaoServicoDto = new SolicitacaoServicoDTO();
solicitacaoServicoDto.setIdGrupoAtual(idGrupoRedirect);
solicitacaoServicoDto.setIdPrioridade(idPrioridadeRedirect);
solicitacaoServicoDto.setIdSolicitacaoServico(idSolicitacaoServicoParm);
this.getDao().updateNotNull(solicitacaoServicoDto);
execucaoSolicitacaoService.direcionaAtendimentoAutomatico(solicitacaoServicoDto, tc);
String strOcorr = "\nEscala��o autom�tica.";
// SolicitacaoServicoDTO solicitacaoAuxDto =
// restoreAll(solicitacaoServicoDto.getIdSolicitacaoServico());
JustificativaSolicitacaoDTO justificativaDto = new JustificativaSolicitacaoDTO();
justificativaDto.setIdJustificativa(solicitacaoServicoDto.getIdJustificativa());
justificativaDto.setComplementoJustificativa(solicitacaoServicoDto.getComplementoJustificativa());
UsuarioDTO usuarioDTO = new UsuarioDTO();
usuarioDTO.setLogin("Autom�tico");
OcorrenciaSolicitacaoServiceEjb.create(solicitacaoServicoDto, null, strOcorr, OrigemOcorrencia.OUTROS, CategoriaOcorrencia.Atualizacao, null,
CategoriaOcorrencia.Atualizacao.getDescricao(), usuarioDTO, 0, justificativaDto, tc);
tc.commit();
} catch (Exception e) {
this.rollbackTransaction(tc, e);
throw new ServiceException(e);
} finally {
try {
tc.close();
} catch (PersistenceException e) {
e.printStackTrace();
}
}
}
protected void validaCreate(Object arg0) throws Exception {
}
protected void validaDelete(Object arg0) throws Exception {
}
protected void validaFind(Object arg0) throws Exception {
}
protected void validaUpdate(Object arg0) throws Exception {
}
@Override
public boolean verificarExistenciaDeUnidade(Integer idUnidade) throws Exception {
return this.getDao().verificarExistenciaDeUnidade(idUnidade);
}
@Override
public boolean verificarExistenciaSolicitacaoFilho(Integer idSolicitacaoServicoPai) throws Exception {
Collection<SolicitacaoServicoDTO> listSolicitacaoServicoFilho = new ArrayList<SolicitacaoServicoDTO>();
listSolicitacaoServicoFilho = this.getDao().findByIdSolicitacaoPai(idSolicitacaoServicoPai);
if (listSolicitacaoServicoFilho != null && !listSolicitacaoServicoFilho.isEmpty()) {
return true;
} else {
return false;
}
}
@Override
public SolicitacaoServicoDTO verificaSituacaoSLA(SolicitacaoServicoDTO solicitacaoDto) throws Exception {
return verificaSituacaoSLA(solicitacaoDto, null);
}
public SolicitacaoServicoDTO verificaSituacaoSLA(SolicitacaoServicoDTO solicitacaoDto, TransactionControler tc) throws Exception {
long atrasoSLA = 0;
if (solicitacaoDto == null)
return null;
/**
* N�o calcula o atraso dos SLAs a combinar
*/
boolean slaACombinar = (solicitacaoDto.getPrazoHH() == null || solicitacaoDto.getPrazoHH() == 0) && (solicitacaoDto.getPrazoMM() == null || solicitacaoDto.getPrazoMM() == 0);
if (solicitacaoDto.getDataHoraLimite() == null)
determinaPrazoLimite(solicitacaoDto, null, tc);
if (solicitacaoDto.getDataHoraLimite() != null && !slaACombinar) {
boolean bCalcula = true;
if (solicitacaoDto.getSituacao().equals(SituacaoSolicitacaoServico.Suspensa.name())) {
bCalcula = solicitacaoDto.getDataHoraSuspensao().compareTo(solicitacaoDto.getDataHoraLimite()) > 0;
}else if (solicitacaoDto.getSituacao().equals(SituacaoSolicitacaoServico.Cancelada.name())) {
bCalcula = false;
}else if (solicitacaoDto.getDataHoraSuspensaoSLA() != null && solicitacaoDto.getSituacaoSLA() != null && solicitacaoDto.getSituacaoSLA().equalsIgnoreCase("S")) {
bCalcula = solicitacaoDto.getDataHoraSuspensaoSLA().compareTo(solicitacaoDto.getDataHoraLimite()) > 0;
}
if (bCalcula) {
Timestamp dataHoraLimite = solicitacaoDto.getDataHoraLimite();
Timestamp dataHoraComparacao = UtilDatas.getDataHoraAtual();
if (solicitacaoDto.encerrada())
dataHoraComparacao = solicitacaoDto.getDataHoraFim();
if (dataHoraComparacao != null) {
if (dataHoraComparacao.compareTo(dataHoraLimite) > 0) {
atrasoSLA = UtilDatas.calculaDiferencaTempoEmMilisegundos(dataHoraComparacao, dataHoraLimite) / 1000;
}
}
}
}
solicitacaoDto.setAtrasoSLA(atrasoSLA);
return solicitacaoDto;
}
/**
* M�todo que calcula o atraso das SLAs que n�o est�o a combinar e com situa��o diferentes de suspensa e cancelada
*
* @param solicitacaoDto
* @param tc
* @return SolicitacaoServicoDTO
* @throws Exception
* @author rodrigo.acorse
*/
@Deprecated
public SolicitacaoServicoDTO verificaSituacaoSLAsValidas(SolicitacaoServicoDTO solicitacaoDto, TransactionControler tc) throws Exception {
long atrasoSLA = 0;
if (solicitacaoDto == null)
return null;
boolean slaACombinar = (solicitacaoDto.getPrazoHH() == null || solicitacaoDto.getPrazoHH() == 0) && (solicitacaoDto.getPrazoMM() == null || solicitacaoDto.getPrazoMM() == 0);
if (solicitacaoDto.getDataHoraLimite() == null)
determinaPrazoLimite(solicitacaoDto, null, tc);
if (solicitacaoDto.getDataHoraLimite() != null && !slaACombinar && !solicitacaoDto.getSituacao().equalsIgnoreCase("Suspensa") && !solicitacaoDto.getSituacao().equalsIgnoreCase("Cancelada")) {
boolean bCalcula = true;
if (solicitacaoDto.getSituacaoSLA() != null && solicitacaoDto.getSituacaoSLA().equalsIgnoreCase("S"))
bCalcula = solicitacaoDto.getDataHoraSuspensaoSLA().compareTo(solicitacaoDto.getDataHoraLimite()) > 0;
if (bCalcula) {
Timestamp dataHoraLimite = solicitacaoDto.getDataHoraLimite();
Timestamp dataHoraComparacao = UtilDatas.getDataHoraAtual();
if (solicitacaoDto.encerrada())
dataHoraComparacao = solicitacaoDto.getDataHoraFim();
if (dataHoraComparacao != null) {
if (dataHoraComparacao.compareTo(dataHoraLimite) > 0) {
atrasoSLA = UtilDatas.calculaDiferencaTempoEmMilisegundos(dataHoraComparacao, dataHoraLimite) / 1000;
}
}
}
}
solicitacaoDto.setAtrasoSLA(atrasoSLA);
return solicitacaoDto;
}
@Override
public Collection incidentesPorContrato(Integer idContrato) throws Exception {
return this.getDao().incidentesPorContrato(idContrato);
}
public void atualizaInformacoesQuestionario(SolicitacaoServicoDTO solicitacaoServicoDto, TransactionControler tc) throws Exception {
ControleQuestionariosDao controleQuestionariosDao = new ControleQuestionariosDao();
SolicitacaoServicoQuestionarioDao solicitacaoServicoQuestionarioDao = new SolicitacaoServicoQuestionarioDao();
RespostaItemQuestionarioDao respostaItemDao = new RespostaItemQuestionarioDao();
RespostaItemQuestionarioServiceBean respostaItemQuestionarioServiceBean = new RespostaItemQuestionarioServiceBean();
controleQuestionariosDao.setTransactionControler(tc);
solicitacaoServicoQuestionarioDao.setTransactionControler(tc);
respostaItemDao.setTransactionControler(tc);
SolicitacaoServicoQuestionarioDTO solicitacaoServicoQuestionarioDto = solicitacaoServicoDto.getSolicitacaoServicoQuestionarioDTO();
if (solicitacaoServicoQuestionarioDto.getIdSolicitacaoQuestionario() != null && solicitacaoServicoQuestionarioDto.getIdSolicitacaoQuestionario().intValue() > 0) {
solicitacaoServicoQuestionarioDto.setIdSolicitacaoServico(solicitacaoServicoDto.getIdSolicitacaoServico());
solicitacaoServicoQuestionarioDto.setDataHoraGrav(UtilDatas.getDataHoraAtual());
solicitacaoServicoQuestionarioDao.updateNotNull(solicitacaoServicoQuestionarioDto);
respostaItemDao.deleteByIdIdentificadorResposta(solicitacaoServicoQuestionarioDto.getIdSolicitacaoQuestionario());
respostaItemQuestionarioServiceBean.processCollection(tc, solicitacaoServicoQuestionarioDto.getColValores(), solicitacaoServicoQuestionarioDto.getColAnexos(),
solicitacaoServicoQuestionarioDto.getIdSolicitacaoQuestionario(), null);
} else {
ControleQuestionariosDTO controleQuestionariosDto = new ControleQuestionariosDTO();
controleQuestionariosDto = (ControleQuestionariosDTO) controleQuestionariosDao.create(controleQuestionariosDto);
solicitacaoServicoQuestionarioDto.setIdSolicitacaoServico(solicitacaoServicoDto.getIdSolicitacaoServico());
solicitacaoServicoQuestionarioDto.setIdResponsavel(solicitacaoServicoDto.getUsuarioDto().getIdEmpregado());
solicitacaoServicoQuestionarioDto.setIdTarefa(solicitacaoServicoDto.getIdTarefa());
if (solicitacaoServicoQuestionarioDto.getDataQuestionario() == null)
solicitacaoServicoQuestionarioDto.setDataQuestionario(UtilDatas.getDataAtual());
solicitacaoServicoQuestionarioDto.setSituacao("E");
solicitacaoServicoQuestionarioDto.setIdSolicitacaoQuestionario(controleQuestionariosDto.getIdControleQuestionario());
solicitacaoServicoQuestionarioDto.setDataHoraGrav(UtilDatas.getDataHoraAtual());
SolicitacaoServicoQuestionarioDTO solQuestionariosDTO = (SolicitacaoServicoQuestionarioDTO) solicitacaoServicoQuestionarioDao.create(solicitacaoServicoQuestionarioDto);
Integer idIdentificadorResposta = solQuestionariosDTO.getIdSolicitacaoQuestionario();
respostaItemQuestionarioServiceBean.processCollection(tc, solQuestionariosDTO.getColValores(), solQuestionariosDTO.getColAnexos(), idIdentificadorResposta, null);
}
}
@Override
public Collection<SolicitacaoServicoDTO> listaSolicitacaoServicoPorCriteriosPaginado(PesquisaSolicitacaoServicoDTO pesquisaSolicitacaoServicoDto, String paginacao, Integer pagAtual,
Integer pagAtualAux, Integer totalPag, Integer quantidadePaginator, String campoPesquisa) throws Exception {
try {
return this.getDao().findByIdContratoPaginada(pesquisaSolicitacaoServicoDto, paginacao, pagAtual, pagAtualAux, totalPag, quantidadePaginator, campoPesquisa);
} catch (Exception e) {
throw new ServiceException(e);
}
}
@Override
public Collection<SolicitacaoServicoDTO> listaSolicitacaoServicoPorCriteriosPaginado(PesquisaSolicitacaoServicoDTO pesquisaSolicitacaoServicoDto, String paginacao, Integer pagAtual,
Integer pagAtualAux, Integer totalPag, Integer quantidadePaginator, String campoPesquisa, Collection<UnidadeDTO> unidadesColaborador) throws Exception {
try {
return this.getDao().findByIdContratoPaginada(pesquisaSolicitacaoServicoDto, paginacao, pagAtual, pagAtualAux, totalPag, quantidadePaginator, campoPesquisa, unidadesColaborador);
} catch (Exception e) {
throw new ServiceException(e);
}
}
@Override
public String calculaSLA(SolicitacaoServicoDTO solicitacaoServicoDto, HttpServletRequest request) throws Exception {
Integer prazoHH = 0;
Integer prazoMM = 0;
TempoAcordoNivelServicoDao tempoAcordoNivelServicoDao = new TempoAcordoNivelServicoDao();
AcordoNivelServicoDao acordoNivelServicoDao = new AcordoNivelServicoDao();
AcordoServicoContratoDao acordoServicoContratoDao = new AcordoServicoContratoDao();
PrioridadeServicoUnidadeDao prioridadeServicoUnidadeDao = new PrioridadeServicoUnidadeDao();
EmpregadoDao empregadoDao = new EmpregadoDao();
MatrizPrioridadeDAO matrizPrioriDao = new MatrizPrioridadeDAO();
ServicoContratoDao servicoContratoDao = new ServicoContratoDao();
PrioridadeServicoUsuarioDao prioridadeServicoUsuarioDao = new PrioridadeServicoUsuarioDao();
PrioridadeAcordoNivelServicoDao prioridadeAcordoNivelServicoDao = new PrioridadeAcordoNivelServicoDao();
TransactionControler tc = new TransactionControlerImpl(getDao().getAliasDB());
if (tc != null) {
try {
tc.start();
tempoAcordoNivelServicoDao.setTransactionControler(tc);
acordoNivelServicoDao.setTransactionControler(tc);
acordoServicoContratoDao.setTransactionControler(tc);
prioridadeServicoUnidadeDao.setTransactionControler(tc);
empregadoDao.setTransactionControler(tc);
matrizPrioriDao.setTransactionControler(tc);
servicoContratoDao.setTransactionControler(tc);
prioridadeServicoUsuarioDao.setTransactionControler(tc);
prioridadeAcordoNivelServicoDao.setTransactionControler(tc);
Integer idPrioridade = null;
ServicoContratoDTO servicoContratoDto = servicoContratoDao.findByIdContratoAndIdServico(solicitacaoServicoDto.getIdContrato(), solicitacaoServicoDto.getIdServico());
if(servicoContratoDto != null) {
Integer idServicoContrato = servicoContratoDto.getIdServicoContrato();
if (solicitacaoServicoDto.getIdSolicitante() != null) {
EmpregadoDTO empregadoDTO = null;
empregadoDTO = (EmpregadoDTO) empregadoDao.restoreByIdEmpregado(solicitacaoServicoDto.getIdSolicitante());
if (empregadoDTO != null && empregadoDTO.getIdUnidade() != null) {
PrioridadeServicoUnidadeDTO prioridadeServicoUnidadeDto = prioridadeServicoUnidadeDao.restore(idServicoContrato, empregadoDTO.getIdUnidade());
if (prioridadeServicoUnidadeDto != null) {
idPrioridade = prioridadeServicoUnidadeDto.getIdPrioridade();
}
}
}
String calcularDinamicamente = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.CALCULAR_PRIORIDADE_SOLICITACAO_DINAMICAMENTE, "N");
if (!calcularDinamicamente.trim().equalsIgnoreCase("S")) {
if (idPrioridade == null) {
if (solicitacaoServicoDto.getUrgencia().equalsIgnoreCase("B") && solicitacaoServicoDto.getImpacto().equalsIgnoreCase("B")) {
idPrioridade = 5;
} else if (solicitacaoServicoDto.getUrgencia().equalsIgnoreCase("B") && solicitacaoServicoDto.getImpacto().equalsIgnoreCase("M")) {
idPrioridade = 4;
} else if (solicitacaoServicoDto.getUrgencia().equalsIgnoreCase("B") && solicitacaoServicoDto.getImpacto().equalsIgnoreCase("A")) {
idPrioridade = 3;
} else if (solicitacaoServicoDto.getUrgencia().equalsIgnoreCase("M") && solicitacaoServicoDto.getImpacto().equalsIgnoreCase("B")) {
idPrioridade = 4;
} else if (solicitacaoServicoDto.getUrgencia().equalsIgnoreCase("M") && solicitacaoServicoDto.getImpacto().equalsIgnoreCase("M")) {
idPrioridade = 3;
} else if (solicitacaoServicoDto.getUrgencia().equalsIgnoreCase("M") && solicitacaoServicoDto.getImpacto().equalsIgnoreCase("A")) {
idPrioridade = 2;
} else if (solicitacaoServicoDto.getUrgencia().equalsIgnoreCase("A") && solicitacaoServicoDto.getImpacto().equalsIgnoreCase("B")) {
idPrioridade = 3;
} else if (solicitacaoServicoDto.getUrgencia().equalsIgnoreCase("A") && solicitacaoServicoDto.getImpacto().equalsIgnoreCase("M")) {
idPrioridade = 2;
} else if (solicitacaoServicoDto.getUrgencia().equalsIgnoreCase("A") && solicitacaoServicoDto.getImpacto().equalsIgnoreCase("A")) {
idPrioridade = 1;
}
}
} else {
String siglaImpacto = solicitacaoServicoDto.getImpacto();
String siglaUrgencia = solicitacaoServicoDto.getUrgencia();
Integer valorPrioridade = matrizPrioriDao.consultaValorPrioridade(siglaImpacto.trim().toUpperCase(), siglaUrgencia.trim().toUpperCase());
idPrioridade = valorPrioridade;
}
AcordoNivelServicoDTO acordoNivelServicoDto = acordoNivelServicoDao.findAtivoByIdServicoContrato(idServicoContrato, "T");
if (acordoNivelServicoDto == null) {
acordoNivelServicoDto = new AcordoNivelServicoDTO();
AcordoServicoContratoDTO acordoServicoContratoDTO = acordoServicoContratoDao.findAtivoByIdServicoContrato(idServicoContrato, "T");
if (acordoServicoContratoDTO != null) {
acordoNivelServicoDto.setIdAcordoNivelServico(acordoServicoContratoDTO.getIdAcordoNivelServico());
}
// Consulta prioridade do usu�rio de acordo com sla global
PrioridadeServicoUsuarioDTO prioridadeServicoUsuarioDTO = prioridadeServicoUsuarioDao.findByIdAcordoNivelServicoAndIdUsuario(acordoNivelServicoDto.getIdAcordoNivelServico(),
solicitacaoServicoDto.getIdSolicitante());
if (prioridadeServicoUsuarioDTO != null && prioridadeServicoUsuarioDTO.getIdPrioridade() != null) {
idPrioridade = prioridadeServicoUsuarioDTO.getIdPrioridade();
}
// Consulta prioridade da unidade do usu�rio de acordo com sla global
PrioridadeAcordoNivelServicoDTO prioridadeAcordoNivelServicoDTO = prioridadeAcordoNivelServicoDao.findByIdAcordoNivelServicoAndIdUnidade(acordoNivelServicoDto.getIdAcordoNivelServico(),
solicitacaoServicoDto.getIdUnidade());
if (prioridadeAcordoNivelServicoDTO != null && prioridadeAcordoNivelServicoDTO.getIdPrioridade() != null) {
idPrioridade = prioridadeAcordoNivelServicoDTO.getIdPrioridade();
}
}
if (idPrioridade == null) {
idPrioridade = acordoNivelServicoDto.getIdPrioridadePadrao();
}
Collection<TempoAcordoNivelServicoDTO> colTempos = tempoAcordoNivelServicoDao.findByIdAcordoAndIdPrioridade(acordoNivelServicoDto.getIdAcordoNivelServico(), idPrioridade);
if (colTempos != null) {
for (TempoAcordoNivelServicoDTO tempoAcordoDto : colTempos) {
if (tempoAcordoDto.getTempoHH() != null) {
prazoHH += tempoAcordoDto.getTempoHH().intValue();
}
if (tempoAcordoDto.getTempoMM() != null) {
prazoMM += tempoAcordoDto.getTempoMM().intValue();
}
}
while(prazoMM >= 60){
prazoHH = prazoHH + 1;
prazoMM = prazoMM - 60;
}
}
if (prazoHH.equals(0) && prazoMM.equals(0)) {
return UtilI18N.internacionaliza(request, "citcorpore.comum.aCombinar");
} else {
String hh = prazoHH.toString();
String mm = prazoMM.toString();
if (hh.length() == 1)
hh = "0" + hh;
if (mm.length() == 1)
mm = "0" + mm;
return hh + ":" + mm;
}
}
} catch (PersistenceException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
tc.close();
} catch (PersistenceException e) {
e.printStackTrace();
}
}
}
return "";
}
public SolicitacaoServicoDTO findByIdSolicitacaoServico(Integer idSolicitacaoServico) throws Exception {
try {
return this.getDao().findByIdSolicitacaoServico(idSolicitacaoServico);
} catch (Exception e) {
throw new ServiceException(e);
}
}
@Override
public Collection<SolicitacaoServicoDTO> findByIdGrupo(Integer idGrupo) throws Exception {
try {
return this.getDao().findByIdGrupo(idGrupo);
} catch (Exception e) {
throw new ServiceException(e);
}
}
@Override
public Collection<SolicitacaoServicoDTO> findByIdGrupoEDataBaixa(Integer idGrupo, Date dataInicio, Date dataFim) throws Exception {
try {
return this.getDao().findByIdGrupoEDataBaixa(idGrupo, dataInicio, dataFim);
} catch (Exception e) {
throw new ServiceException(e);
}
}
@Override
public Collection<SolicitacaoServicoDTO> findByIdGrupoEDataMedia(Integer idGrupo, Date dataInicio, Date dataFim) throws Exception {
try {
return this.getDao().findByIdGrupoEDataMedia(idGrupo, dataInicio, dataFim);
} catch (Exception e) {
throw new ServiceException(e);
}
}
@Override
public Collection<SolicitacaoServicoDTO> findByIdGrupoEDataAlta(Integer idGrupo, Date dataInicio, Date dataFim) throws Exception {
try {
return this.getDao().findByIdGrupoEDataAlta(idGrupo, dataInicio, dataFim);
} catch (Exception e) {
throw new ServiceException(e);
}
}
@Override
public Collection<SolicitacaoServicoDTO> findByIdGrupoEDataAtendidasBaixa(Integer idGrupo, Date dataInicio, Date dataFim) throws Exception {
try {
return this.getDao().findByIdGrupoEDataAtendidasBaixa(idGrupo, dataInicio, dataFim);
} catch (Exception e) {
throw new ServiceException(e);
}
}
@Override
public Collection<SolicitacaoServicoDTO> findByIdGrupoEDataAtendidasMedia(Integer idGrupo, Date dataInicio, Date dataFim) throws Exception {
try {
return this.getDao().findByIdGrupoEDataAtendidasMedia(idGrupo, dataInicio, dataFim);
} catch (Exception e) {
throw new ServiceException(e);
}
}
@Override
public Collection<SolicitacaoServicoDTO> findByIdGrupoEDataAtendidasAlta(Integer idGrupo, Date dataInicio, Date dataFim) throws Exception {
try {
return this.getDao().findByIdGrupoEDataAtendidasAlta(idGrupo, dataInicio, dataFim);
} catch (Exception e) {
throw new ServiceException(e);
}
}
@Override
public Collection<SolicitacaoServicoDTO> findByIdGrupoEDataTotal(Integer idGrupo, Date dataInicio, Date dataFim) throws Exception {
try {
return this.getDao().findByIdGrupoEDataTotal(idGrupo, dataInicio, dataFim);
} catch (Exception e) {
throw new ServiceException(e);
}
}
@Override
public Collection<SolicitacaoServicoDTO> findByIdGrupoEDataSuspensasTotal(Integer idGrupo, Date dataInicio, Date dataFim) throws Exception {
try {
return this.getDao().findByIdGrupoEDataSuspensasTotal(idGrupo, dataInicio, dataFim);
} catch (Exception e) {
throw new ServiceException(e);
}
}
@Override
public Collection<SolicitacaoServicoDTO> findByIdPessoaEDataAtendidas(Integer idGrupo, String login, String nome, Date dataInicio, Date dataFim) throws Exception {
try {
return this.getDao().findByIdPessoaEDataAtendidas(idGrupo, login, nome, dataInicio, dataFim);
} catch (Exception e) {
throw new ServiceException(e);
}
}
@Override
public Collection<SolicitacaoServicoDTO> findByIdPessoaEData(Integer idGrupo, String login, String nome, Date dataInicio, Date dataFim) throws Exception {
try {
return this.getDao().findByIdPessoaEData(idGrupo, login, nome, dataInicio, dataFim);
} catch (Exception e) {
throw new ServiceException(e);
}
}
@Override
public Collection<SolicitacaoServicoDTO> findByIdPessoaEDataNaoAtendidas(Integer idGrupo, Date dataInicio, Date dataFim) throws Exception {
try {
return this.getDao().findByIdPessoaEDataNaoAtendidas(idGrupo, dataInicio, dataFim);
} catch (Exception e) {
throw new ServiceException(e);
}
}
@Override
public Collection<RelatorioSolicitacaoPorExecutanteDTO> listaSolicitacaoPorExecutante(RelatorioSolicitacaoPorExecutanteDTO relatorioSolicitacaoPorExecutanteDto) throws Exception {
return getSolicitacaoServicoDao().listaSolicitacaoPorExecutante(relatorioSolicitacaoPorExecutanteDto);
}
@Override
public Collection<SolicitacaoServicoDTO> findByIdGrupoEDataAtendidasTotal(Integer idGrupo, Date dataInicio, Date dataFim) throws Exception {
try {
return this.getDao().findByIdGrupoEDataAtendidasTotal(idGrupo, dataInicio, dataFim);
} catch (Exception e) {
throw new ServiceException(e);
}
}
@Override
public Collection<SolicitacaoServicoDTO> findByIdGrupoEDataAtrasadasTotal(Integer idGrupo, Date dataInicio, Date dataFim) throws Exception {
try {
return this.getDao().findByIdGrupoEDataAtrasadasTotal(idGrupo, dataInicio, dataFim);
} catch (Exception e) {
throw new ServiceException(e);
}
}
@Override
public Collection<RelatorioQuantitativoSolicitacaoProblemaPorServicoDTO> listaServicoPorSolicitacaoServico(RelatorioQuantitativoSolicitacaoProblemaPorServicoDTO relatorioAnaliseServicoDto)
throws Exception {
Collection<RelatorioQuantitativoSolicitacaoProblemaPorServicoDTO> listFinal = new ArrayList<RelatorioQuantitativoSolicitacaoProblemaPorServicoDTO>();
Collection<RelatorioQuantitativoSolicitacaoProblemaPorServicoDTO> listAux = getSolicitacaoServicoDao().listaServicoPorSolicitacaoServico(relatorioAnaliseServicoDto);
Collection<RelatorioQuantitativoSolicitacaoProblemaPorServicoDTO> listaSolicitacaoServicoProblema = new ArrayList<RelatorioQuantitativoSolicitacaoProblemaPorServicoDTO>();
if (listAux != null) {
for (RelatorioQuantitativoSolicitacaoProblemaPorServicoDTO relatorioAnaliseServico : listAux) {
listaSolicitacaoServicoProblema = getSolicitacaoServicoDao().listaSolicitacaoServicoProblemaPorServico(relatorioAnaliseServico);
relatorioAnaliseServico.setListaSolicitacaoServicoProblema(listaSolicitacaoServicoProblema);
listFinal.add(relatorioAnaliseServico);
}
return listFinal;
}
return listAux;
}
public boolean permissaoGrupoExecutorServico(int idGrupoExecutor, int idTipoFluxoSolicitacaoServico) throws Exception {
boolean resultado = false;
PermissoesFluxoService permissoesFluxoService = (PermissoesFluxoService) ServiceLocator.getInstance().getService(PermissoesFluxoService.class, null);
resultado = permissoesFluxoService.permissaoGrupoExecutorLiberacaoServico(idGrupoExecutor, idTipoFluxoSolicitacaoServico);
return resultado;
}
public Collection<SolicitacaoServicoDTO> listaSolicitacoesPorIdEmpregado(Integer pgAtual, Integer qtdPaginacao, GerenciamentoServicosDTO gerenciamentoBean, Collection<ContratoDTO> listContratoUsuarioLogado) throws Exception {
try {
return this.getDao().listaSolicitacoesPorIdEmpregado(pgAtual, qtdPaginacao, gerenciamentoBean, listContratoUsuarioLogado);
} catch (Exception e) {
throw new ServiceException(e);
}
}
public Collection<SolicitacaoServicoDTO> listaSolicitacoesPorIdEmpregado(Integer pgAtual, Integer qtdPaginacao, GerenciamentoServicosDTO gerenciamentoBean, Collection<ContratoDTO> listContratoUsuarioLogado, String[] filtro) throws Exception {
try {
return this.getDao().listaSolicitacoesPorIdEmpregado(pgAtual, qtdPaginacao, gerenciamentoBean, listContratoUsuarioLogado, filtro);
} catch (Exception e) {
throw new ServiceException(e);
}
}
public Collection<SolicitacaoServicoDTO> resumoSolicitacoesServico(Collection<TarefaFluxoDTO> listTarefas, Integer idTipoDemandaServico, Integer idPrioridade) throws Exception {
Collection<SolicitacaoServicoDTO> listSolicitacaoServicoDto = new ArrayList();
HashMap hashMap = new HashMap();
Integer qtdEmAndamento = 0;
Integer qtdCancelada = 0;
Integer qtdSuspensa = 0;
Integer qtdPrazoVencido = 0;
listSolicitacaoServicoDto = listByTarefas(listTarefas, new TransactionControlerImpl(br.com.citframework.util.Constantes.getValue("DATABASE_ALIAS")));
if (listTarefas != null) {
for (SolicitacaoServicoDTO solicitacaoServicoDTO : listSolicitacaoServicoDto) {
if (solicitacaoServicoDTO.getSituacao().equalsIgnoreCase("EmAndamento")) {
qtdEmAndamento++;
}
if (solicitacaoServicoDTO.getSituacao().equalsIgnoreCase("Cancelada")) {
qtdEmAndamento++;
}
if (solicitacaoServicoDTO.getSituacao().equalsIgnoreCase("Suspensa")) {
qtdSuspensa++;
}
solicitacaoServicoDTO.setDataHoraLimiteStr(solicitacaoServicoDTO.getDataHoraLimiteStr());
solicitacaoServicoDTO.setDataHoraInicioSLA(solicitacaoServicoDTO.getDataHoraInicioSLA());
solicitacaoServicoDTO.setNomeServico(solicitacaoServicoDTO.getServico());
if (solicitacaoServicoDTO.getNomeUnidadeSolicitante() != null && !solicitacaoServicoDTO.getNomeUnidadeSolicitante().trim().equalsIgnoreCase(""))
solicitacaoServicoDTO.setSolicitanteUnidade(solicitacaoServicoDTO.getSolicitante() + " (" + solicitacaoServicoDTO.getNomeUnidadeSolicitante() + ")");
if (solicitacaoServicoDTO.getNomeUnidadeResponsavel() != null && !solicitacaoServicoDTO.getNomeUnidadeResponsavel().trim().equalsIgnoreCase(""))
solicitacaoServicoDTO.setResponsavel(solicitacaoServicoDTO.getResponsavel() + " (" + solicitacaoServicoDTO.getNomeUnidadeResponsavel() + ")");
this.verificaSituacaoSLA(solicitacaoServicoDTO);
if (solicitacaoServicoDTO.getAtrasoSLA() > 0 && !solicitacaoServicoDTO.getSituacao().equalsIgnoreCase("Cancelada")) {
qtdPrazoVencido++;
}
}
}
hashMap.put("Em Andamento", qtdEmAndamento);
hashMap.put("Cancelada", qtdCancelada);
hashMap.put("Suspensa", qtdSuspensa);
hashMap.put("Prazo Vencido", qtdPrazoVencido);
return listSolicitacaoServicoDto;
}
/*
* M�rio J�nior - 29/10/2013 - 17:00 Modificado para atender o resumo de solicita��es
*/
public Collection<TipoDemandaServicoDTO> resumoTipoDemandaServico(List<TarefaFluxoDTO> listTarefas) throws Exception {
Collection<TipoDemandaServicoDTO> resumoTipoDemandaServico = new ArrayList<TipoDemandaServicoDTO>();
TipoDemandaServicoService tipoDemandaServicoService = (TipoDemandaServicoService) ServiceLocator.getInstance().getService(TipoDemandaServicoService.class, null);
Integer qtdeItens = 0;
Collection<TipoDemandaServicoDTO> colTipoDemandaServicos = tipoDemandaServicoService.listSolicitacoes();
ArrayList<TarefaFluxoDTO> listaTarefasAtivo = new ArrayList<TarefaFluxoDTO>();
if (listTarefas != null) {
for (TipoDemandaServicoDTO tipoDemandaServicoDTO : colTipoDemandaServicos) {
TipoDemandaServicoDTO dto = new TipoDemandaServicoDTO();
for (TarefaFluxoDTO tarefasStr : listTarefas) {
SolicitacaoServicoDTO solicitacaoServicoDTO = (SolicitacaoServicoDTO) tarefasStr.getSolicitacaoDto();
if (solicitacaoServicoDTO.getSituacao().equalsIgnoreCase("EmAndamento") || solicitacaoServicoDTO.getSituacao().equalsIgnoreCase("Resolvida")|| solicitacaoServicoDTO.getSituacao().equalsIgnoreCase("Reaberta")
|| solicitacaoServicoDTO.getSituacao().equalsIgnoreCase("Suspensa")|| solicitacaoServicoDTO.getSituacao().equalsIgnoreCase("Cancelada")) {
if (solicitacaoServicoDTO.getIdTipoDemandaServico().intValue() == tipoDemandaServicoDTO.getIdTipoDemandaServico().intValue()) {
qtdeItens++;
}
}
}
dto.setNomeTipoDemandaServico(tipoDemandaServicoDTO.getNomeTipoDemandaServico());
dto.setQuantidade(qtdeItens);
resumoTipoDemandaServico.add(dto);
qtdeItens = 0 ;
}
}
return resumoTipoDemandaServico;
}
/*
* M�rio J�nior - 29/10/2013 - 17:00 Modificado para atender o resumo de solicita��es
*/
public Collection<PrioridadeDTO> resumoPrioridade(List<TarefaFluxoDTO> listTarefas) throws Exception {
Collection<PrioridadeDTO> colPrioridade = new ArrayList<PrioridadeDTO>();
PrioridadeService prioridadeService = (PrioridadeService) ServiceLocator.getInstance().getService(PrioridadeService.class, null);
Integer qtdeItens = 0;
Collection<PrioridadeDTO> colPrioridadeService = prioridadeService.list();
ArrayList<TarefaFluxoDTO> listaTarefasAtivo = new ArrayList<TarefaFluxoDTO>();
if (listTarefas != null) {
for (PrioridadeDTO prioridadeDTO : colPrioridadeService) {
PrioridadeDTO dto = new PrioridadeDTO();
for (TarefaFluxoDTO tarefasStr : listTarefas) {
SolicitacaoServicoDTO solicitacaoServicoDTO = (SolicitacaoServicoDTO) tarefasStr.getSolicitacaoDto();
if (solicitacaoServicoDTO.getSituacao().equalsIgnoreCase("Reaberta") || solicitacaoServicoDTO.getSituacao().equalsIgnoreCase("EmAndamento") || solicitacaoServicoDTO.getSituacao().equalsIgnoreCase("Resolvida")
|| (solicitacaoServicoDTO.getSituacao().equalsIgnoreCase("Suspensa")||solicitacaoServicoDTO.getSituacao().equalsIgnoreCase("Cancelada"))) {
if (prioridadeDTO.getIdPrioridade().intValue() == solicitacaoServicoDTO.getIdPrioridade().intValue()) {
qtdeItens++;
}
}
}
dto.setNomePrioridade(prioridadeDTO.getNomePrioridade());
dto.setQuantidade(qtdeItens);
colPrioridade.add(dto);
qtdeItens = 0;
}
}
return colPrioridade;
}
public HashMap resumoPorPrazoLimite(Collection<TarefaFluxoDTO> listTarefas) throws Exception {
Integer qtdPrazoVencido = 0;
Integer qtdPrazoAVencer = 0;
Integer qtdPrazoNormal = 0;
HashMap hashMap = new HashMap();
Collection<SolicitacaoServicoDTO> colSolicitacaoServico = new ArrayList<SolicitacaoServicoDTO>();
// SolicitacaoServicoDTO solicitacaoServicoDTO = new SolicitacaoServicoDTO();
SolicitacaoServicoService solicitacaoServicoService = (SolicitacaoServicoService) ServiceLocator.getInstance().getService(SolicitacaoServicoService.class, null);
if (listTarefas != null) {
for (TarefaFluxoDTO tarefasStr : listTarefas) {
SolicitacaoServicoDTO solicitacaoServicoDTO = (SolicitacaoServicoDTO) tarefasStr.getSolicitacaoDto();
solicitacaoServicoDTO.setDataHoraLimiteStr(solicitacaoServicoDTO.getDataHoraLimiteStr());
solicitacaoServicoDTO.setDataHoraInicioSLA(solicitacaoServicoDTO.getDataHoraInicioSLA());
solicitacaoServicoDTO.setNomeServico(solicitacaoServicoDTO.getServico());
if (solicitacaoServicoDTO.getNomeUnidadeSolicitante() != null && !solicitacaoServicoDTO.getNomeUnidadeSolicitante().trim().equalsIgnoreCase(""))
solicitacaoServicoDTO.setSolicitanteUnidade(solicitacaoServicoDTO.getSolicitante() + " (" + solicitacaoServicoDTO.getNomeUnidadeSolicitante() + ")");
if (solicitacaoServicoDTO.getNomeUnidadeResponsavel() != null && !solicitacaoServicoDTO.getNomeUnidadeResponsavel().trim().equalsIgnoreCase(""))
solicitacaoServicoDTO.setResponsavel(solicitacaoServicoDTO.getResponsavel() + " (" + solicitacaoServicoDTO.getNomeUnidadeResponsavel() + ")");
if (solicitacaoServicoDTO.getSituacao().equalsIgnoreCase("Reaberta") || solicitacaoServicoDTO.getSituacao().equalsIgnoreCase("EmAndamento") || solicitacaoServicoDTO.getSituacao().equalsIgnoreCase("Resolvida")
|| solicitacaoServicoDTO.getSituacao().equalsIgnoreCase("Suspensa")||solicitacaoServicoDTO.getSituacao().equalsIgnoreCase("Cancelada")) {
if (solicitacaoServicoDTO.getAtrasoSLA() > 0 && !solicitacaoServicoDTO.getSituacao().equalsIgnoreCase("Cancelada")) {
if (solicitacaoServicoDTO.getDataHoraLimite() != null) {
Timestamp dataHoraLimite = solicitacaoServicoDTO.getDataHoraLimite();
Timestamp dataHoraComparacao = UtilDatas.getDataHoraAtual();
if (solicitacaoServicoDTO.encerrada())
dataHoraComparacao = solicitacaoServicoDTO.getDataHoraFim();
if (dataHoraComparacao != null) {
if (dataHoraComparacao.compareTo(dataHoraLimite) > 0) {
qtdPrazoVencido++;
}
}
}
} else {
if (solicitacaoServicoDTO.getFalta1Hora() == true) {
qtdPrazoAVencer++;
} else {
qtdPrazoNormal++;
}
}
}
}
}
hashMap.put("Prazo Normal", qtdPrazoNormal);
hashMap.put("Prazo a Vencer", qtdPrazoAVencer);
hashMap.put("Prazo Vencido", qtdPrazoVencido);
/*
* solicitacaoServicoDTO.setPrazo("Prazo Vencido"); solicitacaoServicoDTO.setPrazo("Prazo a Vencer"); solicitacaoServicoDTO.setPrazo("Prazo Normal");
* solicitacaoServicoDTO.setQuantidade(qtdPrazoVencido); solicitacaoServicoDTO.setQuantidade(qtdPrazoAVencer); solicitacaoServicoDTO.setQuantidade(qtdPrazoNormal);
*/
return hashMap;
}
@Override
public Collection<RelatorioQuantitativoRetornoDTO> listaServicosRetorno(SolicitacaoServicoDTO solicitacaoServicoDTO, String grupoRetorno) throws Exception {
return getSolicitacaoServicoDao().listaServicosRetorno(solicitacaoServicoDTO, grupoRetorno);
}
@Override
public Collection<RelatorioQuantitativoRetornoDTO> listaServicosRetornoNomeResponsavel(RelatorioQuantitativoRetornoDTO relatorioQuantitativoRetornoDTO) throws Exception {
return getSolicitacaoServicoDao().listaServicosRetornoNomeResponsavel(relatorioQuantitativoRetornoDTO);
}
@Override
public SolicitacaoServicoDTO listaIdItemTrabalho(Integer idInstancia) throws Exception {
return getSolicitacaoServicoDao().listaIdItemTrabalho(idInstancia);
}
@Override
public RelatorioQuantitativoRetornoDTO servicoRetorno(RelatorioQuantitativoRetornoDTO relatorioQuantitativoRetornoDTO) throws Exception {
return getSolicitacaoServicoDao().servicoRetorno(relatorioQuantitativoRetornoDTO);
}
@Override
public boolean validaQuantidadeRetorno(RelatorioQuantitativoRetornoDTO relatorioQuantitativoRetornoDTO) throws Exception {
return getSolicitacaoServicoDao().validaQuantidadeRetorno(relatorioQuantitativoRetornoDTO);
}
@Override
public RelatorioQuantitativoRetornoDTO retornarIdEncerramento(String encerramento, RelatorioQuantitativoRetornoDTO relatorioQuantitativoRetornoDTO) throws Exception {
return getSolicitacaoServicoDao().retornarIdEncerramento(encerramento, relatorioQuantitativoRetornoDTO);
}
public boolean confirmaEncerramento(RelatorioQuantitativoRetornoDTO relatorioQuantitativoRetornoDTO, Integer idElemento) throws Exception {
return getSolicitacaoServicoDao().confirmaEncerramento(relatorioQuantitativoRetornoDTO, idElemento);
}
public Collection<SolicitacaoServicoDTO> findByCodigoExterno(String codigoExterno) throws Exception {
return getSolicitacaoServicoDao().findByCodigoExterno(codigoExterno);
}
public Collection<SolicitacaoServicoDTO> listByTarefas(Collection<TarefaFluxoDTO> listTarefas, Integer qtdAtual, Integer qtdAPaginacao,TransactionControler tc) throws Exception {
if (tc != null)
this.getDao().setTransactionControler(tc);
Collection<SolicitacaoServicoDTO> listSolicitacaoServicoDto = new ArrayList();
listSolicitacaoServicoDto = this.getDao().listByTarefas(listTarefas, qtdAtual, qtdAPaginacao);
if (listSolicitacaoServicoDto != null && !listSolicitacaoServicoDto.isEmpty()) {
for (SolicitacaoServicoDTO solicitacaoDto : listSolicitacaoServicoDto) {
if (solicitacaoDto != null) {
solicitacaoDto.setDataHoraLimiteStr(solicitacaoDto.getDataHoraLimiteStr());
solicitacaoDto.setDataHoraInicioSLA(solicitacaoDto.getDataHoraInicioSLA());
solicitacaoDto.setNomeServico(solicitacaoDto.getServico());
if (solicitacaoDto.getNomeUnidadeSolicitante() != null && !solicitacaoDto.getNomeUnidadeSolicitante().trim().equalsIgnoreCase(""))
solicitacaoDto.setSolicitanteUnidade(solicitacaoDto.getSolicitante() + " (" + solicitacaoDto.getNomeUnidadeSolicitante() + ")");
if (solicitacaoDto.getNomeUnidadeResponsavel() != null && !solicitacaoDto.getNomeUnidadeResponsavel().trim().equalsIgnoreCase(""))
solicitacaoDto.setResponsavel(solicitacaoDto.getResponsavel() + " (" + solicitacaoDto.getNomeUnidadeResponsavel() + ")");
solicitacaoDto = this.verificaSituacaoSLA(solicitacaoDto, tc);
}
}
}
return listSolicitacaoServicoDto;
}
public boolean existeSolicitacaoServico(SolicitacaoServicoDTO solicitacaoservico) throws Exception {
return this.getDao().existeSolicitacaoServico(solicitacaoservico);
}
/**
* Retorna a Lista de TarefaDTO com SolicitacaoServidoDTO de acordo com o Login, Lista de Contratos do Usu�rio Logado e os Filtros Selecionados na Tela de Gerenciamento de Servi�os.
*
* @param pgAtual
* @param qtdAPaginacao
* @param login
* @param gerenciamentoBean
* @param listContratoUsuarioLogado
* @return
* @throws Exception
* @author valdoilo.damasceno
* @since 05.11.2013
*/
public Collection<SolicitacaoServicoDTO> listByTarefas(Collection<TarefaFluxoDTO> listTarefas, Integer qtdAtual, Integer qtdAPaginacao, GerenciamentoServicosDTO gerenciamentoBean,
Collection<ContratoDTO> listContratoUsuarioLogado, TransactionControler tc) throws Exception {
if (tc != null)
this.getDao().setTransactionControler(tc);
Collection<SolicitacaoServicoDTO> listSolicitacaoServicoDto = this.getDao().listByTarefas(listTarefas, qtdAtual, qtdAPaginacao, gerenciamentoBean, listContratoUsuarioLogado);
if (listSolicitacaoServicoDto != null && !listSolicitacaoServicoDto.isEmpty()) {
for (SolicitacaoServicoDTO solicitacaoDto : listSolicitacaoServicoDto) {
if (solicitacaoDto != null) {
solicitacaoDto.setDataHoraLimiteStr(solicitacaoDto.getDataHoraLimiteStr());
solicitacaoDto.setDataHoraInicioSLA(solicitacaoDto.getDataHoraInicioSLA());
solicitacaoDto.setNomeServico(solicitacaoDto.getServico());
if (solicitacaoDto.getNomeUnidadeSolicitante() != null && !solicitacaoDto.getNomeUnidadeSolicitante().trim().equalsIgnoreCase(""))
solicitacaoDto.setSolicitanteUnidade(solicitacaoDto.getSolicitante() + " (" + solicitacaoDto.getNomeUnidadeSolicitante() + ")");
if (solicitacaoDto.getNomeUnidadeResponsavel() != null && !solicitacaoDto.getNomeUnidadeResponsavel().trim().equalsIgnoreCase(""))
solicitacaoDto.setResponsavel(solicitacaoDto.getResponsavel() + " (" + solicitacaoDto.getNomeUnidadeResponsavel() + ")");
solicitacaoDto = this.verificaSituacaoSLA(solicitacaoDto, tc);
}
}
}
return listSolicitacaoServicoDto;
}
/**
* Utilizado para a RENDERIZA��O do GR�FICO, pois no Gr�fico n�o � necess�rio a utiliza��o de Pagina��o. Esta consulta considera o Login do Usu�rio Logado, os Contratos em que est� inserido e os
* Filtros Selecionados na tela de Gerenciamento de Servi�os.
*
* @param listTarefas
* @param gerenciamentoBean
* @return
* @throws Exception
* @author valdoilo.damasceno
* @since 05.11.2013
*/
public Collection<SolicitacaoServicoDTO> listByTarefas(Collection<TarefaFluxoDTO> listTarefas, GerenciamentoServicosDTO gerenciamentoBean, Collection<ContratoDTO> listContratoUsuarioLogado, TransactionControler tc)
throws Exception {
if (tc != null)
this.getDao().setTransactionControler(tc);
Collection<SolicitacaoServicoDTO> listSolicitacaoServicoDto = new ArrayList();
listSolicitacaoServicoDto = this.getDao().listByTarefas(listTarefas, gerenciamentoBean, listContratoUsuarioLogado);
if (listSolicitacaoServicoDto != null && !listSolicitacaoServicoDto.isEmpty()) {
for (SolicitacaoServicoDTO solicitacaoDto : listSolicitacaoServicoDto) {
if (solicitacaoDto != null) {
solicitacaoDto.setDataHoraLimiteStr(solicitacaoDto.getDataHoraLimiteStr());
solicitacaoDto.setDataHoraInicioSLA(solicitacaoDto.getDataHoraInicioSLA());
solicitacaoDto.setNomeServico(solicitacaoDto.getServico());
if (solicitacaoDto.getNomeUnidadeSolicitante() != null && !solicitacaoDto.getNomeUnidadeSolicitante().trim().equalsIgnoreCase(""))
solicitacaoDto.setSolicitanteUnidade(solicitacaoDto.getSolicitante() + " (" + solicitacaoDto.getNomeUnidadeSolicitante() + ")");
if (solicitacaoDto.getNomeUnidadeResponsavel() != null && !solicitacaoDto.getNomeUnidadeResponsavel().trim().equalsIgnoreCase(""))
solicitacaoDto.setResponsavel(solicitacaoDto.getResponsavel() + " (" + solicitacaoDto.getNomeUnidadeResponsavel() + ")");
solicitacaoDto = this.verificaSituacaoSLA(solicitacaoDto, tc);
}
}
}
return listSolicitacaoServicoDto;
}
public SolicitacaoServicoDTO restoreInfoEmails(Integer idSolicitacaoServico, TransactionControler tc) throws Exception{
if (tc != null) {
this.getDao().setTransactionControler(tc);
}
SolicitacaoServicoDTO solicitacaoDto = null;
try {
solicitacaoDto = (SolicitacaoServicoDTO) this.getDao().restoreInfoEmails(idSolicitacaoServico);
} catch (Exception e) {
throw new Exception(i18nMessage("solicitacaoservico.erro.recuperardadosolicitacao") + " " + idSolicitacaoServico);
}
return solicitacaoDto;
}
public Collection<SolicitacaoServicoDTO> listarSolicitacoesAbertasEmAndamentoPorGrupo(int idGrupoAtual, String situacaoSla) throws Exception {
return this.getDao().listarSolicitacoesAbertasEmAndamentoPorGrupo(idGrupoAtual, situacaoSla);
}
public Collection<SolicitacaoServicoDTO> listarSolicitacoesMultadasSuspensasPorGrupo(int idGrupoAtual, String situacaoSla) throws Exception {
return this.getDao().listarSolicitacoesMultadasSuspensasPorGrupo(idGrupoAtual, situacaoSla);
}
public Collection<SolicitacaoServicoDTO> listaServicosPorResponsavelNoPeriodo(Date dataIncio, Date dataFim, int idFuncionario , boolean mostrarIncidentes, boolean mostrarRequisicoes,String situacao) throws Exception {
return this.getDao().listaServicosPorResponsavelNoPeriodo(dataIncio, dataFim, idFuncionario, mostrarIncidentes, mostrarRequisicoes, situacao);
}
/*
@Override
public Collection<SolicitacaoServicoDTO> findSolicitacoesNaoResolvidasNoPrazoKPI(
RelatorioIncidentesNaoResolvidosDTO relatorioIncidentesNaoResolvidosDTO)
throws Exception {
SolicitacaoServicoDao dao = new SolicitacaoServicoDao();
return this.getDao().findSolicitacoesNaoResolvidasNoPrazoKPI(relatorioIncidentesNaoResolvidosDTO);
}
*/
public Collection<SolicitacaoServicoDTO> listaServicosPorSolicitanteNoPeriodoEnviadosAoteste(Date dataIncio, Date dataFim, int idFuncionario , boolean mostrarIncidentes, boolean mostrarRequisicoes) throws Exception {
return this.getDao().listaServicosPorSolicitanteNoPeriodoEnviadosAoteste(dataIncio, dataFim, idFuncionario , mostrarIncidentes, mostrarRequisicoes);
}
public Collection<SolicitacaoServicoDTO> listaServicosPorAbertosParaDocumentacao(Date dataIncio, Date dataFim, boolean mostrarIncidentes, boolean mostrarRequisicoes) throws Exception {
return this.getDao().listaServicosPorAbertosParaDocumentacao(dataIncio, dataFim, mostrarIncidentes, mostrarRequisicoes);
}
public Collection<SolicitacaoServicoDTO> listaServicosPorResponsavelNoPeriodoDocumentacao(Date dataIncio, Date dataFim, int idFuncionario , boolean mostrarIncidentes, boolean mostrarRequisicoes) throws Exception {
return this.getDao().listaServicosPorResponsavelNoPeriodoDocumentacao(dataIncio, dataFim, idFuncionario , mostrarIncidentes, mostrarRequisicoes);
}
public Collection<SolicitacaoServicoDTO> listaServicosPorResponsavelNoPeriodoDocumentacaoPorServico(Date dataIncio, Date dataFim, int idFuncionario , boolean mostrarIncidentes, boolean mostrarRequisicoes, String listaIdsServicosHomologacaoDocumentacao) throws Exception {
return this.getDao().listaServicosPorResponsavelNoPeriodoDocumentacaoPorServico(dataIncio, dataFim, idFuncionario , mostrarIncidentes, mostrarRequisicoes, listaIdsServicosHomologacaoDocumentacao);
}
public Collection<SolicitacaoServicoDTO> listaServicosPorAbertosPelotesteParaValidacao(Date dataIncio, Date dataFim, boolean mostrarIncidentes, boolean mostrarRequisicoes) throws Exception {
return this.getDao().listaServicosPorAbertosPelotesteParaValidacao(dataIncio, dataFim, mostrarIncidentes, mostrarRequisicoes);
}
public void verificaSituacaoSLA(List<SolicitacaoServicoDTO> solicitacaoDto) throws Exception {
for (SolicitacaoServicoDTO solicitacaoServicoDTO : solicitacaoDto) {
verificaSituacaoSLA(solicitacaoServicoDTO);
}
}
public SolicitacaoServicoDTO buscarNumeroItemTrabalhoPorNumeroSolicitacao(int idSolicitacao) throws Exception {
return this.getDao().buscarNumeroItemTrabalhoPorNumeroSolicitacao(idSolicitacao);
}
public Collection<RelatorioEficaciaTesteDTO> listaSolicitacaoPorServicosAbertosNoPerido(Date dataIncio, Date dataFim,List<ServicoDTO> listaServicos) throws Exception {
return this.getDao().listaSolicitacaoPorServicosAbertosNoPerido(dataIncio, dataFim, listaServicos);
}
public Collection<RelatorioDocumentacaoDeFuncionalidadesNovasOuAlteradasNoPeriodoDTO> listaQtdSolicitacoesCanceladasFinalizadasporServicoNoPeriodo(Date dataIncio, Date dataFim,List<ServicoDTO> listaServicos) throws Exception {
return this.getDao().listaQtdSolicitacoesCanceladasFinalizadasporServicoNoPeriodo(dataIncio, dataFim, listaServicos);
}
@Override
public Collection<SolicitacaoServicoDTO> findSolicitacoesNaoResolvidasNoPrazoKPI(RelatorioIncidentesNaoResolvidosDTO relatorioIncidentesNaoResolvidosDTO)throws Exception {
return this.getDao().findSolicitacoesNaoResolvidasNoPrazoKPI(relatorioIncidentesNaoResolvidosDTO);
}
@Override
public Collection<SolicitacaoServicoDTO> findSolicitacoesNaoResolvidasEntrePrazoKPI(RelatorioIncidentesNaoResolvidosDTO relatorioIncidentesNaoResolvidosDTO)throws Exception {
return this.getDao().findSolicitacoesNaoResolvidasEntrePrazoKPI(relatorioIncidentesNaoResolvidosDTO);
}
@Override
public Collection<RelatorioKpiProdutividadeDTO> listaQuantitativaEmpregadoSolicitacoesEmcaminhaExito(RelatorioKpiProdutividadeDTO relatorioKpiProdutividadeDto) throws Exception {
Collection<RelatorioKpiProdutividadeDTO> listaQuantitativaEmpregadoSolicitacoesEmcaminhaExito = new ArrayList();
listaQuantitativaEmpregadoSolicitacoesEmcaminhaExito = this.getDao().listaQuantitativaEmpregadoSolicitacoesEmcaminhaExito(relatorioKpiProdutividadeDto);
if(listaQuantitativaEmpregadoSolicitacoesEmcaminhaExito!=null){
for(RelatorioKpiProdutividadeDTO relatorioKpiProdutividadeDTO : listaQuantitativaEmpregadoSolicitacoesEmcaminhaExito){
if(relatorioKpiProdutividadeDTO.getQtdeencaminhadas() > 0 ){
Double porcentagemExecutadaExito ;
porcentagemExecutadaExito = 100 * ( relatorioKpiProdutividadeDTO.getQtdeexito().doubleValue() / relatorioKpiProdutividadeDTO.getQtdeencaminhadas().doubleValue());
relatorioKpiProdutividadeDTO.setPorcentagemExecutadaExito(porcentagemExecutadaExito);
}else{
relatorioKpiProdutividadeDTO.setQtdeExecutada(0);
}
}
return listaQuantitativaEmpregadoSolicitacoesEmcaminhaExito;
}
return null;
}
public Collection<SolicitacaoServicoDTO> listSolicitacoesFilhasFiltradas(GerenciamentoServicosDTO gerenciamentoBean, Collection<ContratoDTO> listContratoUsuarioLogado, TransactionControler tc) throws Exception {
SolicitacaoServicoDao solicitacaoServicoDao = (SolicitacaoServicoDao) this.getDao();
if (tc != null)
solicitacaoServicoDao.setTransactionControler(tc);
return solicitacaoServicoDao.listSolicitacoesFilhasFiltradas(gerenciamentoBean, listContratoUsuarioLogado);
}
public boolean verificaPermGestorSolicitanteRH(Integer idSolicitante) throws PersistenceException {
return this.getDao().verificaPermGestorSolicitanteRH(idSolicitante);
}
@Override
public Collection<RelatorioCausaSolucaoDTO> listaCausaSolicitacao(RelatorioCausaSolucaoDTO relatorioCausaSolicitacao) throws Exception {
return getSolicitacaoServicoDao().listaCausaSolicitacao(relatorioCausaSolicitacao);
}
@Override
public Collection<RelatorioCausaSolucaoDTO> listaSolucaoSolicitacao(RelatorioCausaSolucaoDTO relatorioCausaSolicitacao) throws Exception {
return getSolicitacaoServicoDao().listaSolucaoSolicitacao(relatorioCausaSolicitacao);
}
@Override
public Collection<RelatorioCausaSolucaoDTO> listaCausaSolucaoAnalitico(RelatorioCausaSolucaoDTO relatorioCausaSolicitacao) throws Exception {
return getSolicitacaoServicoDao().listaCausaSolucaoAnalitico(relatorioCausaSolicitacao);
}
@Override
public Collection<SolicitacaoServicoDTO> listSolicitacoesFilhasFiltradas(
GerenciamentoServicosDTO gerenciamentoBean,
Collection<ContratoDTO> listContratoUsuarioLogado) throws Exception {
// TODO Auto-generated method stub
return listSolicitacoesFilhasFiltradas(gerenciamentoBean,listContratoUsuarioLogado, null);
}
@Override
public Collection<SolicitacaoServicoDTO> listSolicitacoesFilhas() throws Exception {
return listSolicitacoesFilhas(null);
}
@Override
public Collection<SolicitacaoServicoDTO> listByTarefas(Collection<TarefaFluxoDTO> listTarefas, TipoSolicitacaoServico[] tiposSolicitacao) throws Exception {
return listByTarefas(listTarefas, tiposSolicitacao, null);
}
public Collection<SolicitacaoServicoDTO> listByTarefas(Collection<TarefaFluxoDTO> listTarefas, Integer qtdAtual, Integer qtdAPaginacao, GerenciamentoServicosDTO gerenciamentoBean,
Collection<ContratoDTO> listContratoUsuarioLogado) throws Exception {
return listByTarefas(listTarefas, qtdAtual, qtdAPaginacao, gerenciamentoBean, listContratoUsuarioLogado, null);
}
public void determinaPrazoLimite(SolicitacaoServicoDTO solicitacaoDto, Integer idCalendario, TransactionControler tc) throws Exception {
if (solicitacaoDto.getDataHoraInicioSLA() == null)
return;
Timestamp tsAtual = UtilDatas.getDataHoraAtual();
if (idCalendario == null || idCalendario.intValue() == 0) {
ServicoContratoDao servicoContratoDao = new ServicoContratoDao();
if (tc != null)
servicoContratoDao.setTransactionControler(tc);
ServicoContratoDTO servicoContratoDto = servicoContratoDao.findByIdContratoAndIdServico(solicitacaoDto.getIdContrato(), solicitacaoDto.getIdServico());
if (servicoContratoDto == null)
throw new LogicException(i18nMessage("solicitacaoservico.validacao.servicolocalizado"));
idCalendario = servicoContratoDto.getIdCalendario();
}
if (solicitacaoDto.getPrazoHH() == null)
solicitacaoDto.setPrazoHH(0);
if (solicitacaoDto.getPrazoMM() == null)
solicitacaoDto.setPrazoMM(0);
CalculoJornadaDTO calculoDto = null;
if (solicitacaoDto.getHouveMudanca() != null && solicitacaoDto.getHouveMudanca().equalsIgnoreCase("S") && solicitacaoDto.getDataHoraReativacaoSLA() != null
&& solicitacaoDto.getTempoDecorridoHH() != null
&& ((solicitacaoDto.getPrazoHH() * 100) + solicitacaoDto.getPrazoMM()) > (solicitacaoDto.getTempoDecorridoHH() * 100) + solicitacaoDto.getTempoDecorridoMM()) {
Integer novoPrazoHH = solicitacaoDto.getPrazoHH() - solicitacaoDto.getTempoDecorridoHH();
Integer novoPrazoMM = solicitacaoDto.getPrazoMM() - solicitacaoDto.getTempoDecorridoMM();
calculoDto = new CalculoJornadaDTO(idCalendario, solicitacaoDto.getDataHoraReativacaoSLA(), novoPrazoHH, novoPrazoMM);
calculoDto = new CalendarioServiceEjb().calculaDataHoraFinal(calculoDto, true, tc);
} else {
if (solicitacaoDto.getDataHoraReativacaoSLA() != null && solicitacaoDto.getTempoDecorridoHH() == 0 && solicitacaoDto.getTempoDecorridoMM() == 0) {
calculoDto = new CalculoJornadaDTO(idCalendario, solicitacaoDto.getDataHoraReativacaoSLA(), solicitacaoDto.getPrazoHH(), solicitacaoDto.getPrazoMM());
} else {
calculoDto = new CalculoJornadaDTO(idCalendario, solicitacaoDto.getDataHoraInicioSLA(), solicitacaoDto.getPrazoHH(), solicitacaoDto.getPrazoMM());
}
calculoDto = new CalendarioServiceEjb().calculaDataHoraFinal(calculoDto, true, tc);
}
solicitacaoDto.setDataHoraLimite(calculoDto.getDataHoraFinal());
}
@Override
public Integer numeroSolicitacoesForaPeriodo(RelatorioIncidentesNaoResolvidosDTO relatorioIncidentesNaoResolvidosDTO) throws PersistenceException, ServiceException {
return getSolicitacaoServicoDao().numeroSolicitacoesForaPeriodo(relatorioIncidentesNaoResolvidosDTO);
}
/**
* Novos m�todos para pagina��o
* @author thyen.chang
*
* @param pesquisaSolicitacaoServicoDto
* @return
* @throws Exception
*/
@Override
public Long listaRelatorioGetQuantidadeRegistros(PesquisaSolicitacaoServicoDTO pesquisaSolicitacaoServicoDto) throws Exception {
return getSolicitacaoServicoDao().listaRelatorioGetQuantidadeRegistros(pesquisaSolicitacaoServicoDto);
}
@Override
public List<SolicitacaoServicoDTO> listRelatorioGetListaPaginada(PesquisaSolicitacaoServicoDTO pesquisaSolicitacaoServicoDTO, Integer paginaAtual, Integer quantidadePorPagina)
throws Exception {
return getSolicitacaoServicoDao().listRelatorioGetListaPaginada(pesquisaSolicitacaoServicoDTO, paginaAtual, quantidadePorPagina);
}
}