diff --git a/ems-engine/src/main/java/it/integry/ems/activity/service/SteUPService.java b/ems-engine/src/main/java/it/integry/ems/activity/service/SteUPService.java index 96de730b2b..a0e6cdee44 100644 --- a/ems-engine/src/main/java/it/integry/ems/activity/service/SteUPService.java +++ b/ems-engine/src/main/java/it/integry/ems/activity/service/SteUPService.java @@ -60,6 +60,7 @@ import java.util.stream.Collectors; import static it.integry.ems.order.dto.UserGroupENUM.RILEVATORE; import static it.integry.ems.order.dto.UserGroupENUM.TECNICO; import static java.util.stream.Collectors.groupingBy; +import static org.codehaus.groovy.runtime.DefaultGroovyMethods.collect; @Service @Scope("request") @@ -736,36 +737,9 @@ public class SteUPService { if (barcodes != null && !barcodes.isEmpty()) { for (String barcode : barcodes) { - sql = - "SELECT activity_type_id_next " + - " FROM srl_activity_type " + - " WHERE activity_type_id = " + UtilityDB.valueToString(activityTypeId) + " AND " + - "flag_tipologia = 'A' "; - - String activityTypeArt = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql); - - if (UtilityString.isNullOrEmpty(activityTypeArt)) { - throw new Exception("Nessun tipo attività associato a " + activityTypeId + " per l'inserimento degli articoli."); - } - - LocalDateTime now = LocalDateTime.now(); - String codMart = this.getCodMartFromBarcode(barcode); - StbActivity item = new StbActivity() - .setActivityDescription(activityTypeArt) - .setNote(parentActivity.getNote()) - .setCodJfas(codJfas) - .setCodMart(codMart) - .setFlagTipologia("A") - .setUserName(userNamePv) - .setUserCreator(parentActivity.getUserCreator()) - .setUserModifier(parentActivity.getUserCreator()) - .setActivityTypeId(activityTypeArt) - .setOraInsAct(now) - .setEffectiveTime(dataCreation) - .setParentActivityId(activityId); - - item.setOperation(OperationType.INSERT); - stbActivityList.add(item); + StbActivity art = getArticoli(barcode, null, activityTypeId, codJfas, userNamePv); + if( art != null) + stbActivityList.add(art); } } @@ -811,6 +785,36 @@ public class SteUPService { return stbActivityList; } + private StbActivity getArticoli(String barcode, String codMart, String activityTypeId, String codJfas, String userNamePv) throws Exception { + String sql; + sql = + "SELECT activity_type_id_next " + + " FROM srl_activity_type " + + " WHERE activity_type_id = " + UtilityDB.valueToString(activityTypeId) + " AND " + + "flag_tipologia = 'A' "; + + String activityTypeArt = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql); + + if (UtilityString.isNullOrEmpty(activityTypeArt)) { + throw new Exception("Nessun tipo attività associato a " + activityTypeId + " per l'inserimento degli articoli."); + } + + LocalDateTime now = LocalDateTime.now(); + if (!UtilityString.isNullOrEmpty(barcode)) + codMart = this.getCodMartFromBarcode(barcode); + StbActivity item = new StbActivity() + .setActivityDescription(activityTypeArt) + .setCodJfas(codJfas) + .setCodMart(codMart) + .setFlagTipologia("A") + .setUserName(userNamePv) + .setActivityTypeId(activityTypeArt) + .setOraInsAct(now); + + item.setOperation(OperationType.INSERT); + return item; + } + public HashMap getPrezzo(String codMdep, String barcode) throws Exception { String sql = "SELECT p.descrizione, p.prz_vend_iva " + @@ -1481,7 +1485,7 @@ public class SteUPService { String sql = Query.format( - "select i.cod_mdep, stb_activity.cod_jfas, stb_activity.activity_id\n" + + "select i.cod_mdep, stb_activity.cod_jfas, stb_activity.activity_id, stb_activity.user_name\n" + "from dbo.steup_getRilevazioni(%s, %s, null) i\n" + "inner join stb_activity on i.activity_id = stb_activity.parent_activity_id\n" + "where stb_activity.activity_type_id = %s", @@ -1495,13 +1499,18 @@ public class SteUPService { Map>> ispezioniDepo = ispezioni.stream().collect(groupingBy(x -> (String) x.get("cod_mdep"))); for (Map.Entry>> entry : ispezioniDepo.entrySet()) { + String userNamePv = entry.getValue().get(0).get("user_name").toString(); Map>> reparti = entry.getValue().stream().collect(groupingBy(x -> (String) x.get("cod_jfas"))); for (Map.Entry>> reparto : reparti.entrySet()) { String codJfas = reparto.getKey(); List barcodes = new ArrayList<>(); + + List idAttivita = new ArrayList<>(); for ( HashMap r: reparto.getValue() ) { + String activityId = (String) r.get("activity_id"); + idAttivita.add(activityId); StbActivityFile stbActivityFile = new StbActivityFile() - .setId((String) r.get("activity_id")) + .setId(activityId) .setFileName("elenco_articoli.txt"); stbActivityFile.setOperation(OperationType.SELECT_OBJECT); @@ -1511,53 +1520,103 @@ public class SteUPService { if (contentB64 != null && contentB64.length > 0) { String content = new String(contentB64); barcodes.addAll(UtilityString.splitStringToMultipleLine(content, CommonConstants.A_CAPO)); - barcodes = Arrays.asList(("8001990030611\n" + - "8003650000798\n" + - "8054633830833\n" + - "8410436393942\n" + - "8002340012103\n" + - "8007300004297\n" + - "8002340012660\n" + - "8033532102838\n" + - "8052675290028\n" + - "8000697001917\n" + - "8055719541384\n" + - "8055719541377\n" + - "8018700037204\n" + - "8001480720800\n" + - "8001280070648\n" + - "8054633831656\n" + - "8720182641618\n" + - "8011380002074\n" + - "8230485606837\n" + - "8033532107987\n" + - "8033908800726\n" + - "8021719130026\n" + - "8051886470717\n" + - "8700216772082\n" + - "8033447586204\n" + - "8006540891469\n" + - "4012400502363\n" + - "8051499395889\n" + - "8051499393571\n" + - "8051499395872\n" + - "8034055535387\n" + - "8056364996130\n" + - "8056364993467\n" + - "8007675733877").split("\n")); - + if (UtilityDebug.isDebugExecution()) { + barcodes=Arrays.asList( + ("8001990030611\n" + + "8003650000798\n" + + "8054633830833\n" + + "8410436393942\n" + + "8002340012103\n" + + "8007300004297\n" + + "8002340012660\n" + + "8033532102838\n" + + "8052675290028\n" + + "8000697001917\n" + + "8055719541384\n" + + "8055719541377\n" + + "8018700037204\n" + + "8001480720800\n" + + "8001280070648\n" + + "8054633831656\n" + + "8720182641618\n" + + "8011380002074\n" + + "8230485606837\n" + + "8033532107987\n" + + "8033908800726\n" + + "8021719130026\n" + + "8051886470717\n" + + "8700216772082\n" + + "8033447586204\n" + + "8006540891469\n" + + "4012400502363\n" + + "8051499395889\n" + + "8051499393571\n" + + "8051499395872\n" + + "8034055535387\n" + + "8056364996130\n" + + "8056364993467\n" + + "8007675733877").split("\n") + ); + } } } if (barcodes.isEmpty()) { continue; } - verificaRottura(entry.getKey(), codJfas, dataIspezione, repartiFreschi, tipiEsclusi, fornitori, barcodes); + List articoli = verificaRottura(entry.getKey(), codJfas, dataIspezione, repartiFreschi, tipiEsclusi, fornitori, barcodes); + + /*List attivitaArticoli = new ArrayList<>(); + for (String articolo : articoli) { + attivitaArticoli.add(getArticoli(null, articolo, tipoAttivitaRotturaStock, codJfas, userNamePv)); + } */ + + List stbActivityList = new ArrayList<>(); + for (String activityId : idAttivita) { + sql = "select *\n" + + "from srl_activity_art\n" + + "where activity_id = " + UtilityDB.valueToString(activityId) + "\n"; + + List articoliPresenti = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, SrlActivityArt.class); + List artP; + if (articoliPresenti != null) { + articoliPresenti + .stream() + .forEach(x -> { + if (articoli.contains(x.getCodMart())) + x.setOperation(OperationType.UPDATE); + else + x.setOperation(OperationType.DELETE); + }); + artP = articoliPresenti.stream().map(x -> x.getCodMart()).distinct().collect(Collectors.toList()); + } else { + artP = new ArrayList<>(); + } + + List artNew = articoli + .stream() + .filter(x -> !artP.contains(x)) + .map(x -> { + SrlActivityArt s = new SrlActivityArt().setCodMart(x); + s.setOperation(OperationType.INSERT); + return s; + }).collect(Collectors.toList()); + + + StbActivity activityToUpdate = new StbActivity(); + activityToUpdate.setActivityId(activityId); + activityToUpdate.setSrlActivityArt(articoliPresenti); + activityToUpdate.getSrlActivityArt().addAll(artNew); + activityToUpdate.setOperation(OperationType.UPDATE); + stbActivityList.add(activityToUpdate); + + } + + UtilityEntity.throwEntitiesException(entityProcessor.processEntityList(stbActivityList, true)); } } - } - public List> verificaRottura(String codMdep, String codJfas, + public List verificaRottura(String codMdep, String codJfas, LocalDate dataCreation, List repartiFreschi, List tipiEsclusi, @@ -1630,9 +1689,9 @@ public class SteUPService { "FROM jtb_dist_mate\n" + "WHERE cod_mart IS NOT NULL"; - List> articoli = new ArrayList<>(); + List articoli = new ArrayList<>(); try (MultiDBTransactionManager mdb = new MultiDBTransactionManager(profileDb)) { - articoli = UtilityDB.executeSimpleQuery(mdb.getPrimaryConnection(), queryAssortimento); + articoli = UtilityDB.executeSimpleQueryOnlyFirstColumn(mdb.getPrimaryConnection(), queryAssortimento); //Eliminazione nuovi inserimenti in griglia String sqlGriglia = @@ -1657,7 +1716,7 @@ public class SteUPService { List nuoviInserimenti = UtilityDB.executeSimpleQueryOnlyFirstColumn(mdb.getPrimaryConnection(), sqlGriglia); articoli = articoli.stream() - .filter(x -> !nuoviInserimenti.contains(x.get("cod_mart").toString())) + .filter(x -> !nuoviInserimenti.contains(x)) .collect(Collectors.toList()); //Verifica Inevasi @@ -1694,7 +1753,7 @@ public class SteUPService { List inevasi = UtilityDB.executeSimpleQueryOnlyFirstColumn(mdb.getPrimaryConnection(), sqlInevasi); articoli = articoli.stream() - .filter(x -> !inevasi.contains(x.get("cod_mart").toString())) + .filter(x -> !inevasi.contains(x)) .collect(Collectors.toList()); }