Aggiornati servizi di recupera materiale con nuove logiche barcode
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good

This commit is contained in:
2025-05-23 17:42:31 +02:00
parent 4bb59eee38
commit c343ec70ad
8 changed files with 642 additions and 140 deletions

1
.idea/vcs.xml generated
View File

@@ -2,5 +2,6 @@
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
<mapping directory="$PROJECT_DIR$/ts" vcs="Git" />
</component>
</project>

View File

@@ -6,6 +6,7 @@ import it.integry.ems.utility.UtilityEntity;
import it.integry.ems_model.annotation.*;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.base.EquatableEntityInterface;
import it.integry.ems_model.entity.key.MtbColtKey;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityHashMap;
@@ -197,6 +198,14 @@ public class MtbColt extends EntityBase implements EquatableEntityInterface<MtbC
super(logger);
}
public MtbColt(MtbColtKey mtbColtKey) {
this();
this.dataCollo = mtbColtKey.getDataCollo();
this.gestione = mtbColtKey.getGestione();
this.serCollo = mtbColtKey.getSerCollo();
this.numCollo = mtbColtKey.getNumCollo();
}
public MtbColt(String gestione, LocalDate dataCollo, Integer numCollo, String serCollo) {
this();
this.dataCollo = dataCollo;

View File

@@ -5,10 +5,14 @@ import java.util.Objects;
public class MtbColtKey {
private final String gestione;
private final String serCollo;
private final LocalDate dataCollo;
private final Integer numCollo;
private String gestione;
private String serCollo;
private LocalDate dataCollo;
private Integer numCollo;
public MtbColtKey() {
// Default constructor for JPA
}
public MtbColtKey(String gestione, String serCollo, LocalDate dataCollo, Integer numCollo) {
this.gestione = gestione;
@@ -17,6 +21,22 @@ public class MtbColtKey {
this.numCollo = numCollo;
}
public String getGestione() {
return gestione;
}
public String getSerCollo() {
return serCollo;
}
public LocalDate getDataCollo() {
return dataCollo;
}
public Integer getNumCollo() {
return numCollo;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;

View File

@@ -442,7 +442,7 @@ public class WMSUtility {
List<MtbAart> listMtbAart = UtilityDB.executeSimpleQueryDTO(connection, query, MtbAart.class);
List<MtbAartBarCode> barCodeFromCod = getBarCodeFromCod(codMarts, connection);
List<MtbAartBarCode> barCodeFromCod = getAlternativeMtbAartBarCodes(codMarts, connection);
if (listMtbAart != null && !listMtbAart.isEmpty()) {
List<String> untMisStrings = listMtbAart.stream()
@@ -490,8 +490,11 @@ public class WMSUtility {
"SELECT CAST(IIF(COUNT(*) > 0, 1, 0) AS BIT) AS exist " +
" FROM mtb_colt WHERE barcode_ul = " + UtilityDB.valueToString(barcodeUl));
}
public static List<MtbAartBarCode> getBarCodeFromCod(List<String> codMart, Connection conn) throws Exception {
String sql = "SELECT * FROM mtb_aart_bar_code WHERE cod_mart IN (" + UtilityQuery.concatStringFieldsWithSeparator(codMart, ",") + ")";
public static List<MtbAartBarCode> getAlternativeMtbAartBarCodes(List<String> codMarts, Connection conn) throws Exception {
codMarts = codMarts.stream()
.distinct().collect(Collectors.toList());
String sql = "SELECT * FROM mtb_aart_bar_code WHERE cod_mart IN (" + UtilityQuery.concatStringFieldsWithSeparator(codMarts, ",") + ")";
final List<MtbAartBarCode> barCodeList = UtilityDB.executeSimpleQueryDTO(conn, sql, MtbAartBarCode.class);
return barCodeList != null ? barCodeList : new ArrayList<>();
}
@@ -559,4 +562,12 @@ public class WMSUtility {
return UtilityDB.executeSimpleQueryOnlyFirstColumn(connection, sql);
}
public static MtbColt retrieveBarcodeUlAnag(Connection connection, String barcodeUl) throws Exception {
if (UtilityString.isNullOrEmpty(barcodeUl))
return null;
String sql = "SELECT * FROM mtb_colt WHERE barcode_ul = " + UtilityDB.valueToString(barcodeUl);
return UtilityDB.executeSimpleQueryOnlyFirstRowDTO(connection, sql, MtbColt.class);
}
}

View File

@@ -27,6 +27,12 @@ public class WMSMaterialiController {
}
@GetMapping(value = "retrieveLastVersamenti")
public @ResponseBody ServiceRestResponse recupera(@RequestParam(required = false) String codJfas) throws Exception {
return ServiceRestResponse.createPositiveResponse(wmsMaterialiService.retrieveLastVersamenti(codJfas));
}
@PostMapping(value = "recupera")
public @ResponseBody ServiceRestResponse recupera(@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
@RequestBody RecuperaMaterialiRequestDTO recuperaMaterialiRequestDTO) throws Exception {

View File

@@ -0,0 +1,360 @@
package it.integry.ems.retail.wms.lavorazione.dto;
import it.integry.ems_model.annotation.SqlField;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
public class HistoryVersamentoULDTO {
@SqlField("gestione")
private String gestione;
@SqlField("data_collo")
private LocalDate dataCollo;
@SqlField("ser_collo")
private String serCollo;
@SqlField("num_collo")
private Integer numCollo;
@SqlField("segno")
private Integer segno;
@SqlField("cod_mart")
private String codMart;
@SqlField("cod_col")
private String codCol;
@SqlField("cod_tagl")
private String codTagl;
@SqlField("cod_jfas")
private String codJfas;
@SqlField("descrizione_fase")
private String descrizioneFase;
@SqlField("qta_col")
private BigDecimal qtaCol;
@SqlField("qta_cnf")
private BigDecimal qtaCnf;
@SqlField("num_cnf")
private BigDecimal numCnf;
@SqlField("partita_mag")
private String partitaMag;
@SqlField("cod_jcom")
private String codJcom;
@SqlField("datetime_row")
private LocalDateTime datetimeRow;
@SqlField("descrizione_art")
private String descrizioneArt;
@SqlField("unt_mis")
private String untMis;
@SqlField("barcode_ul_out")
private String barcodeUlOut;
@SqlField("cod_mdep_out")
private String codMdepOut;
@SqlField("posizione_out")
private String posizioneOut;
@SqlField("barcode_ul_in")
private String barcodeUlIn;
@SqlField("cod_mdep_in")
private String codMdepIn;
@SqlField("posizione_in")
private String posizioneIn;
@SqlField("num_ord")
private Integer numOrd;
@SqlField("data_ord")
private LocalDate dataOrd;
@SqlField("gestione_ord")
private String gestioneOrd;
@SqlField("riga_ord")
private Integer rigaOrd;
@SqlField("percentage_hr")
private Integer percentageHr;
public String getGestione() {
return gestione;
}
public HistoryVersamentoULDTO setGestione(String gestione) {
this.gestione = gestione;
return this;
}
public LocalDate getDataCollo() {
return dataCollo;
}
public HistoryVersamentoULDTO setDataCollo(LocalDate dataCollo) {
this.dataCollo = dataCollo;
return this;
}
public String getSerCollo() {
return serCollo;
}
public HistoryVersamentoULDTO setSerCollo(String serCollo) {
this.serCollo = serCollo;
return this;
}
public Integer getNumCollo() {
return numCollo;
}
public HistoryVersamentoULDTO setNumCollo(Integer numCollo) {
this.numCollo = numCollo;
return this;
}
public Integer getSegno() {
return segno;
}
public HistoryVersamentoULDTO setSegno(Integer segno) {
this.segno = segno;
return this;
}
public String getCodMart() {
return codMart;
}
public HistoryVersamentoULDTO setCodMart(String codMart) {
this.codMart = codMart;
return this;
}
public String getCodCol() {
return codCol;
}
public HistoryVersamentoULDTO setCodCol(String codCol) {
this.codCol = codCol;
return this;
}
public String getCodTagl() {
return codTagl;
}
public HistoryVersamentoULDTO setCodTagl(String codTagl) {
this.codTagl = codTagl;
return this;
}
public String getCodJfas() {
return codJfas;
}
public HistoryVersamentoULDTO setCodJfas(String codJfas) {
this.codJfas = codJfas;
return this;
}
public String getDescrizioneFase() {
return descrizioneFase;
}
public HistoryVersamentoULDTO setDescrizioneFase(String descrizioneFase) {
this.descrizioneFase = descrizioneFase;
return this;
}
public BigDecimal getQtaCol() {
return qtaCol;
}
public HistoryVersamentoULDTO setQtaCol(BigDecimal qtaCol) {
this.qtaCol = qtaCol;
return this;
}
public BigDecimal getQtaCnf() {
return qtaCnf;
}
public HistoryVersamentoULDTO setQtaCnf(BigDecimal qtaCnf) {
this.qtaCnf = qtaCnf;
return this;
}
public BigDecimal getNumCnf() {
return numCnf;
}
public HistoryVersamentoULDTO setNumCnf(BigDecimal numCnf) {
this.numCnf = numCnf;
return this;
}
public String getPartitaMag() {
return partitaMag;
}
public HistoryVersamentoULDTO setPartitaMag(String partitaMag) {
this.partitaMag = partitaMag;
return this;
}
public String getCodJcom() {
return codJcom;
}
public HistoryVersamentoULDTO setCodJcom(String codJcom) {
this.codJcom = codJcom;
return this;
}
public LocalDateTime getDatetimeRow() {
return datetimeRow;
}
public HistoryVersamentoULDTO setDatetimeRow(LocalDateTime datetimeRow) {
this.datetimeRow = datetimeRow;
return this;
}
public String getDescrizioneArt() {
return descrizioneArt;
}
public HistoryVersamentoULDTO setDescrizioneArt(String descrizioneArt) {
this.descrizioneArt = descrizioneArt;
return this;
}
public String getUntMis() {
return untMis;
}
public HistoryVersamentoULDTO setUntMis(String untMis) {
this.untMis = untMis;
return this;
}
public String getBarcodeUlOut() {
return barcodeUlOut;
}
public HistoryVersamentoULDTO setBarcodeUlOut(String barcodeUlOut) {
this.barcodeUlOut = barcodeUlOut;
return this;
}
public String getCodMdepOut() {
return codMdepOut;
}
public HistoryVersamentoULDTO setCodMdepOut(String codMdepOut) {
this.codMdepOut = codMdepOut;
return this;
}
public String getPosizioneOut() {
return posizioneOut;
}
public HistoryVersamentoULDTO setPosizioneOut(String posizioneOut) {
this.posizioneOut = posizioneOut;
return this;
}
public String getBarcodeUlIn() {
return barcodeUlIn;
}
public HistoryVersamentoULDTO setBarcodeUlIn(String barcodeUlIn) {
this.barcodeUlIn = barcodeUlIn;
return this;
}
public String getCodMdepIn() {
return codMdepIn;
}
public HistoryVersamentoULDTO setCodMdepIn(String codMdepIn) {
this.codMdepIn = codMdepIn;
return this;
}
public String getPosizioneIn() {
return posizioneIn;
}
public HistoryVersamentoULDTO setPosizioneIn(String posizioneIn) {
this.posizioneIn = posizioneIn;
return this;
}
public Integer getNumOrd() {
return numOrd;
}
public HistoryVersamentoULDTO setNumOrd(Integer numOrd) {
this.numOrd = numOrd;
return this;
}
public LocalDate getDataOrd() {
return dataOrd;
}
public HistoryVersamentoULDTO setDataOrd(LocalDate dataOrd) {
this.dataOrd = dataOrd;
return this;
}
public String getGestioneOrd() {
return gestioneOrd;
}
public HistoryVersamentoULDTO setGestioneOrd(String gestioneOrd) {
this.gestioneOrd = gestioneOrd;
return this;
}
public Integer getRigaOrd() {
return rigaOrd;
}
public HistoryVersamentoULDTO setRigaOrd(Integer rigaOrd) {
this.rigaOrd = rigaOrd;
return this;
}
public Integer getPercentageHr() {
return percentageHr;
}
public HistoryVersamentoULDTO setPercentageHr(Integer percentageHr) {
this.percentageHr = percentageHr;
return this;
}
}

View File

@@ -1,6 +1,6 @@
package it.integry.ems.retail.wms.lavorazione.dto;
import it.integry.ems_model.entity.MtbColt;
import it.integry.ems_model.entity.key.MtbColtKey;
import java.math.BigDecimal;
import java.time.LocalDate;
@@ -14,18 +14,18 @@ public class RecuperaMaterialiRequestDTO {
private BigDecimal qtaCnf;
private BigDecimal qtaTot;
private int numCollo;
private LocalDate dataCollo;
private String gestione;
private String serCollo;
private MtbColtKey movementScarico;
private int numColloRif;
private LocalDate dataColloRif;
private String gestioneRif;
private String serColloRif;
private String barcodeUlScarico;
private String codMdepScarico;
private String posizioneScarico;
private List<Ordine> ordini;
private MtbColt mtbColtCarico;
private String barcodeUlCarico;
private String codMdepCarico;
private String posizioneCarico;
public String getCodMart() {
return codMart;
@@ -72,75 +72,39 @@ public class RecuperaMaterialiRequestDTO {
return this;
}
public int getNumCollo() {
return numCollo;
public MtbColtKey getMovementScarico() {
return movementScarico;
}
public RecuperaMaterialiRequestDTO setNumCollo(int numCollo) {
this.numCollo = numCollo;
public RecuperaMaterialiRequestDTO setMovementScarico(MtbColtKey movementScarico) {
this.movementScarico = movementScarico;
return this;
}
public LocalDate getDataCollo() {
return dataCollo;
public String getBarcodeUlScarico() {
return barcodeUlScarico;
}
public RecuperaMaterialiRequestDTO setDataCollo(LocalDate dataCollo) {
this.dataCollo = dataCollo;
public RecuperaMaterialiRequestDTO setBarcodeUlScarico(String barcodeUlScarico) {
this.barcodeUlScarico = barcodeUlScarico;
return this;
}
public String getGestione() {
return gestione;
public String getCodMdepScarico() {
return codMdepScarico;
}
public RecuperaMaterialiRequestDTO setGestione(String gestione) {
this.gestione = gestione;
public RecuperaMaterialiRequestDTO setCodMdepScarico(String codMdepScarico) {
this.codMdepScarico = codMdepScarico;
return this;
}
public String getSerCollo() {
return serCollo;
public String getPosizioneScarico() {
return posizioneScarico;
}
public RecuperaMaterialiRequestDTO setSerCollo(String serCollo) {
this.serCollo = serCollo;
return this;
}
public int getNumColloRif() {
return numColloRif;
}
public RecuperaMaterialiRequestDTO setNumColloRif(int numColloRif) {
this.numColloRif = numColloRif;
return this;
}
public LocalDate getDataColloRif() {
return dataColloRif;
}
public RecuperaMaterialiRequestDTO setDataColloRif(LocalDate dataColloRif) {
this.dataColloRif = dataColloRif;
return this;
}
public String getGestioneRif() {
return gestioneRif;
}
public RecuperaMaterialiRequestDTO setGestioneRif(String gestioneRif) {
this.gestioneRif = gestioneRif;
return this;
}
public String getSerColloRif() {
return serColloRif;
}
public RecuperaMaterialiRequestDTO setSerColloRif(String serColloRif) {
this.serColloRif = serColloRif;
public RecuperaMaterialiRequestDTO setPosizioneScarico(String posizioneScarico) {
this.posizioneScarico = posizioneScarico;
return this;
}
@@ -153,12 +117,30 @@ public class RecuperaMaterialiRequestDTO {
return this;
}
public MtbColt getMtbColtCarico() {
return mtbColtCarico;
public String getBarcodeUlCarico() {
return barcodeUlCarico;
}
public RecuperaMaterialiRequestDTO setMtbColtCarico(MtbColt mtbColtCarico) {
this.mtbColtCarico = mtbColtCarico;
public RecuperaMaterialiRequestDTO setBarcodeUlCarico(String barcodeUlCarico) {
this.barcodeUlCarico = barcodeUlCarico;
return this;
}
public String getCodMdepCarico() {
return codMdepCarico;
}
public RecuperaMaterialiRequestDTO setCodMdepCarico(String codMdepCarico) {
this.codMdepCarico = codMdepCarico;
return this;
}
public String getPosizioneCarico() {
return posizioneCarico;
}
public RecuperaMaterialiRequestDTO setPosizioneCarico(String posizioneCarico) {
this.posizioneCarico = posizioneCarico;
return this;
}

View File

@@ -6,10 +6,7 @@ import it.integry.ems.retail.wms.exceptions.InvalidArticoloException;
import it.integry.ems.retail.wms.generic.dto.MvwSitArtUdcDetInventarioDTO;
import it.integry.ems.retail.wms.generic.dto.RetrieveArtsInGiacenzaByArtRequestDTO;
import it.integry.ems.retail.wms.generic.service.WMSGiacenzaULService;
import it.integry.ems.retail.wms.lavorazione.dto.RecuperaMaterialiRequestDTO;
import it.integry.ems.retail.wms.lavorazione.dto.RecuperaMaterialiResponseDTO;
import it.integry.ems.retail.wms.lavorazione.dto.VersaMaterialiRequestDTO;
import it.integry.ems.retail.wms.lavorazione.dto.VersaMaterialiResponseDTO;
import it.integry.ems.retail.wms.lavorazione.dto.*;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.user.UserSession;
@@ -25,6 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import javax.annotation.Nullable;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
@@ -71,7 +69,6 @@ public class WMSMaterialiService {
throw new Exception("L'UL non contiene articoli (" + request.getBarcodeUl() + ")");
MtbDepoPosizioni posizioneVersamento = null;
boolean isPosizioneVersamentoLineaProduzione = false;
@@ -150,14 +147,121 @@ public class WMSMaterialiService {
// }
}
return new VersaMaterialiResponseDTO();
}
public List<HistoryVersamentoULDTO> retrieveLastVersamenti(@Nullable String codJfas) throws Exception {
boolean versamentoDirettoEnabled = setupGest.getSetupBoolean("PICKING", "PRODUZIONE", "FLAG_VERSAMENTO_DIRETTO");
String sql = "WITH ul_list AS (SELECT mtb_colr.gestione,\n" +
" mtb_colr.data_collo,\n" +
" mtb_colr.num_collo,\n" +
" mtb_colr.ser_collo,\n" +
" mtb_colr.cod_mart,\n" +
" mtb_colr.cod_col,\n" +
" mtb_colr.cod_tagl,\n" +
" SUM(mtb_colr.qta_col) AS qta_col,\n" +
" mtb_colr.qta_cnf AS qta_cnf,\n" +
" SUM(mtb_colr.num_cnf) AS num_cnf,\n" +
" mtb_colr.partita_mag,\n" +
" mtb_colr.cod_jcom,\n" +
" mtb_colr.barcode_ul_out,\n" +
" mtb_colr.cod_mdep_out,\n" +
" mtb_colr.posizione_out,\n" +
" mtb_colr.barcode_ul_in,\n" +
" mtb_colr.cod_mdep_in,\n" +
" mtb_colr.posizione_in,\n" +
" mtb_colt.segno,\n" +
" mtb_colt.cod_jfas,\n" +
" MAX(datetime_row) AS datetime_row,\n" +
" mtb_colr.num_ord,\n" +
" mtb_colr.data_ord,\n" +
" mtb_colr.gestione AS gestione_ord,\n" +
" mtb_colr.riga_ord,\n" +
" dtb_ord_steps.hr_num AS hr,\n" +
" CONVERT(INTEGER, ROUND((CAST(dtb_ord_steps.hr_num AS DECIMAL(20, 5)) /\n" +
" SUM(dtb_ord_steps.hr_num) OVER (PARTITION BY mtb_colr.num_collo)) * 100,\n" +
" SUM(IIF(dtb_ord_steps.hr_num > 0, dtb_ord_steps.hr_num, 1))\n" +
" OVER (PARTITION BY mtb_colr.num_collo)) * 100,\n" +
" 0) AS percentage_hr\n" +
"FROM mtb_colr\n" +
" INNER JOIN mtb_colt ON mtb_colr.num_collo = mtb_colt.num_collo AND\n" +
" mtb_colr.data_collo = mtb_colt.data_collo AND\n" +
" mtb_colr.ser_collo = mtb_colt.ser_collo AND\n" +
" mtb_colr.gestione = mtb_colt.gestione\n" +
" " + (versamentoDirettoEnabled ? "INNER" : "LEFT OUTER") + " JOIN dtb_ord_steps ON dtb_ord_steps.data_ord = mtb_colr.data_ord AND\n" +
" dtb_ord_steps.gestione = mtb_colr.gestione AND\n" +
" dtb_ord_steps.num_ord = mtb_colr.num_ord AND\n" +
" dtb_ord_steps.data_iniz IS NOT NULL AND\n" +
" dtb_ord_steps.data_fine IS NULL\n" +
"WHERE mtb_colt.cod_jfas IS NOT NULL\n" +
(UtilityString.isNullOrEmpty(codJfas) ? "" : " AND mtb_colt.cod_jfas = " + UtilityDB.valueToString(codJfas)) +
" AND segno = -1\n" +
" AND mtb_colr.data_collo > DATEADD(DAY, -5, GETDATE())\n" +
" GROUP BY mtb_colr.gestione, mtb_colr.data_collo,\n" +
" mtb_colr.num_collo, mtb_colr.ser_collo, mtb_colr.qta_cnf, mtb_colr.cod_mart, mtb_colr.cod_col,\n" +
" mtb_colr.cod_tagl, mtb_colr.ser_collo, mtb_colr.partita_mag, mtb_colr.cod_jcom,\n" +
" mtb_colt.cod_jfas,\n" +
" mtb_colr.barcode_ul_out, mtb_colr.cod_mdep_out, mtb_colr.posizione_out,\n" +
" mtb_colr.barcode_ul_in, mtb_colr.cod_mdep_in, mtb_colr.posizione_in, mtb_colt.segno,\n" +
" mtb_colr.num_ord, mtb_colr.data_ord, mtb_colr.gestione, mtb_colr.riga_ord,\n" +
" dtb_ord_steps.hr_num\n" +
" HAVING SUM(mtb_colr.qta_col) > 0" +
"),\n" +
" max_ul AS (SELECT gestione,\n" +
" cod_mart,\n" +
" cod_col,\n" +
" cod_tagl,\n" +
" ser_collo,\n" +
" partita_mag,\n" +
" cod_jcom,\n" +
" segno,\n" +
" num_ord,\n" +
" data_ord,\n" +
" gestione_ord,\n" +
" riga_ord,\n" +
" cod_jfas,\n" +
" hr,\n" +
" MAX(datetime_row) AS max_datetime_row\n" +
" FROM ul_list\n" +
" GROUP BY gestione, cod_mart, cod_col, cod_tagl, ser_collo, partita_mag,\n" +
" cod_jcom,\n" +
" segno, num_ord, data_ord, gestione_ord, riga_ord, cod_jfas, hr)\n" +
"SELECT ul_list.*,\n" +
"\n" +
" ISNULL(mtb_aart.descrizione_estesa, mtb_aart.descrizione) AS descrizione_art,\n" +
" mtb_aart.unt_mis,\n" +
" jtb_fasi.cod_jfas,\n" +
" jtb_fasi.descrizione AS descrizione_fase\n" +
"FROM max_ul\n" +
"LEFT OUTER JOIN ul_list ON ISNULL(max_ul.gestione, '') = ISNULL(ul_list.gestione, '') AND\n" +
" ISNULL(max_ul.cod_mart, '') = ISNULL(ul_list.cod_mart, '') AND\n" +
" ISNULL(max_ul.cod_col, '') = ISNULL(ul_list.cod_col, '') AND\n" +
" ISNULL(max_ul.cod_tagl, '') = ISNULL(ul_list.cod_tagl, '') AND\n" +
" ISNULL(max_ul.ser_collo, '') = ISNULL(ul_list.ser_collo, '') AND\n" +
" ISNULL(max_ul.partita_mag, '') = ISNULL(ul_list.partita_mag, '') AND\n" +
" ISNULL(max_ul.cod_jcom, '') = ISNULL(ul_list.cod_jcom, '') AND\n" +
" ISNULL(max_ul.segno, '') = ISNULL(ul_list.segno, '') AND\n" +
" ISNULL(max_ul.num_ord, '') = ISNULL(ul_list.num_ord, '') AND\n" +
" ISNULL(max_ul.data_ord, '') = ISNULL(ul_list.data_ord, '') AND\n" +
" ISNULL(max_ul.gestione_ord, '') = ISNULL(ul_list.gestione_ord, '') AND\n" +
" ISNULL(max_ul.riga_ord, '') = ISNULL(ul_list.riga_ord, '') AND\n" +
" max_ul.cod_jfas = ul_list.cod_jfas AND\n" +
" ISNULL(max_ul.hr, '') = ISNULL(ul_list.hr, '') AND\n" +
" max_ul.max_datetime_row = ul_list.datetime_row\n" +
"INNER JOIN mtb_aart ON max_ul.cod_mart = mtb_aart.cod_mart\n" +
" INNER JOIN jtb_fasi ON max_ul.cod_jfas = jtb_fasi.cod_jfas";
return UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, HistoryVersamentoULDTO.class);
}
public RecuperaMaterialiResponseDTO recupera(RecuperaMaterialiRequestDTO request) throws Exception {
final boolean versamentoDirettoEnabled = setupGest.getSetupBoolean(multiDBTransactionManager.getPrimaryConnection(), "PICKING", "PRODUZIONE", "FLAG_VERSAMENTO_DIRETTO");
@@ -167,22 +271,19 @@ public class WMSMaterialiService {
if (mtbAart == null)
throw new InvalidArticoloException(request.getCodMart());
if (request.getMtbColtCarico() == null)
if (request.getBarcodeUlCarico() == null)
throw new Exception("Indicare una UL in cui effettuare il carico del materiale");
List<EntityBase> entitiesToSave = new ArrayList<>();
final MtbColt mtbColtScarico = new MtbColt()
.setDataCollo(request.getDataCollo())
.setSerCollo(request.getSerCollo())
.setNumCollo(request.getNumCollo())
.setGestione(request.getGestione());
final MtbColt movementScarico = new MtbColt(request.getMovementScarico());
mtbColtScarico.setOperation(OperationType.SELECT_OBJECT);
entityProcessor.processEntity(mtbColtScarico, multiDBTransactionManager);
movementScarico.setOperation(OperationType.SELECT_OBJECT);
entityProcessor.processEntity(movementScarico, true, multiDBTransactionManager);
entitiesToSave.add(mtbColtScarico);
movementScarico.setOperation(OperationType.UPDATE);
entitiesToSave.add(movementScarico);
BigDecimal inputNumCnf = request.getNumCnf();
BigDecimal inputQtaTot = request.getQtaTot();
@@ -213,7 +314,7 @@ public class WMSMaterialiService {
qtaColToSave = qtaColToSave.multiply(BigDecimal.valueOf(-1));
final MtbColr mtbColrScarico = new MtbColr()
final MtbColr mtbColrScaricoNegative = new MtbColr()
.setCodMart(request.getCodMart())
.setPartitaMag(UtilityString.emptyStr2Null(request.getPartitaMag()))
.setQtaCol(qtaColToSave)
@@ -221,16 +322,21 @@ public class WMSMaterialiService {
.setNumCnf(numCnfToSave)
.setDescrizione(UtilityString.isNull(mtbAart.getDescrizioneEstesa(), mtbAart.getDescrizione()))
.setDatetimeRow(UtilityLocalDate.getNowTime())
.setNumColloRif(request.getNumColloRif())
.setDataColloRif(request.getDataColloRif())
.setGestioneRif(request.getGestioneRif())
.setSerColloRif(request.getSerColloRif())
.setBarcodeUlOut(request.getBarcodeUlScarico())
.setCodMdepOut(request.getCodMdepScarico())
.setPosizioneOut(request.getPosizioneScarico())
.setBarcodeUlIn(movementScarico.getBarcodeUl())
.setPosizioneIn(movementScarico.getPosizione())
.setCodMdepIn(movementScarico.getCodMdep())
.setDataOrd(ordine.getData())
.setNumOrd(ordine.getNumero())
.setRigaOrd(ordine.getRigaOrd());
mtbColrScarico.setOperation(OperationType.INSERT);
mtbColtScarico.getMtbColr().add(mtbColrScarico);
mtbColrScaricoNegative.setOperation(OperationType.INSERT);
movementScarico.getMtbColr().add(mtbColrScaricoNegative);
}
} else {
BigDecimal qtaColToSave;
@@ -268,16 +374,21 @@ public class WMSMaterialiService {
.setNumCnf(numCnf)
.setDescrizione(UtilityString.isNull(mtbAart.getDescrizioneEstesa(), mtbAart.getDescrizione()))
.setDatetimeRow(UtilityLocalDate.getNowTime())
.setNumColloRif(request.getNumColloRif())
.setDataColloRif(request.getDataColloRif())
.setGestioneRif(request.getGestioneRif())
.setSerColloRif(request.getSerColloRif())
.setBarcodeUlOut(request.getBarcodeUlScarico())
.setCodMdepOut(request.getCodMdepScarico())
.setPosizioneOut(request.getPosizioneScarico())
.setBarcodeUlIn(movementScarico.getBarcodeUl())
.setPosizioneIn(movementScarico.getPosizione())
.setCodMdepIn(movementScarico.getCodMdep())
.setDataOrd(ordine.getData())
.setNumOrd(ordine.getNumero())
.setRigaOrd(ordine.getRigaOrd());
mtbColrScarico.setOperation(OperationType.INSERT);
mtbColtScarico.getMtbColr().add(mtbColrScarico);
movementScarico.getMtbColr().add(mtbColrScarico);
}
} else {
final MtbColr mtbColrScarico = new MtbColr()
@@ -288,13 +399,17 @@ public class WMSMaterialiService {
.setNumCnf(numCnfToSave)
.setDescrizione(UtilityString.isNull(mtbAart.getDescrizioneEstesa(), mtbAart.getDescrizione()))
.setDatetimeRow(UtilityLocalDate.getNowTime())
.setNumColloRif(request.getNumColloRif())
.setDataColloRif(request.getDataColloRif())
.setGestioneRif(request.getGestioneRif())
.setSerColloRif(request.getSerColloRif());
.setBarcodeUlOut(request.getBarcodeUlScarico())
.setCodMdepOut(request.getCodMdepScarico())
.setPosizioneOut(request.getPosizioneScarico())
.setBarcodeUlIn(movementScarico.getBarcodeUl())
.setPosizioneIn(movementScarico.getPosizione())
.setCodMdepIn(movementScarico.getCodMdep());
mtbColrScarico.setOperation(OperationType.INSERT);
mtbColtScarico.getMtbColr().add(mtbColrScarico);
movementScarico.getMtbColr().add(mtbColrScarico);
}
}
@@ -303,38 +418,34 @@ public class WMSMaterialiService {
if (UtilityBigDecimal.lowerThan(totalSumOfNumCnf, inputNumCnf)) {
BigDecimal diff = inputNumCnf.subtract(totalSumOfNumCnf).multiply(BigDecimal.valueOf(-1));
mtbColtScarico.getMtbColr().get(0).setNumCnf(mtbColtScarico.getMtbColr().get(0).getNumCnf().add(diff));
movementScarico.getMtbColr().get(0).setNumCnf(movementScarico.getMtbColr().get(0).getNumCnf().add(diff));
updateQtaCnfFirstRow = true;
}
if (UtilityBigDecimal.lowerThan(totalSumOfQtaCol, inputQtaTot)) {
BigDecimal diff = inputQtaTot.subtract(totalSumOfQtaCol).multiply(BigDecimal.valueOf(-1));
mtbColtScarico.getMtbColr().get(0).setQtaCol(mtbColtScarico.getMtbColr().get(0).getQtaCol().add(diff));
movementScarico.getMtbColr().get(0).setQtaCol(movementScarico.getMtbColr().get(0).getQtaCol().add(diff));
updateQtaCnfFirstRow = true;
}
if (updateQtaCnfFirstRow) {
mtbColtScarico.getMtbColr().get(0).setQtaCnf(
UtilityBigDecimal.divide(mtbColtScarico.getMtbColr().get(0).getQtaCol(), mtbColtScarico.getMtbColr().get(0).getNumCnf()));
movementScarico.getMtbColr().get(0).setQtaCnf(
UtilityBigDecimal.divide(movementScarico.getMtbColr().get(0).getQtaCol(), movementScarico.getMtbColr().get(0).getNumCnf()));
}
for (int i = 0; i < mtbColtScarico.getMtbColr().size(); i++) {
if (mtbColtScarico.getMtbColr().get(i).getQtaCol().equals(BigDecimal.ZERO)) {
mtbColtScarico.getMtbColr().remove(i);
i--;
}
}
mtbColtScarico.setOperation(OperationType.INSERT_OR_UPDATE);
if (!request.getMtbColtCarico().getDataCollo().isEqual(request.getDataColloRif()) ||
!request.getMtbColtCarico().getSerCollo().equalsIgnoreCase(request.getSerColloRif()) ||
request.getMtbColtCarico().getNumCollo() != request.getNumColloRif() ||
!request.getMtbColtCarico().getGestione().equalsIgnoreCase(request.getGestioneRif())) {
// for (int i = 0; i < mtbColtScarico.getMtbColr().size(); i++) {
// if (mtbColtScarico.getMtbColr().get(i).getQtaCol().equals(BigDecimal.ZERO)) {
// mtbColtScarico.getMtbColr().remove(i);
// i--;
// }
// }
if (!request.getBarcodeUlCarico().equalsIgnoreCase(request.getBarcodeUlScarico())) {
//Non sto caricando nella stessa UL da cui ho prelevato
MtbColt mtbColtCarico = request.getMtbColtCarico();
mtbColtCarico.setOperation(OperationType.INSERT_OR_UPDATE);
final MtbColt mtbColtMovement = WMSUtility.retrieveBarcodeUlAnag(
multiDBTransactionManager.getPrimaryConnection(),
request.getBarcodeUlCarico());
mtbColtMovement.setOperation(OperationType.UPDATE);
final MtbColr mtbColrCarico = new MtbColr()
.setCodMart(request.getCodMart())
@@ -344,25 +455,26 @@ public class WMSMaterialiService {
.setQtaCnf(inputQtaCnf)
.setDescrizione(UtilityString.isNull(mtbAart.getDescrizioneEstesa(), mtbAart.getDescrizione()))
.setDatetimeRow(UtilityLocalDate.getNowTime())
.setNumColloRif(request.getNumColloRif())
.setDataColloRif(request.getDataColloRif())
.setGestioneRif(request.getGestioneRif())
.setSerColloRif(request.getSerColloRif());
.setBarcodeUlOut(request.getBarcodeUlScarico())
.setCodMdepOut(request.getCodMdepScarico())
.setPosizioneOut(request.getPosizioneScarico())
.setBarcodeUlIn(request.getBarcodeUlCarico())
.setCodMdepIn(request.getCodMdepCarico())
.setPosizioneIn(request.getPosizioneCarico());
mtbColrCarico.setOperation(OperationType.INSERT);
mtbColtMovement.getMtbColr().add(mtbColrCarico);
mtbColtCarico.setOperation(OperationType.INSERT_OR_UPDATE);
mtbColtCarico.getMtbColr().add(mtbColrCarico);
entitiesToSave.add(mtbColtCarico);
entitiesToSave.add(mtbColtMovement);
}
if (mtbColtScarico.hasDocument()) {
DtbDoct dtbDoctScaricoToUpdate = new DtbDoct(mtbColtScarico.getCodAnag(),
mtbColtScarico.getCodDtip(),
mtbColtScarico.getDataDoc(),
mtbColtScarico.getNumDoc(),
mtbColtScarico.getSerDoc());
if (movementScarico.hasDocument()) {
DtbDoct dtbDoctScaricoToUpdate = new DtbDoct(movementScarico.getCodAnag(),
movementScarico.getCodDtip(),
movementScarico.getDataDoc(),
movementScarico.getNumDoc(),
movementScarico.getSerDoc());
dtbDoctScaricoToUpdate.setOperation(OperationType.NO_OP);
@@ -382,7 +494,8 @@ public class WMSMaterialiService {
final List<EntityBase> savedEntities = entityProcessor.processEntityList(entitiesToSave, true);
UtilityEntity.throwEntitiesException(savedEntities);
return new RecuperaMaterialiResponseDTO(mtbColtScarico);
// return new RecuperaMaterialiResponseDTO(mtbColtScarico);
return new RecuperaMaterialiResponseDTO(null);
}