Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
package it.integry.ems.migration.model;
|
||||
|
||||
import it.integry.ems.migration._base.BaseMigration;
|
||||
import it.integry.ems.migration._base.IntegryCustomer;
|
||||
import it.integry.ems.migration._base.MigrationModelInterface;
|
||||
import it.integry.ems_model.entity.JtbFasi;
|
||||
|
||||
public class Migration_20241028170540 extends BaseMigration implements MigrationModelInterface {
|
||||
|
||||
@Override
|
||||
public void up() throws Exception {
|
||||
if (isHistoryDB())
|
||||
return;
|
||||
|
||||
String abilitaVersamento = isCustomer(IntegryCustomer.RossoGargano) ? "S" : "N";
|
||||
|
||||
createSetup("PVM", "MONITORAGGIO_LINEE_V2", "ABILITA_VERSAMENTO_DIRETTO", abilitaVersamento, "Abilita il versamento direttamente sull'ordine dei materiali tramite scansione SSCC", "SI_NO");
|
||||
createSetup("MES", "SETUP", "VINCOLA_LOTTO_ORDINE_A_SL", "N", "Se true, sulle linee su cui è impostata il lotto dell'oridne di lavorazione dipende dal lotto del semilavorato", false, "SI_NO", false, false, false, false, false, JtbFasi.ENTITY, false, null);
|
||||
|
||||
if (isCustomer(IntegryCustomer.RossoGargano)) {
|
||||
executeStatement("INSERT INTO stb_gest_setup_det (gest_name, section, key_section, tipo_setup, val_col_rif, value)\n" +
|
||||
"SELECT N'MES',\n" +
|
||||
" N'SETUP',\n" +
|
||||
" N'VINCOLA_LOTTO_ORDINE_A_SL',\n" +
|
||||
" N'" + JtbFasi.ENTITY + "',\n" +
|
||||
" cod_jfas,\n" +
|
||||
" 'S'\n" +
|
||||
"FROM jtb_fasi\n" +
|
||||
"WHERE cod_jfas IN ('E1', 'E2', 'E3', 'E4', 'E5', 'E6', 'E7', 'E8', 'E9', 'E10')\n");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void down() throws Exception {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package it.integry.ems.migration.model;
|
||||
|
||||
import it.integry.ems.migration._base.BaseMigration;
|
||||
import it.integry.ems.migration._base.IntegryCustomer;
|
||||
import it.integry.ems.migration._base.MigrationModelInterface;
|
||||
import it.integry.ems_model.entity.JtbFasi;
|
||||
|
||||
public class Migration_20241029164951 extends BaseMigration implements MigrationModelInterface {
|
||||
|
||||
@Override
|
||||
public void up() throws Exception {
|
||||
if (isHistoryDB())
|
||||
return;
|
||||
|
||||
updateSetupValue("PVM", "MONITORAGGIO_LINEE_V2", "ABILITA_VERSAMENTO_DIRETTO", "N", "Abilita il versamento direttamente sull'ordine dei materiali tramite scansione SSCC", false, "SI_NO", false, false, false, false, false, JtbFasi.ENTITY, false);
|
||||
|
||||
if (isCustomer(IntegryCustomer.RossoGargano)) {
|
||||
executeStatement("INSERT INTO stb_gest_setup_det (gest_name, section, key_section, tipo_setup, val_col_rif, value)\n" +
|
||||
"SELECT N'PVM',\n" +
|
||||
" N'MONITORAGGIO_LINEE_V2',\n" +
|
||||
" N'ABILITA_VERSAMENTO_DIRETTO',\n" +
|
||||
" N'" + JtbFasi.ENTITY + "',\n" +
|
||||
" cod_jfas,\n" +
|
||||
" 'S'\n" +
|
||||
"FROM jtb_fasi\n" +
|
||||
"WHERE cod_jfas IN ('A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'C1', 'C2', 'C3', 'E1', 'E2', 'E3', 'E4', 'E5', 'E6', 'E7', 'E8', 'E9', 'E10')\n");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void down() throws Exception {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -5,6 +5,7 @@ import it.integry.common.var.CommonConstants;
|
||||
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.types.OperationType;
|
||||
import it.integry.ems_model.utility.Query;
|
||||
import it.integry.ems_model.utility.UtilityDB;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
@@ -1361,4 +1362,11 @@ public class MtbAart extends EntityBase implements EquatableEntityInterface<MtbA
|
||||
public int hashCode() {
|
||||
return Objects.hash(getCodMart(), getDescrizione(), getUntMis(), getBarCode(), getPesoKg(), getQtaCnf(), getCodAliq(), getCodScoArt(), getCodTcolUi(), getCodTcolUl(), getArticoloComposto(), getEsposizioneComp(), getDescrizioneEstesa(), getCodUltForn(), getDataUltCar(), getValUltCar(), getCodUltClie(), getDataUltScar(), getValUltScar(), getTipoCodice(), getNote(), getPosizione(), getColliPedana(), getUntMis2(), getRapConv2(), getFlagInclListino(), getUntMis3(), getRapConv3(), getCodMartStat(), getCodMcon(), getCodMgrp(), getCodMsfa(), getCodMsgr(), getCodMstp(), getCodMtip(), getDescrizioneStat(), getFlagStato(), getCambioDiviCar(), getCambioDiviScar(), getGgScadPartita(), getVolumeMc(), getFlagEsponiPrz(), getDataUltVar(), getPercSfrido(), getCodBarreImb(), getFlagCalcPrz(), getEsposizioneCompAcq(), getFlagCalcPrzAcq(), getDiacod(), getPlu(), getPartIvaProd(), getRagSocProd(), getFlagRapConvVariabile(), getFlagMovArtMag(), getFlagTracciabilita(), getTaraKg(), getColliStrato(), getFlagQtaCnfFissa(), getFlagColliPedanaFisso(), getCodCconCosti(), getCodCconRicavi(), getCodDgrpArt(), getCodDiviCar(), getCodDiviScar(), getCodEcrCat(), getCodEcrMcat(), getCodEcrRep(), getCodEcrStipo(), getCodEcrTipo(), getCodGrpBolla(), getIngredienti(), getIdArtEqui(), getDescrCassa(), getCodNcIntracee(), getMarchio(), getSezione(), getTipoReg(), getTipoStock(), getQtaMultiplaOrd(), getFlagKit(), getCodFornCv(), getCpa(), getTaric(), getSezioneDogana(), getFlagPesoEgalizzato(), getCodJfasCosti(), getCodJfasRicavi(), getMtbAartEqui_descrizione(), getFlagArrPrzVendIva(), getClassificazioneAbc(), getTipoCodiceImballo());
|
||||
}
|
||||
|
||||
public static MtbAart fromCodMart(String codMart) {
|
||||
MtbAart art = new MtbAart();
|
||||
art.setCodMart(codMart)
|
||||
.setOperation(OperationType.SELECT_OBJECT);
|
||||
return art;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -374,4 +374,8 @@ public class SetupGest {
|
||||
String jsonString = getExportSetup(conn, type, format, key);
|
||||
return new JSONArray(jsonString);
|
||||
}
|
||||
|
||||
public boolean getSetupDetBoolean(String gestName, String section, String keySection,String colRif) throws Exception {
|
||||
return "S".equalsIgnoreCase(getSetupDet(gestName, section, keySection, colRif));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import it.integry.common.var.CommonConstants;
|
||||
import it.integry.ems.document.dto.ChiusuraLavorazioneDTO;
|
||||
import it.integry.ems.document.dto.ScaricoLavorazioneDTO;
|
||||
import it.integry.ems.document.service.DocumentProdService;
|
||||
import it.integry.ems.javabeans.RequestDataDTO;
|
||||
import it.integry.ems.production.dto.*;
|
||||
import it.integry.ems.production.service.MesProductionServiceV2;
|
||||
import it.integry.ems.production.service.ProductionLineService;
|
||||
@@ -51,6 +52,8 @@ public class MesProductionControllerV2 {
|
||||
private ProductionOrderDataHandlerService productionOrderDataHandlerService;
|
||||
@Autowired
|
||||
private DocumentProdService documentProdService;
|
||||
@Autowired
|
||||
private RequestDataDTO requestDataDTO;
|
||||
|
||||
|
||||
@RequestMapping(value = "/status", method = RequestMethod.GET)
|
||||
@@ -414,4 +417,25 @@ public class MesProductionControllerV2 {
|
||||
ServiceRestResponse creaDocumentoContoTerzi(@RequestBody ChiusuraLavorazioneDTO dtoChiusura) throws Exception {
|
||||
return ServiceRestResponse.createPositiveResponse(mesProductionService.creaDocumentoContoTerzi(dtoChiusura));
|
||||
}
|
||||
|
||||
@RequestMapping("getSetupLinea/{codJfas}")
|
||||
public @ResponseBody
|
||||
ServiceRestResponse getSetupLinea(@PathVariable String codJfas, @RequestParam String codMdep) throws Exception {
|
||||
return ServiceRestResponse.createPositiveResponse(mesProductionService.getSetupLinea(codJfas, codMdep, requestDataDTO.getUsername()));
|
||||
}
|
||||
|
||||
|
||||
@RequestMapping(value = "checkMaterialeInBarcode", method = RequestMethod.POST)
|
||||
public @ResponseBody
|
||||
ServiceRestResponse checkMaterialeBarcodeInOrdine(@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
|
||||
@RequestBody CheckMaterialeBarcodeInOrdineDTO dto) throws Exception {
|
||||
return ServiceRestResponse.createPositiveResponse(mesProductionService.checkMaterialeBarcodeInOrdine(dto));
|
||||
}
|
||||
|
||||
@RequestMapping(value = "versaMaterialeSuOrdine", method = RequestMethod.POST)
|
||||
public @ResponseBody
|
||||
ServiceRestResponse versaMaterialeSuOrdine(@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
|
||||
@RequestBody VersamentoMaterialeSuOrdineDTO dto) throws Exception {
|
||||
return ServiceRestResponse.createPositiveResponse(mesProductionService.versaMaterialeSuOrdine(dto));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
package it.integry.ems.production.dto;
|
||||
|
||||
import it.integry.ems_model.entity.DtbOrdt;
|
||||
|
||||
public class CheckMaterialeBarcodeInOrdineDTO {
|
||||
|
||||
private String barcode;
|
||||
private String codJfas;
|
||||
private DtbOrdt ordine;
|
||||
|
||||
public String getBarcode() {
|
||||
return barcode;
|
||||
}
|
||||
|
||||
public CheckMaterialeBarcodeInOrdineDTO setBarcode(String barcode) {
|
||||
this.barcode = barcode;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodJfas() {
|
||||
return codJfas;
|
||||
}
|
||||
|
||||
public CheckMaterialeBarcodeInOrdineDTO setCodJfas(String codJfas) {
|
||||
this.codJfas = codJfas;
|
||||
return this;
|
||||
}
|
||||
|
||||
public DtbOrdt getOrdine() {
|
||||
return ordine;
|
||||
}
|
||||
|
||||
public CheckMaterialeBarcodeInOrdineDTO setOrdine(DtbOrdt ordine) {
|
||||
this.ordine = ordine;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
package it.integry.ems.production.dto;
|
||||
|
||||
import it.integry.ems.Import.dto.AnomalieDTO;
|
||||
import it.integry.ems_model.entity.DtbOrdt;
|
||||
import it.integry.ems_model.entity.MtbColt;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class CheckMaterialeBarcodeInOrdineResponseDTO {
|
||||
|
||||
private List<AnomalieDTO> anomalie;
|
||||
private boolean isNewOrderRequired = false;
|
||||
private MtbColt collo;
|
||||
|
||||
public List<AnomalieDTO> getAnomalie() {
|
||||
return anomalie;
|
||||
}
|
||||
|
||||
public CheckMaterialeBarcodeInOrdineResponseDTO setAnomalie(List<AnomalieDTO> anomalie) {
|
||||
this.anomalie = anomalie;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isNewOrderRequired() {
|
||||
return isNewOrderRequired;
|
||||
}
|
||||
|
||||
public CheckMaterialeBarcodeInOrdineResponseDTO setNewOrderRequired(boolean newOrderRequired) {
|
||||
isNewOrderRequired = newOrderRequired;
|
||||
return this;
|
||||
}
|
||||
|
||||
public MtbColt getCollo() {
|
||||
return collo;
|
||||
}
|
||||
|
||||
public CheckMaterialeBarcodeInOrdineResponseDTO setCollo(MtbColt collo) {
|
||||
this.collo = collo;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
package it.integry.ems.production.dto;
|
||||
|
||||
import it.integry.ems_model.entity.DtbOrdt;
|
||||
import it.integry.ems_model.entity.MtbColr;
|
||||
import it.integry.ems_model.entity.MtbColt;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class VersamentoMaterialeSuOrdineDTO {
|
||||
|
||||
private MtbColt mtbColt;
|
||||
private DtbOrdt ordine;
|
||||
private boolean startOrdine = false;
|
||||
private boolean cloneOrdine = false;
|
||||
private String codJfas;
|
||||
|
||||
|
||||
public MtbColt getMtbColt() {
|
||||
return mtbColt;
|
||||
}
|
||||
|
||||
public VersamentoMaterialeSuOrdineDTO setMtbColt(MtbColt mtbColt) {
|
||||
this.mtbColt = mtbColt;
|
||||
return this;
|
||||
}
|
||||
|
||||
public DtbOrdt getOrdine() {
|
||||
return ordine;
|
||||
}
|
||||
|
||||
public VersamentoMaterialeSuOrdineDTO setOrdine(DtbOrdt ordine) {
|
||||
this.ordine = ordine;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isStartOrdine() {
|
||||
return startOrdine;
|
||||
}
|
||||
|
||||
public VersamentoMaterialeSuOrdineDTO setStartOrdine(boolean startOrdine) {
|
||||
this.startOrdine = startOrdine;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isCloneOrdine() {
|
||||
return cloneOrdine;
|
||||
}
|
||||
|
||||
public VersamentoMaterialeSuOrdineDTO setCloneOrdine(boolean cloneOrdine) {
|
||||
this.cloneOrdine = cloneOrdine;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodJfas() {
|
||||
return codJfas;
|
||||
}
|
||||
|
||||
public VersamentoMaterialeSuOrdineDTO setCodJfas(String codJfas) {
|
||||
this.codJfas = codJfas;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@ import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
import it.integry.common.var.CommonConstants;
|
||||
import it.integry.ems.Import.dto.AnomalieDTO;
|
||||
import it.integry.ems.document.dto.CaricoLavorazioneDTO;
|
||||
import it.integry.ems.document.dto.ChiusuraLavorazioneDTO;
|
||||
import it.integry.ems.document.dto.RientroLavorazioneDTO;
|
||||
@@ -16,6 +17,13 @@ import it.integry.ems.exception.PrimaryDatabaseNotPresentException;
|
||||
import it.integry.ems.production.dto.*;
|
||||
import it.integry.ems.report.dto.JasperDTO;
|
||||
import it.integry.ems.report.dto.PairsDTO;
|
||||
import it.integry.ems.retail.pvmRetail.service.PvmService;
|
||||
import it.integry.ems.retail.wms.dto.CreateUDSRequestDTO;
|
||||
import it.integry.ems.retail.wms.dto.CreateUDSRequestOrderDTO;
|
||||
import it.integry.ems.retail.wms.dto.InsertUDSRowRequestDTO;
|
||||
import it.integry.ems.retail.wms.generic.dto.MvwSitArtUdcDetInventarioDTO;
|
||||
import it.integry.ems.retail.wms.generic.service.WMSGenericService;
|
||||
import it.integry.ems.retail.wms.lavorazione.service.WMSLavorazioneService;
|
||||
import it.integry.ems.rules.completing.DocumentRules;
|
||||
import it.integry.ems.service.*;
|
||||
import it.integry.ems.service.dto.GenericComunicationMailTemplateDataDTO;
|
||||
@@ -48,8 +56,12 @@ import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.time.LocalDate;
|
||||
import java.time.ZoneId;
|
||||
import java.util.*;
|
||||
|
||||
import static it.integry.ems.rules.completing.PackagesRules.completeDatiOrdine;
|
||||
|
||||
@Service
|
||||
@Scope("request")
|
||||
public class MesProductionServiceV2 {
|
||||
@@ -86,6 +98,13 @@ public class MesProductionServiceV2 {
|
||||
|
||||
@Autowired
|
||||
private MailTemplateService mailTemplateService;
|
||||
@Autowired
|
||||
private PvmService pvmService;
|
||||
|
||||
@Autowired
|
||||
private WMSLavorazioneService wmsLavorazioneService;
|
||||
@Autowired
|
||||
private WMSGenericService wmsGenericService;
|
||||
|
||||
public BasePanelAnswerDTO callSupervisorServiceGET(String serviceIp, int servicePort, String serviceName, HashMap<String, String> queryParams) throws Exception {
|
||||
String url = String.format("http://%s:%d/%s", serviceIp, servicePort, serviceName);
|
||||
@@ -1196,6 +1215,224 @@ public class MesProductionServiceV2 {
|
||||
}
|
||||
}
|
||||
|
||||
public List<StbGestSetup> getSetupLinea(String codJfas, String codMdep, String username) throws Exception {
|
||||
|
||||
String sql = Query.format("SELECT stb_gest_setup.gest_name,\n" +
|
||||
" stb_gest_setup.section,\n" +
|
||||
" stb_gest_setup.key_section,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN stb_gest_setup.flag_setup_depo = 'S' THEN ISNULL(stb_gest_setup_depo.value, stb_gest_setup.value)\n" +
|
||||
" ELSE CASE\n" +
|
||||
" WHEN stb_gest_setup.flag_setup_user_web = 'S'\n" +
|
||||
" THEN ISNULL(stb_gest_setup_user.value, stb_gest_setup.value)\n" +
|
||||
" ELSE CASE\n" +
|
||||
" WHEN stb_gest_setup.tipo_setup = 'jtb_fasi'\n" +
|
||||
" THEN ISNULL(stb_gest_setup_det.value, stb_gest_setup.value)\n" +
|
||||
" ELSE stb_gest_setup.value\n" +
|
||||
" END END END AS value,\n" +
|
||||
" stb_gest_setup.value,\n" +
|
||||
" stb_gest_setup_depo.value,\n" +
|
||||
" stb_gest_setup_user.value,\n" +
|
||||
" stb_gest_setup_det.value\n" +
|
||||
"FROM stb_gest_setup\n" +
|
||||
" LEFT OUTER JOIN\n" +
|
||||
" stb_gest_setup_depo ON stb_gest_setup.gest_name = stb_gest_setup_depo.gest_name AND\n" +
|
||||
" stb_gest_setup.section = stb_gest_setup_depo.section AND\n" +
|
||||
" stb_gest_setup.key_section = stb_gest_setup_depo.key_section AND\n" +
|
||||
" stb_gest_setup_depo.cod_mdep = {}\n" +
|
||||
" LEFT OUTER JOIN stb_gest_setup_user ON stb_gest_setup.section = stb_gest_setup_user.section AND\n" +
|
||||
" stb_gest_setup.key_section = stb_gest_setup_user.key_section\n" +
|
||||
" AND stb_gest_setup_user.user_name = {}\n" +
|
||||
" LEFT OUTER JOIN stb_gest_setup_det ON stb_gest_setup.gest_name = stb_gest_setup_det.gest_name AND\n" +
|
||||
" stb_gest_setup.section = stb_gest_setup_det.section AND\n" +
|
||||
" stb_gest_setup.key_section = stb_gest_setup_det.key_section AND\n" +
|
||||
" stb_gest_setup_det.val_col_rif = {}\n" +
|
||||
"\n" +
|
||||
"WHERE (stb_gest_setup.gest_name = 'PVM' AND stb_gest_setup.section = 'MONITORAGGIO_LINEE_V2')\n" +
|
||||
" OR (stb_gest_setup.gest_name = 'MES' AND stb_gest_setup.section = 'SETUP')\n" +
|
||||
" OR (stb_gest_setup.gest_name = 'MES' AND stb_gest_setup.section = 'REPORT')\n" +
|
||||
"\n", UtilityString.streNull(codMdep), UtilityString.streNull(username), UtilityString.streNull(codJfas));
|
||||
|
||||
return UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, StbGestSetup.class);
|
||||
|
||||
}
|
||||
|
||||
public CheckMaterialeBarcodeInOrdineResponseDTO checkMaterialeBarcodeInOrdine(CheckMaterialeBarcodeInOrdineDTO dto) throws Exception {
|
||||
|
||||
CheckMaterialeBarcodeInOrdineResponseDTO response = new CheckMaterialeBarcodeInOrdineResponseDTO();
|
||||
List<AnomalieDTO> anomalie = new ArrayList<>();
|
||||
MtbColt collo;
|
||||
try {
|
||||
|
||||
collo = pvmService.getColloByBarcode(dto.getBarcode(), true);
|
||||
} catch (Exception e) {
|
||||
logger.error(e);
|
||||
collo = null;
|
||||
}
|
||||
|
||||
if (collo == null)
|
||||
throw new Exception("Il barcode richiesto non ha fornito alcun risultato!");
|
||||
|
||||
List<MtbColr> rows = collo.getMtbColr();
|
||||
if (UtilityList.isNullOrEmpty(rows))
|
||||
throw new Exception("La UL richiesta è vuota!");
|
||||
|
||||
|
||||
DtbOrdt ordineLav = completeDatiOrdine(dto.getOrdine());
|
||||
String codMgrpSL = setupGest.getSetup("w_lpianoprod_rc", "SETUP", "GRUPPO_SL");
|
||||
boolean matchLottoSlToOrdine = setupGest.getSetupDetBoolean("MES", "SETUP", "VINCOLA_LOTTO_ORDINE_A_SL", dto.getCodJfas());
|
||||
List<MtbAart> arts = rows.stream().map(MtbColr::getCodMart).map(MtbAart::fromCodMart).distinct().collect(java.util.stream.Collectors.toList());
|
||||
entityProcessor.processEntityList(arts, true);
|
||||
for (MtbColr row : rows) {
|
||||
MtbAart rowArt = arts.stream().filter(a -> a.getCodMart().equalsIgnoreCase(row.getCodMart())).findFirst().orElse(null);
|
||||
//non ha senso controllare ma lo facciamo lo stesso :D
|
||||
if (rowArt == null)
|
||||
continue;
|
||||
|
||||
DtbOrdr rowOrdine = ordineLav.getDtbOrdr().stream().filter(ordRow -> ordRow.getCodMart().equalsIgnoreCase(rowArt.getCodMart())).findFirst().orElse(null);
|
||||
if (rowOrdine == null) {
|
||||
throw new Exception(String.format("L'articolo '%s' non è presente nell'ordine selezionato!", rowArt.getCodMart()));
|
||||
// anomalie.add(AnomalieDTO.error(String.format("L'articolo '%s' non è presente nell'ordine selezionato!", rowArt.getCodMart())));
|
||||
// continue;
|
||||
}
|
||||
|
||||
if (rowArt.getCodMgrp().equalsIgnoreCase(codMgrpSL) && matchLottoSlToOrdine && !UtilityString.isNullOrEmpty(ordineLav.getPartitaMag()) && !ordineLav.getPartitaMag().equalsIgnoreCase(row.getPartitaMag())) {
|
||||
anomalie.add(AnomalieDTO.warning(String.format("La partita di semilavorato che si vuole versare (%s) non corrisponde a quella dell'ordine (%s), per concludere la procedura di versamento verrà creato un nuovo ordine di lavorazione con la partita selezionata!", row.getPartitaMag(), ordineLav.getPartitaMag())));
|
||||
response.setNewOrderRequired(true);
|
||||
continue;
|
||||
}
|
||||
|
||||
}
|
||||
response.setCollo(collo);
|
||||
response.setAnomalie(anomalie);
|
||||
return response;
|
||||
|
||||
}
|
||||
|
||||
private DtbOrdt completeDatiOrdine(DtbOrdt ordine) throws Exception {
|
||||
ordine.setOperation(OperationType.SELECT_OBJECT);
|
||||
entityProcessor.processEntity(ordine, multiDBTransactionManager);
|
||||
String sqlRows = Query.format("SELECT * from dtb_ordr where data_ord = {} and num_ord = {} and gestione = {}", ordine.getDataOrd(), ordine.getNumOrd(), ordine.getGestione());
|
||||
List<DtbOrdr> rows = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sqlRows, DtbOrdr.class);
|
||||
ordine.setDtbOrdr(rows);
|
||||
return ordine;
|
||||
}
|
||||
|
||||
public Object versaMaterialeSuOrdine(VersamentoMaterialeSuOrdineDTO dto) throws Exception {
|
||||
|
||||
|
||||
MtbColt colloDaVersare = dto.getMtbColt();
|
||||
colloDaVersare.setOperation(OperationType.SELECT_OBJECT);
|
||||
entityProcessor.processEntity(colloDaVersare, multiDBTransactionManager);
|
||||
List<MvwSitArtUdcDetInventarioDTO> contenuto = wmsGenericService.getGiacenzaCollo(colloDaVersare);
|
||||
|
||||
if (UtilityList.isNullOrEmpty(contenuto)) {
|
||||
throw new Exception("La UL seleionata non contiene alcun articolo da versare!");
|
||||
}
|
||||
|
||||
DtbOrdt ordine = dto.getOrdine();
|
||||
ordine.setOperation(OperationType.SELECT_OBJECT);
|
||||
entityProcessor.processEntity(ordine, multiDBTransactionManager);
|
||||
|
||||
if (dto.isCloneOrdine()) {
|
||||
|
||||
String sql = Query.format("SELECT dtb_ordr.* from dtb_ordr\n" +
|
||||
" inner join dtb_ordt on dtb_ordr.data_ord = dtb_ordt.data_ord_rif and dtb_ordr.gestione = gestione_rif and dtb_ordr.num_ord = num_ord_rif\n" +
|
||||
" where dtb_ordt.gestione = {} and dtb_ordt.data_ord = {} and dtb_ordt.num_ord = {} and dtb_ordr.cod_mart = {}",ordine.getGestione(),ordine.getDataOrd(),ordine.getNumOrd(),ordine.getCodProd());
|
||||
DtbOrdr oldRow = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(),sql,DtbOrdr.class);
|
||||
|
||||
CreaOrdineProdDTO newOrdDTO = new CreaOrdineProdDTO();
|
||||
newOrdDTO.setCodAnag(ordine.getCodAnag())
|
||||
.setDataOrd(LocalDate.now())
|
||||
.setUntOrd(oldRow.getUntOrd())
|
||||
.setCodMart(oldRow.getCodMart())
|
||||
.setCodMdep(ordine.getCodMdep())
|
||||
.setNumCnf(oldRow.getNumCnf())
|
||||
.setColliPedana(oldRow.getColliPedana());
|
||||
ordine = productionService.saveOrdineProd(newOrdDTO);
|
||||
ordine.setOperation(OperationType.SELECT_OBJECT);
|
||||
entityProcessor.processEntity(ordine,multiDBTransactionManager);
|
||||
}
|
||||
|
||||
|
||||
List<CreateUDSRequestOrderDTO> ordini = new ArrayList<>();
|
||||
CreateUDSRequestOrderDTO orderDTO = new CreateUDSRequestOrderDTO()
|
||||
.setNumOrd(ordine.getNumOrd())
|
||||
.setDataOrd(ordine.getDataOrd().toInstant()
|
||||
.atZone(ZoneId.systemDefault())
|
||||
.toLocalDate())
|
||||
.setGestione(ordine.getGestione());
|
||||
ordini.add(orderDTO);
|
||||
CreateUDSRequestDTO requestDTO = new CreateUDSRequestDTO()
|
||||
.setCodMdep(ordine.getCodMdep())
|
||||
.setCausaleCollo(CreateUDSRequestDTO.Causale.SCARICO)
|
||||
.setSegno(-1)
|
||||
.setOrders(ordini);
|
||||
MtbColt uds = wmsLavorazioneService.createUDS(requestDTO);
|
||||
for (MvwSitArtUdcDetInventarioDTO scarico : contenuto) {
|
||||
String sql = "SELECT riga_ord\n" +
|
||||
"from dtb_ordr\n" +
|
||||
"where data_ord = " + UtilityDB.valueToString(ordine.getDataOrd()) + "\n" +
|
||||
" and num_ord = " + UtilityDB.valueToString(ordine.getNumOrd()) + "\n" +
|
||||
" and gestione = " + UtilityDB.valueToString(ordine.getGestione()) + "\n" +
|
||||
" and cod_mart = " + UtilityDB.valueToString(scarico.getCodMart());
|
||||
Integer rigaOrd = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
|
||||
|
||||
|
||||
MtbColr sourceMtbColr = new MtbColr();
|
||||
sourceMtbColr
|
||||
.setNumCollo(scarico.getNumCollo())
|
||||
.setSerCollo(scarico.getSerCollo())
|
||||
.setDataCollo(scarico.getDataCollo())
|
||||
.setGestione(scarico.getGestione())
|
||||
.setCodMart(scarico.getCodMart())
|
||||
.setPartitaMag(scarico.getPartitaMag())
|
||||
.setPesoLordoKg(scarico.getPesoLordoKG())
|
||||
.setPesoNettoKg(scarico.getPesoNettoKG());
|
||||
|
||||
InsertUDSRowRequestDTO insertRequestDto = new InsertUDSRowRequestDTO()
|
||||
.setCodMart(scarico.getCodMart())
|
||||
.setQtaTot(scarico.getQtaCol())
|
||||
.setPartitaMag(scarico.getPartitaMag())
|
||||
.setSourceMtbColr(sourceMtbColr)
|
||||
.setTargetMtbColt(uds)
|
||||
.setQtaCnf(scarico.getQtaCnf())
|
||||
.setDataOrd(ordine.getDataOrd())
|
||||
.setRigaOrd(rigaOrd)
|
||||
.setNumOrd(ordine.getNumOrd());
|
||||
wmsLavorazioneService.insertUDSRow(insertRequestDto);
|
||||
|
||||
String codMgrpSL = setupGest.getSetup("w_lpianoprod_rc", "SETUP", "GRUPPO_SL");
|
||||
boolean matchLottoSlToOrdine = setupGest.getSetupDetBoolean("MES", "SETUP", "VINCOLA_LOTTO_ORDINE_A_SL", dto.getCodJfas());
|
||||
|
||||
if (UtilityString.isNullOrEmpty(ordine.getPartitaMag()) && scarico.getCodGruppo().equalsIgnoreCase(codMgrpSL) && matchLottoSlToOrdine) {
|
||||
MtbPartitaMag partitaSL = new MtbPartitaMag();
|
||||
partitaSL.setCodMart(scarico.getCodMart())
|
||||
.setPartitaMag(scarico.getPartitaMag())
|
||||
.setOperation(OperationType.SELECT_OBJECT);
|
||||
entityProcessor.processEntity(partitaSL,multiDBTransactionManager);
|
||||
|
||||
MtbPartitaMag partitaPf = new MtbPartitaMag();
|
||||
partitaPf.setCodMart(ordine.getCodProd())
|
||||
.setPartitaMag(partitaSL.getPartitaMag())
|
||||
.setDataScad(partitaSL.getDataScad())
|
||||
.setOperation(OperationType.INSERT_OR_UPDATE);
|
||||
entityProcessor.processEntity(partitaPf,true,multiDBTransactionManager);
|
||||
ordine.setPartitaMag(partitaSL.getPartitaMag())
|
||||
.setOperation(OperationType.UPDATE);
|
||||
|
||||
entityProcessor.processEntity(ordine, true, multiDBTransactionManager);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (dto.isStartOrdine() || dto.isCloneOrdine()) {
|
||||
openStep(ordine.getDataOrd(), ordine.getNumOrd(), ordine.getGestione(), dto.getCodJfas(), 0);
|
||||
}
|
||||
return uds;
|
||||
}
|
||||
|
||||
public enum Action {
|
||||
OPEN,
|
||||
CLOSE,
|
||||
|
||||
@@ -971,7 +971,7 @@ public class ProductionService {
|
||||
creaOrdineProdDTO.getDataOrd(),
|
||||
creaOrdineProdDTO.getCodAnag(),
|
||||
creaOrdineProdDTO.getCodMart(),
|
||||
creaOrdineProdDTO.getPartitaMag(),
|
||||
// creaOrdineProdDTO.getPartitaMag(),
|
||||
creaOrdineProdDTO.getNumCnf(),
|
||||
creaOrdineProdDTO.getColliPedana()
|
||||
)) {
|
||||
@@ -987,6 +987,7 @@ public class ProductionService {
|
||||
rigaOrdProd.setCodMart(creaOrdineProdDTO.getCodMart())
|
||||
.setPartitaMag(creaOrdineProdDTO.getPartitaMag())
|
||||
.setValUnt(creaOrdineProdDTO.getValUnt())
|
||||
.setCodMdep(creaOrdineProdDTO.getCodMdep())
|
||||
.setNumCnf(creaOrdineProdDTO.getNumCnf())
|
||||
.setQtaOrd(creaOrdineProdDTO.getQtaOrd())
|
||||
.setColliPedana(creaOrdineProdDTO.getColliPedana())
|
||||
@@ -998,6 +999,7 @@ public class ProductionService {
|
||||
.setGestione(UtilityString.isNull(rigaOrdProd.getGestione(), "A"))
|
||||
.setGestioneRif("A")
|
||||
.setDataOrd(dataOrd)
|
||||
.setOrdTrasf(Boolean.FALSE)
|
||||
.setNumOrd(rigaOrdProd.getNumOrd())
|
||||
.setCodAnag(creaOrdineProdDTO.getCodAnag())
|
||||
.setCodVdes(creaOrdineProdDTO.getCodVdes())
|
||||
@@ -1009,18 +1011,17 @@ public class ProductionService {
|
||||
|
||||
entityProcessor.processEntity(testataOrdProd, multiDBTransactionManager);
|
||||
UtilityEntity.throwEntityException(testataOrdProd);
|
||||
if (!creaOrdineProdDTO.getModificheDistinta().isEmpty()) {
|
||||
String sql = "Select * from dtb_ordr where data_ord = " + UtilityDB.valueDateToString(rigaOrdProd.getDataOrdRif(), CommonConstants.DATE_FORMAT_YMD) + " " +
|
||||
" and num_ord = " + UtilityDB.valueToString(rigaOrdProd.getNumOrdRif()) + " and gestione = 'L'";
|
||||
List<DtbOrdr> righeOrdLav = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbOrdr.class);
|
||||
if (righeOrdLav != null && !righeOrdLav.isEmpty()) {
|
||||
|
||||
DtbOrdt ordLav = new DtbOrdt();
|
||||
ordLav.setOperation(OperationType.NO_OP);
|
||||
ordLav.setGestione("L")
|
||||
.setCodVzon(creaOrdineProdDTO.getCodVzon())
|
||||
.setDataOrd(rigaOrdProd.getDataOrdRif())
|
||||
.setNumOrd(rigaOrdProd.getNumOrdRif());
|
||||
if (!creaOrdineProdDTO.getModificheDistinta().isEmpty()) {
|
||||
String sql = "Select * from dtb_ordr where data_ord = " + UtilityDB.valueDateToString(rigaOrdProd.getDataOrdRif(), CommonConstants.DATE_FORMAT_YMD) + " " +
|
||||
" and num_ord = " + UtilityDB.valueToString(rigaOrdProd.getNumOrdRif()) + " and gestione = 'L'";
|
||||
List<DtbOrdr> righeOrdLav = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbOrdr.class);
|
||||
if (righeOrdLav != null && !righeOrdLav.isEmpty()) {
|
||||
for (ModificheDistintaDTO mod : creaOrdineProdDTO.getModificheDistinta()) {
|
||||
DtbOrdr rigaDist = righeOrdLav.stream().filter(x -> x.getCodMart().equalsIgnoreCase(mod.getCodMart())).findFirst().orElse(null);
|
||||
if (rigaDist != null) {
|
||||
@@ -1041,7 +1042,7 @@ public class ProductionService {
|
||||
}
|
||||
|
||||
|
||||
return testataOrdProd;
|
||||
return ordLav;
|
||||
}
|
||||
|
||||
private DtbOrdr getRigaOrdProdFromOrdLav(Date dataOrd, Integer numOrd) throws Exception {
|
||||
|
||||
@@ -2244,7 +2244,7 @@ public class PvmService {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//TODO: Spostare servizion in WmsGenericService (?)
|
||||
public MtbColt getColloByBarcode(String codBarreCollo, boolean onlyResiduo) throws Exception {
|
||||
|
||||
MtbColt mtbColt = getColloByExternalBarcode(codBarreCollo);
|
||||
|
||||
@@ -44,10 +44,10 @@ public class MvwSitArtUdcDetInventarioDTO {
|
||||
@SqlField("priorita")
|
||||
private Integer priorita;
|
||||
|
||||
@SqlField("cod_gruppo")
|
||||
@SqlField("codGruppo")
|
||||
private String codGruppo;
|
||||
|
||||
@SqlField("gruppo")
|
||||
@SqlField("Gruppo")
|
||||
private String descrizioneGruppo;
|
||||
|
||||
@SqlField("codsgruppo")
|
||||
|
||||
@@ -2718,4 +2718,12 @@ public class WMSGenericService {
|
||||
entityProcessor.processEntity(mtbColt, multiDBTransactionManager);
|
||||
}
|
||||
|
||||
public List<MvwSitArtUdcDetInventarioDTO> getGiacenzaCollo(MtbColt mtbColt) throws Exception {
|
||||
String sql = Query.format("select * from mvw_sitart_udc_det_inventario \n" +
|
||||
" where data_collo = {} and\n" +
|
||||
" gestione = {} and\n" +
|
||||
" ser_collo = {} and\n" +
|
||||
" num_collo = {}\n", mtbColt.getDataCollo(), mtbColt.getGestione(), mtbColt.getSerCollo(), mtbColt.getNumCollo());
|
||||
return UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, MvwSitArtUdcDetInventarioDTO.class);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user