package gcom.gui.atendimentopublico.ordemservico; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.Iterator; import gcom.atendimentopublico.ordemservico.ServicoTipo; import gcom.atendimentopublico.ordemservico.bean.GerarBoletimOrdensServicoConcluidasHelper; import gcom.cadastro.localidade.FiltroLocalidade; import gcom.cadastro.localidade.Localidade; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.util.ConstantesSistema; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; /** * [UC0765] Gerar Boletim Ordens Servico Concluidas * * @author Ivan S�rgio * @date 22/04/2008 * */ public class ExibirResumoBoletimOrdensServicoConcluidasAction extends GcomAction { /** * @param actionMapping * @param actionForm * @param httpServletRequest * @param httpServletResponse * @return forward */ public ActionForward execute( ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { // Seta o mapeamento de retorno ActionForward retorno = actionMapping.findForward("exibirResumoBoletimOrdensServicoConcluidasAction"); Fachada fachada = Fachada.getInstancia(); HttpSession sessao = httpServletRequest.getSession(false); // Colecao contendo os Ids das Os Collection<Integer> colecaoIdOrdemServico = new ArrayList(); GerarBoletimOrdensServicoConcluidasActionForm form = (GerarBoletimOrdensServicoConcluidasActionForm) actionForm; if (httpServletRequest.getParameter("encerrarBoletim") == null) { //********************************************************************* // Realiza a Pesquisa para o resumo das OS Concluidas //********************************************************************* Integer idEmpresa = Util.converterStringParaInteger(form.getIdFirma()); Integer idLocalidade = Util.converterStringParaInteger(form.getIdLocalidade()); String anoMesReferenciaBoletim = Util.formatarMesAnoParaAnoMesSemBarra( form.getAnoMesReferenciaEncerramento()); // Valida a Localidade informada FiltroLocalidade filtroLocalidade = new FiltroLocalidade(); filtroLocalidade.adicionarParametro(new ParametroSimples( FiltroLocalidade.ID, idLocalidade)); filtroLocalidade.adicionarParametro(new ParametroSimples( FiltroLocalidade.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO)); Localidade localidade = (Localidade) fachada.pesquisar(filtroLocalidade, Localidade.class.getName()).iterator().next(); if (localidade != null) { form.setNomeLocalidade(localidade.getDescricao()); }else { throw new ActionServletException("pesquisa.localidade.inexistente"); } Collection colecaoDados = fachada.pesquisarResumoOrdensServicoConcluidas( idEmpresa, idLocalidade, anoMesReferenciaBoletim); if (colecaoDados != null && !colecaoDados.isEmpty()) { // Totais Acumulados Integer totalNaoFiscalizadas = 0; Integer totalAprovadas = 0; Integer totalNaoFiscalizadasAprovadas = 0; Integer totalReprovadas = 0; Integer totalEncerradasMesesAnterioresAprovadasMes = 0; Integer totalBoletim = 0; Integer totalHidrometrosInstaladosMuro = 0; Integer totalHidrometrosInstaladosCalcada = 0; Integer totalHidrometrosInstaladosJardim = 0; Integer totalHidrometrosSubstituidosSemTrocaCaixa = 0; Integer totalHidrometrosSubstituidosComTrocaCaixaMuro = 0; Integer totalHidrometrosSubstituidosComTrocaCaixaCalcada = 0; Integer totalTrocaRegistro = 0; // Variavel de controle para o caso do item 3 boolean adicionaOSLista = true; Iterator iColecaoDados = colecaoDados.iterator(); while (iColecaoDados.hasNext()) { GerarBoletimOrdensServicoConcluidasHelper helper = (GerarBoletimOrdensServicoConcluidasHelper) iColecaoDados.next(); //*************************************************************** // Quantidade de OS Encerradas no Mes //*************************************************************** // Total de Nao Fiscalizadas if (helper.getAnoMesReferenciaBoletim().equals(anoMesReferenciaBoletim) && helper.getCodigoFiscalizacao() == 0) { totalNaoFiscalizadas++; } // Total de Aprovadas if (helper.getAnoMesReferenciaBoletim().equals(anoMesReferenciaBoletim) && helper.getCodigoFiscalizacao() == 1) { totalAprovadas++; } // Total Nao Fiscalizadas e Aprovadas totalNaoFiscalizadasAprovadas = totalNaoFiscalizadas + totalAprovadas; // Total Reprovadas if (helper.getAnoMesReferenciaBoletim().equals(anoMesReferenciaBoletim) && helper.getCodigoFiscalizacao() == 2) { totalReprovadas++; } // Total Encerradas em meses Anteriores e Aprovadas no mes if ( (Util.converterStringParaInteger(helper.getAnoMesReferenciaBoletim())) < (Util.converterStringParaInteger(anoMesReferenciaBoletim)) ) { if (helper.getCodigoFiscalizacao() == 1) { // Verifica qual a atual Data de Fiscalizacao Date dataFiscalizacao = null; Integer anoMesFiscalizacao = null; if (helper.getDataFiscalizacao1() != null) { dataFiscalizacao = helper.getDataFiscalizacao1(); }else if (helper.getDataFiscalizacao2() != null) { dataFiscalizacao = helper.getDataFiscalizacao2(); }else if (helper.getDataFiscalizacao3() != null) { dataFiscalizacao = helper.getDataFiscalizacao3(); } anoMesFiscalizacao = Util.recuperaAnoMesDaData(dataFiscalizacao); if (Util.converterStringParaInteger(anoMesReferenciaBoletim).equals(anoMesFiscalizacao)) { totalEncerradasMesesAnterioresAprovadasMes++; } }else { adicionaOSLista = false; } } //*************************************************************** if ( (helper.getCodigoFiscalizacao() == 0) || (helper.getCodigoFiscalizacao() == 1) ) { //*************************************************************** // Total Hidrometro Instalacao //*************************************************************** // Hidrometro Instalados No Muro if (helper.getIdTipoServico().equals(ServicoTipo.TIPO_EFETUAR_INSTALACAO_HIDROMETRO) && helper.getIdLocalInstalacaoHidrometro().equals(8)) { totalHidrometrosInstaladosMuro++; } // Hidrometro Instalados Na Calcada if (helper.getIdTipoServico().equals(ServicoTipo.TIPO_EFETUAR_INSTALACAO_HIDROMETRO) && helper.getIdLocalInstalacaoHidrometro().equals(3)) { totalHidrometrosInstaladosCalcada++; } // Hidrometro Instalados No Jardim if (helper.getIdTipoServico().equals(ServicoTipo.TIPO_EFETUAR_INSTALACAO_HIDROMETRO) && helper.getIdLocalInstalacaoHidrometro().equals(1)) { totalHidrometrosInstaladosJardim++; } //*************************************************************** //*************************************************************** // Total Hidrometro Substituicao //*************************************************************** // Hidrometro Substituidos Sem troca de Caixa if (helper.getIdTipoServico().equals(ServicoTipo.TIPO_EFETUAR_SUBSTITUICAO_HIDROMETRO) && helper.getIndicadorTrocaProtecao() == 2) { totalHidrometrosSubstituidosSemTrocaCaixa++; } // Hidrometro Substituidos Com troca de Caixa no Muro if (helper.getIdTipoServico().equals(ServicoTipo.TIPO_EFETUAR_SUBSTITUICAO_HIDROMETRO) && helper.getIndicadorTrocaProtecao() == 1 && helper.getIdLocalInstalacaoHidrometro().equals(8)) { totalHidrometrosSubstituidosComTrocaCaixaMuro++; } // Hidrometro Substituidos Com troca de Caixa na Calcada if (helper.getIdTipoServico().equals(ServicoTipo.TIPO_EFETUAR_SUBSTITUICAO_HIDROMETRO) && helper.getIndicadorTrocaProtecao() == 1 && helper.getIdLocalInstalacaoHidrometro().equals(3)) { totalHidrometrosSubstituidosComTrocaCaixaCalcada++; } //*************************************************************** } //*************************************************************** // Total das Ordens //*************************************************************** if (helper.getIndicadorTrocaRegistro() == 1) { totalTrocaRegistro++; } //*************************************************************** // Adiciona os Ids das OS para o caso do Codigo de Fiscalizacao = 0 ou 1 if (helper.getCodigoFiscalizacao() == 0 || helper.getCodigoFiscalizacao() == 1) { if (adicionaOSLista) { colecaoIdOrdemServico.add(helper.getIdOrdemServico()); } } adicionaOSLista = true; } // Total do Boletim totalBoletim = totalNaoFiscalizadas + totalAprovadas + totalEncerradasMesesAnterioresAprovadasMes; // Preenche o Form form.setTotalNaoFiscalizadas(totalNaoFiscalizadas); form.setTotalAprovadas(totalAprovadas); form.setTotalNaoFiscalizadasAprovadas(totalNaoFiscalizadasAprovadas); form.setTotalReprovadas(totalReprovadas); form.setTotalEncerradasMesesAnterioresAprovadasMes(totalEncerradasMesesAnterioresAprovadasMes); form.setTotalBoletim(totalBoletim); form.setTotalHidrometrosInstaladosMuro(totalHidrometrosInstaladosMuro); form.setTotalHidrometrosInstaladosCalcada(totalHidrometrosInstaladosCalcada); form.setTotalHidrometrosInstaladosJardim(totalHidrometrosInstaladosJardim); form.setTotalHidrometrosSubstituidosSemTrocaCaixa(totalHidrometrosSubstituidosSemTrocaCaixa); form.setTotalHidrometrosSubstituidosComTrocaCaixaMuro(totalHidrometrosSubstituidosComTrocaCaixaMuro); form.setTotalHidrometrosSubstituidosComTrocaCaixaCalcada(totalHidrometrosSubstituidosComTrocaCaixaCalcada); form.setTotalTrocaRegistro(totalTrocaRegistro); // Coloca a Colecao das Ordens de Servico na Session sessao.setAttribute("colecaoIdOrdemServico", colecaoIdOrdemServico); }else { throw new ActionServletException("atencao.pesquisa.nenhumresultado"); } }else { //********************************************************************* // Realiza o Encerramento das OS //********************************************************************* colecaoIdOrdemServico = (Collection<Integer>) sessao.getAttribute("colecaoIdOrdemServico"); if (colecaoIdOrdemServico != null && !colecaoIdOrdemServico.isEmpty()) { fachada.encerrarBoletimOrdemServicoConcluida(colecaoIdOrdemServico); }else { throw new ActionServletException("atencao.nenhuma_os_selecionada_para_encerramento"); } retorno = actionMapping.findForward("telaSucesso"); montarPaginaSucesso(httpServletRequest, "Boletim de Ordens de Servi�o Encerradas com Sucesso.", "Resumo das Ordens de Servi�os Concluidas", "exibirFiltrarBoletimOrdensServicoConcluidasAction.do?menu=sim"); } return retorno; } }