Merge branch 'master' into feature/RefactoringGestioneColli
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good

This commit is contained in:
2025-12-09 12:52:16 +01:00
6 changed files with 111 additions and 12 deletions

View File

@@ -0,0 +1,19 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251209114959 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement("alter table dbo.mtb_cols add valore varchar(200)");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -63,6 +63,9 @@ public class MtbCols extends EntityBase {
@SqlField(value = "causale", nullable = false) @SqlField(value = "causale", nullable = false)
private Causale causale; private Causale causale;
@SqlField(value = "valore", nullable = true)
private String valore;
public MtbCols() { public MtbCols() {
super(logger); super(logger);
} }
@@ -157,9 +160,18 @@ public class MtbCols extends EntityBase {
return this; return this;
} }
public String getValore() {
return valore;
}
public MtbCols setValore(String valore) {
this.valore = valore;
return this;
}
public enum Causale implements IBaseEnum<Causale> { public enum Causale implements IBaseEnum<Causale> {
CREAZIONE((short) 0), RETTIFICA((short) 1), POSIZIONAMENTO((short) 2), VERSAMENTO((short) 3); CREAZIONE((short) 0), RETTIFICA((short) 1), POSIZIONAMENTO((short) 2), VERSAMENTO((short) 3), ANOMALIA_ASSOCIATA((short) 4), ANOMALIA_RIMOSSA((short) 5);
private final short value; private final short value;

View File

@@ -85,13 +85,24 @@ public class AnomalieController {
} }
} }
@PostMapping(value = "/{id}/detachUls") @PostMapping(value = "/detachUls")
public ServiceRestResponse detachUls(HttpServletRequest request, public ServiceRestResponse detachUls(HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String profileDB, @RequestParam(CommonConstants.PROFILE_DB) String profileDB,
@PathVariable Long id,
@RequestBody List<String> ulsToRemove) throws Exception { @RequestBody List<String> ulsToRemove) throws Exception {
try { try {
return ServiceRestResponse.createPositiveResponse(anomalieProdService.detachUls(multiDBTransactionManager, id, ulsToRemove)); return ServiceRestResponse.createPositiveResponse(anomalieProdService.detachUls(multiDBTransactionManager, ulsToRemove));
} catch (Exception e) {
multiDBTransactionManager.rollbackAll();
throw e;
}
}
@PostMapping(value = "/{id}/attachUls")
public ServiceRestResponse attachUls(HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
@PathVariable Long id,
@RequestBody List<String> ulsToAttach) throws Exception {
try {
return ServiceRestResponse.createPositiveResponse(anomalieProdService.attachUls(multiDBTransactionManager, id, ulsToAttach));
} catch (Exception e) { } catch (Exception e) {
multiDBTransactionManager.rollbackAll(); multiDBTransactionManager.rollbackAll();
throw e; throw e;

View File

@@ -31,6 +31,8 @@ public class DettaglioULDTO {
private String serCollo; private String serCollo;
@SqlField("num_collo") @SqlField("num_collo")
private Integer numCollo; private Integer numCollo;
@SqlField("id_anomalia")
private Long idAnomalia;
public String getBarcodeUl() { public String getBarcodeUl() {
return barcodeUl; return barcodeUl;
@@ -139,4 +141,13 @@ public class DettaglioULDTO {
this.numCollo = numCollo; this.numCollo = numCollo;
return this; return this;
} }
public Long getIdAnomalia() {
return idAnomalia;
}
public DettaglioULDTO setIdAnomalia(Long idAnomalia) {
this.idAnomalia = idAnomalia;
return this;
}
} }

View File

@@ -6,6 +6,7 @@ import it.integry.ems.retail.dto.AnomalieMerceDTO;
import it.integry.ems.retail.dto.DettaglioULDTO; import it.integry.ems.retail.dto.DettaglioULDTO;
import it.integry.ems.retail.dto.SaveAnomaliaRequestDTO; import it.integry.ems.retail.dto.SaveAnomaliaRequestDTO;
import it.integry.ems.retail.dto.SaveLivelloAnomaliaRequestDTO; import it.integry.ems.retail.dto.SaveLivelloAnomaliaRequestDTO;
import it.integry.ems.retail.utility.AnomalieUlUtility;
import it.integry.ems.retail.wms.Utility.WMSUtility; import it.integry.ems.retail.wms.Utility.WMSUtility;
import it.integry.ems.retail.wms.generic.dto.MvwSitArtUdcDetInventarioDTO; import it.integry.ems.retail.wms.generic.dto.MvwSitArtUdcDetInventarioDTO;
import it.integry.ems.service.EntityProcessor; import it.integry.ems.service.EntityProcessor;
@@ -68,7 +69,7 @@ public class AnomalieUlService {
} }
public List<DettaglioULDTO> getUlAnomalia(Connection connection, Long idAnomalia) throws Exception { public List<DettaglioULDTO> getUlAnomalia(Connection connection, Long idAnomalia) throws Exception {
List<DettaglioULDTO> ulDetails = UtilityDB.executeSimpleQueryDTO(connection, "select mtb_colt.gestione, mtb_colt.ser_collo, mtb_colt.data_collo, mtb_colt.num_collo, barcode_ul, cod_mart, progressivo_ul, qta_col, cod_jfas\n" + List<DettaglioULDTO> ulDetails = UtilityDB.executeSimpleQueryDTO(connection, "select mtb_colt.gestione, mtb_colt.ser_collo, mtb_colt.data_collo, mtb_colt.num_collo, barcode_ul, cod_mart, progressivo_ul, qta_col, cod_jfas, id_anomalia\n" +
"from mtb_colt\n" + "from mtb_colt\n" +
" inner join mtb_colr on mtb_colt.gestione = mtb_colr.gestione and mtb_colt.data_collo = mtb_colr.data_collo and\n" + " inner join mtb_colr on mtb_colt.gestione = mtb_colr.gestione and mtb_colt.data_collo = mtb_colr.data_collo and\n" +
" mtb_colt.num_collo = mtb_colr.num_collo and mtb_colt.ser_collo = mtb_colr.ser_collo\n" + " mtb_colt.num_collo = mtb_colr.num_collo and mtb_colt.ser_collo = mtb_colr.ser_collo\n" +
@@ -89,16 +90,28 @@ public class AnomalieUlService {
return ulDetails; return ulDetails;
} }
public List<MtbColt> detachUls(MultiDBTransactionManager multiDBTransactionManager, Long idAnomalia, List<String> ulsToRemove) throws Exception { public List<MtbColt> detachUls(MultiDBTransactionManager multiDBTransactionManager, List<String> ulsToRemove) throws Exception {
String sql = "SELECT * from mtb_colt where barcode_ul in (" + UtilityDB.listValueToString(ulsToRemove) + ") and id_anomalia = " + idAnomalia; String sql = "SELECT * from mtb_colt where barcode_ul in (" + UtilityDB.listValueToString(ulsToRemove) + ") and id_anomalia is not null";
List<MtbColt> uls = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, MtbColt.class); List<MtbColt> uls = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, MtbColt.class);
uls.forEach(x -> x.setIdAnomalia(EmsRestConstants.LONG_NULL).setOperation(OperationType.UPDATE)); uls.forEach(x -> AnomalieUlUtility.detachAnomaliaFromUl(x));
entityProcessor.processEntityList(uls, multiDBTransactionManager, true); entityProcessor.processEntityList(uls, multiDBTransactionManager, true);
return uls; return uls;
} }
public List<MtbColt> attachUls(MultiDBTransactionManager multiDBTransactionManager, Long idAnomalia, List<String> ulsToAttach) throws Exception {
List<MtbColt> uls = WMSUtility.retrieveUlsByBarcodes(multiDBTransactionManager.getPrimaryConnection(), ulsToAttach).stream().collect(Collectors.toList());
if (UtilityList.isNullOrEmpty(uls))
return new ArrayList<>();
uls.forEach(x -> AnomalieUlUtility.attachAnomaliaToUl(x, idAnomalia));
entityProcessor.processEntityList(uls, multiDBTransactionManager, true);
UtilityEntity.throwEntitiesException(uls);
return uls;
}
public MtbAnomalieUl saveAnomalia(MultiDBTransactionManager multiDBTransactionManager, SaveAnomaliaRequestDTO saveRequestDTO) throws Exception { public MtbAnomalieUl saveAnomalia(MultiDBTransactionManager multiDBTransactionManager, SaveAnomaliaRequestDTO saveRequestDTO) throws Exception {
MtbAnomalieUl anomalia = new MtbAnomalieUl(); MtbAnomalieUl anomalia = new MtbAnomalieUl();
@@ -117,7 +130,7 @@ public class AnomalieUlService {
getUlAnomalia(multiDBTransactionManager.getPrimaryConnection(), anomalia.getId()).stream().forEach(x -> { getUlAnomalia(multiDBTransactionManager.getPrimaryConnection(), anomalia.getId()).stream().forEach(x -> {
if (!saveRequestDTO.getBarcodeList().contains(x.getBarcodeUl())) { if (!saveRequestDTO.getBarcodeList().contains(x.getBarcodeUl())) {
MtbColt mtbColt = new MtbColt(x.getGestione(), x.getDataCollo(), x.getNumCollo(), x.getSerCollo()); MtbColt mtbColt = new MtbColt(x.getGestione(), x.getDataCollo(), x.getNumCollo(), x.getSerCollo());
mtbColt.setIdAnomalia(EmsRestConstants.LONG_NULL).setOperation(OperationType.UPDATE); AnomalieUlUtility.detachAnomaliaFromUl(mtbColt.setIdAnomalia(x.getIdAnomalia()));
ulsAffected.add(mtbColt); ulsAffected.add(mtbColt);
} }
}); });
@@ -127,7 +140,7 @@ public class AnomalieUlService {
MtbColt ul = newAnomalies.get(barcode); MtbColt ul = newAnomalies.get(barcode);
if (ul == null) if (ul == null)
return; return;
ul.setIdAnomalia(anomalia.getId()).setOperation(OperationType.UPDATE); AnomalieUlUtility.attachAnomaliaToUl(ul, anomalia.getId());
ulsAffected.add(ul); ulsAffected.add(ul);
}); });
@@ -145,10 +158,10 @@ public class AnomalieUlService {
.setOperation(OperationType.DELETE); .setOperation(OperationType.DELETE);
List<MtbColt> ulAnomalia = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), List<MtbColt> ulAnomalia = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(),
"SELECT gestione,data_collo,ser_collo,num_collo from mtb_colt where id_anomalia = " + id, "SELECT gestione,data_collo,ser_collo,num_collo, id_anomalia from mtb_colt where id_anomalia = " + id,
MtbColt.class); MtbColt.class);
ulAnomalia.forEach(x -> x.setIdAnomalia(EmsRestConstants.LONG_NULL).setOperation(OperationType.UPDATE)); ulAnomalia.forEach(x -> AnomalieUlUtility.detachAnomaliaFromUl(x));
entities.addAll(ulAnomalia); entities.addAll(ulAnomalia);
entities.add(anomalia); entities.add(anomalia);
entityProcessor.processEntityList(entities, multiDBTransactionManager, true); entityProcessor.processEntityList(entities, multiDBTransactionManager, true);

View File

@@ -0,0 +1,33 @@
package it.integry.ems.retail.utility;
import it.integry.ems_model.config.EmsRestConstants;
import it.integry.ems_model.entity.MtbCols;
import it.integry.ems_model.entity.MtbColt;
import it.integry.ems_model.types.OperationType;
public class AnomalieUlUtility {
public static MtbColt attachAnomaliaToUl(MtbColt ul, Long idAnomalia) {
ul.setIdAnomalia(idAnomalia)
.setOperation(OperationType.UPDATE);
MtbCols cols = new MtbCols()
.setCodMdep(ul.getCodMdep())
.setCausale(MtbCols.Causale.ANOMALIA_ASSOCIATA)
.setValore(idAnomalia.toString());
cols.setOperation(OperationType.INSERT_OR_UPDATE);
ul.getMtbCols().add(cols);
return ul;
}
public static MtbColt detachAnomaliaFromUl(MtbColt ul) {
MtbCols cols = new MtbCols()
.setCodMdep(ul.getCodMdep())
.setCausale(MtbCols.Causale.ANOMALIA_RIMOSSA)
.setValore(ul.getIdAnomalia().toString());
ul.setIdAnomalia(EmsRestConstants.LONG_NULL)
.setOperation(OperationType.UPDATE);
cols.setOperation(OperationType.INSERT_OR_UPDATE);
ul.getMtbCols().add(cols);
return ul;
}
}