/* * * 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 relativo a todas as classes de negocio. * Com as classes bean */ package modelo; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import javax.persistence.SequenceGenerator; import javax.persistence.Table; /** * Classe relativa ao bean PMP que informa o Plano Mestre de Produ��o Vigente por modelo, por per�odo * * Esta tabela � excluida e gerada novamente a partir do plpermod de um plano selecionado na fun��o * "implementa plano vigente" * * @author felipe.arruda/dayse.arruda * */ @NamedQueries( { @NamedQuery(name = "PMP.recuperaPMPComPerioPMVig", query = "select pmp from PMP pmp " + "left outer join fetch pmp.perioPMVig " + "where pmp = ?"), @NamedQuery(name="PMP.recuperaPMPPorModeloEPerioPMVig", query = "select pmp from PMP pmp " + "left outer join pmp.modelo modelo " + "where modelo = ? " + "and pmp.perioPMVig = ? " ), @NamedQuery(name="PMP.recuperaListaDePMPs", query = "select pmp from PMP pmp " ), @NamedQuery(name = "PMP.recuperaListaDePMPsComPerioPMVigs", query = "select pmp from PMP pmp " + "left outer join fetch pmp.perioPMVig " ), @NamedQuery(name = "PMP.recuperaListaDePMPsPorModeloComPerioPMVigs", query = "select pmp from PMP pmp " + "left outer join fetch pmp.perioPMVig " + "left outer join pmp.modelo modelo " + "where modelo = ? " ), @NamedQuery(name="PMP.recuperaIntervaloDePMPPorModeloEIntervaloDePerioPMVig", query = "select pmp from PMP pmp " + "left outer join pmp.modelo modelo " + "left outer join pmp.perioPMVig pmv " + "where modelo = ? " + "and pmv.periodoPM >= ? " + "and pmv.periodoPM <= ? " ) } ) @Entity @Table(name = "PMP") @SequenceGenerator(name = "SEQUENCIA", sequenceName = "SEQ_PMP", allocationSize = 1) public class PMP implements Serializable { private static final long serialVersionUID = 1L; /** identificador plano mestre vigente*/ private Long id; /** modelo a que se refere o registro do plano mestre vigente */ private Modelo modelo; /** Periodo do Plano Mestre Vigente relativo ao HP Vigente */ private PerioPMVig perioPMVig; /** * Vendas Projetadas do Modelo, em pe�as no per�odo do Plano Mestre Vigente */ private Double vendasModel; /** * Pedidos em carteira do Modelo, em pe�as no per�odo do Plano Mestre Vigente */ private Double pedidosModel; /** * Produ��o do Modelo, em pe�as no per�odo do Plano Mestre Vigente */ private Double producaoModel; /** * Produ��o do Modelo, em lotes no per�odo do Plano Mestre Vigente */ private Double prodLoteModel; /** * Produ��o di�ria do Modelo, em lotes no per�odo do Plano Mestre Vigente */ private Double prodDiariaLoteModel; /** * Per�odo no qual deve ser iniciada a produ��o, considerando o TR do modelo */ private int periodoPMInicioPMP; /** * Disponibilidade de Entrega no periodo */ private Double disponibEntrega; /** * Disponibilidade Projetado do Modelo no per�odo */ private Double dispProjModel; /** * Cobertura % de estoque do Modelo no per�odo * */ private Double coberturaModel; /** * Escore obtido nesse per�odo para a defini��o da produ��o para esse modelo * * Herdado do plpermod * */ private Double escorePlanPerMod; /** * varia��o percentual em rela��o ao estoque desejado. * * Herdada do Plpermod * */ private Double varEstqPerc; /** * varia��o percentual em rela��o a ProdDiariaMedia no HP. * * Herdada do Plpermod * */ private Double varProdDiaPerc; // ********* Construtores ********* public PMP(){ } public PMP(Modelo modelo, PerioPMVig perioPMVig, Double vendasModel, Double pedidosModel, Double producaoModel, Double prodLoteModel, Double prodDiariaLoteModel, int periodoPMInicioPMP, Double disponibEntrega, Double dispProjModel, Double coberturaModel, Double escorePlanPerMod, Double varEstqPerc, Double varProdDiaPerc) { super(); this.modelo = modelo; this.perioPMVig = perioPMVig; this.vendasModel = vendasModel; this.pedidosModel = pedidosModel; this.producaoModel = producaoModel; this.prodLoteModel = prodLoteModel; this.prodDiariaLoteModel = prodDiariaLoteModel; this.periodoPMInicioPMP = periodoPMInicioPMP; this.disponibEntrega = disponibEntrega; this.dispProjModel = dispProjModel; this.coberturaModel = coberturaModel; this.escorePlanPerMod = escorePlanPerMod; this.varEstqPerc = varEstqPerc; this.varProdDiaPerc = varProdDiaPerc; } // ********* M�todos get() / set() ********* @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQUENCIA") @Column(name = "ID") public Long getId() { return id; } public void setId(Long id) { this.id = id; } @ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name="MODELO_ID", nullable = false) public Modelo getModelo() { return modelo; } @ManyToOne(fetch=FetchType.EAGER) @JoinColumn(name="PERIOPMVIG_ID") public PerioPMVig getPerioPMVig() { return perioPMVig; } public Double getVendasModel() { return vendasModel; } public Double getPedidosModel() { return pedidosModel; } public Double getDisponibEntrega() { return disponibEntrega; } public Double getDispProjModel() { return dispProjModel; } public Double getCoberturaModel() { return coberturaModel; } /** * Decidimos implementar hashCode() e equals gradativamente em todas as entidades, para permitir compara��o * ao usarmos set ao inv�s de list. Sem isso algumas fun��es n�o funcionar�o corretamente, tais como recupera��o * do registro, ou at� mesmo a pagina��o master/detail. * * Algumas entidades ainda n�o precisaram por serem entidades b�sicas ou n�o usarem set * PMP por enquanto n�o demonstrou necessidade de uso, mas implementamos para padronizar * * S�o colocados no hashCode os campos considerados �teis para identifica��o do registro. * N�o � suficiente a coloca��o apenas do id que � a chave prim�ria, pois � poss�vel que o * set seja usado num momento em que o registro ainda est� destacado, ou seja ainda n�o tem id. * * Foram colocados os campos que correspondem a chave concatenada original na vers�o em delphi. * */ @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((id == null) ? 0 : id.hashCode()); result = prime * result + ((modelo == null) ? 0 : modelo.hashCode()); result = prime * result + ((perioPMVig == null) ? 0 : perioPMVig.hashCode()); return result; } /** * Decidimos implementar hashCode() e equals gradativamente em todas as entidades, para permitir compara��o * ao usarmos set ao inv�s de list. Sem isso algumas fun��es n�o funcionar�o corretamente, tais como recupera��o * do registro, ou at� mesmo a pagina��o master/detail. * * Algumas entidades ainda n�o precisaram por serem entidades b�sicas ou n�o usarem set * PMP por enquanto n�o demonstrou necessidade de uso, mas implementamos para padronizar * * */ @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (!(obj instanceof PMP)) { return false; } PMP other = (PMP) obj; if (id == null) { if (other.id != null) { return false; } } else if (!id.equals(other.id)) { return false; } if (modelo == null) { if (other.modelo != null) { return false; } } else if (!modelo.equals(other.modelo)) { return false; } if (perioPMVig == null) { if (other.perioPMVig != null) { return false; } } else if (!perioPMVig.equals(other.perioPMVig)) { return false; } return true; } /* ****************** m�todos get e set *******************/ public Double getProducaoModel() { return producaoModel; } public Double getProdLoteModel() { return prodLoteModel; } public Double getProdDiariaLoteModel() { return prodDiariaLoteModel; } public int getPeriodoPMInicioPMP() { return periodoPMInicioPMP; } public Double getEscorePlanPerMod() { return escorePlanPerMod; } public Double getVarEstqPerc() { return varEstqPerc; } public Double getVarProdDiaPerc() { return varProdDiaPerc; } public void setModelo(Modelo modelo) { this.modelo = modelo; } public void setPerioPMVig(PerioPMVig perioPMVig) { this.perioPMVig = perioPMVig; } public void setVendasModel(Double vendasModel) { this.vendasModel = vendasModel; } public void setPedidosModel(Double pedidosModel) { this.pedidosModel = pedidosModel; } public void setDisponibEntrega(Double disponibEntrega) { this.disponibEntrega = disponibEntrega; } public void setDispProjModel(Double dispProjModel) { this.dispProjModel = dispProjModel; } public void setCoberturaModel(Double coberturaModel) { this.coberturaModel = coberturaModel; } public void setProducaoModel(Double producaoModel) { this.producaoModel = producaoModel; } public void setProdLoteModel(Double prodLoteModel) { this.prodLoteModel = prodLoteModel; } public void setProdDiariaLoteModel(Double prodDiariaLoteModel) { this.prodDiariaLoteModel = prodDiariaLoteModel; } public void setPeriodoPMInicioPMP(int periodoPMInicioPMP) { this.periodoPMInicioPMP = periodoPMInicioPMP; } public void setEscorePlanPerMod(Double escorePlanPerMod) { this.escorePlanPerMod = escorePlanPerMod; } public void setVarEstqPerc(Double varEstqPerc) { this.varEstqPerc = varEstqPerc; } public void setVarProdDiaPerc(Double varProdDiaPerc) { this.varProdDiaPerc = varProdDiaPerc; } }