/* * * 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 carga; import java.util.List; import java.util.Set; import modelo.CadPlan; import modelo.HP; import modelo.Parametros; import modelo.PerioPM; import modelo.PlPerMod; import modelo.PlanoModelo; import service.HPAppService; import service.ParametrosAppService; import service.PerioPMAppService; import service.PlPerModAppService; import service.PlanoModeloAppService; import service.CadPlanAppService; import service.PMPAppService; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import DAO.PlPerModDAO; import DAO.PlanoModeloDAO; import DAO.Impl.PlPerModDAOImpl; import DAO.Impl.PlanoModeloDAOImpl; import DAO.controle.FabricaDeDao; import DAO.exception.ObjetoNaoEncontradoException; import service.controleTransacao.FabricaDeAppService; import service.exception.AplicacaoException; import util.JPAUtil; /** * * Sobre a Carga: * � uma Carga do sistema, portanto deve herdar de CargaBase e * implementar o m�todo executar(). * Nesse m�todo executar � que � chamado os outros m�todos que s�o * as et�pas dessa carga. * Portanto se � necessario rodar um m�todo depois do outro, eles devem ser chamados * na ordem correta. Ex: * incluiHP() vem antes de inicializaHP(), portanto no m�todo executar() eles devem ser chamados nessa ordem. * * Terminado de executar todas as etapas � preciso retornar true. * Se houver algum problema(exce��o) na execu��o de um das etapas, essa exce��o deve ser lancada * * * Essa Carga: * Seleciona o cadPlan de c�digo "1" como sendo plano corrente. * Altera alguns periodos especificos para que o recebimento de producao(Producao Model) * destes seja igual 0, apenas do primeiro modelo. * * @author felipe.arruda */ public class CargaEstudoAlteraRecebimentoProducao extends CargaBase{ private static PlanoModeloDAO planoModeloDAO; private static PlPerModDAO plPerModDAO; private static PlanoModeloAppService planoModeloService; private PlPerModAppService plPerModService; private static PerioPMAppService perioPMService; private static HPAppService hpService; public CargaEstudoAlteraRecebimentoProducao(){ try { plPerModService = FabricaDeAppService.getAppService(PlPerModAppService.class); planoModeloService = FabricaDeAppService.getAppService(PlanoModeloAppService.class); perioPMService = FabricaDeAppService.getAppService(PerioPMAppService.class); hpService = FabricaDeAppService.getAppService(HPAppService.class); planoModeloDAO = FabricaDeDao.getDao(PlanoModeloDAOImpl.class); plPerModDAO = FabricaDeDao.getDao(PlPerModDAOImpl.class); } catch (Exception e) { e.printStackTrace(); } } @Override public boolean executar() throws AplicacaoException { this.alteraRecebimentos(); return true; } /** * Recupera o plano modelo referente ao primeiro modelo do cadplan 1 * em seguida percorre todos os periodos do hp e recupera os plPerMods * referentes ao periodo e ao planoModelo. * Em seguida chama o m�todo para alterar o plPerMod em questao. * * @throws ObjetoNaoEncontradoException */ public void alteraRecebimentos() throws AplicacaoException{ String codPlan = "1"; String codModelo = "121131"; try{ PlanoModelo planoModelo = planoModeloDAO. recuperarPlanoModeloPorCodigoModeloECodigoCadPlan(codPlan, codModelo); planoModelo = planoModeloService.recuperarPlPerModsPorPlanoModelo(planoModelo); HP hp = hpService.recuperaListaDeHP().get(0); List<PerioPM> intervaloDePeriodoDoHP = perioPMService.recuperaIntervaloDePerioPMs (1, hp.getPerioPMFinalPMP().getPeriodoPM()); for(PerioPM perioPM : intervaloDePeriodoDoHP){ //altera apenas recebimento dos periodos 3, 7, 8 e 10 int periodo =perioPM.getPeriodoPM(); if(periodo == 3 || periodo == 7 || periodo == 8 || periodo == 10 ){ PlPerMod plPerModCorrente = plPerModDAO.recuperaPlPerModPorPlanoModeloEPerioPM (planoModelo, perioPM); alteraRecebimentoEmPlPerMod(plPerModCorrente); } } } catch(ObjetoNaoEncontradoException e){ throw new AplicacaoException(e); } } /** * Altera o recebimento para se igual a 0 no dado plPerMod * E em seguida recalcula parametros baseado na producao em pecas. * * @param plPerMod */ public void alteraRecebimentoEmPlPerMod(PlPerMod plPerMod){ plPerMod.setProducaoModel(0.0); plPerModService.altera(plPerMod); //depois de alterar o plpermod devemos chamar o mesmo metodo que � chamado //na tela quando fazemos essa operacao. plPerModService.recalculaParametrosBaseadoProdEmPecas(plPerMod); } }