Merge remote-tracking branch 'origin/feature/RefactoringGestioneColli' into feature/RefactoringGestioneColli
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good

This commit is contained in:
2025-06-11 10:26:30 +02:00
20 changed files with 381 additions and 169 deletions

View File

@@ -535,7 +535,7 @@ public class EmsRestConstants {
public static final String PATH_WOO_SYNC_IMMAGINI = PATH + "syncImmagini";
// PRODUCTION WAREHOUSE SERVICES
public static final String PATH_WAREHOUSE_PRODUCTION_RETTIFICA = PATH + "rettificaMagazzinoProduzione";
public static final String PATH_WAREHOUSE_PRODUCTION_DELETE_COLLO = PATH + "cancellaColloDaProduzione";
public static final String PATH_WAREHOUSE_PRODUCTION_DELETE_CARICO = PATH + "cancellaCaricoDaProduzione";
// NOTIFICATION SERVICES
public static final String GROUP_NOTIF = PATH + "notification";

View File

@@ -8,6 +8,7 @@ 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._enum.IBaseEnum;
import it.integry.ems_model.entity.key.MtbColrKey;
import it.integry.ems_model.utility.UtilityString;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -204,6 +205,12 @@ public class MtbColr extends EntityBase implements EquatableEntityInterface<MtbC
super(logger);
}
public MtbColrKey getKey() {
return new MtbColrKey(gestione, serCollo, getDataCollo(), numCollo, riga);
}
public LocalDate getDataCollo() {
return dataCollo;
}

View File

