Merge remote-tracking branch 'origin/develop' into develop

This commit is contained in:
2024-01-29 19:36:05 +01:00
16 changed files with 1014 additions and 57 deletions

View File

@@ -48,7 +48,7 @@ public class EntityLoggerComponent {
@PostContextConstruct(priority = 10)
private void init() {
try {
if (!UtilityDebug.isDebugExecution()) {
if (!UtilityDebug.isDebugExecution() || UtilityDebug.isIntegryServer()) {
this.syncDBScheme();
looperService.add(this::deleteOldlogs, 12 * 60 * 60 * 1000, EntityLoggerComponent.class.getName()); //Ogni 12 ore

View File

@@ -44,6 +44,7 @@ import it.integry.ems_model.annotation.SqlField;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.base.EntityPropertyHolder;
import it.integry.ems_model.config.EmsRestConstants;
import it.integry.ems_model.entity.Azienda;
import it.integry.ems_model.entity.MrlPartitaMagAttached;
import it.integry.ems_model.entity.StbFilesAttached;
import it.integry.ems_model.entity.WtbUsersInfo;
@@ -720,10 +721,13 @@ public class EmsServices {
Gson gson = new Gson();
if (arguments.containsKey("nomeAzienda")) arguments.remove("nomeAzienda");
final Azienda defaultAzienda = Azienda.getDefaultAzienda(multiDBTransactionManager.getPrimaryConnection());
if (arguments.containsKey("nomeAzienda")) arguments.remove("nomeAzienda");
arguments.put("nomeAzienda", settingsModel.getDefaultProfile());
arguments.put("partitaIva", defaultAzienda.getPartIva());
String jsonBody = gson.toJson(arguments);
StringBuilder srb = new StringBuilder();

View File

@@ -12,6 +12,8 @@ import java.util.*
import it.integry.ems_model.utility.UtilityString
import it.integry.ems_model.utility.UtilityDB
import it.integry.ems_model.entity.MtbCols
import it.integry.ems_model.entity.MtbColt
import it.integry.ems_model.entity.MtbColr
global Connection conn
global String username

View File

@@ -19,6 +19,7 @@ public class CaricoProdFinLavDTO {
private String codMdepScar;
private String codDtipCar;
private String codDtipScar;
private String codDtipRien;
private String terminaLavorazione;
private String serDoc;
private String aggiornaStato;
@@ -27,6 +28,7 @@ public class CaricoProdFinLavDTO {
private String creaCaricoDaCollo;
private String creaScaricoDaCollo;
private String creaColloVersDaColloCarico;
private String creaRientroDaCollo;
private Integer numOrd;
private Integer idRiga;
private Integer idStep;
@@ -40,6 +42,7 @@ public class CaricoProdFinLavDTO {
private String codJfas;
private String terminaLavorazioneLinea;
private String activityID;
private Integer idLotto;
public String getCodJfas() {
return codJfas;
@@ -168,6 +171,16 @@ public class CaricoProdFinLavDTO {
this.codDtipScar = codDtipScar;
}
public String getCodDtipRien() {
return codDtipRien;
}
@XmlElement(name = "COD_DTIP_RIEN")
public CaricoProdFinLavDTO setCodDtipRien(String codDtipRien) {
this.codDtipRien = codDtipRien;
return this;
}
public String getTerminaLavorazione() {
return terminaLavorazione;
}
@@ -290,6 +303,16 @@ public class CaricoProdFinLavDTO {
return this;
}
public String getCreaRientroDaCollo() {
return creaRientroDaCollo;
}
@XmlElement(name = "CREA_RIENTRO_COLLO")
public CaricoProdFinLavDTO setCreaRientroDaCollo(String creaRientroDaCollo) {
this.creaRientroDaCollo = creaRientroDaCollo;
return this;
}
public String getActivityID() {
return activityID;
}
@@ -299,6 +322,15 @@ public class CaricoProdFinLavDTO {
return this;
}
public Integer getIdLotto() {
return idLotto;
}
public CaricoProdFinLavDTO setIdLotto(Integer idLotto) {
this.idLotto = idLotto;
return this;
}
public String getGenerateJson() {
return generateJson;
}

View File

@@ -3,9 +3,16 @@ package it.integry.ems.document.dto;
import it.integry.ems_model.entity.DtbOrdt;
import java.math.BigDecimal;
public class ChiusuraLavorazioneDTO {
private DtbOrdt ordine;
private Integer idLotto;
private String codProd;
private String partitaMag;
private String untMisProd;
private BigDecimal rapConvProd;
private String codJfas;
@@ -14,14 +21,68 @@ public class ChiusuraLavorazioneDTO {
private CaricoLavorazioneDTO caricoLavorazioneDTO;
private ScaricoLavorazioneDTO scaricoLavorazioneDTO;
private RientroLavorazioneDTO rientroLavorazioneDTO;
private boolean effettuaCarico = true;
private boolean effettuaScarico = true;
private boolean effettuaRientro = true;
private boolean chiudiOrdine = true;
private boolean terminaLavorazioneLinea = false;
private boolean salvaDocumenti = true;
public DtbOrdt getOrdine() {
return ordine;
}
public ChiusuraLavorazioneDTO setOrdine(DtbOrdt ordine) {
this.ordine = ordine;
return this;
}
public Integer getIdLotto() {
return idLotto;
}
public ChiusuraLavorazioneDTO setIdLotto(Integer idLotto) {
this.idLotto = idLotto;
return this;
}
public String getCodProd() {
return codProd;
}
public ChiusuraLavorazioneDTO setCodProd(String codProd) {
this.codProd = codProd;
return this;
}
public String getPartitaMag() {
return partitaMag;
}
public ChiusuraLavorazioneDTO setPartitaMag(String partitaMag) {
this.partitaMag = partitaMag;
return this;
}
public String getUntMisProd() {
return untMisProd;
}
public ChiusuraLavorazioneDTO setUntMisProd(String untMisProd) {
this.untMisProd = untMisProd;
return this;
}
public BigDecimal getRapConvProd() {
return rapConvProd;
}
public ChiusuraLavorazioneDTO setRapConvProd(BigDecimal rapConvProd) {
this.rapConvProd = rapConvProd;
return this;
}
public String getCodJfas() {
return codJfas;
@@ -32,14 +93,6 @@ public class ChiusuraLavorazioneDTO {
return this;
}
public DtbOrdt getOrdine() {
return ordine;
}
public ChiusuraLavorazioneDTO setOrdine(DtbOrdt ordine) {
this.ordine = ordine;
return this;
}
public CaricoLavorazioneDTO getCaricoLavorazioneDTO() {
return caricoLavorazioneDTO;
@@ -59,6 +112,15 @@ public class ChiusuraLavorazioneDTO {
return this;
}
public RientroLavorazioneDTO getRientroLavorazioneDTO() {
return rientroLavorazioneDTO;
}
public ChiusuraLavorazioneDTO setRientroLavorazioneDTO(RientroLavorazioneDTO rientroLavorazioneDTO) {
this.rientroLavorazioneDTO = rientroLavorazioneDTO;
return this;
}
public boolean isEffettuaCarico() {
return effettuaCarico;
}
@@ -77,6 +139,15 @@ public class ChiusuraLavorazioneDTO {
return this;
}
public boolean isEffettuaRientro() {
return effettuaRientro;
}
public ChiusuraLavorazioneDTO setEffettuaRientro(boolean effettuaRientro) {
this.effettuaRientro = effettuaRientro;
return this;
}
public boolean isChiudiOrdine() {
return chiudiOrdine;
}

View File

@@ -0,0 +1,77 @@
package it.integry.ems.document.dto;
import java.math.BigDecimal;
import java.util.Date;
public class RientroLavorazioneDTO {
private String codAnag;
private String codDtip;
private String activityId;
private String serDoc;
private String codMdep;
private Date dataDoc;
private BigDecimal qtaProd;
public String getCodAnag() {
return codAnag;
}
public RientroLavorazioneDTO setCodAnag(String codAnag) {
this.codAnag = codAnag;
return this;
}
public String getCodDtip() {
return codDtip;
}
public RientroLavorazioneDTO setCodDtip(String codDtip) {
this.codDtip = codDtip;
return this;
}
public String getActivityId() {
return activityId;
}
public RientroLavorazioneDTO setActivityId(String activityId) {
this.activityId = activityId;
return this;
}
public String getSerDoc() {
return serDoc;
}
public RientroLavorazioneDTO setSerDoc(String serDoc) {
this.serDoc = serDoc;
return this;
}
public String getCodMdep() {
return codMdep;
}
public RientroLavorazioneDTO setCodMdep(String codMdep) {
this.codMdep = codMdep;
return this;
}
public Date getDataDoc() {
return dataDoc;
}
public RientroLavorazioneDTO setDataDoc(Date dataDoc) {
this.dataDoc = dataDoc;
return this;
}
public BigDecimal getQtaProd() {
return qtaProd;
}
public RientroLavorazioneDTO setQtaProd(BigDecimal qtaProd) {
this.qtaProd = qtaProd;
return this;
}
}

View File

@@ -1135,6 +1135,138 @@ public class DocumentProdService {
return entityList;
}
private List<EntityBase> generateRientroDaCollo(CaricoProdFinLavDTO carico) throws Exception {
String sql, codProd = null, partitaMag = null;
String condFase = null;
List<EntityBase> entityList = new ArrayList<>();
String gestione = "L";
Date dataOrd = carico.getDataOrd();
Integer numOrd = carico.getNumOrd();
String codJfas = carico.getCodJfas();
sql = "SELECT cod_prod, partita_mag FROM dtb_ordt " +
" WHERE gestione = " + UtilityDB.valueToString(gestione) + " AND " +
" data_ord = " + UtilityDB.valueDateToString(dataOrd, CommonConstants.DATE_FORMAT_YMD) + " AND " +
" num_ord = " + UtilityDB.valueToString(numOrd);
HashMap<String, Object> datiOrd = UtilityDB.executeSimpleQueryOnlyFirstRow(multiDBTransactionManager.getPrimaryConnection(), sql);
if (datiOrd != null && !datiOrd.isEmpty()) {
codProd = (String) datiOrd.get("cod_prod");
partitaMag = (String) datiOrd.get("partita_mag");
}
if (carico.getTerminaLavorazione().compareTo("N") == 0) {
if (codJfas != null) {
condFase = "mtb_colt.cod_jfas = " + UtilityDB.valueToString(codJfas);
}
}
List<DataDocFromCollo> results;
if (carico.getDataDoc() == null) {
sql = it.integry.ems_model.utility.Query.format(
"SELECT DISTINCT mtb_colt.data_collo AS data_doc_from_collo, SUM(mtb_colr.qta_col) AS qta_col_for_date\n" +
"FROM mtb_colt\n" +
" LEFT OUTER JOIN dtb_ordt ON mtb_colt.gestione = dtb_ordt.gestione AND\n" +
" mtb_colt.data_ord = dtb_ordt.data_ord AND\n" +
" mtb_colt.num_ord = dtb_ordt.num_ord,\n" +
" mtb_colr\n" +
"WHERE ((mtb_colt.gestione = %s\n" +
" AND mtb_colt.data_ord = %s\n" +
" AND mtb_colt.num_ord = %s) OR (mtb_colt.id_lotto = %s))\n" +
" AND mtb_colt.cod_dtip IS NULL\n" +
" AND mtb_colt.segno = 1\n" +
" AND mtb_colt.gestione = mtb_colr.gestione\n" +
" AND mtb_colt.data_collo = mtb_colr.data_collo\n" +
" AND mtb_colt.ser_collo = mtb_colr.ser_collo\n" +
" AND mtb_colt.num_collo = mtb_colr.num_collo\n" +
"GROUP BY mtb_colt.data_collo\n" +
"ORDER BY 1",
gestione,
dataOrd,
numOrd,
carico.getIdLotto()
);
sql = UtilityDB.addwhereCond(sql, condFase, false);
results = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DataDocFromCollo.class);
if ((results == null || results.isEmpty()) && "S".equals(carico.getTerminaLavorazione())) {
throw new Exception("Non ci sono colli di produzione generati per la produzione in corso");
}
} else {
DataDocFromCollo dataDocFromCollo = new DataDocFromCollo();
dataDocFromCollo.setDataDocFromCollo(carico.getDataDoc());
dataDocFromCollo.setQtaColForDate(carico.getProdotti().getRow().get(0).getQtaProdAna()); /*UM magazzino*/
results = new ArrayList<>();
results.add(dataDocFromCollo);
}
if (results != null) {
for (DataDocFromCollo dataDocFromCollo : results) {
LoadColliDTO loadColli = new LoadColliDTO()
.setCodAnag(carico.getCodAnag())
.setCodDtip(carico.getCodDtipRien())
.setSerDoc(carico.getSerDoc())
.setDataDoc(dataDocFromCollo.getDataDocFromCollo())
.setCodMdep(carico.getCodMdep())
.setDataOrd(dataOrd)
.setNumOrd(numOrd);
String condDataCollo = "";
if (carico.getDataDoc() == null) {
condDataCollo = "mtb_colt.data_collo = " + UtilityDB.valueDateToString(dataDocFromCollo.getDataDocFromCollo(), CommonConstants.DATE_FORMAT_YMD);
}
sql = it.integry.ems_model.utility.Query.format(
"SELECT DISTINCT mtb_colt.gestione, mtb_colt.data_collo, mtb_colt.ser_collo, mtb_colt.num_collo\n" +
"FROM mtb_colt\n" +
" LEFT OUTER JOIN dtb_ordt ON mtb_colt.gestione = dtb_ordt.gestione AND mtb_colt.data_ord = dtb_ordt.data_ord AND\n" +
" mtb_colt.num_ord = dtb_ordt.num_ord,\n" +
" mtb_colr\n" +
"WHERE mtb_colt.gestione = 'L'\n" +
" AND mtb_colt.data_ord IS NULL\n" +
" AND mtb_colt.num_ord IS NULL\n" +
" AND mtb_colt.id_lotto = %s\n" +
" AND mtb_colt.cod_dtip IS NULL\n" +
" AND mtb_colt.segno = 1\n" +
" AND mtb_colt.gestione = mtb_colr.gestione\n" +
" AND mtb_colt.data_collo = mtb_colr.data_collo\n" +
" AND mtb_colt.ser_collo = mtb_colr.ser_collo\n" +
" AND mtb_colt.num_collo = mtb_colr.num_collo\n" +
"ORDER BY 1, 2, 3, 4",
carico.getIdLotto()
);
sql = UtilityDB.addwhereCond(sql, condDataCollo, false);
sql = UtilityDB.addwhereCond(sql, condFase, false);
List<MtbColt> colli = new ResultSetMapper().mapQuerySetToList(multiDBTransactionManager.getPrimaryConnection(), sql, MtbColt.class);
loadColli.setColli(colli);
if (loadColli.getColli() != null && !loadColli.getColli().isEmpty()) {
DtbDoct docT = loadColliService.createDocFromColli(multiDBTransactionManager, loadColli);
docT
.setActivityId(carico.getActivityID())
.setCodProd(codProd)
.setPartitaMag(partitaMag);
if (codJfas != null) {
docT.setCodJfas(codJfas);
}
entityList.add(docT);
}
}
}
return entityList;
}
@Deprecated
private void generateScaricoMaterialiDaColloVers(CaricoProdFinLavDTO carico, List<EntityBase> arrayEntity) throws Exception {
Connection conn = multiDBTransactionManager.getPrimaryConnection();
@@ -2178,6 +2310,11 @@ public class DocumentProdService {
}
}
// Generazione rientro prodotti da collo
if ("S".equalsIgnoreCase(UtilityString.isNull(carico.getCreaRientroDaCollo(), "N"))) {
arrayEntity.addAll(this.generateRientroDaCollo(carico));
}
return arrayEntity;
}
@@ -2714,6 +2851,82 @@ public class DocumentProdService {
return listDocs;
}
public List<DtbDoct> generaDocumentiLavorazioneIdLotto(ChiusuraLavorazioneDTO dtoChiusura) throws Exception {
Integer idLotto = dtoChiusura.getIdLotto();
if (idLotto == null) {
throw new Exception("Nessun id lotto selezionato!");
}
List<DtbDoct> listDocs = new ArrayList<>();
if (!dtoChiusura.isEffettuaScarico() && !dtoChiusura.isEffettuaCarico() && !dtoChiusura.isEffettuaRientro()) {
return listDocs;
}
// Verifica se è attiva l'opzione di creazione ID_ACTIVITY su carichi e scarichi
HashMap<String, String> setupCaricoScariPF = setupGest.getSetupSection(multiDBTransactionManager.getPrimaryConnection(), "CARICO_SCARICO_PF", "SETUP");
boolean generateActivityID = setupCaricoScariPF.get("GENERA_ATTIVITA").equalsIgnoreCase("S");
String activityId = null;
if (generateActivityID) {
String activityTypeID = setupCaricoScariPF.get("ACTIVITY_TYPE_ID_CARICO");
if (activityTypeID == null) {
throw new Exception("Tipologia attività da associare al carico\\scarico non configurata");
}
activityId = generaAttivitaChiusuraOrdine(dtoChiusura.getOrdine(), activityTypeID);
}
if (dtoChiusura.isEffettuaCarico()) {
CaricoLavorazioneDTO caricoDto = dtoChiusura.getCaricoLavorazioneDTO();
if (caricoDto.getSerDoc() == null) {
caricoDto.setSerDoc(DocumentRules.getSerDoc(multiDBTransactionManager.getPrimaryConnection(), caricoDto.getCodDtip(), caricoDto.getCodMdep(), caricoDto.getDataDoc()));
}
caricoDto.setActivityId(activityId);
listDocs.addAll(generaDocCaricoDaIdCollo(dtoChiusura));
}
if (dtoChiusura.isEffettuaScarico()) {
ScaricoLavorazioneDTO scaricoDto = dtoChiusura.getScaricoLavorazioneDTO();
if (scaricoDto.getSerDoc() == null) {
scaricoDto.setSerDoc(DocumentRules.getSerDoc(multiDBTransactionManager.getPrimaryConnection(), scaricoDto.getCodDtip(), scaricoDto.getCodMdep(), scaricoDto.getDataDoc()));
}
scaricoDto.setActivityId(activityId);
listDocs.addAll(generaDocScaricoDaColliIdLotto(dtoChiusura));
}
if (dtoChiusura.isEffettuaRientro()) {
RientroLavorazioneDTO rientroDTO = dtoChiusura.getRientroLavorazioneDTO();
if (rientroDTO.getSerDoc() == null) {
rientroDTO.setSerDoc(DocumentRules.getSerDoc(multiDBTransactionManager.getPrimaryConnection(), rientroDTO.getCodDtip(), rientroDTO.getCodMdep(), rientroDTO.getDataDoc()));
}
rientroDTO.setActivityId(activityId);
listDocs.addAll(generaDocRientroDaColliIdLotto(dtoChiusura));
}
return listDocs;
}
private List<DtbDoct> generaDocRientroDaColliIdLotto(ChiusuraLavorazioneDTO dtoChiusura) throws Exception {
List<DtbDoct> documentiScarico = new ArrayList<>();
RientroLavorazioneDTO dtoRientro = dtoChiusura.getRientroLavorazioneDTO();
documentiScarico.addAll(generaDocumentiRientroDaColliIdLotto(dtoChiusura));
return documentiScarico;
}
private String generaAttivitaChiusuraOrdine(DtbOrdt ordineLav, String activityTypeId) throws Exception {
@@ -3297,6 +3510,364 @@ public class DocumentProdService {
return docsList;
}
public List<DtbDoct> generaDocCaricoDaIdCollo(ChiusuraLavorazioneDTO dto) throws Exception {
List<DtbDoct> documentiCarico = new ArrayList<>();
if (dto.getCaricoLavorazioneDTO().isCaricoDaCollo()) {
documentiCarico.addAll(generaDocumentiCaricoDaColliIdLotto(dto));
} else {
documentiCarico.add(generaDocumentiCaricoDaTeorico(dto));
}
return documentiCarico;
}
private List<DtbDoct> generaDocumentiCaricoDaColliIdLotto(@NotNull ChiusuraLavorazioneDTO chiusuraLavorazioneDTO) throws Exception {
List<DtbDoct> documents = new ArrayList<>();
String condFase = "";
CaricoLavorazioneDTO caricoLavorazioneDTO = chiusuraLavorazioneDTO.getCaricoLavorazioneDTO();
if (caricoLavorazioneDTO == null) {
throw new Exception("I dati per la generazione del documento di carico sono incompleti");
}
if (chiusuraLavorazioneDTO.getIdLotto() == null) {
throw new Exception("I dati per la generazione del documento di carico sono incompleti");
}
if (chiusuraLavorazioneDTO.isChiudiOrdine()) {
if (caricoLavorazioneDTO.getCodJfas() != null) {
condFase = "mtb_colt.cod_jfas = " + UtilityDB.valueToString(caricoLavorazioneDTO.getCodJfas());
}
}
boolean flagCaricoImmediato = "S".equalsIgnoreCase(setupGest.getSetupDepo(multiDBTransactionManager.getPrimaryConnection(), "CARICO_SCARICO_PF", "SETUP", "GENERA_CARICO_SCARICO_IMMEDIATO", caricoLavorazioneDTO.getCodMdep()));
/*Se la data del documento non è stata passata da fuori allora la data documento dovrà essere quella del collo */
List<DataDocFromCollo> results = new ArrayList<>();
if (caricoLavorazioneDTO.getDataDoc() == null) {
String sql = it.integry.ems_model.utility.Query.format(
"SELECT DISTINCT mtb_colt.data_collo AS data_doc_from_collo, SUM(mtb_colr.qta_col) AS qta_col_for_date\n" +
"FROM mtb_colt\n" +
" LEFT OUTER JOIN dtb_ordt ON mtb_colt.gestione = dtb_ordt.gestione AND\n" +
" mtb_colt.data_ord = dtb_ordt.data_ord AND\n" +
" mtb_colt.num_ord = dtb_ordt.num_ord,\n" +
" mtb_colr\n" +
"WHERE mtb_colt.id_lotto = %s\n" +
" AND mtb_colt.cod_dtip IS NULL\n" +
" AND mtb_colt.segno = 1\n" +
" AND mtb_colt.gestione = mtb_colr.gestione\n" +
" AND mtb_colt.data_collo = mtb_colr.data_collo\n" +
" AND mtb_colt.ser_collo = mtb_colr.ser_collo\n" +
" AND mtb_colt.num_collo = mtb_colr.num_collo\n" +
"GROUP BY mtb_colt.data_collo\n" +
"ORDER BY 1",
chiusuraLavorazioneDTO.getIdLotto()
);
sql = UtilityDB.addwhereCond(sql, condFase, false);
results = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DataDocFromCollo.class);
if ((results == null || results.isEmpty()) && chiusuraLavorazioneDTO.isChiudiOrdine() && !flagCaricoImmediato) {
throw new Exception("Non ci sono colli di produzione generati per la produzione in corso");
}
} else {
DataDocFromCollo dataDocFromCollo = new DataDocFromCollo();
dataDocFromCollo.setDataDocFromCollo(caricoLavorazioneDTO.getDataDoc());
dataDocFromCollo.setQtaColForDate(caricoLavorazioneDTO.getQtaProd()); /*UM magazzino*/
results.add(dataDocFromCollo);
}
if (results != null) {
for (DataDocFromCollo dto : results) {
LoadColliDTO loadColli = new LoadColliDTO()
.setNumDoc(caricoLavorazioneDTO.getNumDoc())
.setCodAnag(caricoLavorazioneDTO.getCodAnag())
.setCodDtip(caricoLavorazioneDTO.getCodDtip())
.setSerDoc(caricoLavorazioneDTO.getSerDoc())
.setDataDoc(dto.getDataDocFromCollo())
.setCodMdep(caricoLavorazioneDTO.getCodMdep());
String condDataCollo = "";
if (caricoLavorazioneDTO.getDataDoc() == null) {
condDataCollo = "mtb_colt.data_collo = " + UtilityDB.valueDateToString(dto.getDataDocFromCollo(), CommonConstants.DATE_FORMAT_YMD);
}
String sql =
"SELECT DISTINCT mtb_colt.gestione, " +
" mtb_colt.data_collo, " +
" mtb_colt.ser_collo, " +
" mtb_colt.num_collo " +
" FROM mtb_colt LEFT OUTER JOIN dtb_ordt ON mtb_colt.gestione = dtb_ordt.gestione AND" +
" mtb_colt.data_ord = dtb_ordt.data_ord AND " +
" mtb_colt.num_ord = dtb_ordt.num_ord, " +
" mtb_colr " +
" WHERE mtb_colt.id_lotto = " + UtilityDB.valueToString(chiusuraLavorazioneDTO.getIdLotto()) + " AND " +
" mtb_colt.cod_dtip IS NULL AND " +
" mtb_colt.data_ord IS NOT NULL AND\n" +
" mtb_colt.num_ord IS NOT NULL AND\n" +
" mtb_colt.segno = 1 AND " +
" mtb_colt.gestione = mtb_colr.gestione AND " +
" mtb_colt.data_collo = mtb_colr.data_collo AND " +
" mtb_colt.ser_collo = mtb_colr.ser_collo AND " +
" mtb_colt.num_collo = mtb_colr.num_collo " +
"ORDER BY 1, 2, 3, 4 ";
sql = UtilityDB.addwhereCond(sql, condDataCollo, false);
sql = UtilityDB.addwhereCond(sql, condFase, false);
List<MtbColt> colli = new ResultSetMapper().mapQuerySetToList(multiDBTransactionManager.getPrimaryConnection(), sql, MtbColt.class);
loadColli.setColli(colli);
if (loadColli.getColli() != null && !loadColli.getColli().isEmpty()) {
DtbDoct docT = loadColliService.createDocFromColli(multiDBTransactionManager, loadColli);
docT
.setActivityId(caricoLavorazioneDTO.getActivityId())
.setCodProd(chiusuraLavorazioneDTO.getCodProd())
.setAnnotazioni(String.valueOf(chiusuraLavorazioneDTO.getIdLotto()));
if (caricoLavorazioneDTO.getCodJfas() != null) {
docT.setCodJfas(caricoLavorazioneDTO.getCodJfas());
}
documents.add(docT);
}
}
}
return documents;
}
public List<DtbDoct> generaDocScaricoDaColliIdLotto(ChiusuraLavorazioneDTO dto) throws Exception {
List<DtbDoct> documentiScarico = new ArrayList<>();
ScaricoLavorazioneDTO dtoScarico = dto.getScaricoLavorazioneDTO();
if (dtoScarico.isScaricoDaCollo()) {
documentiScarico.addAll(generaDocumentiScaricoOrdineDaColliIdLotto(dto));
}
/*Genera scarico materiali: se c'è stato uno scarico da collo di versamento allora scarica solo eventuali materiali restanti*/
/*Se la data del documento non viene passata da fuori allora vuole dire che la generazione dei carichi/scarichi deve essere fatta
* utilizzando la data dei colli di versamento o carico*/
// if (dtoScarico.getDataDoc() == null) {
// documentiScarico.addAll(generaDocumentiScaricoMaterialiDaDataCollo(dto));
// } else {
// documentiScarico.addAll(generaDocumentiScaricoMateriali(dto, null));
// }
return documentiScarico;
}
private List<DtbDoct> generaDocumentiScaricoOrdineDaColliIdLotto(@NotNull ChiusuraLavorazioneDTO chiusuraLavorazioneDTO) throws Exception {
List<DtbDoct> documents = new ArrayList<>();
String condFase = null;
if (!chiusuraLavorazioneDTO.isChiudiOrdine()) {
if (chiusuraLavorazioneDTO.getCodJfas() != null) {
condFase = "mtb_colt.cod_jfas = " + UtilityDB.valueToString(chiusuraLavorazioneDTO.getCodJfas());
}
}
ScaricoLavorazioneDTO datiScarico = chiusuraLavorazioneDTO.getScaricoLavorazioneDTO();
/*Se la data del documento non è stata passata da fuori allora la data documento dovrà essere quella del collo */
List<DataDocFromCollo> results = new ArrayList<>();
if (datiScarico.getDataDoc() == null) {
String sql =
" SELECT distinct mtb_colt.data_collo as data_doc_from_collo, " +
" ISNULL(carichi.qta_col_for_date , 0) as qta_col_for_date " +
" FROM mtb_colt left outer join (SELECT mtb_colt.data_collo , " +
" sum(qta_col) as qta_col_for_date " +
" FROM mtb_colt , mtb_colr " +
" WHERE mtb_colt.id_lotto = " + UtilityDB.valueToString(chiusuraLavorazioneDTO.getIdLotto()) + " AND " +
" mtb_colt.cod_dtip IS NULL AND " +
" mtb_colt.segno = 1 AND " +
" mtb_colt.gestione = mtb_colr.gestione AND " +
" mtb_colt.data_collo = mtb_colr.data_collo AND " +
" mtb_colt.ser_collo = mtb_colr.ser_collo AND " +
" mtb_colt.num_collo = mtb_colr.num_collo " +
"GROUP BY mtb_colt.data_collo )carichi ON mtb_colt.data_collo = carichi.data_collo " +
" WHERE mtb_colt.id_lotto = " + UtilityDB.valueToString(chiusuraLavorazioneDTO.getIdLotto()) + " AND " +
" mtb_colt.cod_dtip IS NULL AND " +
" mtb_colt.segno = -1 " +
"ORDER BY 1 ";
sql = UtilityDB.addwhereCond(sql, condFase, false);
results = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DataDocFromCollo.class);
if (results == null) {
results = new ArrayList<>();
}
} else {
DataDocFromCollo dataDocFromCollo = new DataDocFromCollo();
dataDocFromCollo.setDataDocFromCollo(datiScarico.getDataDoc());
dataDocFromCollo.setQtaColForDate(chiusuraLavorazioneDTO.getScaricoLavorazioneDTO().getQtaProd()); /*UM magazzino*/
results.add(dataDocFromCollo);
}
for (DataDocFromCollo ddfc : results) {
LoadColliDTO loadColli =
new LoadColliDTO()
.setCodAnag(datiScarico.getCodAnag())
.setCodDtip(datiScarico.getCodDtip())
.setDataDoc(ddfc.getDataDocFromCollo())
.setSerDoc(datiScarico.getSerDoc())
.setCodMdep(datiScarico.getCodMdep());
String condDataCollo = "";
if (datiScarico.getDataDoc() == null) {
condDataCollo = "mtb_colt.data_collo = " + UtilityDB.valueDateToString(ddfc.getDataDocFromCollo(), CommonConstants.DATE_FORMAT_YMD);
}
// Acquisizione colli di scarico intestati all'ordine di lavorazione
String sql =
"SELECT DISTINCT mtb_colt.gestione, " +
" mtb_colt.data_collo, " +
" mtb_colt.ser_collo, " +
" mtb_colt.num_collo " +
" FROM mtb_colt, " +
" mtb_colr " +
" WHERE mtb_colt.id_lotto = " + UtilityDB.valueToString(chiusuraLavorazioneDTO.getIdLotto()) + " AND " +
" mtb_colt.cod_dtip IS NULL AND " +
" mtb_colt.segno = -1 AND " +
" mtb_colt.gestione = mtb_colr.gestione AND " +
" mtb_colt.data_collo = mtb_colr.data_collo AND " +
" mtb_colt.ser_collo = mtb_colr.ser_collo AND " +
" mtb_colt.num_collo = mtb_colr.num_collo " +
"ORDER BY 1, 2, 3, 4 ";
sql = UtilityDB.addwhereCond(sql, condFase, false);
sql = UtilityDB.addwhereCond(sql, condDataCollo, false);
List<MtbColt> mtbColts = new ResultSetMapper().mapQuerySetToList(multiDBTransactionManager.getPrimaryConnection(), sql, MtbColt.class);
loadColli.setColli(mtbColts);
if (loadColli.getColli() != null && !loadColli.getColli().isEmpty()) {
DtbDoct docT = loadColliService.createDocFromColli(multiDBTransactionManager, loadColli);
docT
.setCodProd(chiusuraLavorazioneDTO.getCodProd())
.setSerDoc(datiScarico.getSerDoc())
.setActivityId(datiScarico.getActivityId())
.setAnnotazioni(String.valueOf(chiusuraLavorazioneDTO.getIdLotto()));
if (chiusuraLavorazioneDTO.getCodJfas() != null) {
docT.setCodJfas(chiusuraLavorazioneDTO.getCodJfas());
}
documents.add(docT);
}
}
return documents;
}
private List<DtbDoct> generaDocumentiRientroDaColliIdLotto(ChiusuraLavorazioneDTO chiusuraLavorazioneDTO) throws Exception {
List<DtbDoct> documents = new ArrayList<>();
String condFase = null;
if (!chiusuraLavorazioneDTO.isChiudiOrdine()) {
if (chiusuraLavorazioneDTO.getCodJfas() != null) {
condFase = "mtb_colt.cod_jfas = " + UtilityDB.valueToString(chiusuraLavorazioneDTO.getCodJfas());
}
}
RientroLavorazioneDTO datiRientro = chiusuraLavorazioneDTO.getRientroLavorazioneDTO();
/*Se la data del documento non è stata passata da fuori allora la data documento dovrà essere quella del collo */
List<DataDocFromCollo> results = new ArrayList<>();
if (datiRientro.getDataDoc() == null) {
String sql = it.integry.ems_model.utility.Query.format(
"SELECT DISTINCT mtb_colt.data_collo AS data_doc_from_collo, SUM(mtb_colr.qta_col) AS qta_col_for_date\n" +
"FROM mtb_colt\n" +
" LEFT OUTER JOIN dtb_ordt ON mtb_colt.gestione = dtb_ordt.gestione AND\n" +
" mtb_colt.data_ord = dtb_ordt.data_ord AND\n" +
" mtb_colt.num_ord = dtb_ordt.num_ord,\n" +
" mtb_colr\n" +
"WHERE mtb_colt.id_lotto = %s\n" +
" AND mtb_colt.cod_dtip IS NULL\n" +
" AND mtb_colt.segno = 1\n" +
" AND mtb_colt.gestione = mtb_colr.gestione\n" +
" AND mtb_colt.data_collo = mtb_colr.data_collo\n" +
" AND mtb_colt.ser_collo = mtb_colr.ser_collo\n" +
" AND mtb_colt.num_collo = mtb_colr.num_collo\n" +
"GROUP BY mtb_colt.data_collo\n" +
"ORDER BY 1",
chiusuraLavorazioneDTO.getIdLotto()
);
sql = UtilityDB.addwhereCond(sql, condFase, false);
results = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DataDocFromCollo.class);
if (results == null) {
results = new ArrayList<>();
}
} else {
DataDocFromCollo dataDocFromCollo = new DataDocFromCollo()
.setDataDocFromCollo(datiRientro.getDataDoc())
.setQtaColForDate(datiRientro.getQtaProd()); /*UM magazzino*/
results.add(dataDocFromCollo);
}
for (DataDocFromCollo ddfc : results) {
LoadColliDTO loadColli =
new LoadColliDTO()
.setCodAnag(datiRientro.getCodAnag())
.setCodDtip(datiRientro.getCodDtip())
.setDataDoc(ddfc.getDataDocFromCollo())
.setSerDoc(datiRientro.getSerDoc())
.setCodMdep(datiRientro.getCodMdep());
String condDataCollo = "";
if (datiRientro.getDataDoc() == null) {
condDataCollo = "mtb_colt.data_collo = " + UtilityDB.valueDateToString(ddfc.getDataDocFromCollo(), CommonConstants.DATE_FORMAT_YMD);
}
// Acquisizione colli di carico intestati all'id lotto
String sql = it.integry.ems_model.utility.Query.format(
"SELECT DISTINCT mtb_colt.gestione, mtb_colt.data_collo, mtb_colt.ser_collo, mtb_colt.num_collo\n" +
"FROM mtb_colt\n" +
" LEFT OUTER JOIN dtb_ordt ON mtb_colt.gestione = dtb_ordt.gestione AND mtb_colt.data_ord = dtb_ordt.data_ord AND\n" +
" mtb_colt.num_ord = dtb_ordt.num_ord,\n" +
" mtb_colr\n" +
"WHERE mtb_colt.gestione = 'L'\n" +
" AND mtb_colt.data_ord IS NULL\n" +
" AND mtb_colt.num_ord IS NULL\n" +
" AND mtb_colt.id_lotto = %s\n" +
" AND mtb_colt.cod_dtip IS NULL\n" +
" AND mtb_colt.segno = 1\n" +
" AND mtb_colt.gestione = mtb_colr.gestione\n" +
" AND mtb_colt.data_collo = mtb_colr.data_collo\n" +
" AND mtb_colt.ser_collo = mtb_colr.ser_collo\n" +
" AND mtb_colt.num_collo = mtb_colr.num_collo\n" +
"ORDER BY 1, 2, 3, 4",
chiusuraLavorazioneDTO.getIdLotto()
);
sql = UtilityDB.addwhereCond(sql, condFase, false);
sql = UtilityDB.addwhereCond(sql, condDataCollo, false);
List<MtbColt> mtbColts = new ResultSetMapper().mapQuerySetToList(multiDBTransactionManager.getPrimaryConnection(), sql, MtbColt.class);
loadColli.setColli(mtbColts);
if (loadColli.getColli() != null && !loadColli.getColli().isEmpty()) {
DtbDoct docT = loadColliService.createDocFromColli(multiDBTransactionManager, loadColli);
docT
.setCodProd(chiusuraLavorazioneDTO.getCodProd())
.setSerDoc(datiRientro.getSerDoc())
.setActivityId(datiRientro.getActivityId())
.setAnnotazioni(String.valueOf(chiusuraLavorazioneDTO.getIdLotto()));
if (chiusuraLavorazioneDTO.getCodJfas() != null) {
docT.setCodJfas(chiusuraLavorazioneDTO.getCodJfas());
}
documents.add(docT);
}
}
return documents;
}
private List<DtbDocr> getRigheScaricoDocumento(ChiusuraLavorazioneDTO chiusuraLavorazioneDTO, List<MaterialeScaricoDTO> listMateriali, DettaglioScaricoDTO dettaglioScaricoDTO, DataDocFromCollo dataDocFromCollo) throws Exception {
List<DtbDocr> rows = new ArrayList<>();
List<String> materialiProcessati = new ArrayList<>();
@@ -3501,7 +4072,7 @@ public class DocumentProdService {
" select partita_mag, " +
" qta as qta_inevasa, " +
UtilityDB.valueToString(materiale.getRigaOrd()) + " as riga_ord " +
" from dbo.getQtaXPartitaMag(" + UtilityDB.valueToString(datiScarico.getCodMdep()) + ", " + UtilityDB.valueToString(materiale.getCodMart()) + ", " + UtilityDB.valueToString(tipoMetodo) + "," + UtilityDB.valueToString(materiale.getQtaMate()) + ",0, " + UtilityDB.valueToString(materiale.getSystemNote()) + ", " + UtilityDB.valueDateToString(dataDocFromCollo.getDataDocFromCollo(), CommonConstants.DATE_FORMAT_YMD)+ ", " + UtilityDB.valueDateToString(dataDocFromCollo.getDataDocFromCollo(), CommonConstants.DATE_FORMAT_YMD) + ")";
" from dbo.getQtaXPartitaMag(" + UtilityDB.valueToString(datiScarico.getCodMdep()) + ", " + UtilityDB.valueToString(materiale.getCodMart()) + ", " + UtilityDB.valueToString(tipoMetodo) + "," + UtilityDB.valueToString(materiale.getQtaMate()) + ",0, " + UtilityDB.valueToString(materiale.getSystemNote()) + ", " + UtilityDB.valueDateToString(dataDocFromCollo.getDataDocFromCollo(), CommonConstants.DATE_FORMAT_YMD) + ", " + UtilityDB.valueDateToString(dataDocFromCollo.getDataDocFromCollo(), CommonConstants.DATE_FORMAT_YMD) + ")";
} else {
// Se la partita non c'è e non è tracciabile allora non verrà fatta alcuna assegnazione di partita

View File

@@ -24,10 +24,7 @@ import it.integry.ems_model.exception.EntityException;
import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.types.ApplicationName;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityHashMap;
import it.integry.ems_model.utility.UtilityStream;
import it.integry.ems_model.utility.UtilityString;
import it.integry.ems_model.utility.*;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
@@ -723,6 +720,24 @@ public class OrdiniWebImportService {
}
if (countRow == 1) {
String sql = "select gg_cons\n" +
"from vtb_dest\n" +
"where cod_anag = " + UtilityDB.valueToString(codAnag) +
" and cod_vdes = " + UtilityDB.valueToString(codVdes);
String calcDataCons = importSetupSection.get("CALC_DATA_CONS");
String setDecorrenza = importSetupSection.get("SET_DECORRENZA");
int ggCons = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
if (dataConsRich == null && calcDataCons != null && calcDataCons.equalsIgnoreCase("S")) {
dataConsRich = UtilityDate.dateAdd(dataCons, ggCons);
}
if (dataConsRich != null && setDecorrenza != null && setDecorrenza.equalsIgnoreCase("S")){
dtbOrdt.setDataRifScad(dataConsRich);
}
dtbOrdt.setGestione("V");
dtbOrdt.setFlagAnnulla(flagAnnulla);
dtbOrdt.setEanFidelity(eanFidelity);

View File

@@ -403,6 +403,15 @@ public class MesProductionControllerV2 {
return ServiceRestResponse.createPositiveResponse();
}
@RequestMapping(value = "cambioFaseGroup", method = RequestMethod.POST)
public @ResponseBody
ServiceRestResponse cambioFaseGroup(@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
@RequestBody GroupStepDTO groupStepDTO) throws Exception {
mesProductionService.executeGroupStep(groupStepDTO, MesProductionServiceV2.Action.CAMBIO_FASE);
return ServiceRestResponse.createPositiveResponse();
}
@RequestMapping(value = "createColloCaricoGroup", method = RequestMethod.POST)
public @ResponseBody
ServiceRestResponse createColloCaricoGroup(@RequestParam(CommonConstants.PROFILE_DB) String profileDB,

View File

@@ -72,7 +72,7 @@ public class ProductionController {
@RequestMapping(value = "/order/close", method = RequestMethod.POST)
public @ResponseBody
ServiceRestResponse mrpDailyMaterialReq(
ServiceRestResponse chiudiOrdineLavorazione(
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
@RequestBody() ChiusuraLavorazioneDTO chiusuraLavorazioneDTO) throws Exception {
return ServiceRestResponse.createPositiveResponse(productionService.chiudiOrdineLavorazione(chiusuraLavorazioneDTO));

View File

@@ -11,6 +11,7 @@ public class GroupStepDTO {
String note;
String terminaLavorazione = "S";
String terminaLavorazioneLinea = "N";
String newCodJfas;
public String getCodJfas() {
return codJfas;
@@ -83,4 +84,13 @@ public class GroupStepDTO {
this.terminaLavorazioneLinea = terminaLavorazioneLinea;
return this;
}
public String getNewCodJfas() {
return newCodJfas;
}
public GroupStepDTO setNewCodJfas(String newCodJfas) {
this.newCodJfas = newCodJfas;
return this;
}
}

View File

@@ -5,12 +5,11 @@ import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import it.integry.common.var.CommonConstants;
import it.integry.ems.document.dto.CaricoProdFinLavDTO;
import it.integry.ems.document.dto.CaricoProdFinLavProdottiDTO;
import it.integry.ems.document.dto.CaricoProdFinLavRowDTO;
import it.integry.ems.document.dto.*;
import it.integry.ems.document.service.DocumentProdService;
import it.integry.ems.exception.MissingDataException;
import it.integry.ems.exception.PrimaryDatabaseNotPresentException;
import it.integry.ems.object_storage.minio.sdk.errors.MinioException;
import it.integry.ems.production.dto.*;
import it.integry.ems.report.dto.JasperDTO;
import it.integry.ems.report.dto.PairsDTO;
@@ -24,6 +23,7 @@ import it.integry.ems.utility.UtilityEntity;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.db.ResultSetMapper;
import it.integry.ems_model.entity.*;
import it.integry.ems_model.exception.*;
import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.*;
@@ -35,12 +35,16 @@ import org.apache.pdfbox.printing.Orientation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import org.xmlpull.v1.XmlPullParserException;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.net.HttpURLConnection;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -421,6 +425,55 @@ public class MesProductionServiceV2 {
UtilityEntity.throwEntitiesException(UtilityEntity.toEntityBaseList(dtbOrdtList));
}
public void cambioFase(Date dataOrd, Integer numOrd, String gestioneOrd, String codJfas, Integer idStep, Integer idRiga, String newCodJfas) throws SQLException, IOException, PrimaryDatabaseNotPresentException, DataConverterNotFoundException, InstantiationException, IllegalAccessException, RulesNotCompiledException, MergeEntityDBToObjectException, MinioException, XmlPullParserException, NoSuchAlgorithmException, InvalidKeyException, NoSuchFieldException, FieldMissingException, InvocationTargetException, ConverterNotConfiguredException, EntityException {
String whereCondCodJfas = "";
String whereCondIdStep = "";
if (!UtilityString.isNullOrEmpty(codJfas)) {
whereCondCodJfas = " AND cod_jfas = " + UtilityDB.valueToString(codJfas);
}
if (idStep != null && idRiga != null) {
whereCondIdStep = " AND id_step = " + UtilityDB.valueToString(idStep) + " AND id_riga = " + UtilityDB.valueToString(idRiga);
}
String sql = "SELECT * " +
" FROM dtb_ord_steps " +
" WHERE num_ord = " + UtilityDB.valueToString(numOrd) +
" AND gestione = " + UtilityDB.valueToString(gestioneOrd) +
" AND data_ord = " + UtilityDB.valueDateToString(dataOrd, CommonConstants.DATE_FORMAT_YMD) +
whereCondCodJfas +
whereCondIdStep +
" AND data_fine IS NULL " +
" AND data_iniz IS NULL ";
List<DtbOrdSteps> latestSteps = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbOrdSteps.class);
ArrayList<DtbOrdt> dtbOrdtList = new ArrayList<>();
if (latestSteps != null) {
for (DtbOrdSteps dtbOrdStep : latestSteps) {
DtbOrdt dtbOrdt = new DtbOrdt();
dtbOrdt.setOperation(OperationType.NO_OP);
dtbOrdt.setGestione(dtbOrdStep.getGestione());
dtbOrdt.setDataOrd(dtbOrdStep.getDataOrd());
dtbOrdt.setNumOrd(dtbOrdStep.getNumOrd());
dtbOrdt.setDtbOrdSteps(new ArrayList<>());
dtbOrdt.getDtbOrdSteps().add(dtbOrdStep);
dtbOrdStep.setCodJfas(newCodJfas);
dtbOrdStep.setOperation(OperationType.UPDATE);
dtbOrdtList.add(dtbOrdt);
}
}
entityProcessor.processEntityList(dtbOrdtList, true);
UtilityEntity.throwEntitiesException(UtilityEntity.toEntityBaseList(dtbOrdtList));
}
public void updateQtaImmesseStep(OrdineLavorazioneDTO ordineLavorazione, String codJfas, double qta) throws Exception {
@@ -1041,7 +1094,8 @@ public class MesProductionServiceV2 {
public enum Action {
OPEN,
CLOSE,
STOP
STOP,
CAMBIO_FASE
}
public void executeGroupStep(GroupStepDTO groupStepDTO, Action action) throws Exception {
@@ -1123,37 +1177,51 @@ public class MesProductionServiceV2 {
if (ordine.getNumFase() == ordine.getMaxFase()) {
String codDtipScar = setupGest.getSetup("W_PORDI_RC", "SETUP_DOCUMENTI", "COD_DTIP_SCAR");
String codDtipCar = setupGest.getSetup("W_PORDI_RC", "SETUP_DOCUMENTI", "COD_DTIP_CAR");
String codDtipRien = setupGest.getSetup("W_PORDI_RC", "SETUP_DOCUMENTI", "COD_DTIP_RIEN");
String codMdepCar = setupGest.getSetup("W_PORDI_RC", "SETUP_DOCUMENTI", "COD_MDEP_CAR");
CaricoProdFinLavDTO carico = new CaricoProdFinLavDTO();
ChiusuraLavorazioneDTO dto = new ChiusuraLavorazioneDTO();
carico.setGestione(ordine.getGestione());
carico.setDataOrd(ordine.getDataOrd());
carico.setNumOrd(ordine.getNumOrd());
carico.setCodJfas(groupStepDTO.getCodJfas());
carico.setCodAnag(ordine.getCodAnag());
carico.setEffettuaCaricoProdotto("S");
carico.setEffettuaScaricoMateriali("S");
carico.setCodDtipScar(codDtipScar);
carico.setCodDtipCar(codDtipCar);
carico.setCodMdep(UtilityString.isNullOrEmpty(codMdepCar) ? null : codMdepCar);
carico.setCodMdepScar(ordine.getCodMdep());
carico.setCreaCaricoDaCollo("S");
carico.setCreaScaricoDaCollo("S");
carico.setTerminaLavorazione(groupStepDTO.getTerminaLavorazione());
carico.setTerminaLavorazioneLinea(groupStepDTO.getTerminaLavorazioneLinea());
dto
.setIdLotto(ordine.getIdLotto())
.setCodProd(groupStepDTO.getCodProd())
.setPartitaMag(ordine.getPartitaMag())
.setUntMisProd(ordine.getUntMisProd())
.setRapConvProd(ordine.getRapConvProd())
.setCodJfas(groupStepDTO.getCodJfas())
.setEffettuaCarico(true)
.setEffettuaScarico(true)
.setChiudiOrdine(groupStepDTO.getTerminaLavorazione().equalsIgnoreCase("S"))
.setTerminaLavorazioneLinea(groupStepDTO.getTerminaLavorazioneLinea().equalsIgnoreCase("S"))
.setSalvaDocumenti(false);
CaricoProdFinLavProdottiDTO prodotti = new CaricoProdFinLavProdottiDTO();
CaricoLavorazioneDTO dtoCarico = new CaricoLavorazioneDTO();
prodotti.setRow(new ArrayList<>());
carico.setProdotti(prodotti);
dtoCarico
.setCodDtip(codDtipCar)
.setQtaProd(ordine.getQtaTrasferite())
.setCaricoDaCollo(true)
.setCodMdep(codMdepCar)
.setCodAnag(ordine.getCodAnag());
CaricoProdFinLavRowDTO prodotto = new CaricoProdFinLavRowDTO();
ScaricoLavorazioneDTO dtoScarico = new ScaricoLavorazioneDTO();
prodotto.setQtaProdAna(ordine.getQtaTrasferite());
prodotti.getRow().add(prodotto);
dtoScarico
.setCodDtip(codDtipScar)
.setCodMdep(ordine.getCodMdep())
.setCodAnag(ordine.getCodAnag())
.setQtaProd(ordine.getQtaTrasferite());
documentProdService.caricoProdFinLav(carico);
RientroLavorazioneDTO dtoRientro = new RientroLavorazioneDTO()
.setCodDtip(codDtipRien)
.setCodMdep(ordine.getCodMdep())
.setCodAnag(ordine.getCodAnag());
dto.setCaricoLavorazioneDTO(dtoCarico);
dto.setScaricoLavorazioneDTO(dtoScarico);
dto.setRientroLavorazioneDTO(dtoRientro);
entitiesToSave.addAll(productionService.chiudiOrdineLotto(dto));
stop = true;
} else {
@@ -1167,6 +1235,10 @@ public class MesProductionServiceV2 {
entitiesToSave.add(ordLav);
}
break;
case CAMBIO_FASE:
this.cambioFase(ordine.getDataOrd(), ordine.getNumOrd(), ordine.getGestione(), groupStepDTO.getCodJfas(), null, null, groupStepDTO.getNewCodJfas());
break;
}
@@ -1207,9 +1279,9 @@ public class MesProductionServiceV2 {
.setCodJfas(ordineLav.getCodJfas())
.setCodAnag(ordineLav.getCodAnag())
.setPosizione(ordineLav.getCodJfas())
.setDataOrd(ordineLav.getDataOrd())
.setNumOrd(ordineLav.getNumOrd())
.setRifOrd("Primo ordine id lotto")
// .setDataOrd(ordineLav.getDataOrd())
// .setNumOrd(ordineLav.getNumOrd())
// .setRifOrd("Primo ordine id lotto")
.setCodTcol(ordineLav.getCodTcolUl())
.setCodVdes(ordineLav.getCodVdes())
.setIdLotto(ordineLav.getIdLotto());

View File

@@ -800,6 +800,40 @@ public class ProductionService {
return entityBaseList;
}
public List<EntityBase> chiudiOrdineLotto(ChiusuraLavorazioneDTO chiusuraLavorazioneDTO) throws Exception {
List<EntityBase> entityBaseList = new ArrayList<>();
if (chiusuraLavorazioneDTO.getIdLotto() == null) {
throw new Exception("Impossibile identificare l'id lotto selezionato!");
}
// chiusuraLavorazioneDTO.getOrdine().setOperation(OperationType.SELECT_OBJECT);
// entityProcessor.processEntity(chiusuraLavorazioneDTO.getOrdine(), multiDBTransactionManager);
if (chiusuraLavorazioneDTO.isEffettuaCarico() || chiusuraLavorazioneDTO.isEffettuaScarico() || chiusuraLavorazioneDTO.isEffettuaRientro()) {
entityBaseList.addAll(documentProdService.generaDocumentiLavorazioneIdLotto(chiusuraLavorazioneDTO));
}
if (chiusuraLavorazioneDTO.isChiudiOrdine()) {
boolean generateLotto = "S".equalsIgnoreCase(setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(), "W_PORDI_RC", "GENERA_LOTTO_PROD", "GENERA_LOTTO"));
entityBaseList.addAll(evadiIdLotto(chiusuraLavorazioneDTO.getIdLotto()));
if (generateLotto) {
// Verifica chiusura lotto di produzione se tutti gli ordini ad esso associati sono evasi
Date dataDoc = chiusuraLavorazioneDTO.getCaricoLavorazioneDTO() != null && chiusuraLavorazioneDTO.getCaricoLavorazioneDTO().getDataDoc() != null ? chiusuraLavorazioneDTO.getCaricoLavorazioneDTO().getDataDoc() : new Date();
JtbLott lot = checkChiusuraLotto(chiusuraLavorazioneDTO.getOrdine(), dataDoc);
if (lot != null) {
entityBaseList.add(lot);
}
}
} else if (chiusuraLavorazioneDTO.isTerminaLavorazioneLinea()) {
entityBaseList.add(terminaLavorazioneLinea(chiusuraLavorazioneDTO.getOrdine(), chiusuraLavorazioneDTO.getCodJfas()));
}
if (chiusuraLavorazioneDTO.isSalvaDocumenti()) {
entityProcessor.processEntityList(entityBaseList, true);
}
return entityBaseList;
}
private JtbLott checkChiusuraLotto(DtbOrdt ordine, Date dataDoc) throws Exception {
@@ -847,6 +881,29 @@ public class ProductionService {
return ordT;
}
public List<DtbOrdt> evadiIdLotto(Integer idLotto) throws SQLException, IOException, PrimaryDatabaseNotPresentException, DataConverterNotFoundException, InstantiationException, IllegalAccessException {
// Chiusura forzata ordine
String sql = Query.format(
"SELECT gestione, data_ord, num_ord\n" +
"FROM jtb_lotr\n" +
"WHERE id_lotto = %s",
idLotto
);
List<DtbOrdt> ordini = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbOrdt.class);
for (DtbOrdt ordine : ordini) {
ordine
.setFlagEvasoProd("E")
.setFlagEvasoForzato("S");
ordine.setOperation(OperationType.UPDATE);
}
return ordini;
}
public DtbOrdt terminaLavorazioneLinea(DtbOrdt ordineLav, String codJfas) throws Exception {
Connection conn = multiDBTransactionManager.getPrimaryDatasource().getConnection();

View File

@@ -14,6 +14,7 @@ public class ScaricoMateriaPrimaDaColloDTO {
private BigDecimal quantity;
private DtbOrdr order;
private boolean createNewUl = false;
private Integer idLotto;
public String getCodMart() {
return codMart;
@@ -77,4 +78,13 @@ public class ScaricoMateriaPrimaDaColloDTO {
this.codMdep = codMdep;
return this;
}
public Integer getIdLotto() {
return idLotto;
}
public ScaricoMateriaPrimaDaColloDTO setIdLotto(Integer idLotto) {
this.idLotto = idLotto;
return this;
}
}

View File

@@ -2516,14 +2516,14 @@ public class WMSGenericService {
anomalieList.add(AnomalieDTO.error("Non è stato possibile scaricare la quantita per l'articolo " + codMart + ": i dati del collo di origine non cono completi"));
continue;
}
if (order != null && (
order.getDataOrd() == null ||
order.getNumOrd() == null ||
order.getGestione() == null
)) {
anomalieList.add(AnomalieDTO.error("Non è stato possibile scaricare la quantita per l'articolo " + codMart + ": i dati dell' ordine non sono completi"));
continue;
}
// if (order != null && (
// order.getDataOrd() == null ||
// order.getNumOrd() == null ||
// order.getGestione() == null
// )) {
// anomalieList.add(AnomalieDTO.error("Non è stato possibile scaricare la quantita per l'articolo " + codMart + ": i dati dell' ordine non sono completi"));
// continue;
// }
if (order != null) {
codAnag = !UtilityString.isNullOrEmpty(order.getCodAnag()) ? order.getCodAnag() : null;
if (UtilityString.isNullOrEmpty(codAnag)) {
@@ -2601,6 +2601,7 @@ public class WMSGenericService {
.setPosizione(giacenza.getPosizione())
.setDataOrd(order != null ? order.getDataOrd() : null)
.setNumOrd((order != null ? order.getNumOrd() : null))
.setIdLotto(scarico.getIdLotto())
.setCodAnag(codAnag);
mtbColt.setOperation(OperationType.INSERT_OR_UPDATE);
mtbColtsToInsert.add(mtbColt);

View File

@@ -1,5 +1,6 @@
package it.integry.ems.retail.wms.lavorazione.service;
import com.annimon.stream.Stream;
import it.integry.ems.javabeans.RequestDataDTO;
import it.integry.ems.logistic.dto.sm2.FiltroDistribuzioneColloDTO;
import it.integry.ems.product.importaz.service.ProductServices;
@@ -147,11 +148,36 @@ public class WMSLavorazioneService {
final List<OrdineLavorazioneDTO> ordiniLavorazioneInCorso = productionOrderDataHandlerService.getOrdiniLavorazioneInCorso(createUDSRequestDTO.getCodJfas());
//Try to retrieve
//TODO: Assegnare l'ordine o l'id lotto al collo appena creato
//Se non trovo niente allora eccezione
if (ordiniLavorazioneInCorso == null || ordiniLavorazioneInCorso.isEmpty()) {
throw new Exception("Nessun ordine in corso sulla linea " + createUDSRequestDTO.getCodJfas());
}
List<Integer> idLotto = Stream.of(ordiniLavorazioneInCorso)
.map(OrdineLavorazioneDTO::getIdLotto)
.withoutNulls()
.distinct().
toList();
if (idLotto.size() > 1) {
throw new Exception("Trovato più di 1 id lotto in corso.");
}
//Assegnare l'ordine o l'id lotto al collo appena creato
udsMtbColt
.setIdLotto(idLotto.get(0));
final List<Integer> foundInCorsoOrders = ordiniLavorazioneInCorso.stream()
.map(OrdineLavorazioneDTO::getNumOrd)
.distinct()
.collect(Collectors.toList());
if (foundInCorsoOrders.size() == 1) {
OrdineLavorazioneDTO ordineLavorazioneDTO = ordiniLavorazioneInCorso.get(0);
udsMtbColt
.setDataOrd(ordineLavorazioneDTO.getDataOrd())
.setNumOrd(ordineLavorazioneDTO.getNumOrd());
}
}
udsMtbColt.setOperation(OperationType.INSERT);