package br.com.centralit.citcorpore.bpm.negocio; import java.sql.Date; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import br.com.centralit.bpm.dto.EventoFluxoDTO; import br.com.centralit.bpm.dto.FluxoDTO; import br.com.centralit.bpm.dto.InstanciaFluxoDTO; import br.com.centralit.bpm.dto.ItemTrabalhoFluxoDTO; import br.com.centralit.bpm.dto.ObjetoNegocioFluxoDTO; 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.ItemTrabalhoFluxoDao; import br.com.centralit.bpm.integracao.TipoFluxoDao; import br.com.centralit.bpm.negocio.ExecucaoFluxo; import br.com.centralit.bpm.negocio.InstanciaFluxo; import br.com.centralit.bpm.negocio.ItemTrabalho; import br.com.centralit.bpm.util.Enumerados; import br.com.centralit.citcorpore.bean.CalculoJornadaDTO; import br.com.centralit.citcorpore.bean.EmpregadoDTO; import br.com.centralit.citcorpore.bean.ExecucaoLiberacaoDTO; import br.com.centralit.citcorpore.bean.GrupoDTO; import br.com.centralit.citcorpore.bean.ItemConfiguracaoDTO; import br.com.centralit.citcorpore.bean.ModeloEmailDTO; import br.com.centralit.citcorpore.bean.OcorrenciaLiberacaoDTO; import br.com.centralit.citcorpore.bean.RequisicaoLiberacaoDTO; import br.com.centralit.citcorpore.bean.RequisicaoLiberacaoItemConfiguracaoDTO; import br.com.centralit.citcorpore.bean.TipoLiberacaoDTO; import br.com.centralit.citcorpore.bean.UsuarioDTO; import br.com.centralit.citcorpore.integracao.ExecucaoLiberacaoDao; import br.com.centralit.citcorpore.integracao.GrupoDao; import br.com.centralit.citcorpore.integracao.ModeloEmailDao; import br.com.centralit.citcorpore.integracao.OcorrenciaLiberacaoDao; import br.com.centralit.citcorpore.integracao.RequisicaoLiberacaoDao; import br.com.centralit.citcorpore.integracao.TipoLiberacaoDAO; import br.com.centralit.citcorpore.integracao.UsuarioDao; import br.com.centralit.citcorpore.mail.MensagemEmail; import br.com.centralit.citcorpore.negocio.CalendarioServiceEjb; import br.com.centralit.citcorpore.negocio.EmpregadoService; import br.com.centralit.citcorpore.negocio.GrupoService; import br.com.centralit.citcorpore.negocio.ItemConfiguracaoService; import br.com.centralit.citcorpore.negocio.RequisicaoLiberacaoItemConfiguracaoService; import br.com.centralit.citcorpore.negocio.RequisicaoLiberacaoServiceEjb; import br.com.centralit.citcorpore.util.Enumerados.FaseRequisicaoLiberacao; import br.com.centralit.citcorpore.util.Enumerados.ParametroSistema; import br.com.centralit.citcorpore.util.Enumerados.SituacaoRequisicaoLiberacao; import br.com.centralit.citcorpore.util.Enumerados.StatusIC; import br.com.centralit.citcorpore.util.ParametroUtil; import br.com.centralit.citcorpore.util.Util; import br.com.citframework.comparacao.ObjectSimpleComparator; import br.com.citframework.dto.IDto; import br.com.citframework.dto.Usuario; import br.com.citframework.excecao.LogicException; import br.com.citframework.excecao.ServiceException; import br.com.citframework.integracao.TransactionControler; import br.com.citframework.integracao.TransactionControlerImpl; import br.com.citframework.service.ServiceLocator; import br.com.citframework.util.UtilDatas; import com.google.gson.Gson; @SuppressWarnings({"unchecked","rawtypes","unused"}) public class ExecucaoLiberacao extends ExecucaoFluxo { private UsuarioDTO usuarioDto = null; public ExecucaoLiberacao(TransactionControler tc) { super(tc); } public ExecucaoLiberacao() { super(); } public ExecucaoLiberacao(RequisicaoLiberacaoDTO requisicaoLiberacaoDto, TransactionControler tc) { super(requisicaoLiberacaoDto, tc); } public ExecucaoLiberacao(RequisicaoLiberacaoDTO requisicaoLiberacaoDto, TransactionControler tc, Usuario usuario) { super(requisicaoLiberacaoDto, tc, usuario); } @Override public InstanciaFluxo inicia(String nomeFluxo, Integer idFase) throws Exception { TipoFluxoDao tipoFluxoDao = new TipoFluxoDao(); TipoFluxoDTO tipoFluxoDto = tipoFluxoDao.findByNome(nomeFluxo); if (tipoFluxoDto == null){ System.out.println("Fluxo "+nomeFluxo+" n�o existe"); throw new LogicException(i18n_Message("citcorpore.comum.fluxoNaoEncontrado")); } return inicia(new FluxoDao().findByTipoFluxo(tipoFluxoDto.getIdTipoFluxo()), idFase); } @Override public InstanciaFluxo inicia() throws Exception { if (getRequisicaoLiberacaoDto().getIdTipoLiberacao() == null) throw new LogicException(i18n_Message("requisicaoLiberacao.tipoNaoDefinido")); InstanciaFluxo result = null; InstanciaFluxoDTO instanciaFluxoDto = null; TipoLiberacaoDTO tipoLiberacaoDto = recuperaTipoLiberacao(); if (tipoLiberacaoDto.getIdTipoFluxo() != null){ result = inicia(new FluxoDao().findByTipoFluxo(tipoLiberacaoDto.getIdTipoFluxo()), null); }else{ String fluxoPadrao = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.FLUXO_PADRAO_MUDANCAS, null); if (fluxoPadrao == null) throw new LogicException(i18n_Message("citcorpore.comum.fluxoNaoParametrizado")); result = inicia(fluxoPadrao, null); } try { String enviarNotificacao = ParametroUtil.getValor(ParametroSistema.NOTIFICAR_GRUPO_RECEPCAO_SOLICITACAO, getTransacao(), "N"); String IdModeloEmailGrupoDestinoREquisicaoLiberacao = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.ID_MODELO_EMAIL_GRUPO_DESTINO_REQUISICAOMUDANCA, "30"); if (enviarNotificacao.equalsIgnoreCase("S") && getRequisicaoLiberacaoDto().escalada()) { enviaEmailGrupo(Integer.parseInt(IdModeloEmailGrupoDestinoREquisicaoLiberacao.trim()),tipoLiberacaoDto.getIdGrupoExecutor()); } } catch (NumberFormatException e) { System.out.println(i18n_Message("requisicaoLiberacao.emailNaoDefinido")); } return result; } @Override public InstanciaFluxo inicia(FluxoDTO fluxoDto, Integer idFase) throws Exception { if (fluxoDto == null) throw new LogicException(i18n_Message("citcorpore.comum.fluxoNaoEncontrado")); this.fluxoDto = fluxoDto; HashMap<String, Object> map = new HashMap(); mapObjetoNegocio(map); InstanciaFluxo instanciaFluxo = new InstanciaFluxo(this,map); ExecucaoLiberacaoDTO execucaoDto = new ExecucaoLiberacaoDTO(); execucaoDto.setIdRequisicaoLiberacao(getRequisicaoLiberacaoDto().getIdRequisicaoLiberacao()); execucaoDto.setIdFluxo(instanciaFluxo.getIdFluxo()); execucaoDto.setIdInstanciaFluxo(instanciaFluxo.getIdInstancia()); Integer seqReabertura = 0; if (getRequisicaoLiberacaoDto().getSeqReabertura() != null && getRequisicaoLiberacaoDto().getSeqReabertura().intValue() > 0) seqReabertura = getRequisicaoLiberacaoDto().getSeqReabertura(); if (seqReabertura.intValue() > 0) execucaoDto.setSeqReabertura(getRequisicaoLiberacaoDto().getSeqReabertura()); ExecucaoLiberacaoDao execucaoDao = new ExecucaoLiberacaoDao(); setTransacaoDao(execucaoDao); execucaoFluxoDto = (ExecucaoLiberacaoDTO) execucaoDao.create(execucaoDto); if (seqReabertura.intValue() == 0 && getRequisicaoLiberacaoDto().getEnviaEmailCriacao() != null && getRequisicaoLiberacaoDto().getEnviaEmailCriacao().equalsIgnoreCase("S")) { TipoLiberacaoDTO tipoLiberacaoDto = recuperaTipoLiberacao(); enviaEmail(tipoLiberacaoDto.getIdModeloEmailCriacao()); } return instanciaFluxo; } @Override public void executa(String loginUsuario, ObjetoNegocioFluxoDTO objetoNegocioDto, Integer idItemTrabalho, String acao, HashMap<String, Object> map) throws Exception { if (acao.equals(Enumerados.ACAO_DELEGAR)) return; TarefaFluxoDTO tarefaFluxoDto = recuperaTarefa(idItemTrabalho); if (tarefaFluxoDto == null) return; ExecucaoLiberacaoDao execucaoLiberacaoDao = new ExecucaoLiberacaoDao(); setTransacaoDao(execucaoLiberacaoDao); ExecucaoLiberacaoDTO execucaoLiberacaoDto = execucaoLiberacaoDao.findByIdInstanciaFluxo(tarefaFluxoDto.getIdInstancia()); if (execucaoLiberacaoDto == null) return; recuperaFluxo(execucaoLiberacaoDto.getIdFluxo()); this.objetoNegocioDto = objetoNegocioDto; usuarioDto = new UsuarioDao().restoreByLogin(loginUsuario); InstanciaFluxo instanciaFluxo = new InstanciaFluxo(this, tarefaFluxoDto.getIdInstancia()); mapObjetoNegocio(instanciaFluxo.getObjetos(map)); if (acao.equals(Enumerados.ACAO_INICIAR)) instanciaFluxo.iniciaItemTrabalho(loginUsuario, tarefaFluxoDto.getIdItemTrabalho(), map); else if (acao.equals(Enumerados.ACAO_EXECUTAR)) { tarefaFluxoDto = recuperaTarefa(idItemTrabalho); OcorrenciaLiberacaoDao ocorrenciaLiberacaoDao = new OcorrenciaLiberacaoDao(); setTransacaoDao(ocorrenciaLiberacaoDao); OcorrenciaLiberacaoDTO ocorrenciaLiberacaoDto = new OcorrenciaLiberacaoDTO(); ocorrenciaLiberacaoDto.setIdRequisicaoLiberacao(getRequisicaoLiberacaoDto().getIdRequisicaoLiberacao()); ocorrenciaLiberacaoDto.setDataregistro(UtilDatas.getDataAtual()); ocorrenciaLiberacaoDto.setHoraregistro(UtilDatas.formatHoraFormatadaStr(UtilDatas.getHoraAtual())); Long tempo = new Long(0); if (tarefaFluxoDto.getDataHoraFinalizacao() != null) tempo = (tarefaFluxoDto.getDataHoraFinalizacao().getTime() - tarefaFluxoDto.getDataHoraCriacao().getTime()) / 1000 / 60; ocorrenciaLiberacaoDto.setTempoGasto(tempo.intValue()); ocorrenciaLiberacaoDto.setDescricao(br.com.centralit.citcorpore.util.Enumerados.CategoriaOcorrencia.Execucao.getDescricao()); ocorrenciaLiberacaoDto.setDataInicio(UtilDatas.getDataAtual()); ocorrenciaLiberacaoDto.setDataFim(UtilDatas.getDataAtual()); ocorrenciaLiberacaoDto.setInformacoesContato("n�o se aplica"); ocorrenciaLiberacaoDto.setRegistradopor(loginUsuario); ocorrenciaLiberacaoDto.setDadosLiberacao(new Gson().toJson(getRequisicaoLiberacaoDto())); ocorrenciaLiberacaoDto.setOcorrencia("Execu��o da tarefa \""+tarefaFluxoDto.getElementoFluxoDto().getDocumentacao()+"\""); ocorrenciaLiberacaoDto.setOrigem(br.com.centralit.citcorpore.util.Enumerados.OrigemOcorrencia.OUTROS.getSigla().toString()); ocorrenciaLiberacaoDto.setCategoria(br.com.centralit.citcorpore.util.Enumerados.CategoriaOcorrencia.Execucao.getSigla()); ocorrenciaLiberacaoDto.setIdItemTrabalho(idItemTrabalho); ocorrenciaLiberacaoDao.create(ocorrenciaLiberacaoDto); instanciaFluxo.executaItemTrabalho(loginUsuario, tarefaFluxoDto.getIdItemTrabalho(), map); if(getRequisicaoLiberacaoDto().getStatus().equalsIgnoreCase(br.com.centralit.citcorpore.util.Enumerados.SituacaoRequisicaoLiberacao.NaoResolvida.name())){ GrupoDao grupoDao = new GrupoDao(); List<GrupoDTO> listGrupo =(List<GrupoDTO>) grupoDao.getGruposByIdEmpregado(getRequisicaoLiberacaoDto().getIdSolicitante()); GrupoDTO grupoDto = listGrupo.get(0); } if (getRequisicaoLiberacaoDto().getFase() != null && getRequisicaoLiberacaoDto().getFase().trim().length() > 0) { SituacaoRequisicaoLiberacao novaSituacao = FaseRequisicaoLiberacao.valueOf(getRequisicaoLiberacaoDto().getFase()).getSituacao(); if (novaSituacao != null) { RequisicaoLiberacaoDao requisicaoDao = new RequisicaoLiberacaoDao(); setTransacaoDao(requisicaoDao); getRequisicaoLiberacaoDto().setStatus(novaSituacao.name()); requisicaoDao.updateNotNull(getRequisicaoLiberacaoDto()); } } } if(tarefaFluxoDto.getElementoFluxoDto().getDocumentacao().equals("Liberado")){ RequisicaoLiberacaoDao requisicaoDao = new RequisicaoLiberacaoDao(); setTransacaoDao(requisicaoDao); getRequisicaoLiberacaoDto().setIdAprovador(usuarioDto.getIdUsuario()); getRequisicaoLiberacaoDto().setDatahoraAprovacao(UtilDatas.getDataHoraAtual()); requisicaoDao.updateNotNull(getRequisicaoLiberacaoDto()); } if (getRequisicaoLiberacaoDto().getEnviaEmailAcoes() != null && getRequisicaoLiberacaoDto().getEnviaEmailAcoes().equalsIgnoreCase("S")) { getRequisicaoLiberacaoDto().setNomeTarefa(tarefaFluxoDto.getElementoFluxoDto().getDocumentacao()); TipoLiberacaoDTO tipoLiberacaoDto = recuperaTipoLiberacao(); enviaEmail(tipoLiberacaoDto.getIdModeloEmailAcoes()); } /*if(getRequisicaoLiberacaoDto().getStatus().equalsIgnoreCase("Concluida")){ this.finalizaIC(getRequisicaoLiberacaoDto()); }*/ } @Override public void delega(String loginUsuario, ObjetoNegocioFluxoDTO objetoNegocioDto, Integer idItemTrabalho, String usuarioDestino, String grupoDestino) throws Exception { TarefaFluxoDTO tarefaFluxoDto = recuperaTarefa(idItemTrabalho); if (tarefaFluxoDto == null) return; InstanciaFluxo instanciaFluxo = new InstanciaFluxo(this, tarefaFluxoDto.getIdInstancia()); instanciaFluxo.delegaItemTrabalho(loginUsuario, idItemTrabalho, usuarioDestino, grupoDestino); this.objetoNegocioDto = objetoNegocioDto; OcorrenciaLiberacaoDao ocorrenciaLiberacaoDao = new OcorrenciaLiberacaoDao(); setTransacaoDao(ocorrenciaLiberacaoDao); OcorrenciaLiberacaoDTO ocorrenciaLiberacaoDto = new OcorrenciaLiberacaoDTO(); ocorrenciaLiberacaoDto.setIdRequisicaoLiberacao(getRequisicaoLiberacaoDto().getIdRequisicaoLiberacao()); ocorrenciaLiberacaoDto.setDataregistro(UtilDatas.getDataAtual()); ocorrenciaLiberacaoDto.setHoraregistro(UtilDatas.formatHoraFormatadaStr(UtilDatas.getHoraAtual())); ocorrenciaLiberacaoDto.setTempoGasto(0); ocorrenciaLiberacaoDto.setDescricao(br.com.centralit.citcorpore.util.Enumerados.CategoriaOcorrencia.Compartilhamento.getDescricao()); ocorrenciaLiberacaoDto.setDataInicio(UtilDatas.getDataAtual()); ocorrenciaLiberacaoDto.setDataFim(UtilDatas.getDataAtual()); ocorrenciaLiberacaoDto.setInformacoesContato("n�o se aplica"); ocorrenciaLiberacaoDto.setRegistradopor(loginUsuario); ocorrenciaLiberacaoDto.setDadosLiberacao(new Gson().toJson(getRequisicaoLiberacaoDto())); String ocorr = "Compartilhamento da tarefa \""+tarefaFluxoDto.getElementoFluxoDto().getDocumentacao()+"\""; if (usuarioDestino != null) ocorr += " com o usu�rio "+usuarioDestino; if (grupoDestino != null) ocorr += " com o grupo "+grupoDestino; ocorrenciaLiberacaoDto.setOcorrencia(ocorr); ocorrenciaLiberacaoDto.setOrigem(br.com.centralit.citcorpore.util.Enumerados.OrigemOcorrencia.OUTROS.getSigla().toString()); ocorrenciaLiberacaoDto.setCategoria(br.com.centralit.citcorpore.util.Enumerados.CategoriaOcorrencia.Compartilhamento.getSigla()); ocorrenciaLiberacaoDto.setIdItemTrabalho(idItemTrabalho); ocorrenciaLiberacaoDao.create(ocorrenciaLiberacaoDto); } @Override public void direcionaAtendimento(String loginUsuario, ObjetoNegocioFluxoDTO objetoNegocioDto, String grupoAtendimento) throws Exception { if (getRequisicaoLiberacaoDto() == null) return; if (grupoAtendimento == null) return; GrupoDao grupoDao = new GrupoDao(); GrupoDTO grupoAtendimentoDto = grupoDao.restoreBySigla(grupoAtendimento); if (grupoAtendimentoDto == null) return; UsuarioDao usuarioDao = new UsuarioDao(); setTransacaoDao(usuarioDao); UsuarioDTO usuarioRespDto = new UsuarioDTO(); usuarioRespDto.setIdUsuario(getRequisicaoLiberacaoDto().getIdResponsavel()); usuarioRespDto = (UsuarioDTO) usuarioDao.restore(usuarioRespDto); this.objetoNegocioDto = objetoNegocioDto; ExecucaoLiberacaoDao execucaoLiberacaoDao = new ExecucaoLiberacaoDao(); setTransacaoDao(execucaoLiberacaoDao); Collection<ExecucaoLiberacaoDTO> colExecucao = execucaoLiberacaoDao.listByIdRequisicaoLiberacao(getRequisicaoLiberacaoDto().getIdRequisicaoLiberacao()); if (colExecucao != null) { ItemTrabalhoFluxoDao itemTrabalhoFluxoDao = new ItemTrabalhoFluxoDao(); setTransacaoDao(itemTrabalhoFluxoDao); OcorrenciaLiberacaoDao ocorrenciaLiberacaoDao = new OcorrenciaLiberacaoDao(); setTransacaoDao(ocorrenciaLiberacaoDao); for (ExecucaoLiberacaoDTO execucaoLiberacaoDto : colExecucao) { InstanciaFluxo instanciaFluxo = new InstanciaFluxo(this, execucaoLiberacaoDto.getIdInstanciaFluxo()); Collection<ItemTrabalhoFluxoDTO> colItens = itemTrabalhoFluxoDao.findDisponiveisByIdInstancia(execucaoLiberacaoDto.getIdInstanciaFluxo()); if (colItens != null) { for (ItemTrabalhoFluxoDTO itemTrabalhoFluxoDto : colItens) { ItemTrabalho itemTrabalho = ItemTrabalho.getItemTrabalho(instanciaFluxo, itemTrabalhoFluxoDto.getIdItemTrabalho()); itemTrabalho.redireciona(loginUsuario, null, grupoAtendimento); usuarioDto = usuarioDao.restoreByLogin(loginUsuario); /* TarefaFluxoDTO tarefaFluxoDto = recuperaTarefa(atribuicaoFluxoDto.getIdItemTrabalho());*/ OcorrenciaLiberacaoDTO ocorrenciaLiberacaoDto = new OcorrenciaLiberacaoDTO(); ocorrenciaLiberacaoDto.setIdRequisicaoLiberacao(getRequisicaoLiberacaoDto().getIdRequisicaoLiberacao()); ocorrenciaLiberacaoDto.setDataregistro(UtilDatas.getDataAtual()); ocorrenciaLiberacaoDto.setHoraregistro(UtilDatas.formatHoraFormatadaStr(UtilDatas.getHoraAtual())); ocorrenciaLiberacaoDto.setTempoGasto(0); ocorrenciaLiberacaoDto.setDescricao(br.com.centralit.citcorpore.util.Enumerados.CategoriaOcorrencia.Direcionamento.getDescricao()); ocorrenciaLiberacaoDto.setDataInicio(UtilDatas.getDataAtual()); ocorrenciaLiberacaoDto.setDataFim(UtilDatas.getDataAtual()); ocorrenciaLiberacaoDto.setInformacoesContato("n�o se aplica"); ocorrenciaLiberacaoDto.setRegistradopor(loginUsuario); ocorrenciaLiberacaoDto.setDadosLiberacao(new Gson().toJson(getRequisicaoLiberacaoDto())); String ocorr = "Direcionamento da tarefa \"" + itemTrabalho.getElementoFluxoDto().getDocumentacao() + "\""; ocorr += " para o grupo " + grupoAtendimento; /* ocorr += " para o grupo "+grupoAtendimento;*/ ocorrenciaLiberacaoDto.setOcorrencia(ocorr); ocorrenciaLiberacaoDto.setOrigem(br.com.centralit.citcorpore.util.Enumerados.OrigemOcorrencia.OUTROS.getSigla().toString()); ocorrenciaLiberacaoDto.setCategoria(br.com.centralit.citcorpore.util.Enumerados.CategoriaOcorrencia.Direcionamento.getSigla()); /* ocorrenciaLiberacaoDto.setIdItemTrabalho(atribuicaoFluxoDto.getIdItemTrabalho());*/ ocorrenciaLiberacaoDao.create(ocorrenciaLiberacaoDto); } } } } try { String enviarNotificacao = ParametroUtil.getValor(ParametroSistema.NOTIFICAR_GRUPO_RECEPCAO_SOLICITACAO, getTransacao(), "N"); if (enviarNotificacao.equalsIgnoreCase("S")) { enviaEmailGrupo(Integer.parseInt(ParametroUtil.getValor(ParametroSistema.ID_MODELO_EMAIL_GRUPO_DESTINO, getTransacao(), null)), grupoAtendimentoDto.getIdGrupo()); } } catch (NumberFormatException e) { System.out.println(i18n_Message("requisicaoLiberacao.emailNaoDefinido")); } } /* @Override public void mapObjetoNegocio(Map<String, Object> map) throws Exception { SolicitacaoServicoDTO solicitacaoServicoDto = (SolicitacaoServicoDTO) objetoNegocioDto; SolicitacaoServicoDTO solicitacaoAuxDto = new SolicitacaoServicoServiceEjb().restoreAll(solicitacaoServicoDto.getIdSolicitacaoServico(), getTransacao()); if(solicitacaoAuxDto != null){ solicitacaoServicoDto.setGrupoAtual(solicitacaoAuxDto.getGrupoAtual()); solicitacaoServicoDto.setGrupoNivel1(solicitacaoAuxDto.getGrupoNivel1()); } adicionaObjeto("solicitacaoServico", solicitacaoServicoDto, map); if (usuarioDTO != null) adicionaObjeto("usuario", usuarioDTO, map); else if (solicitacaoServicoDto.getUsuarioDto() != null) adicionaObjeto("usuario", solicitacaoServicoDto.getUsuarioDto(), map); adicionaObjeto("execucaoFluxo", this, map); adicionaObjeto("solicitacaoServicoService", new SolicitacaoServicoServiceEjb(), map); }*/ @Override public void mapObjetoNegocio(Map<String, Object> map) throws Exception { RequisicaoLiberacaoDTO requisicaoLiberacaoDto = (RequisicaoLiberacaoDTO) objetoNegocioDto; RequisicaoLiberacaoDTO requisicaoAuxDto = new RequisicaoLiberacaoServiceEjb().restoreAll(requisicaoLiberacaoDto.getIdRequisicaoLiberacao(), getTransacao()); requisicaoLiberacaoDto.setIdGrupoAtual(requisicaoAuxDto.getIdGrupoAtual()); requisicaoLiberacaoDto.setIdGrupoNivel1(requisicaoAuxDto.getIdGrupoNivel1()); requisicaoLiberacaoDto.setNomeGrupoAtual(requisicaoAuxDto.getNomeGrupoAtual()); requisicaoLiberacaoDto.setNomeGrupoNivel1(requisicaoAuxDto.getNomeGrupoNivel1()); UsuarioDTO usuario = usuarioSolicitante(requisicaoAuxDto); if( usuario != null) requisicaoLiberacaoDto.setUsuarioSolicitante(usuario.getLogin()); adicionaObjeto("requisicaoLiberacao", requisicaoLiberacaoDto, map); if (usuarioDto != null) adicionaObjeto("usuario", usuarioDto, map); else if (requisicaoLiberacaoDto.getUsuarioDto() != null) adicionaObjeto("usuario", requisicaoLiberacaoDto.getUsuarioDto(), map); adicionaObjeto("execucaoFluxo", this, map); adicionaObjeto("requisicaoLiberacaoService", new RequisicaoLiberacaoServiceEjb(), map); } public RequisicaoLiberacaoDTO getRequisicaoLiberacaoDto() { return (RequisicaoLiberacaoDTO) objetoNegocioDto; } @Override public List<TarefaFluxoDTO> recuperaTarefas(String loginUsuario) throws Exception { RequisicaoLiberacaoDTO requisicaoLiberacaoDto = new RequisicaoLiberacaoDTO(); List<TarefaFluxoDTO> result = null; List<TarefaFluxoDTO> listTarefas = super.recuperaTarefas(loginUsuario); if (listTarefas != null) { result = new ArrayList(); RequisicaoLiberacaoServiceEjb requisicaoService = new RequisicaoLiberacaoServiceEjb(); ExecucaoLiberacaoDao execucaoLiberacaoDao = new ExecucaoLiberacaoDao(); for (TarefaFluxoDTO tarefaDto : listTarefas) { ExecucaoLiberacaoDTO execucaoLiberacaoDto = execucaoLiberacaoDao.findByIdInstanciaFluxo(tarefaDto.getIdInstancia()); if (execucaoLiberacaoDto != null && execucaoLiberacaoDto.getIdRequisicaoLiberacao() != null) { if(execucaoLiberacaoDto.getIdRequisicaoLiberacao() != null){ requisicaoLiberacaoDto = requisicaoService.restoreAll(execucaoLiberacaoDto.getIdRequisicaoLiberacao(),null); } if (requisicaoLiberacaoDto != null) { tarefaDto.setRequisicaoLiberacaoDto(requisicaoLiberacaoDto); result.add(tarefaDto); } } } Collections.sort(result, new ObjectSimpleComparator("getDataHoraInicio", ObjectSimpleComparator.ASC)); } return result; } @Override public void enviaEmail(String identificador) throws Exception { if (identificador == null) return; ModeloEmailDTO modeloEmailDto = new ModeloEmailDao().findByIdentificador(identificador); if (modeloEmailDto != null) enviaEmail(modeloEmailDto.getIdModeloEmail()); } @Override public void enviaEmail(Integer idModeloEmail) throws Exception { if (idModeloEmail == null) return; String enviaEmail = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.EnviaEmailFluxo, "N"); if (!enviaEmail.equalsIgnoreCase("S")) return; RequisicaoLiberacaoDTO requisicaoAuxDto = new RequisicaoLiberacaoServiceEjb().restoreAll(getRequisicaoLiberacaoDto().getIdRequisicaoLiberacao(), getTransacao()); requisicaoAuxDto.setNomeContato(this.getRequisicaoLiberacaoDto().getNomeContato()); if (requisicaoAuxDto.getEmailSolicitante() == null) return; String remetente = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.RemetenteNotificacoesSolicitacao, null); if (remetente == null) throw new LogicException(i18n_Message("requisicaoLiberacao.remetenteNaoDefinido")); requisicaoAuxDto.setNomeTarefa(getRequisicaoLiberacaoDto().getNomeTarefa()); MensagemEmail mensagem = new MensagemEmail(idModeloEmail, new IDto[] {requisicaoAuxDto}); try { mensagem.envia(requisicaoAuxDto.getEmailSolicitante(), remetente, remetente); } catch (Exception e) { } } private TipoLiberacaoDTO recuperaTipoLiberacao() throws Exception { TipoLiberacaoDAO tipoLiberacaoDao = new TipoLiberacaoDAO(); setTransacaoDao(tipoLiberacaoDao); TipoLiberacaoDTO tipoLiberacaoDto = new TipoLiberacaoDTO(); if(getRequisicaoLiberacaoDto().getIdTipoLiberacao()!=null){ tipoLiberacaoDto.setIdTipoLiberacao(getRequisicaoLiberacaoDto().getIdTipoLiberacao()); tipoLiberacaoDto = (TipoLiberacaoDTO) tipoLiberacaoDao.restore(tipoLiberacaoDto); } if (tipoLiberacaoDto == null){ throw new LogicException(i18n_Message("requisicaoLiberacao.categoriaLiberacaoNaoLocalizada")); } return tipoLiberacaoDto; } @Override public void encerra() throws Exception { RequisicaoLiberacaoDTO requisicaoLiberacaoDto = getRequisicaoLiberacaoDto(); if (requisicaoLiberacaoDto == null) throw new LogicException(i18n_Message("requisicaoLiberacao.naoEncontrada")); if (requisicaoLiberacaoDto.encerrada()) return; //if (!requisicaoLiberacaoDto.atendida() && !requisicaoLiberacaoDto.reclassificada()) // throw new LogicException("Solicita��o de servi�o n�o permite encerramento"); Collection<ExecucaoLiberacaoDTO> colExecucao = new ExecucaoLiberacaoDao().listByIdRequisicaoLiberacao(getRequisicaoLiberacaoDto().getIdRequisicaoLiberacao()); if (colExecucao != null) { for (ExecucaoLiberacaoDTO execucaoDto : colExecucao) { InstanciaFluxo instanciaFluxo = new InstanciaFluxo(this, execucaoDto.getIdInstanciaFluxo()); instanciaFluxo.encerra(); } } if(!requisicaoLiberacaoDto.getStatus().equalsIgnoreCase(SituacaoRequisicaoLiberacao.Cancelada.name())){ requisicaoLiberacaoDto.setStatus(SituacaoRequisicaoLiberacao.Concluida.name()); } requisicaoLiberacaoDto.setDataHoraConclusao(UtilDatas.getDataHoraAtual()); calculaTempoCaptura(requisicaoLiberacaoDto); calculaTempoAtendimento(requisicaoLiberacaoDto); calculaTempoAtraso(requisicaoLiberacaoDto); RequisicaoLiberacaoDao requisicaoLiberacaoDao = new RequisicaoLiberacaoDao(); setTransacaoDao(requisicaoLiberacaoDao); requisicaoLiberacaoDao.updateNotNull(requisicaoLiberacaoDto); OcorrenciaLiberacaoDao ocorrenciaLiberacaoDao = new OcorrenciaLiberacaoDao(); setTransacaoDao(ocorrenciaLiberacaoDao); OcorrenciaLiberacaoDTO ocorrenciaLiberacaoDto = new OcorrenciaLiberacaoDTO(); ocorrenciaLiberacaoDto.setIdRequisicaoLiberacao(getRequisicaoLiberacaoDto().getIdRequisicaoLiberacao()); ocorrenciaLiberacaoDto.setDataregistro(UtilDatas.getDataAtual()); ocorrenciaLiberacaoDto.setHoraregistro(UtilDatas.formatHoraFormatadaStr(UtilDatas.getHoraAtual())); ocorrenciaLiberacaoDto.setTempoGasto(0); ocorrenciaLiberacaoDto.setDescricao(br.com.centralit.citcorpore.util.Enumerados.CategoriaOcorrencia.Encerramento.getDescricao()); ocorrenciaLiberacaoDto.setDataInicio(UtilDatas.getDataAtual()); ocorrenciaLiberacaoDto.setDataFim(UtilDatas.getDataAtual()); ocorrenciaLiberacaoDto.setRegistradopor("Autom�tico"); ocorrenciaLiberacaoDto.setDadosLiberacao(new Gson().toJson(getRequisicaoLiberacaoDto())); ocorrenciaLiberacaoDto.setOrigem(br.com.centralit.citcorpore.util.Enumerados.OrigemOcorrencia.OUTROS.getSigla().toString()); ocorrenciaLiberacaoDto.setCategoria(br.com.centralit.citcorpore.util.Enumerados.CategoriaOcorrencia.Encerramento.getSigla()); ocorrenciaLiberacaoDao.create(ocorrenciaLiberacaoDto); if (getRequisicaoLiberacaoDto().getEnviaEmailFinalizacao() != null && getRequisicaoLiberacaoDto().getEnviaEmailFinalizacao().equalsIgnoreCase("S")) { TipoLiberacaoDTO tipoLiberacaoDto = recuperaTipoLiberacao(); enviaEmail(tipoLiberacaoDto.getIdModeloEmailFinalizacao()); } } @Override public void reabre(String loginUsuario) throws Exception { RequisicaoLiberacaoDTO requisicaoLiberacaoDto = getRequisicaoLiberacaoDto(); if (requisicaoLiberacaoDto == null) throw new LogicException(i18n_Message("requisicaoLiberacao.naoEncontrada")); if (!requisicaoLiberacaoDto.encerrada()) throw new LogicException(i18n_Message("requisicaoLiberacao.reabertura")); usuarioDto = new UsuarioDao().restoreByLogin(loginUsuario); int seqReabertura = 1; /*ReaberturaLiberacaoDao reaberturaLiberacaoDao = new ReaberturaLiberacaoDao(); setTransacaoDao(reaberturaLiberacaoDao); Collection colReabertura = reaberturaLiberacaoDao.findByIdRequisicaoLiberacao(requisicaoLiberacaoDto.getIdRequisicaoLiberacao()); if (colReabertura != null) seqReabertura = colReabertura.size() + 1; ReaberturaRequisicaoLiberacaoDTO reaberturaLiberacaoDto = new ReaberturaRequisicaoLiberacaoDTO(); reaberturaLiberacaoDto.setIdRequisicaoLiberacao(requisicaoLiberacaoDto.getIdRequisicaoLiberacao()); reaberturaLiberacaoDto.setSeqReabertura(seqReabertura); reaberturaLiberacaoDto.setIdResponsavel(usuarioDto.getIdUsuario()); reaberturaLiberacaoDto.setDataHora(UtilDatas.getDataHoraAtual()); reaberturaLiberacaoDao.create(reaberturaLiberacaoDto);*/ requisicaoLiberacaoDto.setStatus(SituacaoRequisicaoLiberacao.Reaberta.name()); requisicaoLiberacaoDto.setSeqReabertura(new Integer(seqReabertura)); RequisicaoLiberacaoDao requisicaoDao = new RequisicaoLiberacaoDao(); setTransacaoDao(requisicaoDao); requisicaoDao.update(requisicaoLiberacaoDto); OcorrenciaLiberacaoDao ocorrenciaLiberacaoDao = new OcorrenciaLiberacaoDao(); setTransacaoDao(ocorrenciaLiberacaoDao); OcorrenciaLiberacaoDTO ocorrenciaLiberacaoDto = new OcorrenciaLiberacaoDTO(); ocorrenciaLiberacaoDto.setIdRequisicaoLiberacao(requisicaoLiberacaoDto.getIdRequisicaoLiberacao()); ocorrenciaLiberacaoDto.setDataregistro(UtilDatas.getDataAtual()); ocorrenciaLiberacaoDto.setHoraregistro(UtilDatas.formatHoraFormatadaStr(UtilDatas.getHoraAtual())); ocorrenciaLiberacaoDto.setTempoGasto(0); ocorrenciaLiberacaoDto.setDescricao(br.com.centralit.citcorpore.util.Enumerados.CategoriaOcorrencia.Reabertura.getDescricao()); ocorrenciaLiberacaoDto.setDataInicio(UtilDatas.getDataAtual()); ocorrenciaLiberacaoDto.setDataFim(UtilDatas.getDataAtual()); ocorrenciaLiberacaoDto.setRegistradopor(usuarioDto.getLogin()); ocorrenciaLiberacaoDto.setDadosLiberacao(new Gson().toJson(getRequisicaoLiberacaoDto())); ocorrenciaLiberacaoDto.setOrigem(br.com.centralit.citcorpore.util.Enumerados.OrigemOcorrencia.OUTROS.getSigla().toString()); ocorrenciaLiberacaoDto.setCategoria(br.com.centralit.citcorpore.util.Enumerados.CategoriaOcorrencia.Reabertura.getSigla()); ocorrenciaLiberacaoDao.create(ocorrenciaLiberacaoDto); inicia(); } @Override public void suspende(String loginUsuario) throws Exception { RequisicaoLiberacaoDTO requisicaoLiberacaoDto = getRequisicaoLiberacaoDto(); if (requisicaoLiberacaoDto == null) throw new LogicException(i18n_Message("requisicaoLiberacao.naoEncontrada")); if (!requisicaoLiberacaoDto.emAtendimento() && !requisicaoLiberacaoDto.naoResolvida()) throw new LogicException(i18n_Message("requisicaoLiberacao.suspensao")); Timestamp tsAtual = UtilDatas.getDataHoraAtual(); Timestamp tsInicial = requisicaoLiberacaoDto.getDataHoraInicio(); if (requisicaoLiberacaoDto.getDataHoraReativacao() != null) tsInicial = requisicaoLiberacaoDto.getDataHoraReativacao(); TipoLiberacaoDTO tipoLiberacaoDto = recuperaTipoLiberacao(); if(tipoLiberacaoDto.getIdCalendario()!=null){ requisicaoLiberacaoDto.setIdCalendario(tipoLiberacaoDto.getIdCalendario()); } CalculoJornadaDTO calculoDto = new CalculoJornadaDTO(requisicaoLiberacaoDto.getIdCalendario(), tsInicial); calculoDto = new CalendarioServiceEjb().calculaPrazoDecorrido(calculoDto, tsAtual, null); RequisicaoLiberacaoDao requisicaoDao = new RequisicaoLiberacaoDao(); setTransacaoDao(requisicaoDao); requisicaoLiberacaoDto.setStatus(SituacaoRequisicaoLiberacao.Suspensa.name()); if (requisicaoLiberacaoDto.getTempoDecorridoHH() == null){ requisicaoLiberacaoDto.setTempoDecorridoHH(0); } if (requisicaoLiberacaoDto.getTempoDecorridoMM() == null){ requisicaoLiberacaoDto.setTempoDecorridoMM(0); } requisicaoLiberacaoDto.setTempoDecorridoHH(new Integer(requisicaoLiberacaoDto.getTempoDecorridoHH().intValue() + calculoDto.getTempoDecorridoHH().intValue())); requisicaoLiberacaoDto.setTempoDecorridoMM(new Integer(requisicaoLiberacaoDto.getTempoDecorridoMM().intValue() + calculoDto.getTempoDecorridoMM().intValue())); requisicaoLiberacaoDto.setDataHoraSuspensao(tsAtual); requisicaoLiberacaoDto.setDataHoraReativacao(null); requisicaoDao.update(requisicaoLiberacaoDto); OcorrenciaLiberacaoDao ocorrenciaLiberacaoDao = new OcorrenciaLiberacaoDao(); setTransacaoDao(ocorrenciaLiberacaoDao); OcorrenciaLiberacaoDTO ocorrenciaLiberacaoDto = new OcorrenciaLiberacaoDTO(); ocorrenciaLiberacaoDto.setIdRequisicaoLiberacao(requisicaoLiberacaoDto.getIdRequisicaoLiberacao()); ocorrenciaLiberacaoDto.setDataregistro(new Date(tsAtual.getTime())); ocorrenciaLiberacaoDto.setHoraregistro(UtilDatas.formatHoraFormatadaStr(tsAtual)); ocorrenciaLiberacaoDto.setTempoGasto(0); ocorrenciaLiberacaoDto.setDescricao(br.com.centralit.citcorpore.util.Enumerados.CategoriaOcorrencia.Suspensao.getDescricao()); ocorrenciaLiberacaoDto.setDataInicio(UtilDatas.getDataAtual()); ocorrenciaLiberacaoDto.setDataFim(UtilDatas.getDataAtual()); ocorrenciaLiberacaoDto.setRegistradopor(loginUsuario); ocorrenciaLiberacaoDto.setDadosLiberacao(new Gson().toJson(getRequisicaoLiberacaoDto())); ocorrenciaLiberacaoDto.setIdJustificativa(requisicaoLiberacaoDto.getIdJustificativa()); ocorrenciaLiberacaoDto.setComplementoJustificativa(requisicaoLiberacaoDto.getComplementoJustificativa()); ocorrenciaLiberacaoDto.setOrigem(br.com.centralit.citcorpore.util.Enumerados.OrigemOcorrencia.OUTROS.getSigla().toString()); ocorrenciaLiberacaoDto.setCategoria(br.com.centralit.citcorpore.util.Enumerados.CategoriaOcorrencia.Suspensao.getSigla()); ocorrenciaLiberacaoDao.create(ocorrenciaLiberacaoDto); if (getRequisicaoLiberacaoDto().getEnviaEmailAcoes() != null && getRequisicaoLiberacaoDto().getEnviaEmailAcoes().equalsIgnoreCase("S")) { enviaEmail(tipoLiberacaoDto.getIdModeloEmailAcoes()); } } @Override public void reativa(String loginUsuario) throws Exception { RequisicaoLiberacaoDTO requisicaoLiberacaoDto = getRequisicaoLiberacaoDto(); if (requisicaoLiberacaoDto == null) throw new LogicException(i18n_Message("requisicaoLiberacao.naoEncontrada")); if (!requisicaoLiberacaoDto.suspensa()) throw new LogicException(i18n_Message("requisicaoLiberacao.reativacao")); Timestamp tsAtual = UtilDatas.getDataHoraAtual(); if(requisicaoLiberacaoDto.getPrazoHH() != null && requisicaoLiberacaoDto.getPrazoMM() != null && requisicaoLiberacaoDto.getTempoDecorridoHH() != null && requisicaoLiberacaoDto.getTempoDecorridoMM() !=null ){ double prazo = requisicaoLiberacaoDto.getPrazoHH() + new Double(requisicaoLiberacaoDto.getPrazoMM()).doubleValue() / 60; double tempo = requisicaoLiberacaoDto.getTempoDecorridoHH() + new Double(requisicaoLiberacaoDto.getTempoDecorridoMM()).doubleValue() / 60; prazo = prazo - tempo; if (prazo > 0){ CalculoJornadaDTO calculoDto = new CalculoJornadaDTO(requisicaoLiberacaoDto.getIdCalendario(), tsAtual, Util.getHora(prazo), Util.getMinuto(prazo)); calculoDto = new CalendarioServiceEjb().calculaDataHoraFinal(calculoDto, false, null); requisicaoLiberacaoDto.setDataHoraTermino(calculoDto.getDataHoraFinal()); } } RequisicaoLiberacaoDao requisicaoDao = new RequisicaoLiberacaoDao(); setTransacaoDao(requisicaoDao); requisicaoLiberacaoDto.setStatus(SituacaoRequisicaoLiberacao.EmExecucao.name()); requisicaoLiberacaoDto.setDataHoraSuspensao(null); requisicaoLiberacaoDto.setDataHoraReativacao(tsAtual); requisicaoDao.update(requisicaoLiberacaoDto); OcorrenciaLiberacaoDao ocorrenciaLiberacaoDao = new OcorrenciaLiberacaoDao(); setTransacaoDao(ocorrenciaLiberacaoDao); OcorrenciaLiberacaoDTO ocorrenciaLiberacaoDto = new OcorrenciaLiberacaoDTO(); ocorrenciaLiberacaoDto.setIdRequisicaoLiberacao(requisicaoLiberacaoDto.getIdRequisicaoLiberacao()); ocorrenciaLiberacaoDto.setDataregistro(new Date(tsAtual.getTime())); ocorrenciaLiberacaoDto.setHoraregistro(UtilDatas.formatHoraFormatadaStr(tsAtual)); ocorrenciaLiberacaoDto.setTempoGasto(0); ocorrenciaLiberacaoDto.setDescricao(br.com.centralit.citcorpore.util.Enumerados.CategoriaOcorrencia.Reativacao.getDescricao()); ocorrenciaLiberacaoDto.setDataInicio(UtilDatas.getDataAtual()); ocorrenciaLiberacaoDto.setDataFim(UtilDatas.getDataAtual()); ocorrenciaLiberacaoDto.setRegistradopor(loginUsuario); ocorrenciaLiberacaoDto.setDadosLiberacao(new Gson().toJson(getRequisicaoLiberacaoDto())); ocorrenciaLiberacaoDto.setOrigem(br.com.centralit.citcorpore.util.Enumerados.OrigemOcorrencia.OUTROS.getSigla().toString()); ocorrenciaLiberacaoDto.setCategoria(br.com.centralit.citcorpore.util.Enumerados.CategoriaOcorrencia.Reativacao.getSigla()); ocorrenciaLiberacaoDao.create(ocorrenciaLiberacaoDto); if (getRequisicaoLiberacaoDto().getEnviaEmailAcoes() != null && getRequisicaoLiberacaoDto().getEnviaEmailAcoes().equalsIgnoreCase("S")) { TipoLiberacaoDTO tipoLiberacaoDto = recuperaTipoLiberacao(); enviaEmail(tipoLiberacaoDto.getIdModeloEmailAcoes()); } } private Integer getIdCalendario(RequisicaoLiberacaoDTO requisicaoLiberacaoDto) throws Exception { Integer idCalendario = requisicaoLiberacaoDto.getIdCalendario(); if (requisicaoLiberacaoDto.getIdCalendario() == null) { TipoLiberacaoDTO tipoLiberacaoDto = recuperaTipoLiberacao(); idCalendario = tipoLiberacaoDto.getIdCalendario(); } return idCalendario; } public UsuarioDTO usuarioSolicitante(RequisicaoLiberacaoDTO requisicaoLiberacaoDto) throws Exception{ UsuarioDao usuarioDao = new UsuarioDao(); UsuarioDTO usuario = usuarioDao.restoreByIdEmpregado(requisicaoLiberacaoDto.getIdSolicitante()); return usuario; } public void calculaTempoAtendimento(RequisicaoLiberacaoDTO requisicaoLiberacaoDto) throws Exception { Integer idCalendario = getIdCalendario(requisicaoLiberacaoDto); Timestamp tsAtual = UtilDatas.getDataHoraAtual(); if (requisicaoLiberacaoDto.getStatus().equalsIgnoreCase(SituacaoRequisicaoLiberacao.Concluida.name())) tsAtual = requisicaoLiberacaoDto.getDataHoraConclusao(); Timestamp tsInicial = requisicaoLiberacaoDto.getDataHoraInicio(); if (requisicaoLiberacaoDto.getDataHoraReativacao() != null) tsInicial = requisicaoLiberacaoDto.getDataHoraReativacao(); CalculoJornadaDTO calculoDto = new CalculoJornadaDTO(idCalendario, tsInicial); calculoDto = new CalendarioServiceEjb().calculaPrazoDecorrido(calculoDto, tsAtual, null); if (requisicaoLiberacaoDto.getTempoDecorridoHH() == null){ requisicaoLiberacaoDto.setTempoDecorridoHH(0); } if (requisicaoLiberacaoDto.getTempoDecorridoMM() == null){ requisicaoLiberacaoDto.setTempoDecorridoMM(0); } requisicaoLiberacaoDto.setTempoAtendimentoHH(new Integer(requisicaoLiberacaoDto.getTempoDecorridoHH().intValue() + calculoDto.getTempoDecorridoHH().intValue())); requisicaoLiberacaoDto.setTempoAtendimentoMM(new Integer(requisicaoLiberacaoDto.getTempoDecorridoMM().intValue() + calculoDto.getTempoDecorridoMM().intValue())); } public void calculaTempoCaptura(RequisicaoLiberacaoDTO requisicaoLiberacaoDto) throws Exception { requisicaoLiberacaoDto.setTempoCapturaHH(0); requisicaoLiberacaoDto.setTempoCapturaMM(0); if (requisicaoLiberacaoDto.getDataHoraCaptura() == null) return; Integer idCalendario = getIdCalendario(requisicaoLiberacaoDto); CalculoJornadaDTO calculoDto = new CalculoJornadaDTO(idCalendario, requisicaoLiberacaoDto.getDataHoraInicio()); calculoDto = new CalendarioServiceEjb().calculaPrazoDecorrido(calculoDto, requisicaoLiberacaoDto.getDataHoraCaptura(), null); requisicaoLiberacaoDto.setTempoCapturaHH(calculoDto.getTempoDecorridoHH().intValue()); requisicaoLiberacaoDto.setTempoCapturaMM(calculoDto.getTempoDecorridoMM().intValue()); } public void calculaTempoAtraso(RequisicaoLiberacaoDTO requisicaoLiberacaoDto) throws Exception { requisicaoLiberacaoDto.setTempoAtrasoHH(0); requisicaoLiberacaoDto.setTempoAtrasoMM(0); if (requisicaoLiberacaoDto.getDataHoraTermino() != null) { Timestamp dataHoraLimite = requisicaoLiberacaoDto.getDataHoraTermino(); Timestamp dataHoraComparacao = UtilDatas.getDataHoraAtual(); if (requisicaoLiberacaoDto.encerrada()) dataHoraComparacao = requisicaoLiberacaoDto.getDataHoraConclusao(); if (dataHoraComparacao.compareTo(dataHoraLimite) > 0) { long atrasoSLA = UtilDatas.calculaDiferencaTempoEmMilisegundos(dataHoraComparacao, dataHoraLimite) / 1000; String hora = Util.getHoraStr(new Double(atrasoSLA) / 3600); int tam = hora.length(); requisicaoLiberacaoDto.setTempoAtrasoHH(new Integer(hora.substring(0, tam - 2))); requisicaoLiberacaoDto.setTempoAtrasoMM(new Integer(hora.substring(tam - 2, tam))); } } } @Override public void executaEvento(EventoFluxoDTO eventoFluxoDto) throws Exception { ExecucaoLiberacaoDao execucaoLiberacaoDao = new ExecucaoLiberacaoDao(); ExecucaoLiberacaoDTO execucaoLiberacaoDto = execucaoLiberacaoDao.findByIdInstanciaFluxo(eventoFluxoDto.getIdInstancia()); if (execucaoLiberacaoDto == null){ System.out.println("Execu��o libera��o do evento "+eventoFluxoDto.getIdItemTrabalho()+" n�o encontrada"); throw new LogicException(i18n_Message("requisicaoLiberacao.evento")); } RequisicaoLiberacaoDao requisicaoLiberacaoDao = new RequisicaoLiberacaoDao(); RequisicaoLiberacaoDTO requisicaoLiberacaoDto = new RequisicaoLiberacaoDTO(); requisicaoLiberacaoDto.setIdRequisicaoLiberacao(execucaoLiberacaoDto.getIdRequisicaoLiberacao()); requisicaoLiberacaoDto = (RequisicaoLiberacaoDTO) requisicaoLiberacaoDao.restore(requisicaoLiberacaoDto); if (requisicaoLiberacaoDto == null){ System.out.println("Execu��o libera��o do evento "+eventoFluxoDto.getIdItemTrabalho()+" n�o encontrada"); throw new LogicException(i18n_Message("requisicaoLiberacao.evento")); } TransactionControler tc = new TransactionControlerImpl(execucaoLiberacaoDao.getAliasDB()); setTransacao(tc); setObjetoNegocioDto(requisicaoLiberacaoDto); InstanciaFluxo instanciaFluxo = new InstanciaFluxo(this, eventoFluxoDto.getIdInstancia()); HashMap<String, Object> map = new HashMap(); mapObjetoNegocio(instanciaFluxo.getObjetos(map)); instanciaFluxo.executaEvento(eventoFluxoDto.getIdItemTrabalho(), map); } @Override public void validaEncerramento() throws Exception { // TODO Auto-generated method stub } @Override public void enviaEmail(String identificador, String[] destinatarios) throws Exception { // TODO Auto-generated method stub } /** * Notifica todos os Empregados de um grupo. * * @param idModeloEmail * @throws Exception */ public void enviaEmailGrupo(Integer idModeloEmail, Integer idGrupoDestino) throws Exception { MensagemEmail mensagem = null; if (idGrupoDestino == null) { return; } if (idModeloEmail == null) { return; } GrupoService grupoService = (GrupoService) ServiceLocator.getInstance().getService(GrupoService.class, null); List<String> emails = null; try { emails = (List<String>) grupoService.listarEmailsPorGrupo(idGrupoDestino); } catch (Exception e) { return; } if (emails == null || emails.isEmpty()) { return; } String remetente = ParametroUtil.getValor(ParametroSistema.RemetenteNotificacoesSolicitacao, getTransacao(), null); if (remetente == null) throw new LogicException(i18n_Message("requisicaoLiberacao.remetenteNaoDefinido")); RequisicaoLiberacaoDTO requisicaoRequisicaoLiberacaoDTO = new RequisicaoLiberacaoServiceEjb().restoreAll(this.getRequisicaoLiberacaoDto().getIdRequisicaoLiberacao(), getTransacao()); if (requisicaoRequisicaoLiberacaoDTO == null) { return; } requisicaoRequisicaoLiberacaoDTO.setNomeTarefa(getRequisicaoLiberacaoDto().getNomeTarefa()); try { // EmpregadoDTO aux = null; for (String email : emails) { int posArroba = email.indexOf("@"); if (posArroba > 0 && email.substring(posArroba).contains(".")) { try { mensagem = new MensagemEmail(idModeloEmail, new IDto[] { requisicaoRequisicaoLiberacaoDTO }); // aux = (EmpregadoDTO) getEmpregadoService().restore(e); // if(aux != null && aux.getEmail() != null && !aux.getEmail().trim().equalsIgnoreCase("") ){ mensagem.envia(email, remetente, remetente); } catch (Exception e) { // faz nada } } // } } } catch (Exception e) { } } /** * Notifica proprietario da Requisi��o mudan�a. * * @param idModeloEmail * @throws Exception * @author thays.araujo */ public void enviaEmailProprietario(Integer idModeloEmail) throws Exception { MensagemEmail mensagem = null; if (idModeloEmail == null) { return; } EmpregadoService empregadoService = (EmpregadoService) ServiceLocator.getInstance().getService(EmpregadoService.class, null); EmpregadoDTO empregadoDto = new EmpregadoDTO(); empregadoDto.setIdEmpregado(this.getRequisicaoLiberacaoDto().getUsuarioDto().getIdEmpregado()); empregadoDto = (EmpregadoDTO) empregadoService.restore(empregadoDto); String email = ""; try { email = empregadoDto.getEmail(); } catch (Exception e) { return; } if (email == null || email.isEmpty() || email.equalsIgnoreCase("")) { return; } String remetente = ParametroUtil.getValor(ParametroSistema.RemetenteNotificacoesSolicitacao, getTransacao(), null); if (remetente == null) throw new LogicException(i18n_Message("requisicaoLiberacao.remetenteNaoDefinido")); RequisicaoLiberacaoDTO requisicaoRequisicaoLiberacaoDTO = new RequisicaoLiberacaoServiceEjb().restoreAll(this.getRequisicaoLiberacaoDto().getIdRequisicaoLiberacao(), getTransacao()); if (requisicaoRequisicaoLiberacaoDTO == null) { return; } requisicaoRequisicaoLiberacaoDTO.setNomeTarefa(getRequisicaoLiberacaoDto().getNomeTarefa()); try { // EmpregadoDTO aux = null; int posArroba = email.indexOf("@"); if (posArroba > 0 && email.substring(posArroba).contains(".")) { try { mensagem = new MensagemEmail(idModeloEmail, new IDto[] { requisicaoRequisicaoLiberacaoDTO }); // aux = (EmpregadoDTO) getEmpregadoService().restore(e); // if(aux != null && aux.getEmail() != null && !aux.getEmail().trim().equalsIgnoreCase("") ){ mensagem.envia(email, remetente, remetente); } catch (Exception e) { // faz nada } } // } } catch (Exception e) { } } @Override public void verificaSLA(ItemTrabalho itemTrabalho) throws Exception { // TODO Auto-generated method stub } public void finalizaIC(RequisicaoLiberacaoDTO liberacao) throws ServiceException, Exception{ RequisicaoLiberacaoItemConfiguracaoService liberacaoICService = (RequisicaoLiberacaoItemConfiguracaoService) ServiceLocator.getInstance().getService(RequisicaoLiberacaoItemConfiguracaoService.class, null); ItemConfiguracaoService itemService = (ItemConfiguracaoService) ServiceLocator.getInstance().getService(ItemConfiguracaoService.class, null); List<RequisicaoLiberacaoItemConfiguracaoDTO> lista = liberacaoICService.listByIdRequisicaoLiberacao(liberacao.getIdRequisicaoLiberacao()); if(lista != null && lista.size() > 0){ for(RequisicaoLiberacaoItemConfiguracaoDTO req : lista){ itemService.atualizaParaGrupoProducao(req.getIdItemConfiguracao()); this.atualizaHistoricoIC(req.getIdItemConfiguracao(), liberacao); } } } public void atualizaHistoricoIC(Integer idItemConfiguracao, RequisicaoLiberacaoDTO liberacao) throws br.com.citframework.excecao.ServiceException, Exception{ ItemConfiguracaoService itemService = (ItemConfiguracaoService) ServiceLocator.getInstance().getService(ItemConfiguracaoService.class, null); ItemConfiguracaoDTO item = new ItemConfiguracaoDTO(); item.setIdItemConfiguracao(idItemConfiguracao); item = (ItemConfiguracaoDTO) itemService.restore(item); try{ itemService.createHistoricoItemComOrigem(item, liberacao, "L"); itemService.atualizaStatus(item.getIdItemConfiguracao(), StatusIC.VALIDAR.getItem()); }catch(Exception e){ } } }