Merge branch 'develop' into feature/JDK11
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good

This commit is contained in:
jenkins
2025-10-30 16:07:23 +01:00
8 changed files with 290 additions and 54 deletions

View File

@@ -0,0 +1,65 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.migration._base.MigrationModelInterface;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.entity.JtbCiclCq;
import it.integry.ems_model.entity.JtbCiclCqValori;
import it.integry.ems_model.entity._enum.TipoValore;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityList;
import java.util.ArrayList;
import java.util.List;
public class Migration_20251029181607 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement(
"EXEC sp_updateextendedproperty 'MS_Description',\n" +
" 'Valori possibili: 0 -> Testo, 1 -> Boolean, 2 -> Intero, 3 -> Decimale, 4 -> Date, 5 -> Datetime, 6 -> Time, 7 -> DropdownList',\n" +
" 'SCHEMA', 'dbo', 'TABLE', 'jtb_cicl_cq', 'COLUMN', 'tipo_valore';",
"EXEC sp_updateextendedproperty 'MS_Description',\n" +
" 'Valori possibili: 0 -> Testo, 1 -> Boolean, 2 -> Intero, 3 -> Decimale, 4 -> Date, 5 -> Datetime, 6 -> Time, 7 -> DropdownList',\n" +
" 'SCHEMA', 'dbo', 'TABLE', 'dtb_ord_cq', 'COLUMN', 'tipo_valore';"
);
dropChecks("jtb_cicl_cq", "tipo_valore");
dropChecks("dtb_ord_cq", "tipo_valore");
executeStatement(
"ALTER TABLE jtb_cicl_cq\n" +
" ADD CHECK ([tipo_valore] = 0 OR [tipo_valore] = 1 OR [tipo_valore] = 2 OR [tipo_valore] = 3 OR [tipo_valore] = 4 OR\n" +
" [tipo_valore] = 5 OR [tipo_valore] = 6 OR [tipo_valore] = 7);",
"ALTER TABLE dtb_ord_cq\n" +
" ADD CHECK ([tipo_valore] = 0 OR [tipo_valore] = 1 OR [tipo_valore] = 2 OR [tipo_valore] = 3 OR [tipo_valore] = 4 OR\n" +
" [tipo_valore] = 5 OR [tipo_valore] = 6 OR [tipo_valore] = 7);",
"CREATE TABLE jtb_cicl_cq_valori\n" +
"(\n" +
" id BIGINT IDENTITY\n" +
" CONSTRAINT jtb_cicl_cq_valori_pk\n" +
" PRIMARY KEY,\n" +
" descrizione VARCHAR(255) NOT NULL,\n" +
" valori VARCHAR(MAX) NOT NULL\n" +
");",
"ALTER TABLE jtb_cicl_cq\n" +
" ADD id_valori BIGINT\n" +
" CONSTRAINT jtb_cicl_cq_jtb_cicl_cq_valori_id_fk\n" +
" REFERENCES dbo.jtb_cicl_cq_valori;",
"ALTER TABLE dtb_ord_cq\n" +
" ADD id_valori BIGINT\n" +
" CONSTRAINT dtb_ord_cq_jtb_cicl_cq_valori_id_fk\n" +
" REFERENCES dbo.jtb_cicl_cq_valori;"
);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,63 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.migration._base.MigrationModelInterface;
import it.integry.ems_model.entity.JtbCiclCq;
import it.integry.ems_model.entity.JtbCiclCqValori;
import it.integry.ems_model.entity._enum.TipoValore;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityList;
import java.util.List;
public class Migration_20251030093449 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (!isCustomerDb(IntegryCustomerDB.Gramm_Gramm)) {
return;
}
JtbCiclCqValori jtbCiclCqValori = new JtbCiclCqValori()
.setDescrizione("Tipologia Fermi Macchina")
.setValori("FERMO MACCHINA|CAMBIO FORMATO|CAMBIO COLORE|PULIZIA|ATTESA PRODOTTO");
jtbCiclCqValori.setOperation(OperationType.INSERT);
jtbCiclCqValori.manageWithParentConnection(connection);
String sql =
"SELECT DISTINCT cod_prod, num_fase, MAX(id_riga) + 1 AS id_riga\n" +
"FROM jtb_cicl_cq\n" +
"WHERE tipologia = 'FERMI_MACCHINA'\n" +
"GROUP BY cod_prod, num_fase";
List<JtbCiclCq> jtbCiclCqList = UtilityDB.executeSimpleQueryDTO(connection, sql, JtbCiclCq.class);
if (UtilityList.isNullOrEmpty(jtbCiclCqList)) {
return;
}
for (JtbCiclCq jtbCiclCq : jtbCiclCqList) {
jtbCiclCq
.setControllo("Tipologia")
.setNumRip(0)
.setTipologia("FERMI_MACCHINA")
.setTipoValore(TipoValore.DROPDOWNLIST)
.setIdValori(jtbCiclCqValori.getId());
jtbCiclCq.setOperation(OperationType.INSERT);
jtbCiclCq.manageWithParentConnection(connection);
}
}
@Override
public void down() throws Exception {
}
}

