elimiazione trigger e varie modifiche su ordini di produzione

This commit is contained in:
2024-08-06 18:18:00 +02:00
parent e5df127ee0
commit db73af8d91
2 changed files with 306 additions and 285 deletions

View File

@@ -27,6 +27,7 @@ import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
public class ProductionBusinessLogic {
@@ -505,25 +506,28 @@ public class ProductionBusinessLogic {
rapConvPRI = rapConvDist;
List<JtbDistMate> jtbDistMates;
//lista degli articoli che hanno distinta
sql = "SELECT DISTINCT cod_mart FROM dbo.getmaterialidistinta(%s) WHERE is_foglia = 0";
List<String> articoli = UtilityDB.executeSimpleQueryOnlyFirstColumn(conn, sql);
if (((DtbOrdr) dtbOrdr).getDistinta() == null ) {
sql =
Query.format(
"SELECT jtb_dist_mate.cod_mart,\n" +
" jtb_dist_mate.descrizione,\n" +
" jtb_dist_mate.descrizione_estesa,\n" +
" jtb_dist_mate.unt_mis_prod unt_mis_dist,\n" +
" jtb_dist_mate.rap_conv_prod rap_conv_dist,\n" +
" jtb_dist_mate.qta_prod AS qta_std,\n" +
" jtb_dist_mate.unt_mis_prod as unt_mis_dist,\n" +
" jtb_dist_mate.rap_conv_prod as rap_conv_dist,\n" +
" jtb_dist_mate.qta_prod AS qta_std,\n" +
" jtb_dist_mate.num_fase,\n" +
" jtb_dist_mate.flag_pri,\n" +
" jtb_dist_mate.perc_sfrido,\n" +
" jtb_dist_mate.note\n" +
"FROM dbo.getmaterialidistinta(%s) jtb_dist_mate\n" +
"WHERE is_foglia = 1\n" +
"WHERE is_root = 0\n" +
"ORDER BY item_id", codProd);
jtbDistMates = UtilityDB.executeSimpleQueryDTO(conn, sql, JtbDistMate.class);
} else {
jtbDistMates = ((DtbOrdr) dtbOrdr).getDistinta();
}
@@ -560,7 +564,6 @@ public class ProductionBusinessLogic {
}
}
Integer numFase = mp.getNumFase();
// Calcolo data consegna materiali per fase di lavoro
if (assPeriodoFase) {
@@ -594,7 +597,7 @@ public class ProductionBusinessLogic {
ordR.setDataCons(dataConsDist);
}
if (mp.getFlagPri().equalsIgnoreCase("S")) {
if (UtilityString.equalsIgnoreCase(mp.getFlagPri(),"S")) {
sql =
Query.format(
"SELECT CAST(count(*) as BIT) FROM jtb_cicl WHERE cod_prod = " + UtilityDB.valueToString(mp.getCodMart()) + " WHERE IsNull(cod_jfas) <> %s",
@@ -605,7 +608,9 @@ public class ProductionBusinessLogic {
if (isSameLav)
ordR.setNumFase(numFase + mp.getNumFase());
else
ordR.setNumFase(numFase);
ordR.setNumFase(numFase);
numFaseOld = numFase;
ordT.addDtbOrdr(ordR);
}
@@ -613,288 +618,298 @@ public class ProductionBusinessLogic {
// -------------------------------------------------------------------------------------
// SE L'ORDINE E' GIà ESISTENTE E CI SONO DEI FILES ALLEGATI ALLORA VENGONO AGGANCIATI
// -------------------------------------------------------------------------------------
if (existOrd) {
sql = "select id_attach " +
"from drl_ord_attached " +
" where gestione = " + UtilityDB.valueToString(ordT.getGestione()) + " AND " +
" data_ord = " + UtilityDB.valueDateToString(ordT.getDataOrd(), CommonConstants.DATE_FORMAT_YMD) + " and " +
" num_ord = " + UtilityDB.valueToString(ordT.getNumOrd());
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while (rs.next()) {
String idAttach = rs.getString(1);
DrlOrdAttached ordAttacched = new DrlOrdAttached();
ordAttacched.setOperation(OperationType.INSERT);
ordAttacched.setIdAttach(idAttach);
ordT.getDrlOrdAttached().add(ordAttacched);
}
rs.close();
ps.close();
}
if (!isSameLav) {
// ------------------------------------------------------------------
// ATTIVITA' ASSOCIATE ALLA DISTINTA (RISORSE o STEPS)
// ------------------------------------------------------------------
String qtaProdPRI = "", condFasi = "";
durataFasiPrec = 0;
if (!multiLavorazione) {
condFasi = "(fasParent.cod_jfas_parent IS NOT NULL OR jtb_dist_clav_dir.cod_jfas in ('" + UtilityString.replaceSubString(fasiSel, "|", "','") + "'))";
}
// if (existOrd) {
// sql = "select id_attach " +
// "from drl_ord_attached " +
// " where gestione = " + UtilityDB.valueToString(ordT.getGestione()) + " AND " +
// " data_ord = " + UtilityDB.valueDateToString(ordT.getDataOrd(), CommonConstants.DATE_FORMAT_YMD) + " and " +
// " num_ord = " + UtilityDB.valueToString(ordT.getNumOrd());
// ps = conn.prepareStatement(sql);
// rs = ps.executeQuery();
// while (rs.next()) {
// String idAttach = rs.getString(1);
// DrlOrdAttached ordAttacched = new DrlOrdAttached();
// ordAttacched.setOperation(OperationType.INSERT);
// ordAttacched.setIdAttach(idAttach);
// ordT.getDrlOrdAttached().add(ordAttacched);
// }
// rs.close();
// ps.close();
// }
sql = "";
columnFaseCicloProdOrd = "jtb_dist_clav_dir.cod_jfas";
columnFaseParentCicloProdOrd = "cod_jfas_parent ";
tableCicloProdOrd = "";
if (cicloProdJson != null) {
columnFaseCicloProdOrd = "ISNULL(cicloProdOrd.cod_jfas_child, jtb_dist_clav_dir.cod_jfas)";
columnFaseParentCicloProdOrd = "case when cicloProdOrd.cod_jfas IS NULL then cod_jfas_parent else null end ";
tableCicloProdOrd = "left outer join cicloProdOrd on jtb_dist_clav_dir.cod_jfas = cicloProdOrd.cod_jfas and " +
" jtb_dist_clav_dir.num_fase = cicloProdOrd.num_fase ";
sql = " with cicloProdOrd AS (SELECT * FROM (VALUES " + fasiCicloProdOrdine + " ) fasi([num_fase],[cod_jfas],[cod_jfas_child] ))";
}
// ------------------------------------------------------------------
// ATTIVITA' ASSOCIATE ALLA DISTINTA (RISORSE o STEPS)
// ------------------------------------------------------------------
addSteps(ordT, conn, activityCicloProd, ordProdSetupDTO, multiLavorazione, fasiSel, cicloProdJson, fasiCicloProdOrdine, codProd, codJfasRow, visCodJfas, untMisProd, qtaProd, rapConv, untMisPRI, rapConvPRI, assPeriodoFase, dataConsDist, dataIniz, dataFine, elencoFasi, pesoInQtaLav);
sql += " SELECT " + columnFaseCicloProdOrd + " as 'cod_jfas', "
+ " jtb_dist_clav_dir.activity_description, "
+ " jtb_dist_clav_dir.num_fase, "
+ " convert(varchar(8000), jtb_cicl.descrizione) as dati_tecnici, "
+ " dbo.f_distGetValueType('DD', jtb_dist_clav_dir.duration) as durata, "
+ " " + columnFaseParentCicloProdOrd + " as 'cod_jfas_parent' "
+ " FROM jtb_dist_clav_dir left outer join (select distinct cod_jfas_parent from jtb_fasi where cod_jfas_parent is not null)fasparent ON jtb_dist_clav_dir.cod_jfas = fasParent.cod_jfas_parent " +
tableCicloProdOrd + ", "
+ " jtb_cicl, "
+ " gtb_spes, "
+ " gtb_divi "
+ " WHERE jtb_dist_clav_dir.cod_jcos_dir = gtb_spes.cod_spes AND "
+ " jtb_cicl.cod_prod = jtb_dist_clav_dir.cod_prod AND "
+ " jtb_cicl.cod_divi_cont = gtb_divi.cod_divi AND "
+ " jtb_dist_clav_dir.cod_prod = " + UtilityDB.valueToString(codProd) + " AND "
+ " jtb_dist_clav_dir.cod_jfas IS NOT NULL "
+ "ORDER BY jtb_dist_clav_dir.num_fase ";
// ---------------------------------------------------------------------------
// CONTROLLI DI QUALITA' ASSOCIATI ALLA DISTINTA
// ---------------------------------------------------------------------------
addControlliQualità(ordT, conn, codProd);
sql = UtilityDB.addwhereCond(sql, condFasi, true);
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
BigDecimal rapConvRow = BigDecimal.ONE;
String untMisRow = null;
while (rs.next()) {
String codJfas = rs.getString("cod_jfas");
codJfasDist = codJfas;
String activityDescription = rs.getString("activity_description");
Integer numFaseDist = rs.getInt("num_fase");
String datiTecnici = rs.getString("dati_tecnici");
Integer durataFase = rs.getInt("durata");
String codJfasParent = rs.getString("cod_jfas_parent");
// -------------------------------------------------
// DISEGNI ORDINE DI LAVORAZIONE
// -------------------------------------------------
// Acquisizione disegni agganciati alla distinta base
addDisegni(ordT, conn, articoli);
}
BigDecimal qtaProdRow;
if (isRoot) {
// Se il codice della fase della distinta è diverso dal codice fase del ciclo produttivo allora è necessario verificare
// il codice fase del ciclo produttivo ha un codice di equivalenza/relazione associato alla fase specificata dall'utente
// ed in tal caso sostituirlo
// La struttura delle fasi dovrebbe essere uguale per i primi 4 caratteri e l'ultimo cambiare (Es.: LAV1 --> IMPA1, COTT1 e l'altra linea LAV2 --> IMPA2, COTT2)
String existCodJfasEqui = ordProdSetupDTO.getExistCodJfasEqui();
if (UtilityString.isNullOrEmpty(existCodJfasEqui)) {
existCodJfasEqui = "N";
}
if (existCodJfasEqui.compareTo("S") == 0) {
sql = "select cod_jfas from jtb_fasi where cod_jfas like left(" + UtilityDB.valueToString(codJfas) + ", 4) + '%' and cod_jfas_parent = " + UtilityDB.valueToString(codJfasRow);
codJfas = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql);
}
if (visCodJfas) {
activityDescription = UtilityString.left("(" + codJfas + ") " + activityDescription, 1024);
} else {
activityDescription = UtilityString.left(activityDescription, 1024);
}
untMisRow = untMisProd;
qtaProdRow = qtaProd;
rapConvRow = rapConv;
qtaProdPRI = "";
} else {
untMisRow = untMisPRI;
qtaProdRow = qtaProd;
rapConvRow = rapConvPRI;
qtaProdPRI = " " + untMisPRI + " " + qtaProd.setScale(2, RoundingMode.HALF_UP).toString();
}
// Calcolo periodo produzione per fase
if (assPeriodoFase) {
Calendar cal = Calendar.getInstance();
cal.setTime(dataConsDist);
cal.add(Calendar.DATE, durataFasiPrec);
dataIniz = cal.getTime();
cal.setTime(dataIniz);
cal.add(Calendar.DATE, durataFase);
dataFine = cal.getTime();
durataFasiPrec += durataFase;
}
private static void addSteps(DtbOrdt ordT, Connection conn, List<ActivityCicloProdDTO> activityCicloProd, OrdProdSetupDTO ordProdSetupDTO, boolean multiLavorazione, String fasiSel, String cicloProdJson, String fasiCicloProdOrdine, String codProd, String codJfasRow, boolean visCodJfas, String untMisProd, BigDecimal qtaProd, BigDecimal rapConv, String untMisPRI, BigDecimal rapConvPRI, boolean assPeriodoFase, Date dataConsDist, Date dataIniz, Date dataFine, String[] elencoFasi, boolean pesoInQtaLav) throws Exception {
// String columnFaseCicloProdOrd;
// String columnFaseParentCicloProdOrd;
// ResultSet rs;
// PreparedStatement ps;
// String sql;
// String codJfasDist;
// String tableCicloProdOrd;
// Integer durataFasiPrec;
// String qtaProdPRI = "", condFasi = "";
// durataFasiPrec = 0;
//
// if (!multiLavorazione) {
// condFasi = "(fasParent.cod_jfas_parent IS NOT NULL OR jtb_dist_clav_dir.cod_jfas in ('" + UtilityString.replaceSubString(fasiSel, "|", "','") + "'))";
// }
//
//
// sql = "";
// columnFaseCicloProdOrd = "jtb_dist_clav_dir.cod_jfas";
// columnFaseParentCicloProdOrd = "cod_jfas_parent ";
// tableCicloProdOrd = "";
// if (cicloProdJson != null) {
// columnFaseCicloProdOrd = "ISNULL(cicloProdOrd.cod_jfas_child, jtb_dist_clav_dir.cod_jfas)";
// columnFaseParentCicloProdOrd = "case when cicloProdOrd.cod_jfas IS NULL then cod_jfas_parent else null end ";
// tableCicloProdOrd = "left outer join cicloProdOrd on jtb_dist_clav_dir.cod_jfas = cicloProdOrd.cod_jfas and " +
// " jtb_dist_clav_dir.num_fase = cicloProdOrd.num_fase ";
// sql = " with cicloProdOrd AS (SELECT * FROM (VALUES " + fasiCicloProdOrdine + " ) fasi([num_fase],[cod_jfas],[cod_jfas_child] ))";
// }
//
// sql += " SELECT " + columnFaseCicloProdOrd + " as 'cod_jfas', "
// + " jtb_dist_clav_dir.activity_description, "
// + " jtb_dist_clav_dir.num_fase, "
// + " convert(varchar(8000), jtb_cicl.descrizione) as dati_tecnici, "
// + " dbo.f_distGetValueType('DD', jtb_dist_clav_dir.duration) as durata, "
// + " " + columnFaseParentCicloProdOrd + " as 'cod_jfas_parent' "
// + " FROM jtb_dist_clav_dir left outer join (select distinct cod_jfas_parent from jtb_fasi where cod_jfas_parent is not null)fasparent ON jtb_dist_clav_dir.cod_jfas = fasParent.cod_jfas_parent " +
// tableCicloProdOrd + ", "
// + " jtb_cicl, "
// + " gtb_spes, "
// + " gtb_divi "
// + " WHERE jtb_dist_clav_dir.cod_jcos_dir = gtb_spes.cod_spes AND "
// + " jtb_cicl.cod_prod = jtb_dist_clav_dir.cod_prod AND "
// + " jtb_cicl.cod_divi_cont = gtb_divi.cod_divi AND "
// + " jtb_dist_clav_dir.cod_prod = " + UtilityDB.valueToString(codProd) + " AND "
// + " jtb_dist_clav_dir.cod_jfas IS NOT NULL "
// + "ORDER BY jtb_dist_clav_dir.num_fase ";
//
// sql = UtilityDB.addwhereCond(sql, condFasi, true);
// ps = conn.prepareStatement(sql);
// rs = ps.executeQuery();
// BigDecimal rapConvRow = BigDecimal.ONE;
// String untMisRow = null;
// while (rs.next()) {
// String codJfas = rs.getString("cod_jfas");
// codJfasDist = codJfas;
// String activityDescription = rs.getString("activity_description");
// Integer numFaseDist = rs.getInt("num_fase");
// String datiTecnici = rs.getString("dati_tecnici");
// Integer durataFase = rs.getInt("durata");
// String codJfasParent = rs.getString("cod_jfas_parent");
//
// BigDecimal qtaProdRow;
// if (isRoot) {
// // Se il codice della fase della distinta è diverso dal codice fase del ciclo produttivo allora è necessario verificare
// // il codice fase del ciclo produttivo ha un codice di equivalenza/relazione associato alla fase specificata dall'utente
// // ed in tal caso sostituirlo
// // La struttura delle fasi dovrebbe essere uguale per i primi 4 caratteri e l'ultimo cambiare (Es.: LAV1 --> IMPA1, COTT1 e l'altra linea LAV2 --> IMPA2, COTT2)
// String existCodJfasEqui = ordProdSetupDTO.getExistCodJfasEqui();
// if (UtilityString.isNullOrEmpty(existCodJfasEqui)) {
// existCodJfasEqui = "N";
// }
// if (existCodJfasEqui.compareTo("S") == 0) {
// sql = "select cod_jfas from jtb_fasi where cod_jfas like left(" + UtilityDB.valueToString(codJfas) + ", 4) + '%' and cod_jfas_parent = " + UtilityDB.valueToString(codJfasRow);
// codJfas = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql);
// }
// if (visCodJfas) {
// activityDescription = UtilityString.left("(" + codJfas + ") " + activityDescription, 1024);
// } else {
// activityDescription = UtilityString.left(activityDescription, 1024);
// }
// untMisRow = untMisProd;
// qtaProdRow = qtaProd;
// rapConvRow = rapConv;
// qtaProdPRI = "";
// } else {
// untMisRow = untMisPRI;
// qtaProdRow = qtaProd;
// rapConvRow = rapConvPRI;
// qtaProdPRI = " " + untMisPRI + " " + qtaProd.setScale(2, RoundingMode.HALF_UP).toString();
// }
// // Calcolo periodo produzione per fase
// if (assPeriodoFase) {
// Calendar cal = Calendar.getInstance();
// cal.setTime(dataConsDist);
// cal.add(Calendar.DATE, durataFasiPrec);
// dataIniz = cal.getTime();
// cal.setTime(dataIniz);
// cal.add(Calendar.DATE, durataFase);
// dataFine = cal.getTime();
// durataFasiPrec += durataFase;
// }
//
// String[] elencoFasiAss = null;
// if (multiLavorazione) {
// elencoFasiAss = new String[1];
// elencoFasiAss[0] = codJfas;
// } else {
// // Verifica linee passate dall'utente rispetto a quelle di default presenti sulla distinta
// sql =
// "select count(*) " +
// " from jtb_fasi " +
// " where cod_jfas_parent = " + UtilityDB.valueToString(codJfas);
// Integer isFaseParent = (Integer) QueryRules.getSingleValue(conn, sql);
//
// if (isRoot) {
// if (codJfasParent != null || isFaseParent > 0) {
// elencoFasiAss = elencoFasi;
// } else {
// boolean existFase = false;
// for (int a = 0; a < elencoFasi.length; a++) {
// if (codJfas.compareTo(elencoFasi[a]) == 0) {
// existFase = true;
// break;
// }
// }
// if (!existFase) {
// elencoFasiAss = elencoFasi;
// continue;
// } else {
// elencoFasiAss = new String[1];
// elencoFasiAss[0] = codJfas;
// }
// }
// } else {
// elencoFasiAss = elencoFasi;
// }
// }
//
// BigDecimal qtaLav = BigDecimal.ZERO;
// for (int a = 0; a < elencoFasiAss.length; a++) {
// datiDist.setIdRigaStep(datiDist.getIdRigaStep() + 1);
//
// if (pesoInQtaLav) {
// qtaLav = qtaProd.divide(rapConv, EmsRestConstants.cifreDecMax, RoundingMode.HALF_UP);
// }
//
// // Inserimento riga step nell'ordine di lavorazione
// DtbOrdSteps ordStep =
// new DtbOrdSteps()
// .setCodProdPri(codProd)
// .setIdRiga(datiDist.getIdRigaStep())
// .setCodJfas(elencoFasiAss[a])
// .setDescrizioneAttivita(activityDescription + qtaProdPRI)
// .setQtaProd(qtaProdRow.divide(rapConv, EmsRestConstants.cifreDecMax, RoundingMode.HALF_UP))
// .setQtaLav(qtaLav)
// .setUntMisLav(untMisRow)
// .setRapConvLav(rapConvRow);
//
// ordStep.setOperation(OperationType.INSERT);
// if (isRoot) {
// ordStep.setNumFase(numFaseDist + datiDist.getNumFase());
// } else {
// if (datiDist.getIdRigaStep() > 1) {
// datiDist.setNumFase(datiDist.getNumFase() + 1);
// }
// ordStep.setNumFase(datiDist.getNumFase());
// }
// if (assPeriodoFase) {
// ordStep.setDataIniz(dataIniz)
// .setDataFine(dataFine);
// }
// ordStep.setNote(datiTecnici);
//
// // Acquisizione ID Attività associato al processo padre
// if (activityCicloProd.size() != 0) {
// for (int i = 0; i < activityCicloProd.size(); i++) {
// if (activityCicloProd.get(i).getNumFase() == numFaseDist) {
// ordStep.setActivityId(activityCicloProd.get(i).getActivityID());
// }
// }
// }
// ordT.getDtbOrdSteps().add(ordStep);
// }
// }
// rs.close();
// ps.close();
}
String[] elencoFasiAss = null;
if (multiLavorazione) {
elencoFasiAss = new String[1];
elencoFasiAss[0] = codJfas;
} else {
// Verifica linee passate dall'utente rispetto a quelle di default presenti sulla distinta
sql =
"select count(*) " +
" from jtb_fasi " +
" where cod_jfas_parent = " + UtilityDB.valueToString(codJfas);
Integer isFaseParent = (Integer) QueryRules.getSingleValue(conn, sql);
private static void addControlliQualità(DtbOrdt ordT, Connection conn, String codProd) throws SQLException {
// PreparedStatement ps;
// ResultSet rs;
// String sql;
// 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 "
// + "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");
// datiDist.setIdRigaContrCQ(datiDist.getIdRigaContrCQ() + 1);
//
// // Inserimento controllo di qualità nell'ordine di lavorazione
// DtbOrdCq ordCQ = new DtbOrdCq();
// ordCQ.setOperation(OperationType.INSERT);
// ordCQ.setIdRiga(datiDist.getIdRigaContrCQ());
// ordCQ.setControllo(controllo);
// ordCQ.setValoreRif(valoreRif);
// ordCQ.setNumRip(numRip);
// ordCQ.setNumFase(numFase);
// ordCQ.setTipologia(tipologia);
// if (isRoot) {
// ordCQ.setNumFase(numFase + datiDist.getNumFase());
// } else {
// ordCQ.setNumFase(numFase);
// }
// if (numFase == 0) {
// ordCQ.setNumFase(numFase);
// }
// ordT.getDtbOrdCq().add(ordCQ);
// }
// rs.close();
// ps.close();
}
if (isRoot) {
if (codJfasParent != null || isFaseParent > 0) {
elencoFasiAss = elencoFasi;
} else {
boolean existFase = false;
for (int a = 0; a < elencoFasi.length; a++) {
if (codJfas.compareTo(elencoFasi[a]) == 0) {
existFase = true;
break;
}
}
if (!existFase) {
elencoFasiAss = elencoFasi;
continue;
} else {
elencoFasiAss = new String[1];
elencoFasiAss[0] = codJfas;
}
}
} else {
elencoFasiAss = elencoFasi;
}
}
private static void addDisegni(DtbOrdt ordT, Connection conn, List<String> elencoArticoli) throws SQLException {
String sql =
" SELECT DISTINCT cod_disegno "
+ " FROM jrl_cicl_disegni "
+ "WHERE cod_prod IN " + UtilityDB.listValueToString(elencoArticoli) + " " + "ORDER BY cod_disegno ";
BigDecimal qtaLav = BigDecimal.ZERO;
for (int a = 0; a < elencoFasiAss.length; a++) {
datiDist.setIdRigaStep(datiDist.getIdRigaStep() + 1);
List<String> disegni = UtilityDB.executeSimpleQueryOnlyFirstColumn(conn, sql);
if (pesoInQtaLav) {
qtaLav = qtaProd.divide(rapConv, EmsRestConstants.cifreDecMax, RoundingMode.HALF_UP);
}
AtomicInteger index = new AtomicInteger();
List<JrlDisOrd> jrlDisOrd = disegni.stream().map(x -> {
JrlDisOrd disOrd =
new JrlDisOrd()
.setCodDisegno(x)
.setQta(BigDecimal.ONE)
.setRigaOrd(index.getAndIncrement());
return disOrd;
}).collect(Collectors.toList());
// Inserimento riga step nell'ordine di lavorazione
DtbOrdSteps ordStep =
new DtbOrdSteps()
.setCodProdPri(codProd)
.setIdRiga(datiDist.getIdRigaStep())
.setCodJfas(elencoFasiAss[a])
.setDescrizioneAttivita(activityDescription + qtaProdPRI)
.setQtaProd(qtaProdRow.divide(rapConv, EmsRestConstants.cifreDecMax, RoundingMode.HALF_UP))
.setQtaLav(qtaLav)
.setUntMisLav(untMisRow)
.setRapConvLav(rapConvRow);
if (jrlDisOrd != null && jrlDisOrd.size() > 0 )
ordT.setJrlDisOrd(jrlDisOrd);
ordStep.setOperation(OperationType.INSERT);
if (isRoot) {
ordStep.setNumFase(numFaseDist + datiDist.getNumFase());
} else {
if (datiDist.getIdRigaStep() > 1) {
datiDist.setNumFase(datiDist.getNumFase() + 1);
}
ordStep.setNumFase(datiDist.getNumFase());
}
if (assPeriodoFase) {
ordStep.setDataIniz(dataIniz)
.setDataFine(dataFine);
}
ordStep.setNote(datiTecnici);
// Acquisizione ID Attività associato al processo padre
if (activityCicloProd.size() != 0) {
for (int i = 0; i < activityCicloProd.size(); i++) {
if (activityCicloProd.get(i).getNumFase() == numFaseDist) {
ordStep.setActivityId(activityCicloProd.get(i).getActivityID());
}
}
}
ordT.getDtbOrdSteps().add(ordStep);
}
}
rs.close();
ps.close();
// ---------------------------------------------------------------------------
// 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 "
+ "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");
datiDist.setIdRigaContrCQ(datiDist.getIdRigaContrCQ() + 1);
// Inserimento controllo di qualità nell'ordine di lavorazione
DtbOrdCq ordCQ = new DtbOrdCq();
ordCQ.setOperation(OperationType.INSERT);
ordCQ.setIdRiga(datiDist.getIdRigaContrCQ());
ordCQ.setControllo(controllo);
ordCQ.setValoreRif(valoreRif);
ordCQ.setNumRip(numRip);
ordCQ.setNumFase(numFase);
ordCQ.setTipologia(tipologia);
if (isRoot) {
ordCQ.setNumFase(numFase + datiDist.getNumFase());
} else {
ordCQ.setNumFase(numFase);
}
if (numFase == 0) {
ordCQ.setNumFase(numFase);
}
ordT.getDtbOrdCq().add(ordCQ);
//((DtbOrdr) dtbOrdr).getOrdLav().getDtbOrdCq().add(ordCQ);
}
rs.close();
ps.close();
// -------------------------------------------------
// DISEGNI ORDINE DI LAVORAZIONE
// -------------------------------------------------
// Acquisizione disegni agganciati alla distinta base
int index = 0;
sql =
" SELECT cod_disegno "
+ " FROM jrl_cicl_disegni "
+ "WHERE cod_prod = " + UtilityDB.valueToString(codProd) + " " + "ORDER BY cod_disegno ";
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while (rs.next()) {
String codDisegno = rs.getString("cod_disegno");
index++;
// Inserimento disegno nell'ordine di lavorazione se non già
// presente
boolean existDisegno = false;
for (JrlDisOrd jrlDisOrd : ordT.getJrlDisOrd()) {
if (jrlDisOrd.getCodDisegno().equals(codDisegno)) {
existDisegno = true;
}
}
if (!existDisegno) {
JrlDisOrd disOrd = new JrlDisOrd();
disOrd.setOperation(OperationType.INSERT);
disOrd.setCodDisegno(codDisegno);
disOrd.setQta(BigDecimal.ONE);
disOrd.setRigaOrd(index);
ordT.getJrlDisOrd().add(disOrd);
}
}
rs.close();
ps.close();
}
}
private static String createTempTableProdotti(Connection conn, List<ElencoProdDTO> elencoProd) throws SQLException {

View File

@@ -52,47 +52,53 @@ public class JrlDisOrd extends EntityBase {
return codDisegno;
}
public void setCodDisegno(String codDisegno) {
public JrlDisOrd setCodDisegno(String codDisegno) {
this.codDisegno = codDisegno;
return this;
}
public Date getDataOrd() {
return dataOrd;
}
public void setDataOrd(Date dataOrd) {
public JrlDisOrd setDataOrd(Date dataOrd) {
this.dataOrd = dataOrd;
return this;
}
public String getGestione() {
return gestione;
}
public void setGestione(String gestione) {
public JrlDisOrd setGestione(String gestione) {
this.gestione = gestione;
return this;
}
public Integer getNumOrd() {
return numOrd;
}
public void setNumOrd(Integer numOrd) {
public JrlDisOrd setNumOrd(Integer numOrd) {
this.numOrd = numOrd;
return this;
}
public Integer getRigaOrd() {
return rigaOrd;
}
public void setRigaOrd(Integer rigaOrd) {
public JrlDisOrd setRigaOrd(Integer rigaOrd) {
this.rigaOrd = rigaOrd;
return this;
}
public BigDecimal getQta() {
return qta;
}
public void setQta(BigDecimal qta) {
public JrlDisOrd setQta(BigDecimal qta) {
this.qta = qta;
return this;
}
}