diff --git a/ems-engine/src/main/java/it/integry/ems/logistic/service/ColliEviosysImportService.java b/ems-engine/src/main/java/it/integry/ems/logistic/service/ColliEviosysImportService.java index 7c803b3956..efe3791dfe 100644 --- a/ems-engine/src/main/java/it/integry/ems/logistic/service/ColliEviosysImportService.java +++ b/ems-engine/src/main/java/it/integry/ems/logistic/service/ColliEviosysImportService.java @@ -83,9 +83,8 @@ public class ColliEviosysImportService { .collect(Collectors.toList()); if (rowData.size() >= 7) { - Integer numOrd = Integer.parseInt((String) rowData.get(0)); String barcodeUl = (String) rowData.get(2); - int annoDataOrd = UtilityLocalDate.localDateFromDate((Date) rowData.get(5)).getYear(); + String lotto = (String) rowData.get(3); String qta = (String) rowData.get(6); if (barcodeUl.length() > 18) { @@ -93,23 +92,31 @@ public class ColliEviosysImportService { } String sql = Query.format( - "SELECT data_ord\n" + + "SELECT TOP 1 dtb_ordt.num_ord,\n" + + " dtb_ordt.data_ord\n" + "FROM dtb_ordt\n" + - "WHERE num_ord = %s\n" + - " AND gestione = 'A'\n" + - " AND YEAR(data_ord) = %s", - numOrd, annoDataOrd + " INNER JOIN dbo.dtb_ordr ON dtb_ordt.num_ord = dtb_ordr.num_ord AND dtb_ordr.data_ord = dtb_ordt.data_ord AND\n" + + " dtb_ordt.gestione = dtb_ordr.gestione\n" + + "WHERE cod_anag = %s\n" + + " AND dtb_ordt.gestione = 'A'\n" + + " AND flag_annulla = 'N'\n" + + " AND flag_evaso = 'I'\n" + + " AND cod_mart = %s\n" + + "GROUP BY dtb_ordt.num_ord, dtb_ordt.data_ord, data_cons\n" + + "HAVING MAX(data_cons) <= %s\n" + + "ORDER BY data_cons DESC", + codAnag, codMart, new Date() ); - - Date dataOrd = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql); + HashMap returnQuery = UtilityDB.executeSimpleQueryOnlyFirstRow(conn, sql); DtbOrdr ordr = new DtbOrdr(); - ordr.setDataOrd(dataOrd).setGestione("A").setNumOrd(numOrd); + ordr.setDataOrd((Date) returnQuery.get("data_ord")).setGestione("A").setNumOrd((Integer) returnQuery.get("num_ord")); List dtbOrdrs = new ArrayList<>(); dtbOrdrs.add(ordr); MtbColr mtbColr = new MtbColr() .setCodMart(codMart) + .setPartitaMag(lotto) .setQtaCol(UtilityString.stringToBigDecimal(qta)); MtbColt mtbColt = new MtbColt() @@ -141,7 +148,7 @@ public class ColliEviosysImportService { .setNumCollo(mtbColt.getNumCollo()) .setCriterioDistribuzione("U"), true); - entityBases = entityProcessor.processEntityList(colDistributed, multiDBTransactionManager, true); + entityBases.addAll(entityProcessor.processEntityList(colDistributed, multiDBTransactionManager, true)); } return entityBases; diff --git a/ems-engine/src/main/java/it/integry/ems/logistic/service/ColliImportService.java b/ems-engine/src/main/java/it/integry/ems/logistic/service/ColliImportService.java index fe704113c6..c2c7c83dd5 100644 --- a/ems-engine/src/main/java/it/integry/ems/logistic/service/ColliImportService.java +++ b/ems-engine/src/main/java/it/integry/ems/logistic/service/ColliImportService.java @@ -11,6 +11,7 @@ import it.integry.ems.logistic.dto.piegarese.VebadDesadvCorpoDTO; import it.integry.ems.logistic.dto.piegarese.VebadDesadvDettagliLottiDTO; import it.integry.ems.logistic.dto.piegarese.VebadDesadvEstremiDTO; import it.integry.ems.logistic.dto.piegarese.VebadDesadvTestataDTO; +import it.integry.ems.logistic.dto.sm2.FiltroDistribuzioneColloDTO; import it.integry.ems.rules.businessLogic.LoadColliService; import it.integry.ems.rules.businessLogic.dto.LoadColliDTO; import it.integry.ems.service.EntityProcessor; @@ -20,6 +21,7 @@ import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; import it.integry.ems_model.base.EntityBase; import it.integry.ems_model.db.ResultSetMapper; import it.integry.ems_model.entity.DtbDoct; +import it.integry.ems_model.entity.DtbOrdr; import it.integry.ems_model.entity.MtbColr; import it.integry.ems_model.entity.MtbColt; import it.integry.ems_model.service.SetupGest; @@ -50,7 +52,7 @@ public class ColliImportService { private MultiDBTransactionManager multiDBTransactionManager; @Autowired - private RequestDataDTO requestDataDTO; + private DistribuzioneColliService distribuzioneColliService; @Autowired private SetupGest setupGest; @@ -378,6 +380,7 @@ public class ColliImportService { } public List importColliVebad(String format, String type, ImportRequestDTO requestDTO, List anomalie) throws Exception { + List entityBases = new ArrayList<>(); Connection conn = multiDBTransactionManager.getPrimaryConnection(); VebadDTO vebadDesadv = new VebadDTO().setDettagliLotti(new ArrayList<>()); @@ -500,6 +503,31 @@ public class ColliImportService { sql = Query.format("SELECT cod_mart from mtb_lisa WHERE cod_barre_imb = %s", dettagliLotti.getGtin()); String codMart = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql); + sql = Query.format( + "SELECT TOP 1 dtb_ordt.num_ord,\n" + + " dtb_ordt.data_ord\n" + + "FROM dtb_ordt\n" + + " INNER JOIN dbo.dtb_ordr ON dtb_ordt.num_ord = dtb_ordr.num_ord AND dtb_ordr.data_ord = dtb_ordt.data_ord AND\n" + + " dtb_ordt.gestione = dtb_ordr.gestione\n" + + "WHERE cod_anag = %s\n" + + " AND dtb_ordt.gestione = 'A'\n" + + " AND flag_annulla = 'N'\n" + + " AND flag_evaso = 'I'\n" + + " AND cod_mart = %s\n" + + "GROUP BY dtb_ordt.num_ord, dtb_ordt.data_ord, data_cons\n" + + "HAVING MAX(data_cons) <= %s\n" + + "ORDER BY data_cons DESC", + codAnag, codMart, vebadDesadv.getTestataDoc().getDataDDT() + ); + HashMap returnQuery = UtilityDB.executeSimpleQueryOnlyFirstRow(conn, sql); + + DtbOrdr ordr = new DtbOrdr(); + ordr.setDataOrd((Date) returnQuery.get("data_ord")).setGestione("A").setNumOrd((Integer) returnQuery.get("num_ord")); + List dtbOrdrs = new ArrayList<>(); + dtbOrdrs.add(ordr); + + mtbColt.setFiltroOrdini(MtbColtUtils.generaFiltroOrdini(null, dtbOrdrs)); + MtbColr mtbColr = new MtbColr() .setDataScadPartita(dettagliLotti.getDataScad()) .setPartitaMag(dettagliLotti.getLotto()) @@ -514,6 +542,19 @@ public class ColliImportService { mtbColts.add(mtbColt); } - return entityProcessor.processEntityList(mtbColts, true); + for (MtbColt mtbColt : mtbColts) { + entityProcessor.processEntity(mtbColt, multiDBTransactionManager); + + List colDistributed = distribuzioneColliService.distribuzioneRigheColloNew(new FiltroDistribuzioneColloDTO() + .setDataCollo(mtbColt.getDataCollo()) + .setSerCollo(mtbColt.getSerCollo()) + .setGestione(mtbColt.getGestione()) + .setNumCollo(mtbColt.getNumCollo()) + .setCriterioDistribuzione("U"), true); + + entityBases.addAll(entityProcessor.processEntityList(colDistributed, multiDBTransactionManager, true)); + } + + return entityBases; } }