Creati servizi per il recupero materiale da WMS
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package it.integry.ems_model.entity;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import com.fasterxml.jackson.annotation.JsonTypeName;
|
||||
import it.integry.common.var.CommonConstants;
|
||||
import it.integry.ems_model.annotation.*;
|
||||
@@ -867,6 +868,11 @@ public class MtbAart extends EntityBase implements EquatableEntityInterface<MtbA
|
||||
return flagQtaCnfFissa;
|
||||
}
|
||||
|
||||
@JsonIgnore
|
||||
public boolean isFlagQtaCnfFissaBoolean() {
|
||||
return "S".equalsIgnoreCase(flagQtaCnfFissa);
|
||||
}
|
||||
|
||||
public MtbAart setFlagQtaCnfFissa(String flagQtaCnfFissa) {
|
||||
this.flagQtaCnfFissa = flagQtaCnfFissa;
|
||||
return this;
|
||||
@@ -1362,4 +1368,5 @@ public class MtbAart extends EntityBase implements EquatableEntityInterface<MtbA
|
||||
.setOperation(OperationType.SELECT_OBJECT);
|
||||
return art;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -96,10 +96,19 @@ public class UtilityBigDecimal {
|
||||
}
|
||||
|
||||
public static BigDecimal divide(BigDecimal input1, BigDecimal divisor) {
|
||||
return divide(input1, divisor, RoundingMode.HALF_EVEN);
|
||||
}
|
||||
|
||||
public static BigDecimal divide(BigDecimal input1, BigDecimal divisor, RoundingMode roundingMode) {
|
||||
if (input1 == null) return null;
|
||||
if (divisor == null || equalsTo(divisor, BigDecimal.ZERO)) return null;
|
||||
|
||||
return input1.divide(divisor, 5, BigDecimal.ROUND_HALF_EVEN);
|
||||
return input1.divide(divisor, 5, roundingMode);
|
||||
}
|
||||
|
||||
public static BigDecimal divideAndRoundToInteger(BigDecimal input1, BigDecimal divisor, RoundingMode roundingMode) {
|
||||
if (divisor == null || equalsTo(divisor, BigDecimal.ZERO)) return null;
|
||||
return new BigDecimal(input1.divide(divisor, 0, roundingMode).intValue());
|
||||
}
|
||||
|
||||
public static BigDecimal multiply(BigDecimal input1, BigDecimal multiplier) {
|
||||
|
||||
@@ -25,14 +25,16 @@ import it.integry.ems_model.entity.MtbColt;
|
||||
import it.integry.ems_model.entity.MtbDepoPosizioni;
|
||||
import it.integry.ems_model.utility.UtilityDate;
|
||||
import it.integry.ems_model.utility.UtilityString;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.drools.core.util.IoUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.net.InetAddress;
|
||||
import java.nio.file.Paths;
|
||||
import java.text.SimpleDateFormat;
|
||||
@@ -43,6 +45,8 @@ import java.util.*;
|
||||
@Scope("request")
|
||||
public class WMSGenericController {
|
||||
|
||||
private final Logger logger = LogManager.getLogger();
|
||||
|
||||
@Autowired
|
||||
private EmsProperties emsProperties;
|
||||
|
||||
@@ -110,10 +114,8 @@ public class WMSGenericController {
|
||||
}
|
||||
|
||||
@RequestMapping(value = EmsRestConstants.PATH_CHECK_LATEST_WMS_VERSION_JSON, method = RequestMethod.GET)
|
||||
public Object checkWMSLatestVersionJSON() throws Exception {
|
||||
public Object checkWMSLatestVersionJSON(HttpServletResponse response) throws Exception {
|
||||
String wmsVersionFile = Paths.get(UtilityDirs.getWebAppPath(), "wms", "version.txt").toString();
|
||||
|
||||
|
||||
if (new File(wmsVersionFile).exists()) {
|
||||
List<String> lines = UtilityString.splitStringToMultipleLine(IoUtils.readFileAsString(new File(wmsVersionFile)));
|
||||
|
||||
@@ -148,7 +150,11 @@ public class WMSGenericController {
|
||||
}
|
||||
|
||||
return wmsVersionDTO;
|
||||
} else throw new FileNotFoundException("File version.txt non trovato");
|
||||
} else {
|
||||
logger.warn("File version.txt non trovato");
|
||||
response.sendError(404, "File version.txt non trovato");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = EmsRestConstants.PATH_GET_GIACENZA_BANCALI_ARTICOLI_ORDINE, method = RequestMethod.GET)
|
||||
|
||||
@@ -5,8 +5,6 @@ import it.integry.ems.response.ServiceRestResponse;
|
||||
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 org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
@@ -17,9 +15,6 @@ import org.springframework.web.bind.annotation.*;
|
||||
public class WMSLavorazioneController {
|
||||
|
||||
|
||||
private final Logger logger = LogManager.getLogger();
|
||||
|
||||
|
||||
@Autowired
|
||||
private WMSAccettazioneService wmsAccettazioneService;
|
||||
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
package it.integry.ems.retail.wms.lavorazione.controller;
|
||||
|
||||
import it.integry.common.var.CommonConstants;
|
||||
import it.integry.ems.response.ServiceRestResponse;
|
||||
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.service.WMSMaterialiService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@RestController
|
||||
@Scope("request")
|
||||
@RequestMapping("wms/materiali")
|
||||
public class WMSMaterialiController {
|
||||
|
||||
@Autowired
|
||||
private WMSMaterialiService wmsMaterialiService;
|
||||
|
||||
|
||||
|
||||
|
||||
@RequestMapping(value = "recupera", method = RequestMethod.POST)
|
||||
public @ResponseBody
|
||||
ServiceRestResponse recupera(@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
|
||||
@RequestBody RecuperaMaterialiRequestDTO recuperaMaterialiRequestDTO) throws Exception {
|
||||
RecuperaMaterialiResponseDTO responseDto = new RecuperaMaterialiResponseDTO()
|
||||
.setUpdatedMtbColtScarico(wmsMaterialiService.recupera(recuperaMaterialiRequestDTO));
|
||||
|
||||
return ServiceRestResponse.createPositiveResponse(responseDto);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,237 @@
|
||||
package it.integry.ems.retail.wms.lavorazione.dto;
|
||||
|
||||
import it.integry.ems_model.entity.MtbColt;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
public class RecuperaMaterialiRequestDTO {
|
||||
|
||||
private String codMart;
|
||||
private String partitaMag;
|
||||
private BigDecimal numCnf;
|
||||
private BigDecimal qtaCnf;
|
||||
private BigDecimal qtaTot;
|
||||
|
||||
private int numCollo;
|
||||
private LocalDate dataCollo;
|
||||
private String gestione;
|
||||
private String serCollo;
|
||||
|
||||
private int numColloRif;
|
||||
private LocalDate dataColloRif;
|
||||
private String gestioneRif;
|
||||
private String serColloRif;
|
||||
|
||||
private List<Ordine> ordini;
|
||||
private MtbColt mtbColtCarico;
|
||||
|
||||
public String getCodMart() {
|
||||
return codMart;
|
||||
}
|
||||
|
||||
public RecuperaMaterialiRequestDTO setCodMart(String codMart) {
|
||||
this.codMart = codMart;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getPartitaMag() {
|
||||
return partitaMag;
|
||||
}
|
||||
|
||||
public RecuperaMaterialiRequestDTO setPartitaMag(String partitaMag) {
|
||||
this.partitaMag = partitaMag;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getNumCnf() {
|
||||
return numCnf;
|
||||
}
|
||||
|
||||
public RecuperaMaterialiRequestDTO setNumCnf(BigDecimal numCnf) {
|
||||
this.numCnf = numCnf;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getQtaCnf() {
|
||||
return qtaCnf;
|
||||
}
|
||||
|
||||
public RecuperaMaterialiRequestDTO setQtaCnf(BigDecimal qtaCnf) {
|
||||
this.qtaCnf = qtaCnf;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getQtaTot() {
|
||||
return qtaTot;
|
||||
}
|
||||
|
||||
public RecuperaMaterialiRequestDTO setQtaTot(BigDecimal qtaTot) {
|
||||
this.qtaTot = qtaTot;
|
||||
return this;
|
||||
}
|
||||
|
||||
public int getNumCollo() {
|
||||
return numCollo;
|
||||
}
|
||||
|
||||
public RecuperaMaterialiRequestDTO setNumCollo(int numCollo) {
|
||||
this.numCollo = numCollo;
|
||||
return this;
|
||||
}
|
||||
|
||||
public LocalDate getDataCollo() {
|
||||
return dataCollo;
|
||||
}
|
||||
|
||||
public RecuperaMaterialiRequestDTO setDataCollo(LocalDate dataCollo) {
|
||||
this.dataCollo = dataCollo;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getGestione() {
|
||||
return gestione;
|
||||
}
|
||||
|
||||
public RecuperaMaterialiRequestDTO setGestione(String gestione) {
|
||||
this.gestione = gestione;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getSerCollo() {
|
||||
return serCollo;
|
||||
}
|
||||
|
||||
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;
|
||||
return this;
|
||||
}
|
||||
|
||||
public List<Ordine> getOrdini() {
|
||||
return ordini;
|
||||
}
|
||||
|
||||
public RecuperaMaterialiRequestDTO setOrdini(List<Ordine> ordini) {
|
||||
this.ordini = ordini;
|
||||
return this;
|
||||
}
|
||||
|
||||
public MtbColt getMtbColtCarico() {
|
||||
return mtbColtCarico;
|
||||
}
|
||||
|
||||
public RecuperaMaterialiRequestDTO setMtbColtCarico(MtbColt mtbColtCarico) {
|
||||
this.mtbColtCarico = mtbColtCarico;
|
||||
return this;
|
||||
}
|
||||
|
||||
public static class Ordine {
|
||||
private Integer numero;
|
||||
private LocalDate data;
|
||||
private String gestione;
|
||||
private Integer rigaOrd;
|
||||
private BigDecimal qtaCol;
|
||||
private BigDecimal numCnf;
|
||||
private Integer percentageHr;
|
||||
|
||||
public Integer getNumero() {
|
||||
return numero;
|
||||
}
|
||||
|
||||
public Ordine setNumero(Integer numero) {
|
||||
this.numero = numero;
|
||||
return this;
|
||||
}
|
||||
|
||||
public LocalDate getData() {
|
||||
return data;
|
||||
}
|
||||
|
||||
public Ordine setData(LocalDate data) {
|
||||
this.data = data;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getGestione() {
|
||||
return gestione;
|
||||
}
|
||||
|
||||
public Ordine setGestione(String gestione) {
|
||||
this.gestione = gestione;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Integer getRigaOrd() {
|
||||
return rigaOrd;
|
||||
}
|
||||
|
||||
public Ordine setRigaOrd(Integer rigaOrd) {
|
||||
this.rigaOrd = rigaOrd;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getQtaCol() {
|
||||
return qtaCol;
|
||||
}
|
||||
|
||||
public Ordine setQtaCol(BigDecimal qtaCol) {
|
||||
this.qtaCol = qtaCol;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getNumCnf() {
|
||||
return numCnf;
|
||||
}
|
||||
|
||||
public Ordine setNumCnf(BigDecimal numCnf) {
|
||||
this.numCnf = numCnf;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Integer getPercentageHr() {
|
||||
return percentageHr;
|
||||
}
|
||||
|
||||
public Ordine setPercentageHr(Integer percentageHr) {
|
||||
this.percentageHr = percentageHr;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package it.integry.ems.retail.wms.lavorazione.dto;
|
||||
|
||||
import it.integry.ems_model.entity.MtbColt;
|
||||
|
||||
public class RecuperaMaterialiResponseDTO {
|
||||
|
||||
private MtbColt updatedMtbColtScarico;
|
||||
|
||||
public MtbColt getUpdatedMtbColtScarico() {
|
||||
return updatedMtbColtScarico;
|
||||
}
|
||||
|
||||
public RecuperaMaterialiResponseDTO setUpdatedMtbColtScarico(MtbColt updatedMtbColtScarico) {
|
||||
this.updatedMtbColtScarico = updatedMtbColtScarico;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,274 @@
|
||||
package it.integry.ems.retail.wms.lavorazione.service;
|
||||
|
||||
import core.utility.UtilityDate;
|
||||
import it.integry.ems.product.importaz.service.ProductServices;
|
||||
import it.integry.ems.retail.wms.exceptions.InvalidArticoloException;
|
||||
import it.integry.ems.retail.wms.lavorazione.dto.RecuperaMaterialiRequestDTO;
|
||||
import it.integry.ems.service.EntityProcessor;
|
||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||
import it.integry.ems.utility.UtilityEntity;
|
||||
import it.integry.ems_model.base.EntityBase;
|
||||
import it.integry.ems_model.entity.*;
|
||||
import it.integry.ems_model.service.SetupGest;
|
||||
import it.integry.ems_model.types.OperationType;
|
||||
import it.integry.ems_model.utility.UtilityBigDecimal;
|
||||
import it.integry.ems_model.utility.UtilityLocalDate;
|
||||
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;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
@Scope("request")
|
||||
public class WMSMaterialiService {
|
||||
|
||||
@Autowired
|
||||
private SetupGest setupGest;
|
||||
|
||||
@Autowired
|
||||
private MultiDBTransactionManager multiDBTransactionManager;
|
||||
|
||||
@Autowired
|
||||
private ProductServices productServices;
|
||||
|
||||
@Autowired
|
||||
private EntityProcessor entityProcessor;
|
||||
|
||||
private final Logger logger = LogManager.getLogger();
|
||||
|
||||
public MtbColt recupera(RecuperaMaterialiRequestDTO request) throws Exception {
|
||||
|
||||
final boolean versamentoDirettoEnabled = setupGest.getSetupBoolean(multiDBTransactionManager.getPrimaryConnection(), "PICKING", "PRODUZIONE", "FLAG_VERSAMENTO_DIRETTO");
|
||||
final boolean forceAllToColli = setupGest.getSetupBoolean(multiDBTransactionManager.getPrimaryConnection(), "PICKING", "SETUP", "FLAG_FORCE_ALL_TO_COLLI");
|
||||
|
||||
MtbAart mtbAart = productServices.getArticoloByCodMart(request.getCodMart());
|
||||
if (mtbAart == null)
|
||||
throw new InvalidArticoloException(request.getCodMart());
|
||||
|
||||
if (request.getMtbColtCarico() == 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());
|
||||
|
||||
mtbColtScarico.setOperation(OperationType.SELECT_OBJECT);
|
||||
entityProcessor.processEntity(mtbColtScarico, multiDBTransactionManager);
|
||||
|
||||
entitiesToSave.add(mtbColtScarico);
|
||||
|
||||
BigDecimal inputNumCnf = request.getNumCnf();
|
||||
BigDecimal inputQtaTot = request.getQtaTot();
|
||||
BigDecimal inputQtaCnf = request.getQtaCnf();
|
||||
|
||||
BigDecimal totalSumOfQtaCol = BigDecimal.ZERO;
|
||||
BigDecimal totalSumOfNumCnf = BigDecimal.ZERO;
|
||||
|
||||
if (versamentoDirettoEnabled) {
|
||||
|
||||
for (RecuperaMaterialiRequestDTO.Ordine ordine : request.getOrdini()) {
|
||||
BigDecimal qtaColToSave;
|
||||
BigDecimal numCnfToSave;
|
||||
|
||||
if (forceAllToColli || !mtbAart.isFlagQtaCnfFissaBoolean()) {
|
||||
numCnfToSave = UtilityBigDecimal.divideAndRoundToInteger(inputNumCnf.multiply(BigDecimal.valueOf(ordine.getPercentageHr())), BigDecimal.valueOf(100), RoundingMode.FLOOR);
|
||||
qtaColToSave = numCnfToSave.multiply(inputQtaCnf).setScale(0, RoundingMode.FLOOR);
|
||||
} else {
|
||||
qtaColToSave = UtilityBigDecimal.divideAndRoundToInteger(inputQtaTot.multiply(BigDecimal.valueOf(ordine.getPercentageHr())), BigDecimal.valueOf(100), RoundingMode.FLOOR);
|
||||
numCnfToSave = UtilityBigDecimal.divide(qtaColToSave, inputQtaCnf, RoundingMode.FLOOR);
|
||||
}
|
||||
|
||||
|
||||
totalSumOfQtaCol = totalSumOfQtaCol.add(qtaColToSave);
|
||||
totalSumOfNumCnf = totalSumOfNumCnf.add(numCnfToSave);
|
||||
|
||||
numCnfToSave = numCnfToSave.multiply(BigDecimal.valueOf(-1));
|
||||
qtaColToSave = qtaColToSave.multiply(BigDecimal.valueOf(-1));
|
||||
|
||||
|
||||
final MtbColr mtbColrScarico = new MtbColr()
|
||||
.setCodMart(request.getCodMart())
|
||||
.setPartitaMag(UtilityString.emptyStr2Null(request.getPartitaMag()))
|
||||
.setQtaCol(qtaColToSave)
|
||||
.setQtaCnf(inputQtaCnf)
|
||||
.setNumCnf(numCnfToSave)
|
||||
.setDescrizione(UtilityString.isNull(mtbAart.getDescrizioneEstesa(), mtbAart.getDescrizione()))
|
||||
.setDatetimeRow(UtilityDate.getDateInstance())
|
||||
.setNumColloRif(request.getNumColloRif())
|
||||
.setDataColloRif(UtilityLocalDate.localDateToDate(request.getDataColloRif()))
|
||||
.setGestioneRif(request.getGestioneRif())
|
||||
.setSerColloRif(request.getSerColloRif())
|
||||
.setDataOrd(ordine.getData())
|
||||
.setNumOrd(ordine.getNumero())
|
||||
.setRigaOrd(ordine.getRigaOrd());
|
||||
|
||||
mtbColrScarico.setOperation(OperationType.INSERT);
|
||||
mtbColtScarico.getMtbColr().add(mtbColrScarico);
|
||||
}
|
||||
} else {
|
||||
BigDecimal qtaColToSave;
|
||||
BigDecimal numCnfToSave;
|
||||
if (forceAllToColli || (!mtbAart.isFlagQtaCnfFissaBoolean())) {
|
||||
numCnfToSave = inputNumCnf;
|
||||
qtaColToSave = numCnfToSave.multiply(inputQtaCnf).setScale(0, RoundingMode.FLOOR);
|
||||
} else {
|
||||
qtaColToSave = inputQtaTot;
|
||||
numCnfToSave = UtilityBigDecimal.divide(qtaColToSave, inputQtaCnf, RoundingMode.FLOOR);
|
||||
}
|
||||
|
||||
totalSumOfQtaCol = qtaColToSave;
|
||||
totalSumOfNumCnf = numCnfToSave;
|
||||
|
||||
numCnfToSave = numCnfToSave.multiply(BigDecimal.valueOf(-1));
|
||||
qtaColToSave = qtaColToSave.multiply(BigDecimal.valueOf(-1));
|
||||
|
||||
if (request.getOrdini() != null && !request.getOrdini().isEmpty()) {
|
||||
|
||||
BigDecimal totalQtaOrd = request.getOrdini().stream()
|
||||
.map(RecuperaMaterialiRequestDTO.Ordine::getQtaCol)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
|
||||
for (RecuperaMaterialiRequestDTO.Ordine ordine : request.getOrdini()) {
|
||||
BigDecimal qtaCol = UtilityBigDecimal.divide(UtilityBigDecimal.multiply(ordine.getQtaCol(), qtaColToSave), totalQtaOrd);
|
||||
BigDecimal numCnf = UtilityBigDecimal.divide(qtaCol, inputQtaCnf);
|
||||
|
||||
|
||||
final MtbColr mtbColrScarico = new MtbColr()
|
||||
.setCodMart(request.getCodMart())
|
||||
.setPartitaMag(UtilityString.emptyStr2Null(request.getPartitaMag()))
|
||||
.setQtaCol(qtaCol)
|
||||
.setQtaCnf(inputQtaCnf)
|
||||
.setNumCnf(numCnf)
|
||||
.setDescrizione(UtilityString.isNull(mtbAart.getDescrizioneEstesa(), mtbAart.getDescrizione()))
|
||||
.setDatetimeRow(UtilityDate.getDateInstance())
|
||||
.setNumColloRif(request.getNumColloRif())
|
||||
.setDataColloRif(UtilityLocalDate.localDateToDate(request.getDataColloRif()))
|
||||
.setGestioneRif(request.getGestioneRif())
|
||||
.setSerColloRif(request.getSerColloRif())
|
||||
.setDataOrd(ordine.getData())
|
||||
.setNumOrd(ordine.getNumero())
|
||||
.setRigaOrd(ordine.getRigaOrd());
|
||||
|
||||
mtbColrScarico.setOperation(OperationType.INSERT);
|
||||
mtbColtScarico.getMtbColr().add(mtbColrScarico);
|
||||
}
|
||||
} else {
|
||||
final MtbColr mtbColrScarico = new MtbColr()
|
||||
.setCodMart(request.getCodMart())
|
||||
.setPartitaMag(UtilityString.emptyStr2Null(request.getPartitaMag()))
|
||||
.setQtaCol(qtaColToSave)
|
||||
.setQtaCnf(inputQtaCnf)
|
||||
.setNumCnf(numCnfToSave)
|
||||
.setDescrizione(UtilityString.isNull(mtbAart.getDescrizioneEstesa(), mtbAart.getDescrizione()))
|
||||
.setDatetimeRow(UtilityDate.getDateInstance())
|
||||
.setNumColloRif(request.getNumColloRif())
|
||||
.setDataColloRif(UtilityLocalDate.localDateToDate(request.getDataColloRif()))
|
||||
.setGestioneRif(request.getGestioneRif())
|
||||
.setSerColloRif(request.getSerColloRif());
|
||||
|
||||
mtbColrScarico.setOperation(OperationType.INSERT);
|
||||
mtbColtScarico.getMtbColr().add(mtbColrScarico);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
boolean updateQtaCnfFirstRow = false;
|
||||
|
||||
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));
|
||||
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));
|
||||
updateQtaCnfFirstRow = true;
|
||||
}
|
||||
|
||||
if (updateQtaCnfFirstRow) {
|
||||
mtbColtScarico.getMtbColr().get(0).setQtaCnf(
|
||||
UtilityBigDecimal.divide(mtbColtScarico.getMtbColr().get(0).getQtaCol(), mtbColtScarico.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())) {
|
||||
|
||||
//Non sto caricando nella stessa UL da cui ho prelevato
|
||||
MtbColt mtbColtCarico = request.getMtbColtCarico();
|
||||
mtbColtCarico.setOperation(OperationType.INSERT_OR_UPDATE);
|
||||
|
||||
final MtbColr mtbColrCarico = new MtbColr()
|
||||
.setCodMart(request.getCodMart())
|
||||
.setPartitaMag(UtilityString.emptyStr2Null(request.getPartitaMag()))
|
||||
.setQtaCol(inputQtaTot)
|
||||
.setNumCnf(inputNumCnf)
|
||||
.setQtaCnf(inputQtaCnf)
|
||||
.setDescrizione(UtilityString.isNull(mtbAart.getDescrizioneEstesa(), mtbAart.getDescrizione()))
|
||||
.setDatetimeRow(UtilityDate.getDateInstance())
|
||||
.setNumColloRif(request.getNumColloRif())
|
||||
.setDataColloRif(UtilityLocalDate.localDateToDate(request.getDataColloRif()))
|
||||
.setGestioneRif(request.getGestioneRif())
|
||||
.setSerColloRif(request.getSerColloRif());
|
||||
|
||||
|
||||
mtbColtCarico.setOperation(OperationType.INSERT_OR_UPDATE);
|
||||
mtbColtCarico.getMtbColr().add(mtbColrCarico);
|
||||
|
||||
entitiesToSave.add(mtbColtCarico);
|
||||
|
||||
}
|
||||
|
||||
if (mtbColtScarico.hasDocument()) {
|
||||
DtbDoct dtbDoctScaricoToUpdate = new DtbDoct(mtbColtScarico.getCodAnag(),
|
||||
mtbColtScarico.getCodDtip(),
|
||||
mtbColtScarico.getDataDoc(),
|
||||
mtbColtScarico.getNumDoc(),
|
||||
mtbColtScarico.getSerDoc());
|
||||
dtbDoctScaricoToUpdate.setOperation(OperationType.NO_OP);
|
||||
|
||||
|
||||
DtbDocr dtbDocrScarico = new DtbDocr()
|
||||
.setCodMart(request.getCodMart())
|
||||
.setPartitaMag(request.getPartitaMag())
|
||||
.setQta(UtilityBigDecimal.multiply(inputQtaTot, BigDecimal.valueOf(-1)))
|
||||
.setNumCnf(UtilityBigDecimal.multiply(inputNumCnf, BigDecimal.valueOf(-1)))
|
||||
.setQtaCnf(request.getQtaCnf());
|
||||
|
||||
dtbDocrScarico.setOperation(OperationType.INSERT);
|
||||
dtbDoctScaricoToUpdate.getDtbDocr().add(dtbDocrScarico);
|
||||
|
||||
entitiesToSave.add(dtbDoctScaricoToUpdate);
|
||||
}
|
||||
|
||||
|
||||
final List<EntityBase> savedEntities = entityProcessor.processEntityList(entitiesToSave, true);
|
||||
UtilityEntity.throwEntitiesException(savedEntities);
|
||||
return mtbColtScarico;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user