package br.com.centralit.citcorpore.ajaxForms; import java.sql.Date; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; import java.util.Collections; import java.util.GregorianCalendar; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import net.sf.jasperreports.engine.JRDataSource; import net.sf.jasperreports.engine.JRParameter; import net.sf.jasperreports.engine.JasperExportManager; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; import net.sf.jasperreports.engine.fill.JRAbstractLRUVirtualizer; import net.sf.jasperreports.engine.fill.JRSwapFileVirtualizer; import net.sf.jasperreports.engine.util.JRSwapFile; import br.com.centralit.citajax.html.AjaxFormAction; import br.com.centralit.citajax.html.DocumentHTML; import br.com.centralit.citajax.html.HTMLSelect; import br.com.centralit.citajax.html.HTMLTable; import br.com.centralit.citcorpore.bean.ControleRendimentoDTO; import br.com.centralit.citcorpore.bean.ControleRendimentoExecucaoDTO; import br.com.centralit.citcorpore.bean.ControleRendimentoUsuarioDTO; import br.com.centralit.citcorpore.bean.EmpregadoDTO; import br.com.centralit.citcorpore.bean.GrupoDTO; import br.com.centralit.citcorpore.bean.GrupoEmpregadoDTO; import br.com.centralit.citcorpore.bean.OcorrenciaSolicitacaoDTO; import br.com.centralit.citcorpore.bean.RelatorioQuantitativoRetornoDTO; import br.com.centralit.citcorpore.bean.RelatorioQuantitativoRetornoListaDTO; import br.com.centralit.citcorpore.bean.SolicitacaoServicoDTO; import br.com.centralit.citcorpore.bean.UsuarioDTO; import br.com.centralit.citcorpore.negocio.ControleRendimentoService; import br.com.centralit.citcorpore.negocio.ControleRendimentoUsuarioService; import br.com.centralit.citcorpore.negocio.EmpregadoService; import br.com.centralit.citcorpore.negocio.GrupoEmpregadoService; import br.com.centralit.citcorpore.negocio.GrupoService; import br.com.centralit.citcorpore.negocio.OcorrenciaSolicitacaoService; import br.com.centralit.citcorpore.negocio.SolicitacaoServicoService; import br.com.centralit.citcorpore.negocio.UsuarioService; import br.com.centralit.citcorpore.util.CITCorporeUtil; import br.com.centralit.citcorpore.util.Enumerados; import br.com.centralit.citcorpore.util.ParametroUtil; import br.com.centralit.citcorpore.util.UtilRelatorio; import br.com.centralit.citcorpore.util.WebUtil; import br.com.citframework.excecao.ServiceException; 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; public class ControleRendimentoExecucao extends AjaxFormAction{ static Boolean flagCalculaPessoa; static Collection<ControleRendimentoExecucaoDTO> colecaoPessoasGlobal; private UsuarioDTO usuario; private String localeSession = null; Integer pontosSlaBaixoNoPrazo = new Integer(Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.PONTUACAO_PRODUTIVIDADE_BAIXA_DENTRO_DO_PRAZO, "1"))); Integer pontosSlaBaixoRetrabalhado = new Integer(Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.PONTUACAO_PRODUTIVIDADE_BAIXA_RETRABALHO, "-1"))); Integer pontosSlaBaixoForaDoPrazo = new Integer(Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.PONTUACAO_PRODUTIVIDADE_BAIXA_FORA_DO_PRAZO, "-1"))); Integer pontosSlaBaixoRetrabalhadoEForaDoPrazo = new Integer(Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.PONTUACAO_PRODUTIVIDADE_BAIXA_RETRABALHADO_PRAZO_ESTOURADO, "-2"))); Integer pontosSlaMedioNoPrazo = new Integer(Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.PONTUACAO_PRODUTIVIDADE_MEDIA_DENTRO_DO_PRAZO, "2"))); Integer pontosSlaMedioRetrabalhado = new Integer(Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.PONTUACAO_PRODUTIVIDADE_MEDIA_RETRABALHO, "-2"))); Integer pontosSlaMedioForaDoPrazo = new Integer(Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.PONTUACAO_PRODUTIVIDADE_MEDIA_FORA_DO_PRAZO, "-2"))); Integer pontosSlaMedioRetrabalhadoEForaDoPrazo = new Integer(Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.PONTUACAO_PRODUTIVIDADE_MEDIA_RETRABALHADO_PRAZO_ESTOURADO, "-4"))); Integer pontosSlaAltoNoPrazo = new Integer(Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.PONTUACAO_PRODUTIVIDADE_ALTA_DENTRO_DO_PRAZO, "3"))); Integer pontosSlaAltoRetrabalhado = new Integer(Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.PONTUACAO_PRODUTIVIDADE_ALTA_RETRABALHO, "-3"))); Integer pontosSlaAltoForaDoPrazo = new Integer(Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.PONTUACAO_PRODUTIVIDADE_ALTA_FORA_DO_PRAZO, "-3"))); Integer pontosSlaAltoRetrabalhadoEForaDoPrazo = new Integer(Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.PONTUACAO_PRODUTIVIDADE_ALTA_RETRABALHADO_PRAZO_ESTOURADO, "-6"))); Integer idGrupoTeste = new Integer(Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.ID_GRUPO_PADRAO_TESTE, "93"))); Integer idGrupoExecutor= new Integer(Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.ID_GRUPO_PADRAO_EXECUTOR, "94"))); @Override public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { ControleRendimento controleRendimento = new ControleRendimento(); controleRendimento.carregaCombos(document, request); } @Override public Class getBeanClass() { return ControleRendimentoExecucaoDTO.class; } public void restoreNomeGrupoExecucao(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws ServiceException, Exception{ ControleRendimentoExecucaoDTO controle = (ControleRendimentoExecucaoDTO) document.getBean(); controle.setIdGrupo(controle.getIdGrupoExecucao()); GrupoService grupoService = (GrupoService) ServiceLocator.getInstance().getService(GrupoService.class, null); GrupoDTO grupo = (GrupoDTO) grupoService.restore(controle); document.getElementById("addGrupoExecucao").setValue(grupo.getNome()); Collection<EmpregadoDTO> listaEmpregados = listaEmpregados(grupo.getIdGrupo()); ((HTMLSelect) document.getSelectById("comboPessoa")).removeAllOptions(); ((HTMLSelect) document.getSelectById("comboPessoa")).addOption("", UtilI18N.internacionaliza(request, "controle.todos")); for (EmpregadoDTO empregadoDTO : listaEmpregados) { ((HTMLSelect) document.getSelectById("comboPessoa")).addOption(empregadoDTO.getIdEmpregado().toString(), empregadoDTO.getNome()); } } public void restoreNomeGrupoRelatorio(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws ServiceException, Exception{ ControleRendimentoExecucaoDTO controle = (ControleRendimentoExecucaoDTO) document.getBean(); controle.setIdGrupo(controle.getIdGrupoRelatorio()); GrupoService grupoService = (GrupoService) ServiceLocator.getInstance().getService(GrupoService.class, null); GrupoDTO grupo = (GrupoDTO) grupoService.restore(controle); document.getElementById("addGrupoRelatorio").setValue(grupo.getNome()); } public void restoreNomeGrupo(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws ServiceException, Exception{ ControleRendimentoExecucaoDTO controle = (ControleRendimentoExecucaoDTO) document.getBean(); GrupoService grupoService = (GrupoService) ServiceLocator.getInstance().getService(GrupoService.class, null); GrupoDTO grupo = (GrupoDTO) grupoService.restore(controle); document.getElementById("addGrupo").setValue(grupo.getNome()); } public Collection<EmpregadoDTO> listaEmpregados(Integer idGrupo) throws ServiceException, Exception{ GrupoEmpregadoService grupoEmpregadoService = (GrupoEmpregadoService) ServiceLocator.getInstance().getService(GrupoEmpregadoService.class, null); EmpregadoService empregadoService = (EmpregadoService) ServiceLocator.getInstance().getService(EmpregadoService.class, null); Collection<GrupoEmpregadoDTO> grupoFabrica = (Collection<GrupoEmpregadoDTO>) grupoEmpregadoService.findByIdGrupo(idGrupo); Collection<EmpregadoDTO> empregadosFabrica = new ArrayList<EmpregadoDTO>(); for (GrupoEmpregadoDTO grupoEmpregadoDTO : grupoFabrica) { EmpregadoDTO empregado = new EmpregadoDTO(); empregado.setIdEmpregado(grupoEmpregadoDTO.getIdEmpregado()); empregado = (EmpregadoDTO) empregadoService.restore(empregado); empregadosFabrica.add(empregado); } return empregadosFabrica; } public void carregaTabelasExecucao(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws ServiceException, Exception{ ControleRendimentoExecucaoDTO controleRendimentoDto = (ControleRendimentoExecucaoDTO) document.getBean(); controleRendimentoDto.setIdGrupo(controleRendimentoDto.getIdGrupoExecucao()); Boolean verificaSeGrupoTeste = false; flagCalculaPessoa = false; if(controleRendimentoDto.getIdGrupo().intValue() == idGrupoTeste.intValue()){ verificaSeGrupoTeste = true; } ArrayList<Object> listaComTodosOsPontos = null; if(verificaSeGrupoTeste){ listaComTodosOsPontos = calculaPontuacaoGrupo(idGrupoExecutor, controleRendimentoDto.getDataInicio(), controleRendimentoDto.getDataFim(), document); } else { listaComTodosOsPontos = calculaPontuacaoGrupo(controleRendimentoDto.getIdGrupo(), controleRendimentoDto.getDataInicio(), controleRendimentoDto.getDataFim(), document); } Collection<ControleRendimentoExecucaoDTO> colecao = montaColecaoParaCarregarAsTabelas(listaComTodosOsPontos); ArrayList<Object> listaTotal = (ArrayList<Object>) listaComTodosOsPontos.get(3); if((listaTotal.get(0).toString()).contains(",")){ listaTotal.set(0,(listaTotal.get(0).toString()).replace(",", ".")); } if((listaTotal.get(1).toString()).contains(",")){ listaTotal.set(1,(listaTotal.get(1).toString()).replace(",", ".")); } if((Double.parseDouble(listaTotal.get(0).toString())) < (Double.parseDouble(listaTotal.get(1).toString()))){ document.getElementById("divResultadoGrupo").setInnerHTML("<br><span style='font-size: 13pt; color: red'> Resultado: "+ listaTotal.get(0) +"%</span><br><span style='font-size: 13pt; color: red'>GRUPO N�O APROVADO PARA GRATIFICA��O</span><br>"); document.getElementById("divTotalRendimentoPessoa").setVisible(false); flagCalculaPessoa = false; } else{ document.getElementById("divResultadoGrupo").setInnerHTML("<br><span style='font-size: 12pt; color: green'> Resultado: "+ listaTotal.get(0) +"%</span><br>"); document.getElementById("divTotalRendimentoPessoa").setVisible(true); flagCalculaPessoa = true; } if (colecao != null) { HTMLTable table; table = document.getTableById("tblrendimentoGrupoExecucao"); table.deleteAllRows(); table.addRowsByCollection(colecao, new String[] {"", "tipoSla", "qtdSolicitacoes", "qtdTotalPontos", "qtdPontosPositivos", "qtdPontosNegativos", "mediaRelativa" }, null, null, null, null, null); } if(flagCalculaPessoa){ if(verificaSeGrupoTeste){ calculaPontuacaoPessoaExecucaoGrupoTeste(controleRendimentoDto.getIdPessoa(), controleRendimentoDto.getDataInicio(), controleRendimentoDto.getDataFim(), document); } else { calculaPontuacaoPessoaExecucao(controleRendimentoDto.getIdPessoa(), controleRendimentoDto.getDataInicio(), controleRendimentoDto.getDataFim(), document); } } document.executeScript("JANELA_AGUARDE_MENU.hide(); "); return; } public void carregaTabelas(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws ServiceException, Exception{ ControleRendimentoExecucaoDTO controleRendimentoExecucaoDto = (ControleRendimentoExecucaoDTO) document.getBean(); Boolean verificaSeGrupoTeste = false; if(controleRendimentoExecucaoDto.getIdGrupo().intValue() == idGrupoTeste.intValue()){ verificaSeGrupoTeste = true; } ArrayList<Object> listaComTodosOsPontos = new ArrayList<Object>(); if(verificaSeGrupoTeste){ listaComTodosOsPontos = calculaPontuacaoMesGrupo(controleRendimentoExecucaoDto.getAno(), controleRendimentoExecucaoDto.getMes(),idGrupoExecutor, document); } else { listaComTodosOsPontos = calculaPontuacaoMesGrupo(controleRendimentoExecucaoDto.getAno(), controleRendimentoExecucaoDto.getMes(), controleRendimentoExecucaoDto.getIdGrupo(), document); } Collection<ControleRendimentoExecucaoDTO> colecao = montaColecaoParaCarregarAsTabelas(listaComTodosOsPontos); if (colecao != null) { HTMLTable table; table = document.getTableById("tblrendimentoGrupo"); table.deleteAllRows(); table.addRowsByCollection(colecao, new String[] {"", "tipoSla", "qtdSolicitacoes", "qtdTotalPontos", "qtdPontosPositivos", "qtdPontosNegativos", "mediaRelativa" }, null, null, null, null, null); } if(verificaSeGrupoTeste){ calculaPontuacaoMesPessoaGrupoTeste(controleRendimentoExecucaoDto.getAno(), controleRendimentoExecucaoDto.getMes(), controleRendimentoExecucaoDto.getIdGrupo(), document); } else { calculaPontuacaoMesPorPessoa(controleRendimentoExecucaoDto.getAno(), controleRendimentoExecucaoDto.getMes(), controleRendimentoExecucaoDto.getIdGrupo(), document); } document.executeScript("JANELA_AGUARDE_MENU.hide(); "); } public Collection<ControleRendimentoExecucaoDTO> montaColecaoParaCarregarAsTabelas(ArrayList<Object> listaComTodosOsPontos){ ArrayList<Object> listaComSolicitacoesBaixas = (ArrayList<Object>) listaComTodosOsPontos.get(0); ArrayList<Object> listaComSolicitacoesMedias = (ArrayList<Object>) listaComTodosOsPontos.get(1); ArrayList<Object> listaComSolicitacoesAltas = (ArrayList<Object>) listaComTodosOsPontos.get(2); ArrayList<Object> listaTotal = (ArrayList<Object>) listaComTodosOsPontos.get(3); ArrayList<Object> listaRodape = (ArrayList<Object>) listaComTodosOsPontos.get(4); ControleRendimentoExecucaoDTO controleRendimento1 = new ControleRendimentoExecucaoDTO("Baixa (x1)", listaComSolicitacoesBaixas.get(0).toString(), listaComSolicitacoesBaixas.get(1).toString(), listaComSolicitacoesBaixas.get(2).toString(), listaComSolicitacoesBaixas.get(3).toString(), listaComSolicitacoesBaixas.get(4).toString()); ControleRendimentoExecucaoDTO controleRendimento2 = new ControleRendimentoExecucaoDTO("M�dia (x2)", listaComSolicitacoesMedias.get(0).toString(), listaComSolicitacoesMedias.get(1).toString(), listaComSolicitacoesMedias.get(2).toString(), listaComSolicitacoesMedias.get(3).toString(), listaComSolicitacoesMedias.get(4).toString()); ControleRendimentoExecucaoDTO controleRendimento3 = new ControleRendimentoExecucaoDTO("Alta (x3)", listaComSolicitacoesAltas.get(0).toString(), listaComSolicitacoesAltas.get(1).toString(), listaComSolicitacoesAltas.get(2).toString(), listaComSolicitacoesAltas.get(3).toString(), listaComSolicitacoesAltas.get(4).toString()); ControleRendimentoExecucaoDTO controleRendimento4 = new ControleRendimentoExecucaoDTO("Total", listaRodape.get(0).toString(), listaRodape.get(1).toString(), listaRodape.get(2).toString(), listaRodape.get(3).toString(), listaRodape.get(4).toString() + "%"); Collection<ControleRendimentoExecucaoDTO> colecao = new ArrayList<ControleRendimentoExecucaoDTO>(); colecao.add(controleRendimento1); colecao.add(controleRendimento2); colecao.add(controleRendimento3); colecao.add(controleRendimento4); return colecao; } public ArrayList<Object> calculaPontuacaoMesGrupo(String ano, String mes, Integer idGrupo, DocumentHTML document) throws ServiceException, Exception{ ControleRendimentoExecucaoDTO controleRendimentoDto = (ControleRendimentoExecucaoDTO) document.getBean(); Integer mesInt = Integer.parseInt(mes); Integer ultimoDia = ControleRendimento.confereQualUltimoDiaDoMes(controleRendimentoDto); SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy"); java.util.Date dataInicio = null; java.util.Date dataFim = null; try { dataInicio = (java.util.Date) formatador.parse("01/"+ mesInt +"/" + ano); dataFim = (java.util.Date) formatador.parse(ultimoDia +"/"+ mesInt +"/" + controleRendimentoDto.getAno()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } java.sql.Date dInicio = null; if(dataInicio != null){ dInicio = new java.sql.Date (dataInicio.getTime()); } java.sql.Date dFim = null; if(dataFim != null){ dFim = new java.sql.Date (dataFim.getTime()); } ArrayList<Object> listaResposta = calculaPontuacaoGrupo(idGrupo, dInicio, dFim, document); Integer qtdTotalSolicitacoes = (Integer)((ArrayList)listaResposta.get(0)).get(0) + (Integer)((ArrayList)listaResposta.get(1)).get(0) + (Integer)((ArrayList)listaResposta.get(2)).get(0); document.getElementById("qtdSolicitacoes").setValue(qtdTotalSolicitacoes.toString()); Integer qtdTotalPontos = (Integer)((ArrayList)listaResposta.get(0)).get(1) + (Integer)((ArrayList)listaResposta.get(1)).get(1) + (Integer)((ArrayList)listaResposta.get(2)).get(1); document.getElementById("qtdTotalPontos").setValue(qtdTotalPontos.toString()); Integer qtdPontosPositivos = (Integer)((ArrayList)listaResposta.get(0)).get(2) + (Integer)((ArrayList)listaResposta.get(1)).get(2) + (Integer)((ArrayList)listaResposta.get(2)).get(2); document.getElementById("qtdPontosPositivos").setValue(qtdPontosPositivos.toString()); Integer qtdPontosNegativos = (Integer)((ArrayList)listaResposta.get(0)).get(3) + (Integer)((ArrayList)listaResposta.get(1)).get(3) + (Integer)((ArrayList)listaResposta.get(2)).get(3); document.getElementById("qtdPontosNegativos").setValue(qtdPontosNegativos.toString()); String mediaRelativa = (String)((ArrayList)listaResposta.get(3)).get(0); document.getElementById("mediaRelativa").setValue(mediaRelativa); return listaResposta; } static Integer qtdItensRetornados = 0; public void calculaPontuacaoMesPorPessoa(String ano, String mes, Integer idGrupo, DocumentHTML document) throws ServiceException, Exception{ ControleRendimentoExecucaoDTO controle = (ControleRendimentoExecucaoDTO) document.getBean(); Integer mesInt = Integer.parseInt(mes); Integer ultimoDia = ControleRendimento.confereQualUltimoDiaDoMes(controle); SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy"); java.util.Date dataInicio = null; java.util.Date dataFim = null; try { dataInicio = (java.util.Date) formatador.parse("01/"+ mesInt +"/" + ano); dataFim = (java.util.Date) formatador.parse(ultimoDia +"/"+ mesInt +"/" + ano); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } java.sql.Date dInicio = null; if(dataInicio != null){ dInicio = new java.sql.Date (dataInicio.getTime()); } java.sql.Date dFim = null; if(dataFim != null){ dFim = new java.sql.Date (dataFim.getTime()); } SolicitacaoServicoService solicitacaoServicoService = (SolicitacaoServicoService) ServiceLocator.getInstance().getService(SolicitacaoServicoService.class, null); Collection<ControleRendimentoExecucaoDTO> colecao = new ArrayList<ControleRendimentoExecucaoDTO>(); Collection<EmpregadoDTO> listaEmpregadosFabrica = listaEmpregadosDoGrupo(controle.getIdGrupo()); for (EmpregadoDTO empregadoDTO : listaEmpregadosFabrica) { UsuarioService usuarioService = (UsuarioService) ServiceLocator.getInstance().getService(UsuarioService.class, null); UsuarioDTO usuarioDto = (UsuarioDTO) usuarioService.restoreByIdEmpregado(empregadoDTO.getIdEmpregado()); if(usuarioDto != null){ Integer qtdItensEntregues = new Integer(0); Collection<SolicitacaoServicoDTO> listaSolicitacoesAtendidasPessoa = (Collection<SolicitacaoServicoDTO>) solicitacaoServicoService.findByIdPessoaEDataAtendidas(controle.getIdGrupo(), usuarioDto.getLogin(), usuarioDto.getNomeUsuario(), dInicio, dFim); if(listaSolicitacoesAtendidasPessoa != null) qtdItensEntregues = listaSolicitacoesAtendidasPessoa.size(); //calcula os pontos positivos da pessoa Integer qtdTotalPontosPositivos = calculaQtdTotalPontosPositivosDaPessoa(listaSolicitacoesAtendidasPessoa); //calcular os pontos negativos por pessoa. qtdItensRetornados = 0; Collection<SolicitacaoServicoDTO> listaTotalSolicitacoesPessoa = (Collection<SolicitacaoServicoDTO>) solicitacaoServicoService.findByIdPessoaEData(controle.getIdGrupo(), usuarioDto.getLogin(), usuarioDto.getNomeUsuario(), dInicio, dFim); Integer qtdTotalPontosnegativos = calculaQtdTotalPontosNegativosPessoa(listaTotalSolicitacoesPessoa, dInicio, dFim, document); Integer pontosTotal = qtdTotalPontosPositivos + qtdTotalPontosnegativos; ControleRendimentoExecucaoDTO controleRendimento1; if(pontosTotal < 0){ controleRendimento1 = new ControleRendimentoExecucaoDTO(usuarioDto.getNomeUsuario(), pontosTotal.toString(), "N�o", usuarioDto.getIdUsuario()); controleRendimento1.setQtdPontosPositivos(qtdTotalPontosPositivos.toString()); controleRendimento1.setQtdPontosNegativos(qtdTotalPontosnegativos.toString()); controleRendimento1.setQtdItensRetornados(qtdItensRetornados + ""); controleRendimento1.setQtdItensEntregues(qtdItensEntregues.toString()); controleRendimento1.setQtdTotalPontos(pontosTotal.toString()); } else { controleRendimento1 = new ControleRendimentoExecucaoDTO(usuarioDto.getNomeUsuario(), pontosTotal.toString(), "Sim", usuarioDto.getIdUsuario()); controleRendimento1.setQtdPontosPositivos(qtdTotalPontosPositivos.toString()); controleRendimento1.setQtdPontosNegativos(qtdTotalPontosnegativos.toString()); controleRendimento1.setQtdItensRetornados(qtdItensRetornados + ""); controleRendimento1.setQtdItensEntregues(qtdItensEntregues.toString()); controleRendimento1.setQtdTotalPontos(pontosTotal.toString()); } colecao.add(controleRendimento1); } } if (colecao != null) { colecaoPessoasGlobal = colecao; HTMLTable table; table = document.getTableById("tblrendimentoPessoa"); table.deleteAllRows(); table.addRowsByCollection(colecao, new String[] {"", "nomePessoa", "qtdTotalPontos", "aprovacao"}, null, null, null, null, null); } } public Integer calculaQtdTotalPontosPositivosDaPessoa(Collection<SolicitacaoServicoDTO> listaSolicitacoesAtendidasPessoa) { Integer qtdPontosPositivosBaixo = new Integer(0); Integer qtdPontosPositivosMedio = new Integer(0); Integer qtdPontosPositivosAlto = new Integer(0); if(listaSolicitacoesAtendidasPessoa != null) { for (SolicitacaoServicoDTO solicitacaoServicoDTO : listaSolicitacoesAtendidasPessoa) { if(solicitacaoServicoDTO.getDataHoraFim() != null && solicitacaoServicoDTO.getDataHoraFim().before(solicitacaoServicoDTO.getDataHoraLimite())){ if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("B")) qtdPontosPositivosBaixo += pontosSlaBaixoNoPrazo; if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("M")) qtdPontosPositivosMedio += pontosSlaMedioNoPrazo; if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("A")) qtdPontosPositivosAlto += pontosSlaAltoNoPrazo; } } } Integer qtdTotalPontosPositivos = qtdPontosPositivosBaixo + qtdPontosPositivosMedio + qtdPontosPositivosAlto; return qtdTotalPontosPositivos; } public Integer calculaQtdTotalPontosNegativosPessoa(Collection<SolicitacaoServicoDTO> listaTotalSolicitacoesPessoa, Date dataInicio, Date dataFim, DocumentHTML document) throws ServiceException, Exception{ Integer qtdPontosNegativosBaixa = new Integer(0); Integer qtdPontosNegativosMedia = new Integer(0); Integer qtdPontosNegativosAlta = new Integer(0); //pontos de retorno if(listaTotalSolicitacoesPessoa != null){ SolicitacaoServicoDTO solicitacaoAux = new SolicitacaoServicoDTO(); solicitacaoAux.setDataInicio(dataInicio); solicitacaoAux.setDataFim(dataFim); RelatorioQuantitativoRetorno retornos = new RelatorioQuantitativoRetorno(); Collection<RelatorioQuantitativoRetornoListaDTO> listaPorPeriodo = retornos.trazListaRetornos(solicitacaoAux, document.getLanguage()); ArrayList<Integer> listaRetornosFiltrada = filtraListaRetornos(listaPorPeriodo); Boolean jaCalculou; for (SolicitacaoServicoDTO solicitacaoServicoDTO : listaTotalSolicitacoesPessoa) { jaCalculou = false; for (Integer idSolicitacao : listaRetornosFiltrada) { if(idSolicitacao.intValue() == solicitacaoServicoDTO.getIdSolicitacaoServico().intValue()){ //significa que houve retorno da atividade jaCalculou = true; //retorno + sla estourado if(solicitacaoServicoDTO.getDataHoraLimite() != null){ if(solicitacaoServicoDTO.getDataHoraLimite().before(UtilDatas.getDataHoraAtual())) { if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("B")){ qtdPontosNegativosBaixa += pontosSlaBaixoRetrabalhadoEForaDoPrazo; qtdItensRetornados++; } else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("M")) { qtdPontosNegativosMedia += pontosSlaMedioRetrabalhadoEForaDoPrazo; qtdItensRetornados++; } else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("A")) { qtdPontosNegativosAlta += pontosSlaAltoRetrabalhadoEForaDoPrazo; qtdItensRetornados++; } } else { //retorno no prazo if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("B")) { qtdPontosNegativosBaixa += pontosSlaBaixoRetrabalhado; qtdItensRetornados++; } else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("M")) { qtdPontosNegativosMedia += pontosSlaMedioRetrabalhado; qtdItensRetornados++; } else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("A")) { qtdPontosNegativosAlta += pontosSlaAltoRetrabalhado; qtdItensRetornados++; } } } } } if(jaCalculou == false){ //n�o houve retorno mas est� fora do prazo if(solicitacaoServicoDTO.getDataHoraLimite() != null){ if(solicitacaoServicoDTO.getDataHoraFim() == null && solicitacaoServicoDTO.getDataHoraLimite().before(UtilDatas.getDataHoraAtual())){ if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("B")) qtdPontosNegativosBaixa += pontosSlaBaixoForaDoPrazo; else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("M")) qtdPontosNegativosMedia += pontosSlaMedioForaDoPrazo; else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("A")) qtdPontosNegativosAlta += pontosSlaAltoForaDoPrazo; } } if(solicitacaoServicoDTO.getDataHoraFim() != null){ if(solicitacaoServicoDTO.getDataHoraFim().after(solicitacaoServicoDTO.getDataHoraLimite())){ if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("B")) qtdPontosNegativosBaixa += pontosSlaBaixoForaDoPrazo; else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("M")) qtdPontosNegativosMedia += pontosSlaMedioForaDoPrazo; else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("A")) qtdPontosNegativosAlta += pontosSlaAltoForaDoPrazo; } } } } } Integer qtdTotalPontosnegativos = qtdPontosNegativosBaixa + qtdPontosNegativosMedia + qtdPontosNegativosAlta; return qtdTotalPontosnegativos; } public void calculaPontuacaoMesPessoaGrupoTeste(String ano, String mes, Integer idGrupo, DocumentHTML document) throws ServiceException, Exception{ ControleRendimentoExecucaoDTO controle = (ControleRendimentoExecucaoDTO) document.getBean(); Integer mesInt = Integer.parseInt(mes); Integer ultimoDia = ControleRendimento.confereQualUltimoDiaDoMes(controle); SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy"); java.util.Date dataInicio = null; java.util.Date dataFim = null; try { dataInicio = (java.util.Date) formatador.parse("01/"+ mesInt +"/" + ano); dataFim = (java.util.Date) formatador.parse(ultimoDia +"/"+ mesInt +"/" + ano); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } java.sql.Date dInicio = null; if(dataInicio != null){ dInicio = new java.sql.Date (dataInicio.getTime()); } java.sql.Date dFim = null; if(dataFim != null){ dFim = new java.sql.Date (dataFim.getTime()); } SolicitacaoServicoService solicitacaoServicoService = (SolicitacaoServicoService) ServiceLocator.getInstance().getService(SolicitacaoServicoService.class, null); OcorrenciaSolicitacaoService ocorrenciaSolicitacaoService = (OcorrenciaSolicitacaoService) ServiceLocator.getInstance().getService(OcorrenciaSolicitacaoService.class, null); Collection<ControleRendimentoExecucaoDTO> colecao = new ArrayList<ControleRendimentoExecucaoDTO>(); Collection<EmpregadoDTO> listaEmpregadosFabrica = listaEmpregadosDoGrupo(controle.getIdGrupo()); for (EmpregadoDTO empregadoDTO : listaEmpregadosFabrica) { UsuarioService usuarioService = (UsuarioService) ServiceLocator.getInstance().getService(UsuarioService.class, null); UsuarioDTO usuarioDto = (UsuarioDTO) usuarioService.restoreByIdEmpregado(empregadoDTO.getIdEmpregado()); if(usuarioDto != null){ Integer qtdPontosPositivosBaixo = new Integer(0); Integer qtdPontosPositivosMedio = new Integer(0); Integer qtdPontosPositivosAlto = new Integer(0); Integer qtdItensEntregues = new Integer(0); Collection<OcorrenciaSolicitacaoDTO> listaSolicitacoesAtendidasPessoa = (Collection<OcorrenciaSolicitacaoDTO>) ocorrenciaSolicitacaoService.findByIdPessoaEDataAtendidasGrupoTeste(usuarioDto.getIdUsuario(), dataInicio, dataFim); if(listaSolicitacoesAtendidasPessoa != null) qtdItensEntregues = listaSolicitacoesAtendidasPessoa.size(); if(listaSolicitacoesAtendidasPessoa != null) { for (OcorrenciaSolicitacaoDTO ocorrenciaDTO : listaSolicitacoesAtendidasPessoa) { if(ocorrenciaDTO.getUrgencia().equalsIgnoreCase("B")) qtdPontosPositivosBaixo += pontosSlaBaixoNoPrazo; if(ocorrenciaDTO.getUrgencia().equalsIgnoreCase("M")) qtdPontosPositivosMedio += pontosSlaMedioNoPrazo; if(ocorrenciaDTO.getUrgencia().equalsIgnoreCase("A")) qtdPontosPositivosAlto += pontosSlaAltoNoPrazo; } } Integer qtdTotalPontosPositivos = qtdPontosPositivosBaixo + qtdPontosPositivosMedio + qtdPontosPositivosAlto; //calcular os pontos negativos por pessoa. Integer qtdPontosNegativosBaixa = new Integer(0); Integer qtdPontosNegativosMedia = new Integer(0); Integer qtdPontosNegativosAlta = new Integer(0); Integer qtdItensRetornados = new Integer(0); Collection<SolicitacaoServicoDTO> listaTotalSolicitacoesPessoa = (Collection<SolicitacaoServicoDTO>) solicitacaoServicoService.findByIdPessoaEData(controle.getIdGrupo(), usuarioDto.getLogin(), usuarioDto.getNomeUsuario(), dInicio, dFim); //pontos de retorno if(listaTotalSolicitacoesPessoa != null){ Boolean jaCalculou; SolicitacaoServicoDTO solicitacaoAux = new SolicitacaoServicoDTO(); solicitacaoAux.setDataInicio(dInicio); solicitacaoAux.setDataFim(dFim); RelatorioQuantitativoRetorno retornos = new RelatorioQuantitativoRetorno(); Collection<RelatorioQuantitativoRetornoListaDTO> listaPorPeriodo = retornos.trazListaRetornos(solicitacaoAux, document.getLanguage()); for (SolicitacaoServicoDTO solicitacaoServicoDTO : listaTotalSolicitacoesPessoa) { jaCalculou = false; for (RelatorioQuantitativoRetornoListaDTO relatorioQuantitativoRetornoListaDTO : listaPorPeriodo) { Collection<RelatorioQuantitativoRetornoDTO> col = relatorioQuantitativoRetornoListaDTO.getListaPorPeriodo(); for (RelatorioQuantitativoRetornoDTO relatorioQuantitativoRetornoDTO : col) { if(relatorioQuantitativoRetornoDTO.getIdSolicitacaoServico().intValue() == solicitacaoServicoDTO.getIdSolicitacaoServico().intValue()){ //significa que houve retorno da atividade jaCalculou = true; //retorno + sla estourado if(solicitacaoServicoDTO.getDataHoraLimite() != null){ if(solicitacaoServicoDTO.getDataHoraLimite().before(UtilDatas.getDataHoraAtual())) { if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("B")){ qtdPontosNegativosBaixa += pontosSlaBaixoRetrabalhadoEForaDoPrazo; qtdItensRetornados++; } else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("M")) { qtdPontosNegativosMedia += pontosSlaMedioRetrabalhadoEForaDoPrazo; qtdItensRetornados++; } else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("A")) { qtdPontosNegativosAlta += pontosSlaAltoRetrabalhadoEForaDoPrazo; qtdItensRetornados++; } } else { //retorno no prazo if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("B")) { qtdPontosNegativosBaixa += pontosSlaBaixoRetrabalhado; qtdItensRetornados++; } else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("M")) { qtdPontosNegativosMedia += pontosSlaMedioRetrabalhado; qtdItensRetornados++; } else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("A")) { qtdPontosNegativosAlta += pontosSlaAltoRetrabalhado; qtdItensRetornados++; } } } } } } if(jaCalculou == false){ //n�o houve retorno mas est� fora do prazo if(solicitacaoServicoDTO.getDataHoraLimite() != null){ if(solicitacaoServicoDTO.getDataHoraFim() == null && solicitacaoServicoDTO.getDataHoraLimite().after(UtilDatas.getDataHoraAtual())){ if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("B")) qtdPontosNegativosBaixa += pontosSlaBaixoForaDoPrazo; else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("M")) qtdPontosNegativosMedia += pontosSlaMedioForaDoPrazo; else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("A")) qtdPontosNegativosAlta += pontosSlaAltoForaDoPrazo; } } if(solicitacaoServicoDTO.getDataHoraFim() != null){ if(solicitacaoServicoDTO.getDataHoraFim().after(solicitacaoServicoDTO.getDataHoraLimite())){ if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("B")) qtdPontosNegativosBaixa += pontosSlaBaixoForaDoPrazo; else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("M")) qtdPontosNegativosMedia += pontosSlaMedioForaDoPrazo; else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("A")) qtdPontosNegativosAlta += pontosSlaAltoForaDoPrazo; } } } } } Integer qtdTotalPontosnegativos = qtdPontosNegativosBaixa + qtdPontosNegativosMedia + qtdPontosNegativosAlta; Integer pontosTotal = qtdTotalPontosPositivos + qtdTotalPontosnegativos; ControleRendimentoExecucaoDTO controleRendimento1; if(pontosTotal < 0){ controleRendimento1 = new ControleRendimentoExecucaoDTO(usuarioDto.getNomeUsuario(), pontosTotal.toString(), "N�o", usuarioDto.getIdUsuario()); controleRendimento1.setQtdPontosPositivos(qtdTotalPontosPositivos.toString()); controleRendimento1.setQtdPontosNegativos(qtdTotalPontosnegativos.toString()); controleRendimento1.setQtdItensRetornados(qtdItensRetornados.toString()); controleRendimento1.setQtdItensEntregues(qtdItensEntregues.toString()); controleRendimento1.setQtdTotalPontos(pontosTotal.toString()); } else { controleRendimento1 = new ControleRendimentoExecucaoDTO(usuarioDto.getNomeUsuario(), pontosTotal.toString(), "Sim", usuarioDto.getIdUsuario()); controleRendimento1.setQtdPontosPositivos(qtdTotalPontosPositivos.toString()); controleRendimento1.setQtdPontosNegativos(qtdTotalPontosnegativos.toString()); controleRendimento1.setQtdItensRetornados(qtdItensRetornados.toString()); controleRendimento1.setQtdItensEntregues(qtdItensEntregues.toString()); controleRendimento1.setQtdTotalPontos(pontosTotal.toString()); } colecao.add(controleRendimento1); } } if (colecao != null) { colecaoPessoasGlobal = colecao; HTMLTable table; table = document.getTableById("tblrendimentoPessoa"); table.deleteAllRows(); table.addRowsByCollection(colecao, new String[] {"", "nomePessoa", "qtdTotalPontos", "aprovacao"}, null, null, null, null, null); } } public ArrayList calculaPontuacaoGrupo(Integer idGrupo, Date dataInicio, Date dataFim, DocumentHTML document) throws ServiceException, Exception{ String nivelExcelencia = getNivelExcelenciaExigido(); if(!validaFormatoNivelExcelencia(nivelExcelencia)){ document.alert("Verifique o formato do par�metro de n�vel de excel�ncia, deve possuir apenas n�meros."); return null; } SolicitacaoServicoService solicitacaoServicoService = (SolicitacaoServicoService) ServiceLocator.getInstance().getService(SolicitacaoServicoService.class, null); //traz todas as solicitacoes de servico Collection<SolicitacaoServicoDTO> listaSolicitacoesGrupoBaixa = (Collection<SolicitacaoServicoDTO>) solicitacaoServicoService.findByIdGrupoEDataBaixa(idGrupo, dataInicio, dataFim); Collection<SolicitacaoServicoDTO> listaSolicitacoesGrupoMedia = (Collection<SolicitacaoServicoDTO>) solicitacaoServicoService.findByIdGrupoEDataMedia(idGrupo, dataInicio, dataFim); Collection<SolicitacaoServicoDTO> listaSolicitacoesGrupoAlta = (Collection<SolicitacaoServicoDTO>) solicitacaoServicoService.findByIdGrupoEDataAlta(idGrupo, dataInicio, dataFim); Collection<SolicitacaoServicoDTO> listaSolicitacoesGrupoTotal = (Collection<SolicitacaoServicoDTO>) solicitacaoServicoService.findByIdGrupoEDataTotal(idGrupo, dataInicio, dataFim); Integer qtdSolicitacoesGrupoBaixa = new Integer(0); Integer qtdSolicitacoesGrupoMedia = new Integer(0); Integer qtdSolicitacoesGrupoAlta = new Integer(0); if(listaSolicitacoesGrupoBaixa != null) qtdSolicitacoesGrupoBaixa = listaSolicitacoesGrupoBaixa.size(); if(listaSolicitacoesGrupoMedia != null) qtdSolicitacoesGrupoMedia = listaSolicitacoesGrupoMedia.size(); if (listaSolicitacoesGrupoAlta != null) qtdSolicitacoesGrupoAlta = listaSolicitacoesGrupoAlta.size(); Integer qtdTotalPontosBaixa = qtdSolicitacoesGrupoBaixa * pontosSlaBaixoNoPrazo; Integer qtdTotalPontosMedia = qtdSolicitacoesGrupoMedia * pontosSlaMedioNoPrazo; Integer qtdTotalPontosAlta = qtdSolicitacoesGrupoAlta * pontosSlaAltoNoPrazo; //traz todas as solicita��es que foram finalizadas no prazo Collection<SolicitacaoServicoDTO> listaSolicitacoesAtendidasGrupoBaixa = (Collection<SolicitacaoServicoDTO>) solicitacaoServicoService.findByIdGrupoEDataAtendidasBaixa(idGrupo, dataInicio, dataFim); Collection<SolicitacaoServicoDTO> listaSolicitacoesAtendidasGrupoMedia = (Collection<SolicitacaoServicoDTO>) solicitacaoServicoService.findByIdGrupoEDataAtendidasMedia(idGrupo, dataInicio, dataFim); Collection<SolicitacaoServicoDTO> listaSolicitacoesAtendidasGrupoAlta = (Collection<SolicitacaoServicoDTO>) solicitacaoServicoService.findByIdGrupoEDataAtendidasAlta(idGrupo, dataInicio, dataFim); Integer qtdSolicitacoesAtendidasGrupoBaixa = new Integer(0); Integer qtdSolicitacoesAtendidasGrupoMedia = new Integer(0); Integer qtdSolicitacoesAtendidasGrupoAlta = new Integer(0); if(listaSolicitacoesAtendidasGrupoBaixa != null) qtdSolicitacoesAtendidasGrupoBaixa = listaSolicitacoesAtendidasGrupoBaixa.size(); if(listaSolicitacoesAtendidasGrupoMedia != null) qtdSolicitacoesAtendidasGrupoMedia = listaSolicitacoesAtendidasGrupoMedia.size(); if (listaSolicitacoesAtendidasGrupoAlta != null) qtdSolicitacoesAtendidasGrupoAlta = listaSolicitacoesAtendidasGrupoAlta.size(); Integer qtdPontosPositivosBaixa = qtdSolicitacoesAtendidasGrupoBaixa * pontosSlaBaixoNoPrazo; Integer qtdPontosPositivosMedia = qtdSolicitacoesAtendidasGrupoMedia * pontosSlaMedioNoPrazo; Integer qtdPontosPositivosAlta = qtdSolicitacoesAtendidasGrupoAlta * pontosSlaAltoNoPrazo; //Calcular os pontos negativos. //Solicitacoes com retorno Integer qtdPontosNegativosBaixa = new Integer(0); Integer qtdPontosNegativosMedia = new Integer(0); Integer qtdPontosNegativosAlta = new Integer(0); //variavel criada para controlar a pontua��o negativa, n�o deixar calcular duas vezes caso haja retorno Boolean jaCalculou; if(listaSolicitacoesGrupoTotal != null){ SolicitacaoServicoDTO solicitacaoAux = new SolicitacaoServicoDTO(); solicitacaoAux.setDataInicio(dataInicio); solicitacaoAux.setDataFim(dataFim); RelatorioQuantitativoRetorno retornos = new RelatorioQuantitativoRetorno(); Collection<RelatorioQuantitativoRetornoListaDTO> listaPorPeriodo = retornos.trazListaRetornos(solicitacaoAux, document.getLanguage()); for (SolicitacaoServicoDTO solicitacaoServicoDTO : listaSolicitacoesGrupoTotal) { jaCalculou = false; for (RelatorioQuantitativoRetornoListaDTO relatorioQuantitativoRetornoListaDTO : listaPorPeriodo) { Collection<RelatorioQuantitativoRetornoDTO> col = relatorioQuantitativoRetornoListaDTO.getListaPorPeriodo(); for (RelatorioQuantitativoRetornoDTO relatorioQuantitativoRetornoDTO : col) { if(relatorioQuantitativoRetornoDTO.getIdSolicitacaoServico().intValue() == solicitacaoServicoDTO.getIdSolicitacaoServico().intValue()){ //significa que houve retorno da atividade jaCalculou = true; //retorno + sla estourado if(solicitacaoServicoDTO.getDataHoraLimite() != null){ if(solicitacaoServicoDTO.getDataHoraFim() == null && solicitacaoServicoDTO.getDataHoraLimite().before(UtilDatas.getDataHoraAtual())) { if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("B")) qtdPontosNegativosBaixa += pontosSlaBaixoRetrabalhadoEForaDoPrazo; else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("M")) qtdPontosNegativosMedia += pontosSlaMedioRetrabalhadoEForaDoPrazo; else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("A")) qtdPontosNegativosAlta += pontosSlaAltoRetrabalhadoEForaDoPrazo; } else { //retorno no prazo if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("B")) qtdPontosNegativosBaixa += pontosSlaBaixoRetrabalhado; else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("M")) qtdPontosNegativosMedia += pontosSlaMedioRetrabalhado; else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("A")) qtdPontosNegativosAlta += pontosSlaAltoRetrabalhado; } } break; } } } if(jaCalculou == false){ //n�o houve retorno mas est� fora do prazo if(solicitacaoServicoDTO.getDataHoraLimite() != null){ if(solicitacaoServicoDTO.getDataHoraFim() == null && solicitacaoServicoDTO.getDataHoraLimite().after(UtilDatas.getDataHoraAtual())){ if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("B")) qtdPontosNegativosBaixa += pontosSlaBaixoForaDoPrazo; else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("M")) qtdPontosNegativosMedia += pontosSlaMedioForaDoPrazo; else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("A")) qtdPontosNegativosAlta += pontosSlaAltoForaDoPrazo; } } if(solicitacaoServicoDTO.getDataHoraFim() != null){ if(solicitacaoServicoDTO.getDataHoraFim().after(solicitacaoServicoDTO.getDataHoraLimite())){ if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("B")) qtdPontosNegativosBaixa += pontosSlaBaixoForaDoPrazo; else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("M")) qtdPontosNegativosMedia += pontosSlaMedioForaDoPrazo; else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("A")) qtdPontosNegativosAlta += pontosSlaAltoForaDoPrazo; } } } } } //criar as variaveis com pontos totais Integer pontosFinaisBaixa = qtdPontosPositivosBaixa + qtdPontosNegativosBaixa; Integer pontosFinaisMedia = qtdPontosPositivosMedia + qtdPontosNegativosMedia; Integer pontosFinaisAlta = qtdPontosPositivosAlta + qtdPontosNegativosAlta; //calcula a m�dia de rendimento parcial Double mediaBaixaDouble = new Double(0); Double mediaMediaDouble = new Double(0); Double mediaAltaDouble = new Double(0); if(qtdTotalPontosBaixa != 0) mediaBaixaDouble = new Double( (double)qtdPontosPositivosBaixa / qtdTotalPontosBaixa).doubleValue(); if(qtdTotalPontosMedia != 0) mediaMediaDouble = new Double( (double)qtdPontosPositivosMedia/ qtdTotalPontosMedia).doubleValue(); if(qtdTotalPontosAlta != 0) mediaAltaDouble = new Double( (double)qtdPontosPositivosAlta / qtdTotalPontosAlta).doubleValue(); String mediaBaixa = Math.round(mediaBaixaDouble * 100) + "%"; String mediaMedia = Math.round(mediaMediaDouble * 100) + "%"; String mediaAlta = Math.round(mediaAltaDouble * 100) + "%"; //calcula m�dia geral //verificar se houve solicita��o daquele tipo int divisor = 0; if (qtdSolicitacoesGrupoBaixa != 0) divisor++; if(qtdSolicitacoesGrupoMedia != 0) divisor++; if(qtdSolicitacoesGrupoAlta != 0) divisor++; Long totalRodape = Math.round((mediaBaixaDouble * 100) + (mediaMediaDouble * 100) + (mediaAltaDouble * 100)); if(divisor == 0) totalRodape = 0l; else totalRodape = totalRodape/divisor; Double a = Double.parseDouble(qtdPontosPositivosBaixa.toString()); Double b = Double.parseDouble(qtdPontosPositivosMedia.toString()); Double c = Double.parseDouble(qtdPontosPositivosAlta.toString()); Double x = Double.parseDouble(qtdTotalPontosBaixa.toString()); Double y = Double.parseDouble(qtdTotalPontosMedia.toString()); Double z = Double.parseDouble(qtdTotalPontosAlta.toString()); Double total; if(x.doubleValue() == 0 && y.doubleValue() == 0 && z.doubleValue() == 0){ total = 0d; } else { total= ((a + b + c) / (x + y + z)) * 100; } String strTotal = UtilFormatacao.formatDouble(total, 2); Long nivelExcelenciaLong = Long.parseLong(nivelExcelencia); ArrayList<Object> listaRespostaBaixaGrupo = new ArrayList<Object>(); listaRespostaBaixaGrupo.add(qtdSolicitacoesGrupoBaixa); listaRespostaBaixaGrupo.add(qtdTotalPontosBaixa); listaRespostaBaixaGrupo.add(qtdPontosPositivosBaixa); listaRespostaBaixaGrupo.add(qtdPontosNegativosBaixa); listaRespostaBaixaGrupo.add(mediaBaixa); ArrayList<Object> listaRespostaMediaGrupo = new ArrayList<Object>(); listaRespostaMediaGrupo.add(qtdSolicitacoesGrupoMedia); listaRespostaMediaGrupo.add(qtdTotalPontosMedia); listaRespostaMediaGrupo.add(qtdPontosPositivosMedia); listaRespostaMediaGrupo.add(qtdPontosNegativosMedia); listaRespostaMediaGrupo.add(mediaMedia); ArrayList<Object> listaRespostaAltaGrupo = new ArrayList<Object>(); listaRespostaAltaGrupo.add(qtdSolicitacoesGrupoAlta); listaRespostaAltaGrupo.add(qtdTotalPontosAlta); listaRespostaAltaGrupo.add(qtdPontosPositivosAlta); listaRespostaAltaGrupo.add(qtdPontosNegativosAlta); listaRespostaAltaGrupo.add(mediaAlta); ArrayList<Object> listaRodape = new ArrayList<Object>(); listaRodape.add(qtdSolicitacoesGrupoBaixa + qtdSolicitacoesGrupoMedia + qtdSolicitacoesGrupoAlta); listaRodape.add(qtdTotalPontosBaixa + qtdTotalPontosMedia + qtdTotalPontosAlta); listaRodape.add(qtdPontosPositivosBaixa + qtdPontosPositivosMedia + qtdPontosPositivosAlta); listaRodape.add(qtdPontosNegativosBaixa + qtdPontosNegativosMedia + qtdPontosNegativosAlta); listaRodape.add(totalRodape); ArrayList<Object> listaTotal = new ArrayList<Object>(); listaTotal.add(strTotal); listaTotal.add(nivelExcelenciaLong); ArrayList<Object> listaResposta = new ArrayList<Object>(); listaResposta.add(listaRespostaBaixaGrupo); listaResposta.add(listaRespostaMediaGrupo); listaResposta.add(listaRespostaAltaGrupo); listaResposta.add(listaTotal); listaResposta.add(listaRodape); return listaResposta; } public String getNivelExcelenciaExigido(){ String nivelExcelencia = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.NIVEL_EXCELENCIA_EXIGIDO, "90"); return nivelExcelencia; } public boolean validaFormatoNivelExcelencia(String nivelExcelencia){ int tamanhoString = nivelExcelencia.trim().length(); try { Integer numero = Integer.parseInt(nivelExcelencia.substring(0, tamanhoString)); } catch (NumberFormatException e) { // TODO Auto-generated catch block e.printStackTrace(); return false; } return true; } public void calculaPontuacaoPessoaExecucao(Integer idPessoa, Date dataInicio, Date dataFim, DocumentHTML document) throws ServiceException, Exception{ SolicitacaoServicoService solicitacaoServicoService = (SolicitacaoServicoService) ServiceLocator.getInstance().getService(SolicitacaoServicoService.class, null); ControleRendimentoExecucaoDTO controle = (ControleRendimentoExecucaoDTO) document.getBean(); Collection<ControleRendimentoExecucaoDTO> colecao = new ArrayList<ControleRendimentoExecucaoDTO>(); if(idPessoa == null){ //listar todas as pessoas Collection<EmpregadoDTO> listaEmpregadosFabrica = listaEmpregadosDoGrupo(controle.getIdGrupo()); for (EmpregadoDTO empregadoDTO : listaEmpregadosFabrica) { UsuarioService usuarioService = (UsuarioService) ServiceLocator.getInstance().getService(UsuarioService.class, null); UsuarioDTO usuarioDto = (UsuarioDTO) usuarioService.restoreByIdEmpregado(empregadoDTO.getIdEmpregado()); if(usuarioDto != null){ Collection<SolicitacaoServicoDTO> listaSolicitacoesAtendidasPessoa = (Collection<SolicitacaoServicoDTO>) solicitacaoServicoService.findByIdPessoaEDataAtendidas(controle.getIdGrupo(), usuarioDto.getLogin(), usuarioDto.getNomeUsuario(), dataInicio, dataFim); //calcula os pontos positivos da pessoa Integer qtdTotalPontosPositivos = calculaQtdTotalPontosPositivosDaPessoa(listaSolicitacoesAtendidasPessoa); //calcular os pontos negativos por pessoa. qtdItensRetornados = 0; Collection<SolicitacaoServicoDTO> listaTotalSolicitacoesPessoa = (Collection<SolicitacaoServicoDTO>) solicitacaoServicoService.findByIdPessoaEData(controle.getIdGrupo(), usuarioDto.getLogin(), usuarioDto.getNomeUsuario(), dataInicio, dataFim); Integer qtdTotalPontosnegativos = calculaQtdTotalPontosNegativosPessoa(listaTotalSolicitacoesPessoa, dataInicio, dataFim, document); Integer pontosTotal = qtdTotalPontosPositivos + qtdTotalPontosnegativos; ControleRendimentoExecucaoDTO controleRendimento1; if(pontosTotal < 0) controleRendimento1 = new ControleRendimentoExecucaoDTO(usuarioDto.getNomeUsuario(), pontosTotal.toString(), "N�o", usuarioDto.getIdUsuario()); else controleRendimento1 = new ControleRendimentoExecucaoDTO(usuarioDto.getNomeUsuario(), pontosTotal.toString(), "Sim", usuarioDto.getIdUsuario()); colecao.add(controleRendimento1); } } if (colecao != null) { HTMLTable table; table = document.getTableById("tblrendimentoPessoaExecucao"); table.deleteAllRows(); table.addRowsByCollection(colecao, new String[] {"", "nomePessoa", "qtdTotalPontos", "aprovacao"}, null, null, null, null, null); } } else { EmpregadoDTO empregado = new EmpregadoDTO(); empregado.setIdEmpregado(idPessoa); EmpregadoService empregadoService = (EmpregadoService) ServiceLocator.getInstance().getService(EmpregadoService.class, null); EmpregadoDTO empregadoDTO = (EmpregadoDTO) empregadoService.restore(empregado); UsuarioService usuarioService = (UsuarioService) ServiceLocator.getInstance().getService(UsuarioService.class, null); UsuarioDTO usuarioDto = (UsuarioDTO) usuarioService.restoreByIdEmpregado(empregadoDTO.getIdEmpregado()); if(usuarioDto != null){ Collection<SolicitacaoServicoDTO> listaSolicitacoesAtendidasPessoa = (Collection<SolicitacaoServicoDTO>) solicitacaoServicoService.findByIdPessoaEDataAtendidas(controle.getIdGrupo(), usuarioDto.getLogin(), usuarioDto.getNomeUsuario(), dataInicio, dataFim); //calcula os pontos positivos da pessoa Integer qtdTotalPontosPositivos = calculaQtdTotalPontosPositivosDaPessoa(listaSolicitacoesAtendidasPessoa); //calcular os pontos negativos por pessoa. Collection<SolicitacaoServicoDTO> listaTotalSolicitacoesPessoa = (Collection<SolicitacaoServicoDTO>) solicitacaoServicoService.findByIdPessoaEData(controle.getIdGrupo(), usuarioDto.getLogin(), usuarioDto.getNomeUsuario(), dataInicio, dataFim); Integer qtdTotalPontosnegativos = calculaQtdTotalPontosNegativosPessoa(listaTotalSolicitacoesPessoa, dataInicio, dataFim, document); Integer pontosTotal = qtdTotalPontosPositivos + qtdTotalPontosnegativos; ControleRendimentoExecucaoDTO controleRendimento1; if(pontosTotal < 0) controleRendimento1 = new ControleRendimentoExecucaoDTO(usuarioDto.getNomeUsuario(), pontosTotal.toString(), "N�o", usuarioDto.getIdUsuario()); else controleRendimento1 = new ControleRendimentoExecucaoDTO(usuarioDto.getNomeUsuario(), pontosTotal.toString(), "Sim", usuarioDto.getIdUsuario()); colecao.add(controleRendimento1); if (colecao != null) { HTMLTable table; table = document.getTableById("tblrendimentoPessoa"); table.deleteAllRows(); table.addRowsByCollection(colecao, new String[] {"", "nomePessoa", "qtdTotalPontos", "aprovacao"}, null, null, null, null, null); } } } return; } public void calculaPontuacaoPessoaExecucaoGrupoTeste(Integer idPessoa, Date dataInicio, Date dataFim, DocumentHTML document) throws ServiceException, Exception{ //esse m�todo serve apenas para calcular a pontua��o do grupo Teste da f�brica SolicitacaoServicoService solicitacaoServicoService = (SolicitacaoServicoService) ServiceLocator.getInstance().getService(SolicitacaoServicoService.class, null); OcorrenciaSolicitacaoService ocorrenciaServicoService = (OcorrenciaSolicitacaoService) ServiceLocator.getInstance().getService(OcorrenciaSolicitacaoService.class, null); ControleRendimentoExecucaoDTO controle = (ControleRendimentoExecucaoDTO) document.getBean(); UsuarioService usuarioService = (UsuarioService) ServiceLocator.getInstance().getService(UsuarioService.class, null); Collection<ControleRendimentoExecucaoDTO> colecao = new ArrayList<ControleRendimentoExecucaoDTO>(); if(idPessoa == null){ //listar todas as pessoas Collection<EmpregadoDTO> listaEmpregadosTeste = listaEmpregadosDoGrupo(idGrupoTeste); for (EmpregadoDTO empregadoTesteDTO : listaEmpregadosTeste) { Integer qtdPontosPositivosBaixo = new Integer(0); Integer qtdPontosPositivosMedio = new Integer(0); Integer qtdPontosPositivosAlto = new Integer(0); Integer qtdPontosNegativosBaixa = new Integer(0); Integer qtdPontosNegativosMedia = new Integer(0); Integer qtdPontosNegativosAlta = new Integer(0); UsuarioDTO usuarioTesteDto = (UsuarioDTO) usuarioService.restoreByIdEmpregado(empregadoTesteDTO.getIdEmpregado()); if(usuarioTesteDto != null){ Collection<OcorrenciaSolicitacaoDTO> listaSolicitacoesAtendidasPessoa = (Collection<OcorrenciaSolicitacaoDTO>) ocorrenciaServicoService.findByIdPessoaEDataAtendidasGrupoTeste(usuarioTesteDto.getIdUsuario(), dataInicio, dataFim); if(listaSolicitacoesAtendidasPessoa != null) { for (OcorrenciaSolicitacaoDTO ocorrenciaDTO : listaSolicitacoesAtendidasPessoa) { if(ocorrenciaDTO.getUrgencia().equalsIgnoreCase("B")) qtdPontosPositivosBaixo += pontosSlaBaixoNoPrazo; if(ocorrenciaDTO.getUrgencia().equalsIgnoreCase("M")) qtdPontosPositivosMedio += pontosSlaMedioNoPrazo; if(ocorrenciaDTO.getUrgencia().equalsIgnoreCase("A")) qtdPontosPositivosAlto += pontosSlaAltoNoPrazo; } } } Integer qtdTotalPontosPositivos = qtdPontosPositivosBaixo + qtdPontosPositivosMedio + qtdPontosPositivosAlto; //calcular os pontos negativos por pessoa. Collection<SolicitacaoServicoDTO> listaTotalSolicitacoesPessoa = null; if(controle != null && usuarioTesteDto != null){ listaTotalSolicitacoesPessoa = (Collection<SolicitacaoServicoDTO>) solicitacaoServicoService.findByIdPessoaEData(controle.getIdGrupo(), usuarioTesteDto.getLogin(), usuarioTesteDto.getNomeUsuario(), dataInicio, dataFim); } //pontos de retorno if(listaTotalSolicitacoesPessoa != null){ Boolean jaCalculou; SolicitacaoServicoDTO solicitacaoAux = new SolicitacaoServicoDTO(); solicitacaoAux.setDataInicio(dataInicio); solicitacaoAux.setDataFim(dataFim); RelatorioQuantitativoRetorno retornos = new RelatorioQuantitativoRetorno(); Collection<RelatorioQuantitativoRetornoListaDTO> listaPorPeriodo = retornos.trazListaRetornos(solicitacaoAux, document.getLanguage()); for (SolicitacaoServicoDTO solicitacaoServicoDTO : listaTotalSolicitacoesPessoa) { jaCalculou = false; for (RelatorioQuantitativoRetornoListaDTO relatorioQuantitativoRetornoListaDTO : listaPorPeriodo) { Collection<RelatorioQuantitativoRetornoDTO> col = relatorioQuantitativoRetornoListaDTO.getListaPorPeriodo(); for (RelatorioQuantitativoRetornoDTO relatorioQuantitativoRetornoDTO : col) { if(relatorioQuantitativoRetornoDTO.getIdSolicitacaoServico().intValue() == solicitacaoServicoDTO.getIdSolicitacaoServico().intValue()){ //significa que houve retorno da atividade jaCalculou = true; //retorno + sla estourado if(solicitacaoServicoDTO.getDataHoraLimite() != null){ if(solicitacaoServicoDTO.getDataHoraLimite().before(UtilDatas.getDataHoraAtual())) { if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("B")) qtdPontosNegativosBaixa += pontosSlaBaixoRetrabalhadoEForaDoPrazo; else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("M")) qtdPontosNegativosMedia += pontosSlaMedioRetrabalhadoEForaDoPrazo; else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("A")) qtdPontosNegativosAlta += pontosSlaAltoRetrabalhadoEForaDoPrazo; } else { //retorno no prazo if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("B")) qtdPontosNegativosBaixa += pontosSlaBaixoRetrabalhado; else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("M")) qtdPontosNegativosMedia += pontosSlaMedioRetrabalhado; else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("A")) qtdPontosNegativosAlta += pontosSlaAltoRetrabalhado; } } } } } if(jaCalculou == false){ //n�o houve retorno mas est� fora do prazo if(solicitacaoServicoDTO.getDataHoraLimite() != null){ if(solicitacaoServicoDTO.getDataHoraFim() == null && solicitacaoServicoDTO.getDataHoraLimite().after(UtilDatas.getDataHoraAtual())){ if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("B")) qtdPontosNegativosBaixa += pontosSlaBaixoForaDoPrazo; else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("M")) qtdPontosNegativosMedia += pontosSlaMedioForaDoPrazo; else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("A")) qtdPontosNegativosAlta += pontosSlaAltoForaDoPrazo; } } if(solicitacaoServicoDTO.getDataHoraFim() != null){ if(solicitacaoServicoDTO.getDataHoraFim().after(solicitacaoServicoDTO.getDataHoraLimite())){ if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("B")) qtdPontosNegativosBaixa += pontosSlaBaixoForaDoPrazo; else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("M")) qtdPontosNegativosMedia += pontosSlaMedioForaDoPrazo; else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("A")) qtdPontosNegativosAlta += pontosSlaAltoForaDoPrazo; } } } } } Integer qtdTotalPontosnegativos = qtdPontosNegativosBaixa + qtdPontosNegativosMedia + qtdPontosNegativosAlta; Integer pontosTotal = qtdTotalPontosPositivos + qtdTotalPontosnegativos; ControleRendimentoExecucaoDTO controleRendimento1; if(pontosTotal < 0) controleRendimento1 = new ControleRendimentoExecucaoDTO(usuarioTesteDto.getNomeUsuario(), pontosTotal.toString(), "N�o", usuarioTesteDto.getIdUsuario()); else controleRendimento1 = new ControleRendimentoExecucaoDTO(usuarioTesteDto.getNomeUsuario(), pontosTotal.toString(), "Sim", usuarioTesteDto.getIdUsuario()); colecao.add(controleRendimento1); if (colecao != null) { HTMLTable table; table = document.getTableById("tblrendimentoPessoaExecucao"); table.deleteAllRows(); table.addRowsByCollection(colecao, new String[] {"", "nomePessoa", "qtdTotalPontos", "aprovacao"}, null, null, null, null, null); } } }else { EmpregadoDTO empregado = new EmpregadoDTO(); empregado.setIdEmpregado(idPessoa); EmpregadoService empregadoService = (EmpregadoService) ServiceLocator.getInstance().getService(EmpregadoService.class, null); EmpregadoDTO empregadoDTO = (EmpregadoDTO) empregadoService.restore(empregado); //UsuarioService usuarioService = (UsuarioService) ServiceLocator.getInstance().getService(UsuarioService.class, null); UsuarioDTO usuarioDto = (UsuarioDTO) usuarioService.restoreByIdEmpregado(empregadoDTO.getIdEmpregado()); if(usuarioDto != null){ Integer qtdPontosPositivosBaixo = new Integer(0); Integer qtdPontosPositivosMedio = new Integer(0); Integer qtdPontosPositivosAlto = new Integer(0); Collection<SolicitacaoServicoDTO> listaSolicitacoesAtendidasPessoa = (Collection<SolicitacaoServicoDTO>) solicitacaoServicoService.findByIdPessoaEDataAtendidas(controle.getIdGrupo(), usuarioDto.getLogin(), usuarioDto.getNomeUsuario(), dataInicio, dataFim); if(listaSolicitacoesAtendidasPessoa != null) { for (SolicitacaoServicoDTO solicitacaoServicoDTO : listaSolicitacoesAtendidasPessoa) { if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("B")) qtdPontosPositivosBaixo += pontosSlaBaixoNoPrazo; if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("M")) qtdPontosPositivosMedio += pontosSlaMedioNoPrazo; if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("A")) qtdPontosPositivosAlto += pontosSlaAltoNoPrazo; } } Integer qtdTotalPontosPositivos = qtdPontosPositivosBaixo + qtdPontosPositivosMedio + qtdPontosPositivosAlto; //calcular os pontos negativos por pessoa. Integer qtdPontosNegativosBaixa = new Integer(0); Integer qtdPontosNegativosMedia = new Integer(0); Integer qtdPontosNegativosAlta = new Integer(0); Collection<SolicitacaoServicoDTO> listaTotalSolicitacoesPessoa = (Collection<SolicitacaoServicoDTO>) solicitacaoServicoService.findByIdPessoaEData(controle.getIdGrupo(), usuarioDto.getLogin(), usuarioDto.getNomeUsuario(), dataInicio, dataFim); //pontos de retorno if(listaTotalSolicitacoesPessoa != null){ Boolean jaCalculou; SolicitacaoServicoDTO solicitacaoAux = new SolicitacaoServicoDTO(); solicitacaoAux.setDataInicio(dataInicio); solicitacaoAux.setDataFim(dataFim); RelatorioQuantitativoRetorno retornos = new RelatorioQuantitativoRetorno(); Collection<RelatorioQuantitativoRetornoListaDTO> listaPorPeriodo = retornos.trazListaRetornos(solicitacaoAux, document.getLanguage()); for (SolicitacaoServicoDTO solicitacaoServicoDTO : listaTotalSolicitacoesPessoa) { jaCalculou = false; for (RelatorioQuantitativoRetornoListaDTO relatorioQuantitativoRetornoListaDTO : listaPorPeriodo) { Collection<RelatorioQuantitativoRetornoDTO> col = relatorioQuantitativoRetornoListaDTO.getListaPorPeriodo(); for (RelatorioQuantitativoRetornoDTO relatorioQuantitativoRetornoDTO : col) { if(relatorioQuantitativoRetornoDTO.getIdSolicitacaoServico().intValue() == solicitacaoServicoDTO.getIdSolicitacaoServico().intValue()){ //significa que houve retorno da atividade jaCalculou = true; //retorno + sla estourado if(solicitacaoServicoDTO.getDataHoraLimite() != null){ if(solicitacaoServicoDTO.getDataHoraLimite().before(UtilDatas.getDataHoraAtual())) { if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("B")) qtdPontosNegativosBaixa += pontosSlaBaixoRetrabalhadoEForaDoPrazo; else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("M")) qtdPontosNegativosMedia += pontosSlaMedioRetrabalhadoEForaDoPrazo; else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("A")) qtdPontosNegativosAlta += pontosSlaAltoRetrabalhadoEForaDoPrazo; } else { //retorno no prazo if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("B")) qtdPontosNegativosBaixa += pontosSlaBaixoRetrabalhado; else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("M")) qtdPontosNegativosMedia += pontosSlaMedioRetrabalhado; else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("A")) qtdPontosNegativosAlta += pontosSlaAltoRetrabalhado; } } } } } if(jaCalculou == false){ //n�o houve retorno mas est� fora do prazo if(solicitacaoServicoDTO.getDataHoraLimite() != null){ if(solicitacaoServicoDTO.getDataHoraFim() == null && solicitacaoServicoDTO.getDataHoraLimite().after(UtilDatas.getDataHoraAtual())){ if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("B")) qtdPontosNegativosBaixa += pontosSlaBaixoForaDoPrazo; else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("M")) qtdPontosNegativosMedia += pontosSlaMedioForaDoPrazo; else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("A")) qtdPontosNegativosAlta += pontosSlaAltoForaDoPrazo; } } if(solicitacaoServicoDTO.getDataHoraFim() != null){ if(solicitacaoServicoDTO.getDataHoraFim().after(solicitacaoServicoDTO.getDataHoraLimite())){ if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("B")) qtdPontosNegativosBaixa += pontosSlaBaixoForaDoPrazo; else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("M")) qtdPontosNegativosMedia += pontosSlaMedioForaDoPrazo; else if(solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase("A")) qtdPontosNegativosAlta += pontosSlaAltoForaDoPrazo; } } } } } Integer qtdTotalPontosnegativos = qtdPontosNegativosBaixa + qtdPontosNegativosMedia + qtdPontosNegativosAlta; Integer pontosTotal = qtdTotalPontosPositivos + qtdTotalPontosnegativos; ControleRendimentoExecucaoDTO controleRendimento1; if(pontosTotal < 0) controleRendimento1 = new ControleRendimentoExecucaoDTO(usuarioDto.getNomeUsuario(), pontosTotal.toString(), "N�o", usuarioDto.getIdUsuario()); else controleRendimento1 = new ControleRendimentoExecucaoDTO(usuarioDto.getNomeUsuario(), pontosTotal.toString(), "Sim", usuarioDto.getIdUsuario()); colecao.add(controleRendimento1); if (colecao != null) { HTMLTable table; table = document.getTableById("tblrendimentoPessoa"); table.deleteAllRows(); table.addRowsByCollection(colecao, new String[] {"", "nomePessoa", "qtdTotalPontos", "aprovacao"}, null, null, null, null, null); } } } return; } public Collection<EmpregadoDTO> listaEmpregadosDoGrupo(Integer idGrupo) throws ServiceException, Exception{ GrupoEmpregadoService grupoEmpregadoService = (GrupoEmpregadoService) ServiceLocator.getInstance().getService(GrupoEmpregadoService.class, null); EmpregadoService empregadoService = (EmpregadoService) ServiceLocator.getInstance().getService(EmpregadoService.class, null); Collection<GrupoEmpregadoDTO> grupo = (Collection<GrupoEmpregadoDTO>) grupoEmpregadoService.findByIdGrupo(idGrupo); Collection<EmpregadoDTO> empregados = new ArrayList<EmpregadoDTO>(); for (GrupoEmpregadoDTO grupoEmpregadoDTO : grupo) { EmpregadoDTO empregado = new EmpregadoDTO(); empregado.setIdEmpregado(grupoEmpregadoDTO.getIdEmpregado()); empregado = (EmpregadoDTO) empregadoService.restore(empregado); empregados.add(empregado); } return empregados; } public void fecharMes(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws ServiceException, Exception{ ControleRendimento controleRendimento = new ControleRendimento(); controleRendimento.fecharMes(document, request, response, colecaoPessoasGlobal); } public void imprimirRelatorioFuncionarioMaisEficiente(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { ControleRendimentoExecucaoDTO controleRendimentoDto = (ControleRendimentoExecucaoDTO) document.getBean(); ControleRendimentoUsuarioDTO usuarioDto = new ControleRendimentoUsuarioDTO(); usuarioDto.setIdGrupo(controleRendimentoDto.getIdGrupoRelatorio()); usuarioDto.setMes(controleRendimentoDto.getMes()); usuarioDto.setAno(controleRendimentoDto.getAno()); if(controleRendimentoDto.getIdGrupoRelatorio() == null){ document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); document.alert(UtilI18N.internacionaliza(request, "controle.grupoObrigatorio")); return; } ControleRendimentoUsuarioService usuarioService = (ControleRendimentoUsuarioService) ServiceLocator.getInstance().getService(ControleRendimentoUsuarioService.class, null); Collection<ControleRendimentoUsuarioDTO> col = usuarioService.findByIdControleRendimentoUsuario(usuarioDto.getIdGrupo(), usuarioDto.getMes(), usuarioDto.getAno()); ControleRendimentoUsuarioDTO usuarioMaisEficiente = new ControleRendimentoUsuarioDTO(); if (col != null) { Collections.sort((List<ControleRendimentoUsuarioDTO>) col); Collections.reverse((List<ControleRendimentoUsuarioDTO>) col); if(col.iterator().hasNext()) usuarioMaisEficiente = col.iterator().next(); } UsuarioService usuarioService1 = (UsuarioService) ServiceLocator.getInstance().getService(UsuarioService.class, null); UsuarioDTO usuarioAux = new UsuarioDTO(); usuarioAux.setIdUsuario(usuarioMaisEficiente.getIdUsuario()); UsuarioDTO usuario = null; if(usuarioAux.getIdUsuario() != null) { usuario = (UsuarioDTO) usuarioService1.restore(usuarioAux); usuarioMaisEficiente.setNomeUsuario(usuario.getNomeUsuario()); } if(usuarioMaisEficiente.getQtdTotalPontos() != null) usuarioMaisEficiente.setQtdTotalPontos(usuarioMaisEficiente.getQtdTotalPontos()/10); Collection<ControleRendimentoUsuarioDTO> colFinal = new ArrayList<ControleRendimentoUsuarioDTO>(); colFinal.add(usuarioMaisEficiente); JRDataSource dataSource = null; HttpSession session = ((HttpServletRequest) request).getSession(); usuario = WebUtil.getUsuario(request); Map<String, Object> parametros = new HashMap<String, Object>(); parametros = UtilRelatorio.trataInternacionalizacaoLocale(session, parametros); parametros.put("TITULO_RELATORIO", UtilI18N.internacionaliza(request, "controle.melhorFuncionario")); parametros.put("CIDADE", UtilI18N.internacionaliza(request, "citcorpore.comum.relatorioCidade")); parametros.put("DATA_HORA", UtilDatas.getDataHoraAtual()); parametros.put("NOME_USUARIO", usuario.getNomeUsuario()); if (colFinal == null || colFinal.size() == 0 || usuarioMaisEficiente.getIdUsuario() == null) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.relatorioVazio")); document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); return; } try { dataSource = new JRBeanCollectionDataSource(colFinal); java.util.Date dt = new java.util.Date(); String strCompl = "" + dt.getTime(); String caminhoJasper = CITCorporeUtil.CAMINHO_REAL_APP + Constantes.getValue("CAMINHO_RELATORIOS") + "RelatorioControleRendimentoFuncionarioMaisEficiente.jasper"; String diretorioReceita = CITCorporeUtil.CAMINHO_REAL_APP + "/tempFiles"; String diretorioRelativoOS = Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/tempFiles"; JRSwapFile arquivoSwap = new JRSwapFile(diretorioReceita, 4096, 25); // Instancia o virtualizador JRAbstractLRUVirtualizer virtualizer = new JRSwapFileVirtualizer(25, arquivoSwap, true); // Seta o parametro REPORT_VIRTUALIZER com a inst�ncia da virtualiza��o parametros.put(JRParameter.REPORT_VIRTUALIZER, virtualizer); // Preenche o relat�rio e exibe numa GUI JasperPrint print = JasperFillManager.fillReport(caminhoJasper, parametros, dataSource); // JasperViewer.viewReport(print,false); JasperExportManager.exportReportToPdfFile(print, diretorioReceita + "/RelatorioControleRendimentoFuncionarioMaisEficiente" + strCompl + "_" + usuario.getIdUsuario() + ".pdf"); document.executeScript("window.open('" + Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/printPDF/printPDF.jsp?url=" + diretorioRelativoOS + "/RelatorioControleRendimentoFuncionarioMaisEficiente" + strCompl + "_" + usuario.getIdUsuario() + ".pdf')"); } catch (OutOfMemoryError e) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.erro.erroServidor")); } document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); } public void imprimirRelatorioFuncionarioMenosEficiente(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { ControleRendimentoExecucaoDTO controleRendimentoDto = (ControleRendimentoExecucaoDTO) document.getBean(); ControleRendimentoUsuarioDTO usuarioDto = new ControleRendimentoUsuarioDTO(); usuarioDto.setIdGrupo(controleRendimentoDto.getIdGrupoRelatorio()); usuarioDto.setMes(controleRendimentoDto.getMes()); usuarioDto.setAno(controleRendimentoDto.getAno()); if(controleRendimentoDto.getIdGrupoRelatorio() == null){ document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); document.alert(UtilI18N.internacionaliza(request, "controle.grupoObrigatorio")); return; } ControleRendimentoUsuarioService usuarioService = (ControleRendimentoUsuarioService) ServiceLocator.getInstance().getService(ControleRendimentoUsuarioService.class, null); Collection<ControleRendimentoUsuarioDTO> col = usuarioService.findByIdControleRendimentoUsuario(usuarioDto.getIdGrupo(), usuarioDto.getMes(), usuarioDto.getAno()); ControleRendimentoUsuarioDTO usuarioMenosEficiente = new ControleRendimentoUsuarioDTO(); if (col != null) { Collections.sort((List<ControleRendimentoUsuarioDTO>) col); if(col.iterator().hasNext()) usuarioMenosEficiente = col.iterator().next(); } if (col == null || col.size() == 0) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.relatorioVazio")); document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); return; } UsuarioService usuarioService1 = (UsuarioService) ServiceLocator.getInstance().getService(UsuarioService.class, null); UsuarioDTO usuarioAux = new UsuarioDTO(); usuarioAux.setIdUsuario(usuarioMenosEficiente.getIdUsuario()); if(usuarioAux.getIdUsuario() != null) { UsuarioDTO usuario = (UsuarioDTO) usuarioService1.restore(usuarioAux); usuarioMenosEficiente.setNomeUsuario(usuario.getNomeUsuario()); } if(usuarioMenosEficiente.getQtdPontosPositivos() == null) usuarioMenosEficiente.setQtdPontosPositivos("0"); if(usuarioMenosEficiente.getQtdPontosNegativos() == null) usuarioMenosEficiente.setQtdPontosNegativos("0"); if(usuarioMenosEficiente.getQtdItensEntregues() == null) usuarioMenosEficiente.setQtdItensEntregues("0"); if(usuarioMenosEficiente.getQtdItensRetornados() == null) usuarioMenosEficiente.setQtdItensRetornados("0"); usuarioMenosEficiente.setQtdTotalPontos(usuarioMenosEficiente.getQtdTotalPontos()/10); Collection<ControleRendimentoUsuarioDTO> colFinal = new ArrayList<ControleRendimentoUsuarioDTO>(); colFinal.add(usuarioMenosEficiente); JRDataSource dataSource = null; HttpSession session = ((HttpServletRequest) request).getSession(); usuario = WebUtil.getUsuario(request); Map<String, Object> parametros = new HashMap<String, Object>(); parametros = UtilRelatorio.trataInternacionalizacaoLocale(session, parametros); parametros.put("TITULO_RELATORIO", UtilI18N.internacionaliza(request, "controle.piorFuncionario")); parametros.put("CIDADE", UtilI18N.internacionaliza(request, "citcorpore.comum.relatorioCidade")); parametros.put("DATA_HORA", UtilDatas.getDataHoraAtual()); parametros.put("NOME_USUARIO", usuario.getNomeUsuario()); if (colFinal == null || colFinal.size() == 0) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.relatorioVazio")); document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); return; } try { dataSource = new JRBeanCollectionDataSource(colFinal); java.util.Date dt = new java.util.Date(); String strCompl = "" + dt.getTime(); String caminhoJasper = CITCorporeUtil.CAMINHO_REAL_APP + Constantes.getValue("CAMINHO_RELATORIOS") + "RelatorioControleRendimentoFuncionarioMenosEficiente.jasper"; String diretorioReceita = CITCorporeUtil.CAMINHO_REAL_APP + "/tempFiles"; String diretorioRelativoOS = Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/tempFiles"; JRSwapFile arquivoSwap = new JRSwapFile(diretorioReceita, 4096, 25); // Instancia o virtualizador JRAbstractLRUVirtualizer virtualizer = new JRSwapFileVirtualizer(25, arquivoSwap, true); // Seta o parametro REPORT_VIRTUALIZER com a inst�ncia da virtualiza��o parametros.put(JRParameter.REPORT_VIRTUALIZER, virtualizer); // Preenche o relat�rio e exibe numa GUI JasperPrint print = JasperFillManager.fillReport(caminhoJasper, parametros, dataSource); // JasperViewer.viewReport(print,false); JasperExportManager.exportReportToPdfFile(print, diretorioReceita + "/RelatorioControleRendimentoFuncionarioMenosEficiente" + strCompl + "_" + usuario.getIdUsuario() + ".pdf"); document.executeScript("window.open('" + Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/printPDF/printPDF.jsp?url=" + diretorioRelativoOS + "/RelatorioControleRendimentoFuncionarioMenosEficiente" + strCompl + "_" + usuario.getIdUsuario() + ".pdf')"); } catch (OutOfMemoryError e) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.erro.erroServidor")); } document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); } public void imprimirRelatorioMelhoresFuncionarios(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { ControleRendimentoExecucaoDTO controleRendimentoDto = (ControleRendimentoExecucaoDTO) document.getBean(); ControleRendimentoUsuarioDTO usuarioDto = new ControleRendimentoUsuarioDTO(); usuarioDto.setIdGrupo(controleRendimentoDto.getIdGrupoRelatorio()); usuarioDto.setMes(controleRendimentoDto.getMes()); usuarioDto.setAno(controleRendimentoDto.getAno()); if(controleRendimentoDto.getIdGrupoRelatorio() == null){ document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); document.alert(UtilI18N.internacionaliza(request, "controle.grupoObrigatorio")); return; } Calendar dataAtual = new GregorianCalendar(); java.util.Date trialTime = new java.util.Date(); dataAtual.setTime(trialTime); Calendar dataSeisMesesAtras = calculaPeriodoPesquisa(); //subtrair 1, pois o m�s atual n�o foi fechado. String mesAtual = (dataAtual.get(GregorianCalendar.MONTH)) + ""; String anoAtual = (dataAtual.get(GregorianCalendar.YEAR)) + ""; String mesSeisMesesAtras = (dataSeisMesesAtras.get(GregorianCalendar.MONTH)) + ""; String anoSeisMesesAtras = (dataSeisMesesAtras.get(GregorianCalendar.YEAR)) + ""; ControleRendimentoUsuarioService usuarioService = (ControleRendimentoUsuarioService) ServiceLocator.getInstance().getService(ControleRendimentoUsuarioService.class, null); Collection<ControleRendimentoUsuarioDTO> col; Collection<ControleRendimentoUsuarioDTO> colecaoIdsUsuarios; if(dataAtual.get(GregorianCalendar.YEAR) != dataSeisMesesAtras.get(GregorianCalendar.YEAR) && Integer.parseInt(mesSeisMesesAtras) > Integer.parseInt(mesAtual)){ col = usuarioService.findByIdControleRendimentoMelhoresUsuario(usuarioDto.getIdGrupo(), mesSeisMesesAtras, mesAtual, anoSeisMesesAtras, anoAtual, true); //traz os id's dos usuarios do banco. colecaoIdsUsuarios = usuarioService.findIdsControleRendimentoUsuarioPorPeriodo(usuarioDto.getIdGrupo(), mesSeisMesesAtras, mesAtual, anoAtual, anoAtual, true); } else if(Integer.parseInt(mesSeisMesesAtras) > Integer.parseInt(mesAtual)){ //significa que � de um ano para o outro col = usuarioService.findByIdControleRendimentoMelhoresUsuario(usuarioDto.getIdGrupo(), mesSeisMesesAtras, mesAtual, anoAtual, anoAtual, true); //traz os id's dos usuarios do banco. colecaoIdsUsuarios = usuarioService.findIdsControleRendimentoUsuarioPorPeriodo(usuarioDto.getIdGrupo(), mesSeisMesesAtras, mesAtual, anoAtual, anoAtual, true); } else { col = usuarioService.findByIdControleRendimentoMelhoresUsuario(usuarioDto.getIdGrupo(), mesSeisMesesAtras, mesAtual, anoAtual, anoAtual, false); //traz os id's dos usuarios do banco. colecaoIdsUsuarios = usuarioService.findIdsControleRendimentoUsuarioPorPeriodo(usuarioDto.getIdGrupo(), mesSeisMesesAtras, mesAtual, anoAtual, anoAtual, false); } if(colecaoIdsUsuarios != null) { for (ControleRendimentoUsuarioDTO controleRendimentoUsuarioDTO : colecaoIdsUsuarios) { controleRendimentoUsuarioDTO.setQtdTotalPontos(0.0); } } Double somatorio = 0.0; if (col != null) { for (ControleRendimentoUsuarioDTO usuario : colecaoIdsUsuarios) { somatorio = 0.0; for (ControleRendimentoUsuarioDTO controleRendimentoUsuarioComPontos : col) { if(usuario.getIdUsuario().intValue() == controleRendimentoUsuarioComPontos.getIdUsuario().intValue()){ if(controleRendimentoUsuarioComPontos.getQtdTotalPontos() != null) { somatorio = controleRendimentoUsuarioComPontos.getQtdTotalPontos() + usuario.getQtdTotalPontos(); usuario.setQtdTotalPontos(somatorio); } } } } } if(colecaoIdsUsuarios != null){ for (ControleRendimentoUsuarioDTO controleRendimentoUsuarioDTO : colecaoIdsUsuarios) { controleRendimentoUsuarioDTO.setQtdTotalPontos(controleRendimentoUsuarioDTO.getQtdTotalPontos() / 10); } } //selecionar os 10 melhores = maior qtdTotalPontos ArrayList melhores10Funcionarios = new ArrayList(); if(colecaoIdsUsuarios != null) { for (ControleRendimentoUsuarioDTO usuario : colecaoIdsUsuarios) { melhores10Funcionarios.add(usuario); } } Collections.sort(melhores10Funcionarios); Collections.reverse(melhores10Funcionarios); ArrayList melhores10FuncionariosAux = new ArrayList(); //pega s� os 10 primeiros registros, se n�o tiver 10, pega todos int qtdMinimaFuncionarios = melhores10Funcionarios.size(); if(qtdMinimaFuncionarios < 10){ for (int i = 0; i < qtdMinimaFuncionarios; i++) { melhores10FuncionariosAux.add(melhores10Funcionarios.get(i)); } } else { for (int i = 0; i < 10; i++) { melhores10FuncionariosAux.add(melhores10Funcionarios.get(i)); } } UsuarioService usuarioService1 = (UsuarioService) ServiceLocator.getInstance().getService(UsuarioService.class, null); double somatorioPontos = 0; for (int i = 0; i < melhores10FuncionariosAux.size(); i++) { UsuarioDTO usuarioAux = new UsuarioDTO(); usuarioAux.setIdUsuario(((ControleRendimentoUsuarioDTO) melhores10FuncionariosAux.get(i)).getIdUsuario()); UsuarioDTO usuario = (UsuarioDTO) usuarioService1.restore(usuarioAux); ((ControleRendimentoUsuarioDTO) melhores10FuncionariosAux.get(i)).setNomeUsuario(usuario.getNomeUsuario()); somatorioPontos += ((ControleRendimentoUsuarioDTO) melhores10FuncionariosAux.get(i)).getQtdTotalPontos(); } JRDataSource dataSource = null; HttpSession session = ((HttpServletRequest) request).getSession(); usuario = WebUtil.getUsuario(request); String dataFormatadaParaORelatorio = (Integer.parseInt(mesSeisMesesAtras) + 1) + "/" + anoSeisMesesAtras + " a " + mesAtual + "/" + anoAtual; Map<String, Object> parametros = new HashMap<String, Object>(); parametros = UtilRelatorio.trataInternacionalizacaoLocale(session, parametros); parametros.put("TITULO_RELATORIO", UtilI18N.internacionaliza(request, "controle.melhoresFuncionarios")); parametros.put("PERIODO_PESQUISA", UtilI18N.internacionaliza(request, "avaliacaocontrato.periodo") + " " + dataFormatadaParaORelatorio); parametros.put("CIDADE", UtilI18N.internacionaliza(request, "citcorpore.comum.relatorioCidade")); parametros.put("DATA_HORA", UtilDatas.getDataHoraAtual()); parametros.put("NOME_USUARIO", usuario.getNomeUsuario()); parametros.put("SOMATORIO_PONTOS", UtilI18N.internacionaliza(request, "controle.somatorioTotalPontos") + ": " + somatorioPontos); if (melhores10FuncionariosAux == null || melhores10FuncionariosAux.size() == 0) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.relatorioVazio")); document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); return; } try { dataSource = new JRBeanCollectionDataSource(melhores10FuncionariosAux); java.util.Date dt = new java.util.Date(); String strCompl = "" + dt.getTime(); String caminhoJasper = CITCorporeUtil.CAMINHO_REAL_APP + Constantes.getValue("CAMINHO_RELATORIOS") + "RelatorioControleRendimentoMelhoresFuncionarios.jasper"; String diretorioReceita = CITCorporeUtil.CAMINHO_REAL_APP + "/tempFiles"; String diretorioRelativoOS = Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/tempFiles"; JRSwapFile arquivoSwap = new JRSwapFile(diretorioReceita, 4096, 25); // Instancia o virtualizador JRAbstractLRUVirtualizer virtualizer = new JRSwapFileVirtualizer(25, arquivoSwap, true); // Seta o parametro REPORT_VIRTUALIZER com a inst�ncia da virtualiza��o parametros.put(JRParameter.REPORT_VIRTUALIZER, virtualizer); // Preenche o relat�rio e exibe numa GUI JasperPrint print = JasperFillManager.fillReport(caminhoJasper, parametros, dataSource); // JasperViewer.viewReport(print,false); JasperExportManager.exportReportToPdfFile(print, diretorioReceita + "/RelatorioControleRendimentoMelhoresFuncionarios" + strCompl + "_" + usuario.getIdUsuario() + ".pdf"); document.executeScript("window.open('" + Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/printPDF/printPDF.jsp?url=" + diretorioRelativoOS + "/RelatorioControleRendimentoMelhoresFuncionarios" + strCompl + "_" + usuario.getIdUsuario() + ".pdf')"); } catch (OutOfMemoryError e) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.erro.erroServidor")); } document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); } public Calendar calculaPeriodoPesquisa(){ Calendar calendar = new GregorianCalendar(); java.util.Date trialTime = new java.util.Date(); calendar.setTime(trialTime); calendar.add(Calendar.MONTH, -6); return calendar; } public void imprimirRelatorioPorGrupo(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { ControleRendimentoExecucaoDTO controleRendimentoDto = (ControleRendimentoExecucaoDTO) document.getBean(); ControleRendimentoDTO grupoDto = new ControleRendimentoDTO(); grupoDto.setIdGrupo(controleRendimentoDto.getIdGrupoRelatorio()); grupoDto.setMesApuracao(controleRendimentoDto.getMes()); grupoDto.setAnoApuracao(controleRendimentoDto.getAno()); if(controleRendimentoDto.getIdGrupoRelatorio() == null){ document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); document.alert(UtilI18N.internacionaliza(request, "controle.grupoObrigatorio")); return; } ControleRendimentoService usuarioService = (ControleRendimentoService) ServiceLocator.getInstance().getService(ControleRendimentoService.class, null); Collection<ControleRendimentoDTO> col = usuarioService.findPontuacaoRendimento(grupoDto.getMesApuracao(), grupoDto.getAnoApuracao(), grupoDto.getIdGrupo()); ControleRendimentoDTO grupoAvaliado = new ControleRendimentoDTO(); if (col != null) { if(col.iterator().hasNext()){ grupoAvaliado = col.iterator().next(); } } else { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.relatorioVazio")); document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); return; } GrupoService grupoService = (GrupoService) ServiceLocator.getInstance().getService(GrupoService.class, null); GrupoDTO grupoAux = new GrupoDTO(); grupoAux.setIdGrupo(grupoAvaliado.getIdGrupo()); GrupoDTO grupo = (GrupoDTO) grupoService.restore(grupoAux); grupoAvaliado.setNomeGrupo(grupo.getNome()); Collection<ControleRendimentoDTO> colFinal = new ArrayList<ControleRendimentoDTO>(); colFinal.add(grupoAvaliado); JRDataSource dataSource = null; HttpSession session = ((HttpServletRequest) request).getSession(); usuario = WebUtil.getUsuario(request); Map<String, Object> parametros = new HashMap<String, Object>(); parametros = UtilRelatorio.trataInternacionalizacaoLocale(session, parametros); parametros.put("TITULO_RELATORIO", UtilI18N.internacionaliza(request, "controle.rendimentoGrupo")); parametros.put("CIDADE", UtilI18N.internacionaliza(request, "citcorpore.comum.relatorioCidade")); parametros.put("DATA_HORA", UtilDatas.getDataHoraAtual()); parametros.put("NOME_USUARIO", usuario.getNomeUsuario()); if (colFinal == null || colFinal.size() == 0) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.relatorioVazio")); document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); return; } try { dataSource = new JRBeanCollectionDataSource(colFinal); java.util.Date dt = new java.util.Date(); String strCompl = "" + dt.getTime(); String caminhoJasper = CITCorporeUtil.CAMINHO_REAL_APP + Constantes.getValue("CAMINHO_RELATORIOS") + "RelatorioControleRendimentoPorGrupo.jasper"; String diretorioReceita = CITCorporeUtil.CAMINHO_REAL_APP + "/tempFiles"; String diretorioRelativoOS = Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/tempFiles"; JRSwapFile arquivoSwap = new JRSwapFile(diretorioReceita, 4096, 25); // Instancia o virtualizador JRAbstractLRUVirtualizer virtualizer = new JRSwapFileVirtualizer(25, arquivoSwap, true); // Seta o parametro REPORT_VIRTUALIZER com a inst�ncia da virtualiza��o parametros.put(JRParameter.REPORT_VIRTUALIZER, virtualizer); // Preenche o relat�rio e exibe numa GUI JasperPrint print = JasperFillManager.fillReport(caminhoJasper, parametros, dataSource); // JasperViewer.viewReport(print,false); JasperExportManager.exportReportToPdfFile(print, diretorioReceita + "/RelatorioControleRendimentoPorGrupo" + strCompl + "_" + usuario.getIdUsuario() + ".pdf"); document.executeScript("window.open('" + Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/printPDF/printPDF.jsp?url=" + diretorioRelativoOS + "/RelatorioControleRendimentoPorGrupo" + strCompl + "_" + usuario.getIdUsuario() + ".pdf')"); } catch (OutOfMemoryError e) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.erro.erroServidor")); } document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); } public void imprimirRelatorioPorPessoa(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { ControleRendimentoExecucaoDTO controleRendimentoDto = (ControleRendimentoExecucaoDTO) document.getBean(); ControleRendimentoUsuarioDTO usuarioDto = new ControleRendimentoUsuarioDTO(); usuarioDto.setIdGrupo(controleRendimentoDto.getIdGrupoRelatorio()); usuarioDto.setMes(controleRendimentoDto.getMes()); usuarioDto.setAno(controleRendimentoDto.getAno()); ControleRendimentoUsuarioService usuarioService = (ControleRendimentoUsuarioService) ServiceLocator.getInstance().getService(ControleRendimentoUsuarioService.class, null); Collection<ControleRendimentoUsuarioDTO> col = usuarioService.findByIdControleRendimentoUsuario(usuarioDto.getIdGrupo(), usuarioDto.getMes(), usuarioDto.getAno()); UsuarioService usuarioService1 = (UsuarioService) ServiceLocator.getInstance().getService(UsuarioService.class, null); if(col != null) { for (ControleRendimentoUsuarioDTO controleRendimentoUsuarioDTO : col) { UsuarioDTO usuarioAux = new UsuarioDTO(); usuarioAux.setIdUsuario(controleRendimentoUsuarioDTO.getIdUsuario()); UsuarioDTO usuario = (UsuarioDTO) usuarioService1.restore(usuarioAux); controleRendimentoUsuarioDTO.setNomeUsuario(usuario.getNomeUsuario()); controleRendimentoUsuarioDTO.setQtdTotalPontos(controleRendimentoUsuarioDTO.getQtdTotalPontos()/10); } } JRDataSource dataSource = null; HttpSession session = ((HttpServletRequest) request).getSession(); usuario = WebUtil.getUsuario(request); Map<String, Object> parametros = new HashMap<String, Object>(); parametros = UtilRelatorio.trataInternacionalizacaoLocale(session, parametros); parametros.put("TITULO_RELATORIO", UtilI18N.internacionaliza(request, "controle.rendimentoPessoa")); parametros.put("CIDADE", UtilI18N.internacionaliza(request, "citcorpore.comum.relatorioCidade")); parametros.put("DATA_HORA", UtilDatas.getDataHoraAtual()); parametros.put("NOME_USUARIO", usuario.getNomeUsuario()); if (col == null || col.size() == 0) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.relatorioVazio")); document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); return; } try { dataSource = new JRBeanCollectionDataSource(col); java.util.Date dt = new java.util.Date(); String strCompl = "" + dt.getTime(); String caminhoJasper = CITCorporeUtil.CAMINHO_REAL_APP + Constantes.getValue("CAMINHO_RELATORIOS") + "RelatorioControleRendimentoPorPessoa.jasper"; String diretorioReceita = CITCorporeUtil.CAMINHO_REAL_APP + "/tempFiles"; String diretorioRelativoOS = Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/tempFiles"; JRSwapFile arquivoSwap = new JRSwapFile(diretorioReceita, 4096, 25); // Instancia o virtualizador JRAbstractLRUVirtualizer virtualizer = new JRSwapFileVirtualizer(25, arquivoSwap, true); // Seta o parametro REPORT_VIRTUALIZER com a inst�ncia da virtualiza��o parametros.put(JRParameter.REPORT_VIRTUALIZER, virtualizer); // Preenche o relat�rio e exibe numa GUI JasperPrint print = JasperFillManager.fillReport(caminhoJasper, parametros, dataSource); // JasperViewer.viewReport(print,false); JasperExportManager.exportReportToPdfFile(print, diretorioReceita + "/RelatorioControleRendimentoPorPessoa" + strCompl + "_" + usuario.getIdUsuario() + ".pdf"); document.executeScript("window.open('" + Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/printPDF/printPDF.jsp?url=" + diretorioRelativoOS + "/RelatorioControleRendimentoPorPessoa" + strCompl + "_" + usuario.getIdUsuario() + ".pdf')"); } catch (OutOfMemoryError e) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.erro.erroServidor")); } document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); } public void imprimirRelatorioMediaAtraso(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { ControleRendimentoExecucaoDTO controleRendimentoDto = (ControleRendimentoExecucaoDTO) document.getBean(); ControleRendimentoDTO grupoDto = new ControleRendimentoDTO(); grupoDto.setIdGrupo(controleRendimentoDto.getIdGrupoRelatorio()); grupoDto.setMesApuracao(controleRendimentoDto.getMes()); grupoDto.setAnoApuracao(controleRendimentoDto.getAno()); String numeroSolicitacoes = ""; if(controleRendimentoDto.getIdGrupoRelatorio() == null){ document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); document.alert(UtilI18N.internacionaliza(request, "controle.grupoObrigatorio")); return; } Integer mesInt = Integer.parseInt(controleRendimentoDto.getMes()); Integer ultimoDia = ControleRendimento.confereQualUltimoDiaDoMes(controleRendimentoDto); SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy"); java.util.Date dataInicio = null; java.util.Date dataFim = null; try { dataInicio = (java.util.Date) formatador.parse("01/"+ mesInt +"/" + controleRendimentoDto.getAno()); dataFim = (java.util.Date) formatador.parse(ultimoDia +"/"+ mesInt +"/" + controleRendimentoDto.getAno()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); return; } java.sql.Date dInicio = null; if(dataInicio != null){ dInicio = new java.sql.Date (dataInicio.getTime()); } java.sql.Date dFim = null; if(dataFim != null){ dFim = new java.sql.Date (dataFim.getTime()); } SolicitacaoServicoService solicitacaoServicoService = (SolicitacaoServicoService) ServiceLocator.getInstance().getService(SolicitacaoServicoService.class, null); Collection<SolicitacaoServicoDTO> listaSolicitacoesGrupoTotal = (Collection<SolicitacaoServicoDTO>) solicitacaoServicoService.findByIdGrupoEDataTotal(controleRendimentoDto.getIdGrupoRelatorio(), dInicio, dFim); Collection<SolicitacaoServicoDTO> listaSolicitacoesAtendidasTotal = (Collection<SolicitacaoServicoDTO>) solicitacaoServicoService.findByIdGrupoEDataAtendidasTotal(controleRendimentoDto.getIdGrupoRelatorio(), dInicio, dFim); Collection<SolicitacaoServicoDTO> listaSolicitacoesAtrasadasTotal = (Collection<SolicitacaoServicoDTO>) solicitacaoServicoService.findByIdGrupoEDataAtrasadasTotal(controleRendimentoDto.getIdGrupoRelatorio(), dInicio, dFim); Collection<SolicitacaoServicoDTO> listaSolicitacoesSuspensasTotal = (Collection<SolicitacaoServicoDTO>) solicitacaoServicoService.findByIdGrupoEDataSuspensasTotal(controleRendimentoDto.getIdGrupoRelatorio(), dInicio, dFim); GrupoService grupoService = (GrupoService) ServiceLocator.getInstance().getService(GrupoService.class, null); GrupoDTO grupoAux = new GrupoDTO(); grupoAux.setIdGrupo(grupoDto.getIdGrupo()); GrupoDTO grupo = (GrupoDTO) grupoService.restore(grupoAux); grupoDto.setNomeGrupo(grupo.getNome()); if(listaSolicitacoesGrupoTotal != null){ grupoDto.setQtdSolicitacoes(listaSolicitacoesGrupoTotal.size()); } else { grupoDto.setQtdSolicitacoes(0); } if(listaSolicitacoesAtendidasTotal != null){ grupoDto.setQtdItensEntreguesNoPrazo(listaSolicitacoesAtendidasTotal.size() + ""); } else { grupoDto.setQtdItensEntreguesNoPrazo("0"); } if(listaSolicitacoesAtrasadasTotal != null){ grupoDto.setQtdItensAtrasados(listaSolicitacoesAtrasadasTotal.size() + ""); int contadorMaximo = listaSolicitacoesAtrasadasTotal.size(); int contador = 0; for (SolicitacaoServicoDTO solicitacaoServicoDTO : listaSolicitacoesAtrasadasTotal) { contador++; if(contador < contadorMaximo) numeroSolicitacoes += solicitacaoServicoDTO.getIdSolicitacaoServico().toString() + ", "; else numeroSolicitacoes += solicitacaoServicoDTO.getIdSolicitacaoServico().toString() + "."; } } else { grupoDto.setQtdItensAtrasados("0"); } if(listaSolicitacoesSuspensasTotal != null){ grupoDto.setQtdItensSuspensos(listaSolicitacoesSuspensasTotal.size() + ""); } else { grupoDto.setQtdItensSuspensos("0"); } grupoDto.setNumeroSolicitacoes(numeroSolicitacoes); Double mediaAtraso = (Double.parseDouble(grupoDto.getQtdItensAtrasados()) / Double.parseDouble(grupoDto.getQtdSolicitacoes() + "")) * 100; String mediaAtrasoStr = String.format( "%.2f", mediaAtraso ) + "%"; grupoDto.setMediaAtraso(mediaAtrasoStr); Collection<ControleRendimentoDTO> colFinal = new ArrayList<ControleRendimentoDTO>(); colFinal.add(grupoDto); JRDataSource dataSource = null; HttpSession session = ((HttpServletRequest) request).getSession(); usuario = WebUtil.getUsuario(request); Map<String, Object> parametros = new HashMap<String, Object>(); parametros = UtilRelatorio.trataInternacionalizacaoLocale(session, parametros); parametros.put("TITULO_RELATORIO", UtilI18N.internacionaliza(request, "controle.mediaAtrasoEquipe")); parametros.put("CIDADE", UtilI18N.internacionaliza(request, "citcorpore.comum.relatorioCidade")); parametros.put("DATA_HORA", UtilDatas.getDataHoraAtual()); parametros.put("NOME_USUARIO", usuario.getNomeUsuario()); if (colFinal == null || colFinal.size() == 0) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.relatorioVazio")); document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); return; } try { dataSource = new JRBeanCollectionDataSource(colFinal); java.util.Date dt = new java.util.Date(); String strCompl = "" + dt.getTime(); String caminhoJasper = CITCorporeUtil.CAMINHO_REAL_APP + Constantes.getValue("CAMINHO_RELATORIOS") + "RelatorioControleRendimentoMediaAtrasoEquipe.jasper"; String diretorioReceita = CITCorporeUtil.CAMINHO_REAL_APP + "/tempFiles"; String diretorioRelativoOS = Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/tempFiles"; JRSwapFile arquivoSwap = new JRSwapFile(diretorioReceita, 4096, 25); // Instancia o virtualizador JRAbstractLRUVirtualizer virtualizer = new JRSwapFileVirtualizer(25, arquivoSwap, true); // Seta o parametro REPORT_VIRTUALIZER com a inst�ncia da virtualiza��o parametros.put(JRParameter.REPORT_VIRTUALIZER, virtualizer); // Preenche o relat�rio e exibe numa GUI JasperPrint print = JasperFillManager.fillReport(caminhoJasper, parametros, dataSource); // JasperViewer.viewReport(print,false); JasperExportManager.exportReportToPdfFile(print, diretorioReceita + "/RelatorioControleRendimentoMediaAtrasoEquipe" + strCompl + "_" + usuario.getIdUsuario() + ".pdf"); document.executeScript("window.open('" + Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/printPDF/printPDF.jsp?url=" + diretorioRelativoOS + "/RelatorioControleRendimentoMediaAtrasoEquipe" + strCompl + "_" + usuario.getIdUsuario() + ".pdf')"); } catch (OutOfMemoryError e) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.erro.erroServidor")); } document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); } public ArrayList<Integer> filtraListaRetornos(Collection<RelatorioQuantitativoRetornoListaDTO> listaPorPeriodo){ ArrayList<Integer> arrayPrincipal = new ArrayList<Integer>(); if(listaPorPeriodo != null && (listaPorPeriodo != null || !listaPorPeriodo.isEmpty())){ for (RelatorioQuantitativoRetornoListaDTO relatorioQuantitativoRetornoListaDTO : listaPorPeriodo) { Collection<RelatorioQuantitativoRetornoDTO> col = relatorioQuantitativoRetornoListaDTO.getListaPorPeriodo(); for (RelatorioQuantitativoRetornoDTO relatorioQuantitativoRetornoDTO : col) { arrayPrincipal.add(relatorioQuantitativoRetornoDTO.getIdSolicitacaoServico()); } } for (int i = 0; i < arrayPrincipal.size() - 1; i++ ) { if(arrayPrincipal.get(i).intValue() == arrayPrincipal.get(i+1).intValue()){ arrayPrincipal.remove(i+1); } } return arrayPrincipal; }else{ return null; } } }