Aggiunto AvailableClassMercDTO in OrdiniDiLavorazione

This commit is contained in:
2024-03-13 11:05:32 +01:00
parent 77a8827fbe
commit fc1477979b
2 changed files with 98 additions and 4 deletions

View File

@@ -3,10 +3,12 @@ package it.integry.ems.production.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import it.integry.ems.adapter.JsonDateAdapterSerializer;
import it.integry.ems.retail.pvmRetail.dto.OrdineInevasoDTO;
import it.integry.ems_model.annotation.SqlField;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
public class OrdineLavorazioneDTO {
@@ -358,6 +360,8 @@ public class OrdineLavorazioneDTO {
@JsonSerialize
private Integer idLotto;
private List<AvailableClassMercDTO> availableClassMerc;
public Date getDataOrdProd() {
return dataOrdProd;
}
@@ -934,4 +938,37 @@ public class OrdineLavorazioneDTO {
this.maxFase = maxFase;
return this;
}
public List<AvailableClassMercDTO> getAvailableClassMerc() {
return availableClassMerc;
}
public OrdineLavorazioneDTO setAvailableClassMerc(List<AvailableClassMercDTO> availableClassMerc) {
this.availableClassMerc = availableClassMerc;
return this;
}
public static class AvailableClassMercDTO {
private String codMgrp;
private List<String> codMsgr;
public String getCodMgrp() {
return codMgrp;
}
public AvailableClassMercDTO setCodMgrp(String codMgrp) {
this.codMgrp = codMgrp;
return this;
}
public List<String> getCodMsgr() {
return codMsgr;
}
public AvailableClassMercDTO setCodMsgr(List<String> codMsgr) {
this.codMsgr = codMsgr;
return this;
}
}
}

View File

@@ -5,6 +5,8 @@ import it.integry.annotations.PostContextConstruct;
import it.integry.common.var.CommonConstants;
import it.integry.ems.looper.service.LooperService;
import it.integry.ems.production.dto.OrdineLavorazioneDTO;
import it.integry.ems.retail.pvmRetail.dto.OrdineInevasoDTO;
import it.integry.ems.retail.pvmRetail.dto.OrdineInevasoGroupMercDTO;
import it.integry.ems.settings.Model.AvailableConnectionsModel;
import it.integry.ems.settings.Model.SettingsModel;
import it.integry.ems.settings.SettingsController;
@@ -13,6 +15,7 @@ import it.integry.ems.utility.UtilityDebug;
import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityDate;
import it.integry.ems_model.utility.UtilityQuery;
import it.integry.ems_model.utility.UtilityString;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -476,10 +479,10 @@ public class ProductionOrderDataHandlerService {
" ORDER BY dtb_ordr.data_ord, dtb_ordr.num_ord, dtb_ordr.pos_riga, dtb_ordt.num_ord";
}
List<OrdineLavorazioneDTO> ordiniInevasiList = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), query, OrdineLavorazioneDTO.class);
List<OrdineLavorazioneDTO> ordiniLavorazioneList = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), query, OrdineLavorazioneDTO.class);
if (ordiniInevasiList != null && ordiniInevasiList.size() > 0) {
for (OrdineLavorazioneDTO ordineDTO : ordiniInevasiList) {
if (ordiniLavorazioneList != null && !ordiniLavorazioneList.isEmpty()) {
for (OrdineLavorazioneDTO ordineDTO : ordiniLavorazioneList) {
if (ordineDTO.getStato().equalsIgnoreCase("IN CORSO")) {
@@ -511,7 +514,61 @@ public class ProductionOrderDataHandlerService {
}
}
return ordiniInevasiList;
if (ordiniLavorazioneList == null || ordiniLavorazioneList.isEmpty())
return null;
List<HashMap<String, Object>> orderKeys = Stream.of(ordiniLavorazioneList)
.map(x -> {
HashMap<String, Object> orderKey = new HashMap<>();
orderKey.put("dtb_ordr.gestione", x.getGestione());
orderKey.put("dtb_ordr.num_ord", x.getNumOrd());
orderKey.put("dtb_ordr.data_ord", x.getDataOrd());
return orderKey;
}).toList();
String sql = "SELECT DISTINCT data_ord,\n" +
" num_ord,\n" +
" gestione,\n" +
" dtb_ordr.cod_mart,\n" +
" mtb_aart.cod_mgrp,\n" +
" mtb_aart.cod_msgr\n" +
"FROM dtb_ordr\n" +
" INNER JOIN mtb_aart on dtb_ordr.cod_mart = mtb_aart.cod_mart\n" +
"WHERE dtb_ordr.flag_evaso = 'I'\n" +
" AND dtb_ordr.flag_evaso_forzato = 'N'" +
" AND (" + UtilityQuery.concatFieldListInWhereCond(orderKeys) + ")";
List<OrdineInevasoGroupMercDTO> grpMerc =
UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, OrdineInevasoGroupMercDTO.class);
if (grpMerc == null || grpMerc.isEmpty())
return ordiniLavorazioneList;
Stream.of(ordiniLavorazioneList)
.forEach(order -> {
final Map<String, List<OrdineInevasoGroupMercDTO>> groups = grpMerc.stream()
.filter(x -> Objects.equals(x.getNumOrd(), order.getNumOrd()) &&
x.getDataOrd().equals(order.getDataOrd()) &&
x.getGestione().equalsIgnoreCase(order.getGestione()))
.collect(Collectors.groupingBy(OrdineInevasoGroupMercDTO::getCodMgrp));
if (!groups.isEmpty()) {
order.setAvailableClassMerc(new ArrayList<>());
for (Map.Entry<String, List<OrdineInevasoGroupMercDTO>> entry : groups.entrySet()) {
order.getAvailableClassMerc()
.add(new OrdineLavorazioneDTO.AvailableClassMercDTO()
.setCodMgrp(entry.getKey())
.setCodMsgr(entry.getValue().stream()
.map(OrdineInevasoGroupMercDTO::getCodMsgr)
.collect(Collectors.toList())));
}
}
});
return ordiniLavorazioneList;
}