@@ -9,9 +9,9 @@ import it.integry.ems_model.annotation.SqlField;
import it.integry.ems_model.annotation.Table;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.entity._enum.IBaseEnum;
import org.kie.api.definition.type.PropertyReactive;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.kie.api.definition.type.PropertyReactive;
@PropertyReactive
@Table(WtbJreptSetup.ENTITY)
@@ -171,7 +171,7 @@ public class WtbJreptSetup extends EntityBase {
@JsonCreator
public static Tipo from(Object value) {
int castValue = (int) value;
int castValue = value instanceof String ? Integer.parseInt((String) value) : (int) value;
for (Tipo b : Tipo.values()) {
if (b.value == castValue)
return b;

View File

@@ -0,0 +1,36 @@
package it.integry.ems_model.entity.key;
import java.time.LocalDate;
public class MtbColrKey extends MtbColtKey {
private int riga;
public MtbColrKey() {
}
public MtbColrKey(String gestione, String serCollo, LocalDate dataCollo, int numCollo, int riga) {
super(gestione, serCollo, dataCollo, numCollo);
this.riga = riga;
}
public Integer getRiga() {
return riga;
}
@Override
public boolean equals(Object o) {
if (o == null || getClass() != o.getClass()) return false;
if (!super.equals(o)) return false;
MtbColrKey that = (MtbColrKey) o;
return getRiga().equals(that.getRiga());
}
@Override
public int hashCode() {
int result = super.hashCode();
result = 31 * result + getRiga().hashCode();
return result;
}
}

View File

@@ -15,9 +15,14 @@ public class UtilityException {
if(e.getStackTrace().length > 0)
errorMessage = "Null value at " + e.getStackTrace()[0].toString();
else errorMessage = "Empty stacktrace\n" + e;
} else if (e instanceof BaseSystemException) {
errorCode = ((BaseSystemException) e).getCode();
errorMessage = ((BaseSystemException) e).getCustomMessage();
} else if (e instanceof IllegalArgumentException) {
errorMessage = e.getMessage();
} else if (e instanceof EntityException) {
EntityException entityException = (EntityException) e;
@@ -49,6 +54,7 @@ public class UtilityException {
}
errorMessage = message;
} else if (e instanceof RuntimeException || e instanceof JRException) {
String message = e.getCause() != null && e.getCause().getMessage() != null ? e.getCause().getMessage() : e.toString();

View File

@@ -118,14 +118,9 @@ public class EmsEngineController {
public @ResponseBody
ServiceRestResponse printReportTypeList(HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
@RequestBody ReportTypeDTO reportTypeDTO) {
try {
@RequestBody ReportTypeDTO reportTypeDTO) throws Exception {
printerService.printReportType(reportTypeDTO);
return ServiceRestResponse.createPositiveResponse();
} catch (Exception e) {
logger.error(request.getRequestURI(), e);
return ServiceRestResponse.createNegativeResponse(configuration, e);
}
}
@RequestMapping(value = EmsRestConstants.PATH_GET_SETUP_REPORT_TYPE, method = RequestMethod.POST)

View File

@@ -193,7 +193,7 @@ public class LicorProductionService {
.setPartitaMag(scarico.getPartitaMag())
.setTargetMtbColt(scaricoMaterialiAgg)
.setQtaCnf(scarico.getQtaCnf())
.setDataOrd(chiusuraLavorazioneDTO.getOrdine().getDataOrd())
.setDataOrd(UtilityLocalDate.localDateFromDate(chiusuraLavorazioneDTO.getOrdine().getDataOrd()))
.setRigaOrd(rigaOrd)
.setNumOrd(chiusuraLavorazioneDTO.getOrdine().getNumOrd());
wmsLavorazioneService.insertUDSRow(insertRequestDto);
@@ -419,7 +419,7 @@ public class LicorProductionService {
requestDTO.setQtaCnf(rigaOrdine.getQtaCnf());
requestDTO.setNumCnf(UtilityBigDecimal.divide(inventarioDTO.getQtaCol(), rigaOrdine.getQtaCnf()));
requestDTO.setDataOrd(rigaOrdine.getDataOrd());
requestDTO.setDataOrd(UtilityLocalDate.localDateFromDate(rigaOrdine.getDataOrd()));
requestDTO.setNumOrd(rigaOrdine.getNumOrd());
requestDTO.setRigaOrd(rigaOrdine.getRigaOrd());
@@ -443,7 +443,7 @@ public class LicorProductionService {
requestDTO.setQtaCnf(rigaOrdine.getQtaCnf());
requestDTO.setNumCnf(UtilityBigDecimal.divide(disp.getQta(), rigaOrdine.getQtaCnf()));
requestDTO.setDataOrd(rigaOrdine.getDataOrd());
requestDTO.setDataOrd(UtilityLocalDate.localDateFromDate(rigaOrdine.getDataOrd()));
requestDTO.setNumOrd(rigaOrdine.getNumOrd());
requestDTO.setRigaOrd(rigaOrdine.getRigaOrd());

View File

@@ -727,7 +727,7 @@ public class DocumentiDirettiService {
.setCodMart(ulRowDTO.getCodMart())
.setPartitaMag(ulRowDTO.getPartitaMag())
.setQtaTot(ulRowDTO.getQtaCol())
.setDataOrd(ulRowDTO.getDataOrd() != null ? UtilityLocalDate.localDateToDate(ulRowDTO.getDataOrd()) : null)
.setDataOrd(ulRowDTO.getDataOrd())
.setNumOrd(ulRowDTO.getNumOrd())
.setRigaOrd(ulRowDTO.getRigaOrd())
.setTargetMtbColt(uds)
@@ -740,7 +740,7 @@ public class DocumentiDirettiService {
.setCodMart(ulRowDTO.getCodMart())
.setPartitaMag(ulRowDTO.getPartitaMag())
.setQtaTot(ulRowDTO.getQtaCol())
.setDataOrd(ulRowDTO.getDataOrd() != null ? UtilityLocalDate.localDateToDate(ulRowDTO.getDataOrd()) : null)
.setDataOrd(ulRowDTO.getDataOrd())
.setNumOrd(ulRowDTO.getNumOrd())
.setRigaOrd(ulRowDTO.getRigaOrd())
.setTargetMtbColt(uds)

View File

@@ -1,8 +1,11 @@
package it.integry.ems.logistic.service;
import com.annimon.stream.Stream;
import it.integry.ems.javabeans.RequestDataDTO;
import it.integry.ems.logistic.dto.ImportColliDaProduzioneDTO;
import it.integry.ems.retail.wms.accettazione.service.WMSAccettazioneService;
import it.integry.ems.retail.wms.dto.*;
import it.integry.ems.retail.wms.lavorazione.service.WMSLavorazioneService;
import it.integry.ems.retail.wms.vendita.service.WMSSpedizioneService;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
@@ -44,6 +47,15 @@ public class PackagesImportService {
@Autowired
private RequestDataDTO requestDataDTO;
@Autowired
private WMSAccettazioneService wmsAccettazioneService;
@Autowired
private WMSSpedizioneService wmsSpedizioneService;
@Autowired
private WMSLavorazioneService wmsLavorazioneService;
public Map<String, Object> resultSetToHashMap(ResultSet rs, String... keyValues) throws Exception {
if (keyValues.length < 2)
@@ -355,88 +367,79 @@ public class PackagesImportService {
String codVdes = UtilityHashMap.getValueIfExists(result, "cod_vdes");
MtbColt mtbColt = new MtbColt()
.setMtbColr(new ArrayList<>());
mtbColt.setOperation(OperationType.INSERT);
if (importColliProd.getGestione().equalsIgnoreCase("A")) {
mtbColt
.setCodAnag(codAnag)
.setCodVdes(codVdes);
}
mtbColt.setCodMdep(codMdep)
.setPreparatoDa(requestDataDTO.getUsername())
CreateUDCRequestDTO createUDCRequest = new CreateUDCRequestDTO()
.setCodMdep(codMdep)
.setDataCollo(importColliProd.getDataCollo())
.setSerCollo(serCollo)
.setCodTcol(importColliProd.getCodTcol())
.setPesoKg(importColliProd.getPesoLordo())
.setPesoNettoKg(importColliProd.getPesoNetto())
.setDataOrd(importColliProd.getDataOrd())
.setNumOrd(importColliProd.getNumOrd())
.setGestione(importColliProd.getGestione())
.setSegno(1)
.setDataVers(dataVers)
.setOrders(Collections.singletonList(new CreateUDCRequestOrderDTO()
.setDataOrd(importColliProd.getDataOrd())
.setNumOrd(importColliProd.getNumOrd())
.setGestione(importColliProd.getGestione())))
.setCodJfas(importColliProd.getCodJfas())
.setAnnotazioni(importColliProd.getAnnotazioni());
if (importColliProd.getGestione().equalsIgnoreCase("A")) {
createUDCRequest
.setCodAnag(codAnag)
.setCodVdes(codVdes);
}
MtbColt udc = wmsLavorazioneService.createUDC(createUDCRequest);
udc
.setPesoKg(importColliProd.getPesoLordo())
.setPesoNettoKg(importColliProd.getPesoNetto())
.setDataVers(dataVers)
.setOperation(OperationType.UPDATE);
BigDecimal qtaCnf = importColliProd.getQtaCnf() == null ?
importColliProd.getQtaCol().divide(new BigDecimal(importColliProd.getColliBancale()), EmsRestConstants.cifreDecMax, RoundingMode.HALF_UP) :
importColliProd.getQtaCnf();
MtbColr mtbColr = new MtbColr()
InsertUDCRowRequestDTO insertUDCRowRequestDTO = new InsertUDCRowRequestDTO()
.setTargetMtbColt(udc)
.setCodMart(importColliProd.getCodMart())
.setQtaCnf(qtaCnf)
.setQtaCol(importColliProd.getQtaCol())
.setQtaTot(importColliProd.getQtaCol())
.setNumCnf(new BigDecimal(importColliProd.getColliBancale()))
.setPartitaMag(importColliProd.getPartitaMag())
.setDataOrd(importColliProd.getDataOrd())
.setNumOrd(importColliProd.getNumOrd())
.setPesoLordoKg(importColliProd.getPesoLordo())
.setPesoNettoKg(importColliProd.getPesoNetto())
.setCodJcom(importColliProd.getCodJcom());
if (importColliProd.getGestione().equalsIgnoreCase("A")) {
mtbColr.setRigaOrd(importColliProd.getRigaOrd());
insertUDCRowRequestDTO.setRigaOrd(importColliProd.getRigaOrd());
} else {
mtbColr.setRigaOrd(0);
insertUDCRowRequestDTO.setRigaOrd(0);
}
mtbColt.getMtbColr().add(mtbColr);
entityProcessor.processEntity(mtbColt, true, multiDBTransactionManager);
final MtbColr savedMtbColr = wmsAccettazioneService.insertUDCRow(insertUDCRowRequestDTO)
.getSavedMtbColr();
savedMtbColr
.setPesoLordoKg(importColliProd.getPesoLordo())
.setPesoNettoKg(importColliProd.getPesoNetto())
.setOperation(OperationType.UPDATE);
udc.setMtbColr(new ArrayList<MtbColr>(1) {{
add(savedMtbColr);
}});
entityProcessor.processEntity(udc, true, multiDBTransactionManager);
List<MtbColt> colliRet = new ArrayList<>();
colliRet.add(mtbColt);
colliRet.add(udc);
List<EntityBase> entityBases = new ArrayList<>();
if (!UtilityString.isNullOrEmpty(importColliProd.getCodJcom()) && importColliProd.isAutoGeneraVendita()) {
MtbColt mtbColtV = new MtbColt()
.setGestione("V")
.setCodMdep(codMdep)
.setDataCollo(importColliProd.getDataCollo())
.setSerCollo(serCollo)
.setSegno(-1)
.setPesoKg(importColliProd.getPesoLordo())
.setPesoNettoKg(importColliProd.getPesoNetto())
.setCodTcol(importColliProd.getCodTcol())
.setPreparatoDa(requestDataDTO.getUsername())
.setAnnotazioni(importColliProd.getFornitore())
.setDataVers(dataVers)
.setMtbColr(new ArrayList<>());
mtbColtV.setOperation(OperationType.INSERT);
entityBases.add(mtbColtV);
MtbColr mtbColrV = new MtbColr()
.setCodMart(importColliProd.getCodMart())
.setQtaCnf(qtaCnf)
.setQtaCol(importColliProd.getQtaCol())
.setNumCnf(new BigDecimal(importColliProd.getColliBancale()))
.setPartitaMag(importColliProd.getPartitaMag())
.setGestioneRif(mtbColt.getGestione())
.setNumColloRif(mtbColt.getNumCollo())
.setDataColloRif(mtbColt.getDataCollo())
.setSerColloRif(mtbColt.getSerCollo());
mtbColtV.getMtbColr().add(mtbColrV);
query = "SELECT dtb_ordt.cod_anag," +
" dtb_ordt.gestione," +
" dtb_ordt.data_ord," +
" dtb_ordt.num_ord, " +
" dtb_ordt.cod_vdes, " +
@@ -452,13 +455,34 @@ public class PackagesImportService {
result = UtilityDB.executeSimpleQueryOnlyFirstRow(connection, query);
CreateUDSRequestDTO createUDSRequest = new CreateUDSRequestDTO()
.setCodMdep(codMdep)
.setDataCollo(importColliProd.getDataCollo())
.setSerCollo(serCollo)
.setCodTcol(importColliProd.getCodTcol())
.setAnnotazioni(importColliProd.getFornitore());
InsertUDSRowRequestDTO insertUDSRowRequest = new InsertUDSRowRequestDTO()
.setCodMart(importColliProd.getCodMart())
.setQtaCnf(qtaCnf)
.setQtaTot(importColliProd.getQtaCol())
.setNumCnf(new BigDecimal(importColliProd.getColliBancale()))
.setPartitaMag(importColliProd.getPartitaMag())
.setSourceMtbColr(savedMtbColr);
if (result != null) {
mtbColtV.setCodAnag(UtilityHashMap.getValueIfExists(result, "cod_anag"))
.setDataOrd(UtilityLocalDate.localDateFromDate(UtilityHashMap.getValueIfExists(result, "data_ord")))
.setNumOrd(UtilityHashMap.getValueIfExists(result, "num_ord"))
createUDSRequest.setCodAnag(UtilityHashMap.getValueIfExists(result, "cod_anag"))
.setOrders(Collections.singletonList(new CreateUDSRequestOrderDTO()
.setDataOrd(UtilityLocalDate.localDateFromDate(UtilityHashMap.getValueIfExists(result, "data_ord")))
.setNumOrd(UtilityHashMap.getValueIfExists(result, "num_ord"))
.setGestione(UtilityHashMap.getValueIfExists(result, "gestione"))
))
.setCodVdes(UtilityHashMap.getValueIfExists(result, "cod_vdes"))
.setRifOrd(UtilityHashMap.getValueIfExists(result, "rif_ord"));
mtbColrV.setDataOrd(UtilityLocalDate.localDateFromDate(UtilityHashMap.getValueIfExists(result, "data_ord")))
insertUDSRowRequest.setDataOrd(UtilityLocalDate.localDateFromDate(UtilityHashMap.getValueIfExists(result, "data_ord")))
.setNumOrd(UtilityHashMap.getValueIfExists(result, "num_ord"))
.setRigaOrd(UtilityHashMap.getValueIfExists(result, "riga_ord"));
@@ -467,8 +491,23 @@ public class PackagesImportService {
"FROM jtb_comt WHERE cod_jcom = " + UtilityDB.valueToString(importColliProd.getCodJcom());
String codAnagV = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(connection, query);
mtbColtV.setCodAnag(codAnagV);
createUDSRequest.setCodAnag(codAnagV);
}
final MtbColt uds = wmsSpedizioneService.createUDS(createUDSRequest);
uds
.setPesoKg(importColliProd.getPesoLordo())
.setPesoNettoKg(importColliProd.getPesoNetto())
.setDataVers(dataVers)
.setOperation(OperationType.UPDATE);
entityProcessor.processEntity(uds, true, multiDBTransactionManager);
insertUDSRowRequest
.setTargetMtbColt(uds);
wmsSpedizioneService.insertUDSRow(insertUDSRowRequest);
}
if (!UtilityString.isNullOrEmpty(importColliProd.getCodJfas()) && flagStart.equalsIgnoreCase("S")) {
@@ -579,17 +618,14 @@ public class PackagesImportService {
}*/
}
List<EntityBase> entityRet = entityProcessor.processEntityList(entityBases, true);
entityProcessor.processEntityList(entityBases, true);
List<MtbColt> mtbColtRet =
Stream.of(entityRet)
.filter(x -> x instanceof MtbColt)
.map(x -> (MtbColt) x)
.toList();
colliRet.forEach(x -> {
x.setOperation(OperationType.SELECT_OBJECT);
x.getMtbColr().forEach(y -> y.setOperation(OperationType.SELECT_OBJECT));
});
if (mtbColtRet != null && !mtbColtRet.isEmpty()) {
colliRet.addAll(mtbColtRet);
}
return colliRet;
}
}

View File

@@ -1,12 +1,12 @@
package it.integry.ems.production.controller;
import it.integry.common.var.CommonConstants;
import it.integry.ems.production.dto.DeleteCaricoDaProduzioneRequestDTO;
import it.integry.ems.production.dto.RettificaProdDTO;
import it.integry.ems.production.service.ProductionWarehouseService;
import it.integry.ems.response.EsitoType;
import it.integry.ems.response.ServiceRestResponse;
import it.integry.ems_model.config.EmsRestConstants;
import it.integry.ems_model.entity.MtbColt;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
@@ -51,19 +51,13 @@ public class ProductionWarehouseController {
}
@RequestMapping(value = EmsRestConstants.PATH_WAREHOUSE_PRODUCTION_DELETE_COLLO, method = RequestMethod.POST)
@RequestMapping(value = EmsRestConstants.PATH_WAREHOUSE_PRODUCTION_DELETE_CARICO, method = RequestMethod.POST)
public @ResponseBody
ServiceRestResponse deleteColloDaProduzione(HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
@RequestBody MtbColt mtbColtToDelete) {
try {
warehouseService.deleteColloDaProduzione(mtbColtToDelete);
return ServiceRestResponse.createPositiveResponse();
} catch (Exception e) {
logger.error(request.getRequestURI(), e);
return ServiceRestResponse.createNegativeResponse(profileDB, e);
}
@RequestBody DeleteCaricoDaProduzioneRequestDTO caricoToDelete) throws Exception {
warehouseService.deleteCaricoDaProduzione(caricoToDelete);
return ServiceRestResponse.createPositiveResponse();
}

View File

@@ -0,0 +1,65 @@
package it.integry.ems.production.dto;
public class DeleteCaricoDaProduzioneRequestDTO {
private String barcodeUl;
private String codMart;
private String partitaMag;
private String codJcom;
private String codCol;
private String codTagl;
public String getBarcodeUl() {
return barcodeUl;
}
public DeleteCaricoDaProduzioneRequestDTO setBarcodeUl(String barcodeUl) {
this.barcodeUl = barcodeUl;
return this;
}
public String getCodMart() {
return codMart;
}
public DeleteCaricoDaProduzioneRequestDTO setCodMart(String codMart) {
this.codMart = codMart;
return this;
}
public String getPartitaMag() {
return partitaMag;
}
public DeleteCaricoDaProduzioneRequestDTO setPartitaMag(String partitaMag) {
this.partitaMag = partitaMag;
return this;
}
public String getCodJcom() {
return codJcom;
}
public DeleteCaricoDaProduzioneRequestDTO setCodJcom(String codJcom) {
this.codJcom = codJcom;
return this;
}
public String getCodCol() {
return codCol;
}
public DeleteCaricoDaProduzioneRequestDTO setCodCol(String codCol) {
this.codCol = codCol;
return this;
}
public String getCodTagl() {
return codTagl;
}
public DeleteCaricoDaProduzioneRequestDTO setCodTagl(String codTagl) {
this.codTagl = codTagl;
return this;
}
}

View File

@@ -1660,7 +1660,7 @@ public class MesProductionServiceV2 {
.setSourceMtbColr(sourceMtbColr)
.setTargetMtbColt(uds)
.setQtaCnf(scarico.getQtaCnf())
.setDataOrd(ordine.getDataOrd())
.setDataOrd(UtilityLocalDate.localDateFromDate(ordine.getDataOrd()))
.setRigaOrd(rigaOrd)
.setNumOrd(ordine.getNumOrd());
wmsLavorazioneService.insertUDSRow(insertRequestDto);

View File

@@ -1,6 +1,8 @@
package it.integry.ems.production.service;
import it.integry.ems.production.dto.DeleteCaricoDaProduzioneRequestDTO;
import it.integry.ems.production.dto.RettificaProdDTO;
import it.integry.ems.retail.wms.Utility.WMSUtility;
import it.integry.ems.retail.wms.generic.dto.RettificaULDTO;
import it.integry.ems.retail.wms.generic.service.WMSGenericService;
import it.integry.ems.rules.businessLogic.LoadColliService;
@@ -9,12 +11,15 @@ import it.integry.ems.service.EntityProcessor;
import it.integry.ems.service.PrinterService;
import it.integry.ems.service.ReportProcessor;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityEntity;
import it.integry.ems_model.entity.DtbDoct;
import it.integry.ems_model.entity.MtbColr;
import it.integry.ems_model.entity.MtbColt;
import it.integry.ems_model.entity.key.MtbColtKey;
import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityString;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
@@ -24,6 +29,7 @@ import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@Service
@Scope("request")
@@ -93,31 +99,53 @@ public class ProductionWarehouseService {
}
public void deleteColloDaProduzione(MtbColt mtbColt) throws Exception {
public void deleteCaricoDaProduzione(DeleteCaricoDaProduzioneRequestDTO caricoToDelete) throws Exception {
List<MtbColt> mtbColtsToDelete = new ArrayList<>();
if (UtilityString.isNullOrEmpty(caricoToDelete.getBarcodeUl()) || UtilityString.isNullOrEmpty(caricoToDelete.getCodMart()))
throw new IllegalArgumentException("Il barcode_ul_out e il cod_mart sono obbligatori per la cancellazione del carico da produzione");
String query = "SELECT num_collo, data_collo, ser_collo, gestione " +
"FROM " + MtbColr.ENTITY + " " +
"WHERE num_collo_rif = " + UtilityDB.valueToString(mtbColt.getNumCollo()) + " " +
" AND data_collo_rif = " + UtilityDB.valueToString(mtbColt.getDataCollo()) + " " +
" AND ser_collo_rif = " + UtilityDB.valueToString(mtbColt.getSerCollo()) + " " +
" AND gestione_rif = " + UtilityDB.valueToString(mtbColt.getGestione());
List<MtbColt> mtbColtsRefs = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), query, MtbColt.class);
String sql = "SELECT * \n" +
"FROM " + MtbColr.ENTITY + "\n " +
"WHERE (barcode_ul_out = " + UtilityDB.valueToString(caricoToDelete.getBarcodeUl()) + " OR barcode_ul_in = " + UtilityDB.valueToString(caricoToDelete.getBarcodeUl()) + ") \n " +
" AND cod_mart = " + UtilityDB.valueToString(caricoToDelete.getCodMart()) + "\n " +
(!UtilityString.isNullOrEmpty(caricoToDelete.getPartitaMag()) ? " AND partita_mag = " + UtilityDB.valueToString(caricoToDelete.getPartitaMag()) : "") + "\n " +
(!UtilityString.isNullOrEmpty(caricoToDelete.getCodJcom()) ? " AND cod_jcom = " + UtilityDB.valueToString(caricoToDelete.getCodJcom()) : "") + "\n " +
(!UtilityString.isNullOrEmpty(caricoToDelete.getCodCol()) ? " AND cod_col = " + UtilityDB.valueToString(caricoToDelete.getCodCol()) : "") + "\n " +
(!UtilityString.isNullOrEmpty(caricoToDelete.getCodTagl()) ? " AND cod_tagl = " + UtilityDB.valueToString(caricoToDelete.getCodTagl()) : "");
if (mtbColtsRefs != null && !mtbColtsRefs.isEmpty()) {
for (MtbColt mtbColtRef :
mtbColtsRefs) {
mtbColtRef.setOperation(OperationType.DELETE);
List<MtbColr> mtbColrsToBeDeleted = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, MtbColr.class);
if(mtbColrsToBeDeleted != null && !mtbColrsToBeDeleted.isEmpty()) {
mtbColrsToBeDeleted.forEach(x -> x.setOperation(OperationType.DELETE));
final List<MtbColt> mtbColtsToDelete = mtbColrsToBeDeleted.stream()
.map(mtbColr -> (MtbColtKey) mtbColr.getKey())
.distinct()
.map(x -> {
MtbColt mtbColt = new MtbColt(x);
mtbColt.setMtbColr(mtbColrsToBeDeleted.stream()
.filter(y -> y.getKey().equals(x))
.collect(Collectors.toList()));
mtbColt.setOperation(OperationType.UPDATE);
return mtbColt;
}
)
.collect(Collectors.toList());
entityProcessor.processEntityList(mtbColtsToDelete, multiDBTransactionManager, true);
UtilityEntity.throwEntitiesException(mtbColtsToDelete);
for (MtbColt mtbColt : mtbColtsToDelete) {
if (WMSUtility.canULBeDeleted(mtbColt, multiDBTransactionManager)) {
WMSUtility.deleteUL(mtbColt, entityProcessor, multiDBTransactionManager);
}
}
mtbColtsToDelete.addAll(mtbColtsRefs);
}
mtbColt.setOperation(OperationType.DELETE);
mtbColtsToDelete.add(mtbColt);
entityProcessor.processEntityList(mtbColtsToDelete, true);
}
}

View File

@@ -259,9 +259,9 @@ public class WMSUtility {
boolean destroyMtbColrReferences = false;
//Se le gestioni sono uguali faccio uno storno sulla sorgente e non lavoro con i riferimenti (solo se non volontariamente forzata)
if (!flagForceUseRefs && (UtilityString.equalsIgnoreCase(sourceMtbColt.getGestione(), "V") && UtilityString.equalsIgnoreCase(destinationMtbColt.getGestione(), "V")) ||
(UtilityString.equalsIgnoreCase(sourceMtbColt.getGestione(), "V") && sourceMtbColt.getSegno() == -1 && UtilityString.equalsIgnoreCase(destinationMtbColt.getGestione(), "L"))) {
//Se la sorgente è un collo di scarico allora faccio lo storno sulla sorgente e aggiungo le qta a quella di destinazione
if (!flagForceUseRefs &&
(sourceMtbColt.getSegno() == -1 && UtilityString.equalsIgnoreCase(destinationMtbColt.getGestione(), "L"))) {
destroyMtbColrReferences = true;
MtbColr stornoSourceMtbColr = (MtbColr) mtbColr.clone();
@@ -271,6 +271,7 @@ public class WMSUtility {
.setNumCollo(null)
.setSerCollo(null)
.setDataCollo(null)
.setRiga(null)
.setGestioneRif(cloneMtbColr.getGestioneRif())
.setNumColloRif(cloneMtbColr.getNumColloRif())
.setSerColloRif(cloneMtbColr.getSerColloRif())
@@ -282,7 +283,13 @@ public class WMSUtility {
.setNumCnf(stornoSourceMtbColr.getNumCnf().multiply(new BigDecimal(-1)))
//Lavoro al contrario per compatibilità
.setBarcodeUlOut(cloneMtbColr.getBarcodeUlIn());
.setBarcodeUlOut(cloneMtbColr.getBarcodeUlIn())
.setCodMdepOut(cloneMtbColr.getCodMdepOut())
.setPosizioneOut(cloneMtbColr.getPosizioneOut())
.setBarcodeUlIn(destinationMtbColt.getBarcodeUl())
.setCodMdepIn(destinationMtbColt.getCodMdep())
.setPosizioneIn(destinationMtbColt.getPosizione());
mtbColrSourceList.add(stornoSourceMtbColr);
}
@@ -314,6 +321,9 @@ public class WMSUtility {
.setNumCollo(null)
.setDataCollo(null)
.setRiga(null)
.setBarcodeUlIn(destinationMtbColt.getBarcodeUl())
.setCodMdepIn(destinationMtbColt.getCodMdep())
.setPosizioneIn(destinationMtbColt.getPosizione())
.setUtente(requestDataDTO.getUsername());
if (!StringUtils.equalsIgnoreCase(destinationMtbColt.getGestione(), "V")) {

View File

@@ -161,7 +161,9 @@ public class WMSAccettazioneService {
udcMtbColt.setOperation(OperationType.INSERT);
entityProcessor.processEntity(udcMtbColt, multiDBTransactionManager);
udcMtbColt.setOnlyPkMaster(false);
udcMtbColt
.setMtbCols(new ArrayList<>())
.setOnlyPkMaster(false);
return udcMtbColt;
}

View File

@@ -21,6 +21,7 @@ public class CreateUDSRequestDTO {
private String codJfas;
private String codAnag;
private String codVdes;
private String codTcol;
private Integer idLotto;
private String rifOrd;
@@ -138,6 +139,15 @@ public class CreateUDSRequestDTO {
return this;
}
public String getCodTcol() {
return codTcol;
}
public CreateUDSRequestDTO setCodTcol(String codTcol) {
this.codTcol = codTcol;
return this;
}
public List<CreateUDSRequestOrderDTO> getOrders() {
return orders;
}

View File

@@ -4,8 +4,8 @@ import it.integry.ems_model.entity.MtbColr;
import it.integry.ems_model.entity.MtbColt;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
public class InsertUDSRowRequestDTO {
@@ -17,9 +17,9 @@ public class InsertUDSRowRequestDTO {
private BigDecimal qtaCnf;
private BigDecimal numCnf;
private String partitaMag;
private Date dataScad;
private LocalDate dataScad;
private Date dataOrd;
private LocalDate dataOrd;
private Integer numOrd;
private Integer rigaOrd;
private LocalDateTime datetimeRow;
@@ -57,7 +57,7 @@ public class InsertUDSRowRequestDTO {
return partitaMag;
}
public Date getDataScad() {
public LocalDate getDataScad() {
return dataScad;
}
@@ -97,16 +97,16 @@ public class InsertUDSRowRequestDTO {
return this;
}
public InsertUDSRowRequestDTO setDataScad(Date dataScad) {
public InsertUDSRowRequestDTO setDataScad(LocalDate dataScad) {
this.dataScad = dataScad;
return this;
}
public Date getDataOrd() {
public LocalDate getDataOrd() {
return dataOrd;
}
public InsertUDSRowRequestDTO setDataOrd(Date dataOrd) {
public InsertUDSRowRequestDTO setDataOrd(LocalDate dataOrd) {
this.dataOrd = dataOrd;
return this;
}

View File

@@ -2216,7 +2216,7 @@ public class WMSGenericService {
.setQtaCnf(rowToMove.getQtaCnf())
.setNumCnf(rowToMove.getNumCnf())
.setPartitaMag(rowToMove.getPartitaMag())
.setDataScad(rowToMove.getDataScad())
.setDataScad(UtilityLocalDate.localDateFromDate(rowToMove.getDataScad()))
.setTargetMtbColt(movimento)
.setDatetimeRow(requestDTO.getDataTrasf());
movimento.getMtbColr().add(wmsLavorazioneService.insertUDSRow(insertUDSRowRequest).getSavedMtbColr());

View File

@@ -13,6 +13,7 @@ import it.integry.ems.retail.wms.exceptions.InvalidArticoloException;
import it.integry.ems.retail.wms.exceptions.InvalidUDSQuantityException;
import it.integry.ems.retail.wms.exceptions.UDSQuantityOverflowException;
import it.integry.ems.retail.wms.generic.dto.MvwSitArtUdcDetInventarioDTO;
import it.integry.ems.retail.wms.generic.dto.SpostaArtsTraULResponseDTO;
import it.integry.ems.retail.wms.generic.service.WMSGiacenzaULService;
import it.integry.ems.rules.businessLogic.LoadColliService;
import it.integry.ems.rules.businessLogic.dto.LoadColliDTO;
@@ -23,7 +24,6 @@ import it.integry.ems.service.production.ProductionOrderDataHandlerService;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.user.UserSession;
import it.integry.ems.utility.UtilityEntity;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.entity.*;
import it.integry.ems_model.entity._enum.GestioneEnum;
import it.integry.ems_model.service.SetupGest;
@@ -109,6 +109,7 @@ public class WMSLavorazioneService {
.setCodJfas(createUDSRequestDTO.getCodJfas())
.setRifOrd(createUDSRequestDTO.getRifOrd())
.setCodVdes(createUDSRequestDTO.getCodVdes())
.setCodTcol(createUDSRequestDTO.getCodTcol())
.setIdLotto(createUDSRequestDTO.getIdLotto());
switch (createUDSRequestDTO.getCausaleCollo()) {
@@ -281,13 +282,13 @@ public class WMSLavorazioneService {
.setCausale(MtbColr.Causale.DEFAULT)
.setCodMart(mtbAart.getCodMart())
.setPartitaMag(insertUDSRowRequestDTO.getPartitaMag())
.setDataScadPartita(insertUDSRowRequestDTO.getDataScad())
.setDataScadPartita(UtilityLocalDate.localDateToDate(insertUDSRowRequestDTO.getDataScad()))
.setQtaCol(insertUDSRowRequestDTO.getQtaTot())
.setQtaCnf(insertUDSRowRequestDTO.getQtaCnf())
.setNumCnf(insertUDSRowRequestDTO.getNumCnf())
.setDescrizione(mtbAart.getDescrizioneEstesa())
.setUtente(userSession.getFullname())
.setDataOrd(UtilityLocalDate.localDateFromDate(insertUDSRowRequestDTO.getDataOrd()))
.setDataOrd(insertUDSRowRequestDTO.getDataOrd())
.setNumOrd(insertUDSRowRequestDTO.getNumOrd())
.setRigaOrd(insertUDSRowRequestDTO.getRigaOrd())
.setDatetimeRow(UtilityLocalDate.isNull(insertUDSRowRequestDTO.getDatetimeRow(), UtilityLocalDate.getNowTime()))
@@ -392,13 +393,13 @@ public class WMSLavorazioneService {
.setCausale(MtbColr.Causale.DEFAULT)
.setCodMart(mtbAart.getCodMart())
.setPartitaMag(row.getPartitaMag())
.setDataScadPartita(row.getDataScad())
.setDataScadPartita(UtilityLocalDate.localDateToDate(row.getDataScad()))
.setQtaCol(row.getQtaTot())
.setQtaCnf(row.getQtaCnf())
.setNumCnf(row.getNumCnf())
.setDescrizione(mtbAart.getDescrizioneEstesa())
.setUtente(userSession.getFullname())
.setDataOrd(UtilityLocalDate.localDateFromDate(row.getDataOrd()))
.setDataOrd(row.getDataOrd())
.setNumOrd(row.getNumOrd())
.setRigaOrd(row.getRigaOrd())
.setDatetimeRow(UtilityLocalDate.getNowTime())
@@ -823,17 +824,17 @@ public class WMSLavorazioneService {
produzioniOrdine.get(0).setScarichiProduzione(scarichi);
return produzioniOrdine;
}
List<EntityBase> entititesToSave = new ArrayList<>();
HashMap<String, ScarichiArticoloDTO> scarichiArticoli = new HashMap<>();
for (MtbColt uds : scarichi) {
HashMap<String, ScarichiArticoloDTO> scarichiMateriaPrima = new HashMap<>();
for (MtbColt scarico : scarichi) {
String sql = "SELECT * from mtb_colr where gestione = {} AND data_collo = {} and ser_collo = {} and num_collo = {}";
List<MtbColr> rows = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), Query.format(sql, uds.getGestione(), uds.getDataCollo(), uds.getSerCollo(), uds.getNumCollo()), MtbColr.class);
List<MtbColr> rows = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), Query.format(sql, scarico.getGestione(), scarico.getDataCollo(), scarico.getSerCollo(), scarico.getNumCollo()), MtbColr.class);
if (UtilityList.isNullOrEmpty(rows)) {
continue;
}
for (MtbColr row : rows) {
ScarichiArticoloDTO dtoScarico = scarichiArticoli.get(row.getCodMart());
ScarichiArticoloDTO dtoScarico = scarichiMateriaPrima.get(row.getCodMart());
if (dtoScarico == null) {
dtoScarico = new ScarichiArticoloDTO();
dtoScarico.setCodMart(row.getCodMart())
@@ -843,14 +844,17 @@ public class WMSLavorazioneService {
dtoScarico.setQtaScaricata(dtoScarico.getQtaScaricata().add(row.getQtaCol()));
dtoScarico.getScarichi().add(row);
scarichiArticoli.put(row.getCodMart(), dtoScarico);
scarichiMateriaPrima.put(row.getCodMart(), dtoScarico);
}
uds.setOperation(OperationType.DELETE);
entititesToSave.add(uds);
}
Iterator<ProduzioneOrdineDTO> iteratorProduzioni = produzioniOrdine.iterator();
final List<String> codMarts = new ArrayList<>(scarichiMateriaPrima.keySet());
final List<MtbAart> mtbAarts = WMSUtility.getArticoliByCodMarts(codMarts, multiDBTransactionManager.getPrimaryConnection());
while (iteratorProduzioni.hasNext()) {
ProduzioneOrdineDTO produzione = iteratorProduzioni.next();
boolean isLastProduzione = !iteratorProduzioni.hasNext();
@@ -877,44 +881,64 @@ public class WMSLavorazioneService {
MtbColt uds = createUDS(requestDTO);
//</editor-fold>
//<editor-fold desc="per ogni articolo ripartisco gli scarichi">
for (ScarichiArticoloDTO scarichiMp : scarichiArticoli.values()) {
for (ScarichiArticoloDTO scarichiMp : scarichiMateriaPrima.values()) {
String codMart = scarichiMp.getCodMart();
BigDecimal cifreDec = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(),
Query.format("select mtb_unt_mis.cifre_dec from mtb_unt_mis inner join mtb_aart on mtb_unt_mis.unt_mis = mtb_aart.unt_mis and cod_mart = {}", codMart)
);
BigDecimal qtaDaScaricare = UtilityBigDecimal.calculatePercentage(scarichiMp.getQtaScaricata(), produzione.getPesoProduzione().doubleValue(), cifreDec.intValue());
MtbAart mtbAart = mtbAarts.stream()
.filter(x -> x.getCodMart().equalsIgnoreCase(codMart))
.findFirst()
.orElse(null);
if(mtbAart == null || UtilityList.isNullOrEmpty(mtbAart.getMtbUntMis())) {
throw new InvalidArticoloException(codMart);
}
BigDecimal cifreDecPrimaUntMis = mtbAart.getMtbUntMis().get(0).getCifreDec();
BigDecimal qtaDaScaricare = UtilityBigDecimal.calculatePercentage(scarichiMp.getQtaScaricata(), produzione.getPesoProduzione().doubleValue(), cifreDecPrimaUntMis.intValue());
if (UtilityBigDecimal.equalsTo(qtaDaScaricare, BigDecimal.ZERO)) {
continue;
}
scarichiMp.getScarichi().sort(Comparator.comparing(MtbColr::getDatetimeRow));
scarichiMp.getScarichi()
.sort(Comparator.comparing(MtbColr::getDatetimeRow));
Iterator<MtbColr> rowsIterator = scarichiMp.getScarichi().iterator();
do {
MtbColr nextScar = rowsIterator.next();
if (UtilityBigDecimal.equalsTo(nextScar.getQtaCol(), BigDecimal.ZERO))
MtbColr mtbColrToMove = (MtbColr) nextScar.clone();
if (UtilityBigDecimal.equalsTo(mtbColrToMove.getQtaCol(), BigDecimal.ZERO))
continue;
MtbColr newRow = (MtbColr) nextScar.clone();
newRow
.setDataCollo(null)
.setSerCollo(null)
.setNumCollo(null)
.setGestione(null)
.setRiga(null)
.setNumCnf(null)
.setOperation(OperationType.INSERT);
BigDecimal qtaPrelevata = isLastProduzione ? nextScar.getQtaCol() : UtilityBigDecimal.getLowerBetween(nextScar.getQtaCol(), qtaDaScaricare);
newRow.setQtaCol(qtaPrelevata);
MtbColt mtbColtToMove = new MtbColt(mtbColrToMove.getKey());
mtbColtToMove.setOperation(OperationType.SELECT_OBJECT);
entityProcessor.processEntity(mtbColtToMove, true, multiDBTransactionManager);
mtbColtToMove.getMtbColr().add(mtbColrToMove);
BigDecimal qtaPrelevata = isLastProduzione ? mtbColrToMove.getQtaCol() : UtilityBigDecimal.getLowerBetween(mtbColrToMove.getQtaCol(), qtaDaScaricare);
mtbColrToMove.setQtaCol(qtaPrelevata);
final SpostaArtsTraULResponseDTO spostaArtsTraULResponseDTO = WMSUtility.spostaArtsTraUL(multiDBTransactionManager.getPrimaryConnection(),
mtbColtToMove, uds.getBarcodeUl(), false, entityProcessor, requestDataDTO);
qtaDaScaricare = qtaDaScaricare.subtract(qtaPrelevata);
nextScar.setQtaCol(nextScar.getQtaCol().subtract(qtaPrelevata));
uds.getMtbColr().add(newRow);
nextScar.setQtaCol(mtbColrToMove.getQtaCol().subtract(qtaPrelevata));
uds.getMtbColr()
.addAll(spostaArtsTraULResponseDTO.getGeneratedMtbColr());
}
while ((UtilityBigDecimal.greaterThan(qtaDaScaricare, BigDecimal.ZERO) || isLastProduzione) && rowsIterator.hasNext());
}
entititesToSave.add(uds);
produzione.getScarichiProduzione().add(uds);
//</editor-fold>
}
entityProcessor.processEntityList(entititesToSave, multiDBTransactionManager, true);
UtilityEntity.throwEntitiesException(entititesToSave);
for (MtbColt originalScarico : scarichi) {
if(!WMSUtility.canULBeDeleted(originalScarico, multiDBTransactionManager))
throw new Exception("Impossibile eliminare lo scarico " + originalScarico.getSerCollo() + " " + originalScarico.getNumCollo() + " " + originalScarico.getDataCollo() + " in quanto è stato utilizzato per la ripartizione della produzione!");
WMSUtility.deleteUL(originalScarico, entityProcessor, multiDBTransactionManager);
}
return produzioniOrdine;
}

View File

@@ -34,11 +34,7 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
@Service
@@ -85,7 +81,8 @@ public class WMSSpedizioneService {
.setSegno(-1)
.setRifOrd(createUDSRequestDTO.getRifOrd())
.setCodAnag(createUDSRequestDTO.getCodAnag())
.setCodVdes(createUDSRequestDTO.getCodVdes());
.setCodVdes(createUDSRequestDTO.getCodVdes())
.setCodTcol(createUDSRequestDTO.getCodTcol());
//udsMtbColt.setCodAnag(wmsGenericService.retrieveInternalCodAnagCliente());
@@ -152,7 +149,9 @@ public class WMSSpedizioneService {
udsMtbColt.setOperation(OperationType.INSERT);
entityProcessor.processEntity(udsMtbColt, multiDBTransactionManager);
udsMtbColt.setOnlyPkMaster(false);
udsMtbColt
.setMtbCols(new ArrayList<>())
.setOnlyPkMaster(false);
return udsMtbColt;
}
@@ -249,7 +248,7 @@ public class WMSSpedizioneService {
.setCausale(MtbColr.Causale.DEFAULT)
.setCodMart(mtbAart.getCodMart())
.setPartitaMag(insertUDSRowRequestDTO.getPartitaMag())
.setDataScadPartita(insertUDSRowRequestDTO.getDataScad())
.setDataScadPartita(UtilityLocalDate.localDateToDate(insertUDSRowRequestDTO.getDataScad()))
.setQtaCol(insertUDSRowRequestDTO.getQtaTot())
.setQtaCnf(insertUDSRowRequestDTO.getQtaCnf())
.setNumCnf(insertUDSRowRequestDTO.getNumCnf())