package gcom.gui.atendimentopublico.ordemservico; import gcom.atendimentopublico.ordemservico.ProgramacaoRoteiro; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.seguranca.acesso.usuario.Usuario; import gcom.util.ConstantesSistema; import gcom.util.Util; import java.util.Calendar; import java.util.Collection; import java.util.Date; import java.util.GregorianCalendar; import java.util.Iterator; 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; /** * Descri��o da classe * * @author R�mulo Aur�lio * @date 20/09/2006 */ public class ExibirCalendarioElaboracaoAcompanhamentoRoteiroAction extends GcomAction { /** * Este caso de uso elabora ou mant�m uma programa��o de roteiro * * * [UC0455] Exibir Calend�rio para Elabora��o ou Acompanhamento de Roteiro * * * @author R�mulo Aur�lio * @date 20/09/2006 * * @param actionMapping * @param actionForm * @param httpServletRequest * @param httpServletResponse * @return */ public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping .findForward("calendarioElaboracaoAcompanhamentoRoteiroAction"); Fachada fachada = Fachada.getInstancia(); HttpSession sessao = httpServletRequest.getSession(false); ExibirCalendarioElaboracaoAcompanhamentoRoteiroActionForm exibirCalendarioElaboracaoAcompanhamentoRoteiroActionForm = (ExibirCalendarioElaboracaoAcompanhamentoRoteiroActionForm) actionForm; sessao.removeAttribute("elaboracao"); sessao.removeAttribute("acompanhamento"); // Usuario logado no sistema Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado"); String mesAnoReferencia = (String) httpServletRequest .getParameter("mesAnoReferencia"); // Recebe o ano e o mes String ano = null; String mes = null; String anoCalendario = (String) httpServletRequest.getParameter("ano"); String mesCalendario = (String) httpServletRequest.getParameter("mes"); //String anoMesReferencia = null; // Verifica se o mes/ano foram mudados no calendario, senao continua o // fluxo verificando se o mesanoReferencia foi informado, caso // contrario, assume o corrente. if (anoCalendario != null && !anoCalendario.equalsIgnoreCase("") && mesCalendario != null && !mesCalendario.equalsIgnoreCase("")) { Integer aux = new Integer(mesCalendario); aux = aux + 1; if (aux < 10) { mesCalendario = "0" + aux.toString(); } else { mesCalendario = aux.toString(); } // [FS0001] Validar m�s e ano de referencia String dataAuxiliar = null; dataAuxiliar = "01/" + mesCalendario + "/" + anoCalendario; Date dataValidacao = Util.converteStringParaDate(dataAuxiliar); Date dataAtual = new Date(); if (httpServletRequest.getParameter("elaboracao") != null) { Calendar dataAtualVerificacao = new GregorianCalendar(); dataAtualVerificacao.setTime(dataAtual); Calendar dataValidacaoVerificacao = new GregorianCalendar(); dataValidacaoVerificacao.setTime(dataValidacao); if (mesCalendario != null && anoCalendario != null) { String anoMesCalendario = anoCalendario + mesCalendario; Date dataCorrente = new Date(); String dataCorrenteTexto = Util.formatarData(dataCorrente); ano = dataCorrenteTexto.substring(6, 10); mes = dataCorrenteTexto.substring(3, 5); String anoMesAtual = ano + mes; if (Util.compararAnoMesReferencia(new Integer( anoMesCalendario), new Integer(anoMesAtual), "<")) { throw new ActionServletException( "atencao.ano_mes_referencia.invalida"); } } else { if ((dataValidacaoVerificacao .compareTo(dataAtualVerificacao)) < 0) { throw new ActionServletException( "atencao.ano_mes_referencia.invalida"); } } /* * Integer difMeses = Util.dataDiff(dataAtual, dataValidacao); * * if (difMeses > 0) { throw new ActionServletException( * "atencao.ano_mes_referencia.invalida"); } */ } httpServletRequest.setAttribute("ano", anoCalendario); httpServletRequest.setAttribute("mes", mesCalendario); ano = anoCalendario; mes = mesCalendario; //anoMesReferencia = ano + mes; // boolean mesAnoValido = Util.validarMesAno(mesAnoReferencia); // // if (mesAnoValido == false) { // throw new ActionServletException( // "atencao.ano_mes_referencia.invalida"); // } } else if (mesAnoReferencia == null || mesAnoReferencia.equals("")) { // Recebe mesAnoReferecencia (mm/aaaa) e retorna // anoMesReferencia(aaaamm), caso o mesAno nao seja informado, // assume o // corrente Date dataCorrente = new Date(); String dataCorrenteTexto = Util.formatarData(dataCorrente); ano = dataCorrenteTexto.substring(6, 10); mes = dataCorrenteTexto.substring(3, 5); //String anoMesCorrente = ano + mes; //anoMesReferencia = anoMesCorrente; } else { boolean mesAnoValido = Util.validarMesAno(mesAnoReferencia); if (mesAnoValido == false) { throw new ActionServletException( "atencao.ano_mes_referencia.invalida"); } // [FS0001] Validar m�s e ano de referencia String dataAuxiliar = null; dataAuxiliar = "01/" + mesAnoReferencia; Date dataValidacao = Util.converteStringParaDate(dataAuxiliar); Date dataAtual = new Date(); if (httpServletRequest.getParameter("elaboracao") != null) { Integer difMeses = Util.dataDiff(dataAtual, dataValidacao); if (difMeses > 0) { throw new ActionServletException( "atencao.ano_mes_referencia.invalida"); } } mes = mesAnoReferencia.substring(0, 2); ano = mesAnoReferencia.substring(3, 7); //anoMesReferencia = ano + mes; } Calendar calendario = Calendar.getInstance(); int ultimoDia = 0; httpServletRequest.setAttribute("ano", ano); httpServletRequest.setAttribute("mes", new Integer(mes) - 1); calendario.set(new Integer(ano), new Integer(mes), 1); // ultimoDia = calendario.getActualMaximum(Calendar.DAY_OF_MONTH); ultimoDia = 31; Integer[] vetorEstilos = new Integer[ultimoDia]; mesAnoReferencia = null; mesAnoReferencia = mes + "/" + ano; // Pesquisa a Programacao de Roteiro Collection colecaoProgramacaoRoteiro = fachada .consultarProgramacaoRoteiro(mesAnoReferencia, usuario .getUnidadeOrganizacional().getId()); if (httpServletRequest.getParameter("elaboracao") != null) { sessao.setAttribute("elaboracao", "elaboracao"); exibirCalendarioElaboracaoAcompanhamentoRoteiroActionForm .setCabecalho("Elabora��o"); exibirCalendarioElaboracaoAcompanhamentoRoteiroActionForm .setTitulo("elabora��o"); } else { sessao.setAttribute("acompanhamento", "acompanhamento"); exibirCalendarioElaboracaoAcompanhamentoRoteiroActionForm .setCabecalho("Acompanhamento"); exibirCalendarioElaboracaoAcompanhamentoRoteiroActionForm .setTitulo("acompanhamento"); } if (colecaoProgramacaoRoteiro != null) { Iterator iteratorRoteiro = colecaoProgramacaoRoteiro.iterator(); Date dataRoteiro; ProgramacaoRoteiro programacaoRoteiro = null; // Integer indicador while (iteratorRoteiro.hasNext()) { programacaoRoteiro = (ProgramacaoRoteiro) iteratorRoteiro .next(); dataRoteiro = programacaoRoteiro.getDataRoteiro(); /* * Caso exista um intervalo maior do que um dia no * abastecimento, verifica a qtde de dias entre o inicio e o fim * as e jogo num vetor informando o estilo deste dia para o * calend�rio * */ Calendar obterDia = Calendar.getInstance(); // FiltroOrdemServicoProgramacao filtroOrdemServicoProgramacao = // new FiltroOrdemServicoProgramacao(); // Collection colecaoOrdemServicoProgramacao = null; int i = 0; // Date dataAtual = new Date(); if (sessao.getAttribute("elaboracao") != null) { exibirCalendarioElaboracaoAcompanhamentoRoteiroActionForm .setCabecalho("Elabora��o"); exibirCalendarioElaboracaoAcompanhamentoRoteiroActionForm .setTitulo("elabora��o"); while (i < ultimoDia + 1) { /* * Inicialmente todos os dias recebem o id da situacao * em aberto, caso a situacao nao seja em aberto, * situacao � alterada */ // vetorEstilos[i] = // ConstantesSistema.SITUACAO_ROTEIRO_ELABORACAO_ABERTO; /* * Caso o dia possua Roteiro e Identificador de * fechamento esteja preenchido. */ /* * filtroOrdemServicoProgramacao .adicionarParametro(new * ParametroSimples( * FiltroOrdemServicoProgramacao.PROGRAMACAO_ROTEIRO, * programacaoRoteiro.getId())); * * filtroOrdemServicoProgramacao .adicionarParametro(new * ParametroSimples( * FiltroOrdemServicoProgramacao.INDICADOR_ATIVO, * OrdemServicoProgramacao.INDICADOR_ATIVO)); * * colecaoOrdemServicoProgramacao = fachada.pesquisar( * filtroOrdemServicoProgramacao, * OrdemServicoProgramacao.class.getName()); */ Integer qtdOrdemServicoProgramacao = fachada .verificarExistenciaOSProgramacao(programacaoRoteiro .getId()); if (qtdOrdemServicoProgramacao == 0) { obterDia.setTime(dataRoteiro); vetorEstilos[obterDia.get(Calendar.DAY_OF_MONTH) - 1] = ConstantesSistema.SITUACAO_ROTEIRO_ELABORACAO_FECHAMENTO_NULO; } else { obterDia.setTime(dataRoteiro); vetorEstilos[obterDia.get(Calendar.DAY_OF_MONTH) - 1] = ConstantesSistema.SITUACAO_ROTEIRO_ELABORACAO_FECHAMENTO_PREENCHIDO; } /* * if (colecaoOrdemServicoProgramacao == null) { * * obterDia.setTime(dataRoteiro); * vetorEstilos[obterDia.get(Calendar.DAY_OF_MONTH) - 1] = * ConstantesSistema.SITUACAO_ROTEIRO_ELABORACAO_FECHAMENTO_NULO; } * * if (colecaoOrdemServicoProgramacao != null) { * * obterDia.setTime(dataRoteiro); * vetorEstilos[obterDia.get(Calendar.DAY_OF_MONTH) - 1] = * ConstantesSistema.SITUACAO_ROTEIRO_ELABORACAO_FECHAMENTO_PREENCHIDO; } */ i++; } } else { exibirCalendarioElaboracaoAcompanhamentoRoteiroActionForm .setCabecalho("Acompanhamento"); exibirCalendarioElaboracaoAcompanhamentoRoteiroActionForm .setTitulo("acompanhamento"); while (i < ultimoDia) { /* * Inicialmente todos os dias recebem o id da situacao * em aberto, caso a situacao nao seja em aberto, * situacao � alterada */ // vetorEstilos[i] = // ConstantesSistema.SITUACAO_ROTEIRO_ACOMPANHAMENTO_ABERTO; /* * Caso o dia possua Roteiro e Identificador de * fechamento esteja preenchido. */ /* * filtroOrdemServicoProgramacao .adicionarParametro(new * ParametroSimples( * FiltroOrdemServicoProgramacao.PROGRAMACAO_ROTEIRO, * programacaoRoteiro.getId())); * * filtroOrdemServicoProgramacao .adicionarParametro(new * ParametroSimples( * FiltroOrdemServicoProgramacao.INDICADOR_ATIVO, * OrdemServicoProgramacao.INDICADOR_ATIVO)); * * colecaoOrdemServicoProgramacao = fachada.pesquisar( * filtroOrdemServicoProgramacao, * OrdemServicoProgramacao.class.getName()); */ Integer qtdOrdemServicoProgramacao = fachada .verificarExistenciaOSProgramacao(programacaoRoteiro .getId()); if (qtdOrdemServicoProgramacao == 0) { obterDia.setTime(dataRoteiro); vetorEstilos[obterDia.get(Calendar.DAY_OF_MONTH) - 1] = ConstantesSistema.SITUACAO_ROTEIRO_ACOMPANHAMENTO_FECHAMENTO_NULO; } else { obterDia.setTime(dataRoteiro); vetorEstilos[obterDia.get(Calendar.DAY_OF_MONTH) - 1] = ConstantesSistema.SITUACAO_ROTEIRO_ACOMPANHAMENTO_FECHAMENTO_PREENCHIDO; } /* * if (colecaoOrdemServicoProgramacao.isEmpty()) { * * obterDia.setTime(dataRoteiro); * vetorEstilos[obterDia.get(Calendar.DAY_OF_MONTH) - 1] = * ConstantesSistema.SITUACAO_ROTEIRO_ACOMPANHAMENTO_FECHAMENTO_NULO; } * * if (!colecaoOrdemServicoProgramacao.isEmpty()) { * * obterDia.setTime(dataRoteiro); * vetorEstilos[obterDia.get(Calendar.DAY_OF_MONTH) - 1] = * ConstantesSistema.SITUACAO_ROTEIRO_ACOMPANHAMENTO_FECHAMENTO_PREENCHIDO; } */ i++; } } } } int cont = 0; Date dataAtual = new Date(); Integer dia = Util.getDiaMes(dataAtual); if (mesCalendario != null && anoCalendario != null && httpServletRequest.getParameter("elaboracao") != null) { String anoMesCalendario = anoCalendario + mesCalendario; Date dataCorrente = new Date(); String dataCorrenteTexto = Util.formatarData(dataCorrente); ano = dataCorrenteTexto.substring(6, 10); mes = dataCorrenteTexto.substring(3, 5); String anoMesAtual = ano + mes; if (!Util.compararAnoMesReferencia(new Integer(anoMesCalendario), new Integer(anoMesAtual), "=")) { String diaAux = "01"; dia = new Integer(diaAux); } } String situacoes = ""; while (cont < vetorEstilos.length) { if ((cont + 2 <= dia.intValue()) && (sessao.getAttribute("elaboracao") != null)) { vetorEstilos[cont] = ConstantesSistema.SITUACAO_ROTEIRO_ACOMPANHAMENTO_ABERTO; } if ((vetorEstilos[cont] == null) && (sessao.getAttribute("elaboracao") == null)) { vetorEstilos[cont] = ConstantesSistema.SITUACAO_ROTEIRO_ACOMPANHAMENTO_ABERTO; } if ((vetorEstilos[cont] == null) && (sessao.getAttribute("elaboracao") != null)) { vetorEstilos[cont] = ConstantesSistema.SITUACAO_ROTEIRO_ELABORACAO_ABERTO; } if (situacoes.length() < 1) { situacoes = vetorEstilos[cont].toString(); } else { situacoes = situacoes + "," + vetorEstilos[cont].toString(); } cont++; } httpServletRequest.setAttribute("situacoes", situacoes); return retorno; } }