View File

@@ -1043,7 +1043,7 @@ public class GeneraOrdLav {
// ---------------------------------------------------------------------------
// CONTROLLI DI QUALITA' ASSOCIATI ALLA DISTINTA
// ---------------------------------------------------------------------------
addControlliQualità(ordT, conn, artDist);
addControlliQualita(ordT, conn, artDist);
// -------------------------------------------------
// DISEGNI ORDINE DI LAVORAZIONE
@@ -1317,38 +1317,52 @@ public class GeneraOrdLav {
}
}
private static void addControlliQualità(DtbOrdt ordT, Connection conn, List<ExplodeDistDTO> artDist) throws SQLException {
private static void addControlliQualita(DtbOrdt ordT, Connection conn, List<ExplodeDistDTO> artDist) throws Exception {
List<DtbOrdCq> listOrdCQ = new ArrayList<>();
for (ExplodeDistDTO art : artDist) {
String sql =
Query.format(
"SELECT jtb_cicl_cq.num_fase, "
+ " jtb_cicl_cq.controllo, "
+ " jtb_cicl_cq.valore_rif, "
+ " jtb_cicl_cq.num_rip, "
+ " jtb_cicl_cq.tipologia, "
+ " jtb_cicl_cq.tipo_valore "
+ "FROM jtb_cicl_cq "
+ "WHERE jtb_cicl_cq.cod_prod = %s "
+ "ORDER BY jtb_cicl_cq.id_riga ",
"SELECT jtb_cicl_cq.num_fase,\n" +
" jtb_cicl_cq.controllo,\n" +
" jtb_cicl_cq.valore_rif,\n" +
" jtb_cicl_cq.num_rip,\n" +
" jtb_cicl_cq.tipologia,\n" +
" jtb_cicl_cq.tipo_valore,\n" +
" jtb_cicl_cq.id_valori\n" +
"FROM jtb_cicl_cq\n" +
"WHERE jtb_cicl_cq.cod_prod = %s\n" +
"ORDER BY jtb_cicl_cq.id_riga",
art.getCodProd());
List<HashMap<String, Object>> datiCQ = UtilityDB.executeSimpleQuery(conn, sql);
for (HashMap<String, Object> cq : datiCQ) {
Integer numFase = UtilityHashMap.getValueIfExists(cq, "num_fase");
List<JtbCiclCq> jtbCiclCqList = UtilityDB.executeSimpleQueryDTO(conn, sql, JtbCiclCq.class);
if (UtilityList.isNullOrEmpty(jtbCiclCqList)) {
return;
}
for (JtbCiclCq cq : jtbCiclCqList) {
Integer numFase = cq.getNumFase();
numFase = art.getNumFase() + numFase - 1;
DtbOrdCq ordCQ =
new DtbOrdCq()
.setControllo(UtilityHashMap.getValueIfExists(cq, "controllo"))
.setValoreRif(UtilityHashMap.getValueIfExists(cq, "valore_rif"))
.setNumRip(UtilityHashMap.getValueIfExists(cq, "num_rip"))
.setTipologia(UtilityHashMap.getValueIfExists(cq, "tipologia"))
.setTipoValore(TipoValore.from(UtilityHashMap.getValueIfExists(cq, "tipo_valore")))
.setControllo(cq.getControllo())
.setValoreRif(cq.getValoreRif())
.setNumRip(cq.getNumRip())
.setTipologia(cq.getTipologia())
.setTipoValore(cq.getTipoValore())
.setIdValori(cq.getIdValori())
.setNumFase(numFase);
ordCQ.setOperation(OperationType.INSERT);
listOrdCQ.add(ordCQ);
}
}
if (listOrdCQ != null && !listOrdCQ.isEmpty())
if (!listOrdCQ.isEmpty())
ordT.setDtbOrdCq(listOrdCQ);
}

View File

@@ -103,7 +103,7 @@ public class ProductionBusinessLogic {
Integer durataFasiPrec = 0;
Date dataIniz = null, dataFine = null;
String classNameOrdProd = "W_PORDI_RC", activityIDRoot = null, activityTypeID = null, flagTipologia = null, sql;
StbActivity activity = new StbActivity();
StbActivity activity;
List<StbActivity> activityList = new ArrayList<StbActivity>();
SetupGest setup = new SetupGest();
PreparedStatement ps = null;
@@ -851,23 +851,25 @@ public class ProductionBusinessLogic {
// CONTROLLI DI QUALITA' ASSOCIATI ALLA DISTINTA
// ---------------------------------------------------------------------------
sql =
"SELECT jtb_cicl_cq.num_fase, "
+ " jtb_cicl_cq.controllo, "
+ " jtb_cicl_cq.valore_rif, "
+ " jtb_cicl_cq.num_rip, "
+ " jtb_cicl_cq.tipologia, "
+ " jtb_cicl_cq.tipo_valore "
+ "FROM jtb_cicl_cq "
+ "WHERE jtb_cicl_cq.cod_prod = " + UtilityDB.valueToString(codProd) + " "
+ "ORDER BY jtb_cicl_cq.id_riga ";
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while (rs.next()) {
int numFase = rs.getInt("num_fase");
String controllo = rs.getString("controllo");
String valoreRif = rs.getString("valore_rif");
int numRip = rs.getInt("num_rip");
String tipologia = rs.getString("tipologia");
"SELECT jtb_cicl_cq.num_fase,\n"
+ " jtb_cicl_cq.controllo,\n"
+ " jtb_cicl_cq.valore_rif,\n"
+ " jtb_cicl_cq.num_rip,\n"
+ " jtb_cicl_cq.tipologia,\n"
+ " jtb_cicl_cq.tipo_valore,\n"
+ " jtb_cicl_cq.id_valori\n"
+ "FROM jtb_cicl_cq\n"
+ "WHERE jtb_cicl_cq.cod_prod = " + UtilityDB.valueToString(codProd) + "\n"
+ "ORDER BY jtb_cicl_cq.id_riga\n";
List<JtbCiclCq> jtbCiclCqList = UtilityDB.executeSimpleQueryDTO(conn, sql, JtbCiclCq.class);
for (JtbCiclCq cq : jtbCiclCqList) {
int numFase = cq.getNumFase();
String controllo = cq.getControllo();
String valoreRif = cq.getValoreRif();
int numRip = cq.getNumRip();
String tipologia = cq.getTipologia();
datiDist.setIdRigaContrCQ(datiDist.getIdRigaContrCQ() + 1);
// Inserimento controllo di qualità nell'ordine di lavorazione
@@ -879,7 +881,8 @@ public class ProductionBusinessLogic {
ordCQ.setNumRip(numRip);
ordCQ.setNumFase(numFase);
ordCQ.setTipologia(tipologia);
ordCQ.setTipoValore(TipoValore.from(rs.getShort("tipo_valore")));
ordCQ.setTipoValore(cq.getTipoValore());
ordCQ.setIdValori(cq.getIdValori());
if (isRoot) {
ordCQ.setNumFase(numFase + datiDist.getNumFase());
} else {
@@ -891,8 +894,6 @@ public class ProductionBusinessLogic {
ordT.getDtbOrdCq().add(ordCQ);
//((DtbOrdr) dtbOrdr).getOrdLav().getDtbOrdCq().add(ordCQ);
}
rs.close();
ps.close();
// -------------------------------------------------
// DISEGNI ORDINE DI LAVORAZIONE

View File

@@ -67,6 +67,10 @@ public class DtbOrdCq extends EntityBase {
@SqlField(value = "tipo_valore", nullable = false, defaultObjectValue = "0")
private TipoValore tipoValore;
@FK(tableName = "jtb_cicl_cq_valori", columnName = "id")
@SqlField(value = "id_valori")
private Long idValori;
@EntityChild
private List<DtbOrdCqr> dtbOrdCqr = new ArrayList<>();
@@ -200,6 +204,15 @@ public class DtbOrdCq extends EntityBase {
return this;
}
public Long getIdValori() {
return idValori;
}
public DtbOrdCq setIdValori(Long idValori) {
this.idValori = idValori;
return this;
}
@Override
public void checkPreSave() throws Exception {
for (DtbOrdCqr dtbOrdCqr : getDtbOrdCqr()) {

View File

@@ -1,10 +1,7 @@
package it.integry.ems_model.entity;
import com.fasterxml.jackson.annotation.JsonTypeName;
import it.integry.ems_model.annotation.PK;
import it.integry.ems_model.annotation.SqlDetailId;
import it.integry.ems_model.annotation.SqlField;
import it.integry.ems_model.annotation.Table;
import it.integry.ems_model.annotation.*;
import it.integry.ems_model.base.EntityBase;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -50,6 +47,10 @@ public class JtbCiclCq extends EntityBase {
@SqlField(value = "tipo_valore", nullable = false, defaultObjectValue = "0")
private TipoValore tipoValore;
@FK(tableName = "jtb_cicl_cq_valori", columnName = "id")
@SqlField(value = "id_valori")
private Long idValori;
public JtbCiclCq() {
super(logger);
}
@@ -58,56 +59,63 @@ public class JtbCiclCq extends EntityBase {
return codProd;
}
public void setCodProd(String codProd) {
public JtbCiclCq setCodProd(String codProd) {
this.codProd = codProd;
return this;
}
public Integer getIdRiga() {
return idRiga;
}
public void setIdRiga(Integer idRiga) {
public JtbCiclCq setIdRiga(Integer idRiga) {
this.idRiga = idRiga;
return this;
}
public Integer getNumFase() {
return numFase;
}
public void setNumFase(Integer numFase) {
public JtbCiclCq setNumFase(Integer numFase) {
this.numFase = numFase;
return this;
}
public String getControllo() {
return controllo;
}
public void setControllo(String controllo) {
public JtbCiclCq setControllo(String controllo) {
this.controllo = controllo;
return this;
}
public String tipologia() {
public String getTipologia() {
return tipologia;
}
public void setTipologia(String tipologia) {
public JtbCiclCq setTipologia(String tipologia) {
this.tipologia = tipologia;
return this;
}
public String getValoreRif() {
return valoreRif;
}
public void setValoreRif(String valoreRif) {
public JtbCiclCq setValoreRif(String valoreRif) {
this.valoreRif = valoreRif;
return this;
}
public Integer getNumRip() {
return numRip;
}
public void setNumRip(Integer numRip) {
public JtbCiclCq setNumRip(Integer numRip) {
this.numRip = numRip;
return this;
}
public TipoValore getTipoValore() {
@@ -118,4 +126,13 @@ public class JtbCiclCq extends EntityBase {
this.tipoValore = tipoValore;
return this;
}
public Long getIdValori() {
return idValori;
}
public JtbCiclCq setIdValori(Long idValori) {
this.idValori = idValori;
return this;
}
}

View File

@@ -0,0 +1,62 @@
package it.integry.ems_model.entity;
import com.fasterxml.jackson.annotation.JsonTypeName;
import it.integry.ems_model.annotation.*;
import it.integry.ems_model.base.EntityBase;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.kie.api.definition.type.PropertyReactive;
@Master
@PropertyReactive
@Table(JtbCiclCqValori.ENTITY)
@JsonTypeName(JtbCiclCqValori.ENTITY)
public class JtbCiclCqValori extends EntityBase {
public static final String ENTITY = "jtb_cicl_cq_valori";
private static final Logger logger = LogManager.getLogger();
private static final long serialVersionUID = 1L;
@PK
@Identity
@SqlField(value = "id", nullable = false)
private Long id;
@SqlField(value = "descrizione", nullable = false, maxLength = 255)
private String descrizione;
@SqlField(value = "valori", nullable = false)
private String valori;
public JtbCiclCqValori() {
super(logger);
}
public Long getId() {
return id;
}
public JtbCiclCqValori setId(Long id) {
this.id = id;
return this;
}
public String getDescrizione() {
return descrizione;
}
public JtbCiclCqValori setDescrizione(String descrizione) {
this.descrizione = descrizione;
return this;
}
public String getValori() {
return valori;
}
public JtbCiclCqValori setValori(String valori) {
this.valori = valori;
return this;
}
}

View File

@@ -9,7 +9,8 @@ public enum TipoValore implements IBaseEnum<TipoValore> {
DECIMALE((short) 3),
DATE((short) 4),
DATETIME((short) 5),
TIME((short) 6);
TIME((short) 6),
DROPDOWNLIST((short) 7);
private final short value;