/* * * Copyright (c) 2013 - 2014 INT - National Institute of Technology & COPPE - Alberto Luiz Coimbra Institute - Graduate School and Research in Engineering. * See the file license.txt for copyright permission. * */ package actions; import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.SortedSet; import java.util.TreeSet; import javax.faces.model.DataModel; import javax.faces.model.ListDataModel; import comparator.PlPerModComparatorPorPerioPM; import DAO.exception.ObjetoNaoEncontradoException; import modelo.CadPlan; import modelo.Modelo; import modelo.PlPerMod; import modelo.PlanoModelo; import br.blog.arruda.plot.Plot; import service.CadPlanAppService; import service.ModeloAppService; import service.PlPerModAppService; import service.PlanoModeloAppService; import service.controleTransacao.FabricaDeAppService; import service.exception.AplicacaoException; public class PlPerModActions extends BaseActions implements Serializable{ // Services private ModeloAppService modeloService; private PlanoModeloAppService planoModeloService; private PlPerModAppService plPerModService; private CadPlanAppService cadPlanService; private CadPlan cadPlanCorrente; private PlanoModelo planoModeloCorrente; private PlPerMod plPerModCorrente; private DataModel listaPlanoModelos; private DataModel listaPlPerMods; private int pagina = 1; private String opcaoEscolhidaAlteracao; // Paginas public final String PAGINA_LIST = "listPlPerMod"; public final String PAGINA_EDIT = "editPlPerMod"; public final String PAGINA_GRAFICO_PLPERMOD = "graficoPlPerMod"; public final String PAGINA_GRAFICO_AVALIACAOFUZZY = "graficoPlPerModAvaliacaoFuzzy"; private String LABEL_PAGINA_EDICAO = ""; public Plot plotPlPerMod; public PlPerModActions() { try { modeloService = FabricaDeAppService.getAppService(ModeloAppService.class); planoModeloService = FabricaDeAppService.getAppService(PlanoModeloAppService.class); plPerModService = FabricaDeAppService.getAppService(PlPerModAppService.class); cadPlanService = FabricaDeAppService.getAppService(CadPlanAppService.class); } catch (Exception ex){ } cadPlanCorrente = ((CadPlanActions) getManagedBean("cadPlanActions")).getCadPlanCorrente(); plotPlPerMod = null; } /** * Este m�todo � utilizado para atualizar a Lista de PlPerMods cada vez que ocorre uma mudan�a de p�gina no Datascroller */ public void atualizarListaPlPerMods(){ listaPlPerMods = null; } public String preparaAlteracao(){ if(opcaoEscolhidaAlteracao.equals("vendasModel")){ LABEL_PAGINA_EDICAO = "Vendas"; } if(opcaoEscolhidaAlteracao.equals("coberturaModel")){ LABEL_PAGINA_EDICAO = "Cobertura"; } if(opcaoEscolhidaAlteracao.equals("pedidosModel")){ LABEL_PAGINA_EDICAO = "Pedidos"; } if(opcaoEscolhidaAlteracao.equals("dispProjModel")){ LABEL_PAGINA_EDICAO = "Disponibilidade Projetada"; } if(opcaoEscolhidaAlteracao.equals("prodLoteModel")){ LABEL_PAGINA_EDICAO = "Produ��o em Lote"; } if(opcaoEscolhidaAlteracao.equals("producaoModel")){ LABEL_PAGINA_EDICAO = "Produ��o"; } if(opcaoEscolhidaAlteracao.equals("prodDiariaLoteModel")){ LABEL_PAGINA_EDICAO = "Produ��o Di�ria em Lote"; } return PAGINA_EDIT; } public String cancelar() { listaPlanoModelos = null; listaPlPerMods = null; plotPlPerMod = null; return PAGINA_LIST; } /** * Pegando apenas os PlPerMods do modelo selecionado. * Grafico de DemandaMax , Producao E EstProj Por Periodo * @return */ public String exibirGraficoDemandaMaxEProducaoEEstProjPorPeriodo(){ listaPlPerMods=null; listaPlPerMods = getListaPlPerMods(); plotPlPerMod = plPerModService.gerarPlotDemandaMaxEProducaoEEstProjPorPeriodo((List<PlPerMod>) listaPlPerMods.getWrappedData()); return PAGINA_GRAFICO_PLPERMOD; } /** * Pegando apenas os PlPerMods do modelo selecionado. * Grafico com DemandaMax , Producao , EstProj e ESDesejado Por Periodo * @return */ public String exibirGraficoDemandaMaxEProducaoEEstProjEESDesejadoPorPeriodo(){ listaPlPerMods=null; listaPlPerMods = getListaPlPerMods(); plotPlPerMod = plPerModService.gerarPlotDemandaMaxEProducaoEEstProjEESDesejadoPorPeriodo((List<PlPerMod>) listaPlPerMods.getWrappedData()); return PAGINA_GRAFICO_AVALIACAOFUZZY; } public String altera(){ try{ plPerModService.altera(plPerModCorrente); } catch (Exception ex){ error(ex.getMessage()); return PAGINA_EDIT; } info("cadplan.SUCESSO_AJUSTE"); //Fazer aqui a verificacao de qual foi o campo alterado para poder chamar metodo de recalcula if(opcaoEscolhidaAlteracao.equals("vendasModel") || opcaoEscolhidaAlteracao.equals("pedidosModel") || opcaoEscolhidaAlteracao.equals("coberturaModel")){ boolean edicaoCobertura = opcaoEscolhidaAlteracao.equals("coberturaModel"); plPerModService.recalculaParametrosBaseadoCobertura(plPerModCorrente,edicaoCobertura); } //Fazer aqui a verificacao de qual foi o campo alterado para poder chamar metodo de recalcula if(opcaoEscolhidaAlteracao.equals("dispProjModel")){ plPerModService.recalculaParametrosBaseadoDispProj(plPerModCorrente); } //Fazer aqui a verificacao de qual foi o campo alterado para poder chamar metodo de recalcula if(opcaoEscolhidaAlteracao.equals("prodLoteModel")){ plPerModService.recalculaParametrosBaseadoProducao(plPerModCorrente); } //Fazer aqui a verificacao de qual foi o campo alterado para poder chamar metodo de recalcula if(opcaoEscolhidaAlteracao.equals("producaoModel")){ plPerModService.recalculaParametrosBaseadoProdEmPecas(plPerModCorrente); } //Fazer aqui a verificacao de qual foi o campo alterado para poder chamar metodo de recalcula if(opcaoEscolhidaAlteracao.equals("prodDiariaLoteModel")){ plPerModService.recalculaParametrosBaseadoProdDiaria(plPerModCorrente); } listaPlanoModelos = null; return PAGINA_LIST; } public String mudarStatusFlagProducao() { if (plPerModCorrente.getFlagProducaoModel()){ plPerModCorrente.setFlagProducaoModel(false); } else { plPerModCorrente.setFlagProducaoModel(true); } try{ plPerModService.altera(plPerModCorrente); } catch (Exception ex){ error(ex.getMessage()); return PAGINA_LIST; } info("plPerMod.SUCESSO_ALTERACAO_STATUS"); return PAGINA_LIST; } public String mudarStatus() { planoModeloCorrente = (PlanoModelo) listaPlanoModelos.getRowData(); if (planoModeloCorrente.isModeloPlanejado()){ planoModeloCorrente.setModeloPlanejado(false); } else { planoModeloCorrente.setModeloPlanejado(true); } planoModeloService.altera(planoModeloCorrente); info("modelo.SUCESSO_ALTERACAO"); return PAGINA_LIST; } public String mudarStatusGeral() { List<PlanoModelo> planosModelo = ((List<PlanoModelo>) listaPlanoModelos.getWrappedData()); for (PlanoModelo planoModelo : planosModelo) { if (planoModelo.isModeloPlanejado()){ planoModelo.setModeloPlanejado(false); } else { planoModelo.setModeloPlanejado(true); } planoModeloService.altera(planoModelo); } info("modelo.SUCESSO_ALTERACAO"); return PAGINA_LIST; } public void imprimir(){ try{ CadPlan cadplan = cadPlanService.recuperaCadPlanApenasComPlanosModelo(this.getCadPlanCorrente().getCodPlan()); if(cadplan.getPlanosModelo().size()==0 || cadplan==null){ throw new AplicacaoException(); } plPerModService.gerarRelatorioAgregado(cadplan); } catch (AplicacaoException re){ error("cadplan.NAO_ENCONTRADO");//Nao existem planos associados a este cadastro de planos. } } // --------------------------- M�todos get() e set() -------------------------------- public CadPlan getCadPlanCorrente() { return cadPlanCorrente; } public PlanoModelo getPlanoModeloCorrente() { return planoModeloCorrente; } public void setCadPlanCorrente(CadPlan cadPlanCorrente) { this.cadPlanCorrente = cadPlanCorrente; } public void setPlanoModeloCorrente(PlanoModelo planoModeloCorrente) { this.planoModeloCorrente = planoModeloCorrente; } public void setListaPlanoModelos(DataModel listaPlanoModelos) { this.listaPlanoModelos = listaPlanoModelos; } public DataModel getListaPlanoModelos() { if (listaPlanoModelos == null){ List<PlanoModelo> planoModelos = new ArrayList(cadPlanCorrente.getPlanosModelo()); Collections.sort(planoModelos); // Ja deveria vir ordenado (devido a inser��o), mas para garantir, ordeno novamente. for (PlanoModelo planoModelo : planoModelos) { try { // Trazendo a informa��o da Familia associada ao Modelo planoModelo.setModelo(modeloService.recuperaUmModeloComFamilia(planoModelo.getModelo())); // Trazendo os PlPerMods deste PlanoModelo List<PlPerMod> plPerMods = plPerModService.recuperaListaDePlPerModPorPlanoModelo(planoModelo); Collections.sort(plPerMods, new PlPerModComparatorPorPerioPM()); planoModelo.setPlPerModsList(plPerMods); } catch (AplicacaoException e) { } } listaPlanoModelos = new ListDataModel(planoModelos); } return listaPlanoModelos; } public void setPagina(int pagina) { this.pagina = pagina; } public int getPagina() { return pagina; } public void setListaPlPerMods(DataModel listaPlPerMods) { this.listaPlPerMods = listaPlPerMods; } public DataModel getListaPlPerMods() { planoModeloCorrente = ((List<PlanoModelo>) listaPlanoModelos.getWrappedData()).get(pagina - 1); List<PlPerMod> plPerMods = plPerModService.recuperaListaDePlPerModPorPlanoModelo(planoModeloCorrente); Collections.sort(plPerMods, new PlPerModComparatorPorPerioPM()); // Sempre vai ser NULL pois o m�todo atualizar() garante este estado if (listaPlPerMods == null){ listaPlPerMods = new ListDataModel(plPerMods); } return listaPlPerMods; } public void setPlPerModCorrente(PlPerMod plPerModCorrente) { this.plPerModCorrente = plPerModCorrente; } public PlPerMod getPlPerModCorrente() { return plPerModCorrente; } public void setOpcaoEscolhidaAlteracao(String opcaoEscolhidaAlteracao) { this.opcaoEscolhidaAlteracao = opcaoEscolhidaAlteracao; } public String getOpcaoEscolhidaAlteracao() { return opcaoEscolhidaAlteracao; } public String getLABEL_PAGINA_EDICAO() { return LABEL_PAGINA_EDICAO; } public void setLABEL_PAGINA_EDICAO(String lABELPAGINAEDICAO) { LABEL_PAGINA_EDICAO = lABELPAGINAEDICAO; } public Plot getPlotPlPerMod() { return plotPlPerMod; } public void setPlotPlPerMod(Plot plotPlPerMod) { this.plotPlPerMod = plotPlPerMod; } }