Refactor Depositi and MovimentiContabili services and controllers; add migration for foreign key constraints
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,30 @@
|
||||
package it.integry.ems.migration.model;
|
||||
|
||||
import it.integry.ems.migration._base.BaseMigration;
|
||||
import it.integry.ems.migration._base.MigrationModelInterface;
|
||||
|
||||
public class Migration_20251024175524 extends BaseMigration implements MigrationModelInterface {
|
||||
|
||||
@Override
|
||||
public void up() throws Exception {
|
||||
if (isHistoryDB())
|
||||
return;
|
||||
|
||||
executeStatement(
|
||||
"exec DropForeignKey 'ctb_amac', 'mtb_depo_posizioni'",
|
||||
"exec DropForeignKey 'jrl_fase_posizioni', 'mtb_depo_posizioni'",
|
||||
"exec DropPrimaryKey 'mtb_depo_posizioni'");
|
||||
|
||||
dropIndex("mtb_depo_posizioni", "ix_mtb_depo_posizioni_unique");
|
||||
|
||||
executeStatement("alter table mtb_depo_posizioni add constraint pk_mtb_depo_posizioni primary key ( posizione)",
|
||||
"alter table ctb_amac add constraint fk_ctb_amac_mtb_depo_posizioni foreign key (posizione) references mtb_depo_posizioni(posizione)",
|
||||
"alter table jrl_fase_posizioni add constraint fk_jrl_fase_posizioni_mtb_depo_posizioni foreign key (posizione) references mtb_depo_posizioni(posizione)"
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void down() throws Exception {
|
||||
}
|
||||
}
|
||||
@@ -332,14 +332,19 @@ public class PackagesRules extends QueryRules {
|
||||
}
|
||||
|
||||
public static HashMap<String, Object> calcPeso(Connection conn, MtbColr entity) throws Exception {
|
||||
String sql =
|
||||
String sql = "select cifre_dec from mtb_unt_mis where flag_unita_kg = 'S'";
|
||||
Integer cifreDec = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql);
|
||||
|
||||
if ( cifreDec == null ) { cifreDec = 5; }
|
||||
|
||||
sql =
|
||||
"SELECT mtb_aart.unt_mis, " +
|
||||
" mtb_aart.tara_kg, " +
|
||||
" mtb_aart.peso_kg, " +
|
||||
" case when mtb_aart.flag_peso_egalizzato = 1 THEN mtb_aart.qta_cnf ELSE 1 END * mtb_aart.peso_kg as 'peso_egalizzato', " +
|
||||
" mtb_unt_mis.flag_unita_kg, " +
|
||||
" mtb_aart.flag_peso_egalizzato, " +
|
||||
" ISNULL((select cifre_dec from mtb_unt_mis where flag_unita_kg = 'S'), 5) as cifre_dec " +
|
||||
" ISNULL((), 5) as cifre_dec " +
|
||||
" FROM mtb_aart INNER JOIN mtb_unt_mis ON mtb_aart.unt_mis = mtb_unt_mis.unt_mis " +
|
||||
" WHERE mtb_aart.cod_mart = " + UtilityDB.valueToString(entity.getCodMart());
|
||||
|
||||
@@ -352,7 +357,6 @@ public class PackagesRules extends QueryRules {
|
||||
String flagUnitaKg = (String) queryResults.get("flag_unita_kg");
|
||||
BigDecimal pesoKGEgalizzato = (BigDecimal) queryResults.get("peso_egalizzato");
|
||||
Boolean pesoEgalizzato = (Boolean) queryResults.get("flag_peso_egalizzato");
|
||||
int cifreDec = ((BigDecimal) queryResults.get("cifre_dec")).intValue();
|
||||
|
||||
if ("S".equalsIgnoreCase(flagUnitaKg)) {
|
||||
pesoNetto = entity.getQtaCol();
|
||||
|
||||
@@ -66,7 +66,6 @@ public class CtbAmac extends EntityBase {
|
||||
private Boolean flagAttivo;
|
||||
|
||||
@SqlField(value = "cod_mdep")
|
||||
@FK(tableName = MtbDepoPosizioni.ENTITY)
|
||||
private String codMdep;
|
||||
|
||||
@SqlField(value = "posizione")
|
||||
|
||||
@@ -138,7 +138,7 @@ public class MtbDepo extends EntityBase {
|
||||
@EntityChild
|
||||
private List<MtbDepoIntercode> mtbDepoIntercode = new ArrayList<>();
|
||||
|
||||
@EntityChild
|
||||
@EntityChild(value = 0)
|
||||
private List<MtbDepoPosizioni> mtbDepoPosizioni = new ArrayList<>();
|
||||
|
||||
@EntityChild
|
||||
@@ -591,4 +591,6 @@ public class MtbDepo extends EntityBase {
|
||||
WtbDepo wtbDepo = new WtbDepo();
|
||||
wtbDepo.deleteAllEntities(connection, this);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import org.apache.logging.log4j.Logger;
|
||||
import org.kie.api.definition.type.PropertyReactive;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Objects;
|
||||
|
||||
@PropertyReactive
|
||||
@Table(MtbDepoPosizioni.ENTITY)
|
||||
@@ -22,7 +23,6 @@ public class MtbDepoPosizioni extends EntityBase {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@PK
|
||||
@SqlField(value = "cod_mdep", maxLength = 5, nullable = false)
|
||||
private String codMdep;
|
||||
|
||||
@@ -62,6 +62,8 @@ public class MtbDepoPosizioni extends EntityBase {
|
||||
@SqlField(value = "tipo_prelievo")
|
||||
private TipoPrelievo tipoPrelievo;
|
||||
|
||||
private String posIsChanged;
|
||||
|
||||
@Priority(1)
|
||||
private StbPosizioni stbPosizioni;
|
||||
|
||||
@@ -180,6 +182,15 @@ public class MtbDepoPosizioni extends EntityBase {
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getPosIsChanged() {
|
||||
return posIsChanged;
|
||||
}
|
||||
|
||||
public MtbDepoPosizioni setPosIsChanged(String posIsChanged) {
|
||||
this.posIsChanged = posIsChanged;
|
||||
return this;
|
||||
}
|
||||
|
||||
public StbPosizioni getStbPosizioni() {
|
||||
return stbPosizioni;
|
||||
}
|
||||
@@ -190,10 +201,15 @@ public class MtbDepoPosizioni extends EntityBase {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void insertChilds() throws Exception {
|
||||
// stbPosizioni.manageWithParentConnection(connection, dataCompleting);
|
||||
//
|
||||
// this.setIdPosizione(stbPosizioni.getId());
|
||||
public boolean equals(Object o) {
|
||||
if (!(o instanceof MtbDepoPosizioni)) return false;
|
||||
MtbDepoPosizioni that = (MtbDepoPosizioni) o;
|
||||
return Objects.equals(getCodMdep(), that.getCodMdep()) && Objects.equals(getPosizione(), that.getPosizione()) && Objects.equals(getDescrizione(), that.getDescrizione()) && Objects.equals(isFlagMonoCollo(), that.isFlagMonoCollo()) && Objects.equals(getPriorita(), that.getPriorita()) && Objects.equals(getFlagSilosLiquidi(), that.getFlagSilosLiquidi()) && Objects.equals(getCapacita(), that.getCapacita()) && Objects.equals(getIdPosizione(), that.getIdPosizione()) && Objects.equals(getTipoMagazAutomatico(), that.getTipoMagazAutomatico()) && Objects.equals(getPostiPallet(), that.getPostiPallet()) && Objects.equals(getCodArea(), that.getCodArea()) && getTipoPrelievo() == that.getTipoPrelievo() && Objects.equals(getPosIsChanged(), that.getPosIsChanged());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(getCodMdep(), getPosizione(), getDescrizione(), isFlagMonoCollo(), getPriorita(), getFlagSilosLiquidi(), getCapacita(), getIdPosizione(), getTipoMagazAutomatico(), getPostiPallet(), getCodArea(), getTipoPrelievo(), getPosIsChanged());
|
||||
}
|
||||
|
||||
public enum TipoPrelievo implements IBaseEnum {
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
package it.integry.ems.contabil.controller;
|
||||
|
||||
import it.integry.common.var.CommonConstants;
|
||||
import it.integry.ems.contabil.service.MovimentiContabiliServices;
|
||||
import it.integry.ems.contabil.service.MovimentiContabiliService;
|
||||
import it.integry.ems.response.ServiceRestResponse;
|
||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||
import it.integry.ems_model.entity.CtbMovt;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
@@ -15,7 +16,9 @@ import javax.servlet.http.HttpServletRequest;
|
||||
@RequestMapping("movimenti-contabili")
|
||||
public class MovimentiContabiliController {
|
||||
@Autowired
|
||||
private MovimentiContabiliServices movimentiContabiliServices;
|
||||
private MovimentiContabiliService movimentiContabiliServices;
|
||||
@Autowired
|
||||
private MultiDBTransactionManager multiDBTransactionManager;
|
||||
|
||||
@PostMapping(value = "save")
|
||||
public @ResponseBody
|
||||
@@ -23,7 +26,7 @@ public class MovimentiContabiliController {
|
||||
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
|
||||
@RequestBody CtbMovt ctbMovt) throws Exception {
|
||||
|
||||
return ServiceRestResponse.createPositiveResponse(movimentiContabiliServices.save(ctbMovt));
|
||||
return ServiceRestResponse.createPositiveResponse(movimentiContabiliServices.save(multiDBTransactionManager, ctbMovt));
|
||||
}
|
||||
|
||||
@PostMapping(value = "setTipoBene")
|
||||
@@ -33,7 +36,7 @@ public class MovimentiContabiliController {
|
||||
@RequestParam Integer riga,
|
||||
@RequestParam (required = false) String tipoBene) throws Exception {
|
||||
|
||||
return ServiceRestResponse.createPositiveResponse(movimentiContabiliServices.setTipoBene(numCmov, riga, tipoBene));
|
||||
return ServiceRestResponse.createPositiveResponse(movimentiContabiliServices.setTipoBene(multiDBTransactionManager,numCmov, riga, tipoBene));
|
||||
}
|
||||
|
||||
@PostMapping(value = "delete")
|
||||
@@ -41,7 +44,7 @@ public class MovimentiContabiliController {
|
||||
ServiceRestResponse delete(HttpServletRequest request,
|
||||
@RequestParam String whereCond) throws Exception {
|
||||
|
||||
return ServiceRestResponse.createPositiveResponse(movimentiContabiliServices.delete(whereCond));
|
||||
return ServiceRestResponse.createPositiveResponse(movimentiContabiliServices.delete(multiDBTransactionManager,whereCond));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,15 +1,11 @@
|
||||
package it.integry.ems.contabil.service;
|
||||
|
||||
import it.integry.ems.javabeans.RequestDataDTO;
|
||||
import it.integry.ems.service.EntityProcessor;
|
||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||
import it.integry.ems.utility.UtilityDebug;
|
||||
import it.integry.ems.utility.UtilityEntity;
|
||||
import it.integry.ems_model.base.EntityBase;
|
||||
import it.integry.ems_model.base.EntityInterface;
|
||||
import it.integry.ems_model.config.EmsRestConstants;
|
||||
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.*;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -17,19 +13,15 @@ import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
@Scope("request")
|
||||
public class MovimentiContabiliServices {
|
||||
|
||||
public class MovimentiContabiliService {
|
||||
@Autowired
|
||||
private EntityProcessor entityProcessor;
|
||||
@Autowired
|
||||
private MultiDBTransactionManager multiDBTransactionManager;
|
||||
|
||||
public CtbMovt save(CtbMovt ctbMovt) throws Exception {
|
||||
public CtbMovt save(MultiDBTransactionManager multiDBTransactionManager, CtbMovt ctbMovt) throws Exception {
|
||||
List<EntityBase> entitiesToSave = new ArrayList<>();
|
||||
|
||||
if (ctbMovt.getNumCmov() != null && ctbMovt.getOperation() != OperationType.DELETE) {
|
||||
@@ -68,14 +60,14 @@ public class MovimentiContabiliServices {
|
||||
entitiesToSave = Collections.singletonList(ctbMovt);
|
||||
}
|
||||
|
||||
List<EntityBase> entityRet = entityProcessor.processEntityList(entitiesToSave, true);
|
||||
List<EntityBase> entityRet = entityProcessor.processEntityList(entitiesToSave, multiDBTransactionManager, true);
|
||||
UtilityEntity.throwEntitiesException(entityRet);
|
||||
|
||||
CtbMovt ctbMovtRet = entityRet.stream().filter(x->x instanceof CtbMovt).map(x->(CtbMovt)x).findFirst().orElse(null);
|
||||
return ctbMovtRet;
|
||||
}
|
||||
|
||||
public CtbMovt setTipoBene(Integer numCmov, Integer riga, String tipoBene) throws Exception {
|
||||
public CtbMovt setTipoBene(MultiDBTransactionManager multiDBTransactionManager, Integer numCmov, Integer riga, String tipoBene) throws Exception {
|
||||
CtbMovt ctbMovt = new CtbMovt()
|
||||
.setNumCmov(numCmov);
|
||||
|
||||
@@ -87,10 +79,10 @@ public class MovimentiContabiliServices {
|
||||
ctbMovi.setOperation(OperationType.UPDATE);
|
||||
ctbMovt.getCtbMovi().add(ctbMovi);
|
||||
|
||||
return save(ctbMovt);
|
||||
return save(multiDBTransactionManager, ctbMovt);
|
||||
}
|
||||
|
||||
public List<CtbMovt> delete(String whereCond) throws Exception {
|
||||
public List<CtbMovt> delete(MultiDBTransactionManager multiDBTransactionManager, String whereCond) throws Exception {
|
||||
String sql = "SELECT num_cmov " +
|
||||
" FROM " + CtbMovt.ENTITY +
|
||||
" WHERE " + whereCond;
|
||||
@@ -103,7 +95,7 @@ public class MovimentiContabiliServices {
|
||||
|
||||
ctbMovts.stream().forEach(x->{x.setOperation(OperationType.DELETE);});
|
||||
|
||||
List<EntityBase> entityBaseList = entityProcessor.processEntityList(ctbMovts, false);
|
||||
List<EntityBase> entityBaseList = entityProcessor.processEntityList(ctbMovts, multiDBTransactionManager, false);
|
||||
|
||||
UtilityEntity.throwEntitiesException(entityBaseList);
|
||||
return ctbMovts;
|
||||
@@ -0,0 +1,32 @@
|
||||
package it.integry.ems.logistic.controller;
|
||||
|
||||
import it.integry.common.var.CommonConstants;
|
||||
import it.integry.ems.logistic.service.DepositiService;
|
||||
import it.integry.ems.response.ServiceRestResponse;
|
||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||
import it.integry.ems_model.entity.MtbDepo;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
@RestController
|
||||
@Scope("request")
|
||||
@RequestMapping("depositi")
|
||||
public class DepositiController {
|
||||
@Autowired
|
||||
private DepositiService depositiService;
|
||||
@Autowired
|
||||
private MultiDBTransactionManager multiDBTransactionManager;
|
||||
|
||||
@PostMapping(value = "save")
|
||||
public @ResponseBody
|
||||
ServiceRestResponse save(HttpServletRequest request,
|
||||
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
|
||||
@RequestBody MtbDepo mtbDepo) throws Exception {
|
||||
|
||||
return ServiceRestResponse.createPositiveResponse(depositiService.save(multiDBTransactionManager, mtbDepo));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
package it.integry.ems.logistic.service;
|
||||
|
||||
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.types.OperationType;
|
||||
import it.integry.ems_model.utility.UtilityDB;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
public class DepositiService {
|
||||
@Autowired
|
||||
private EntityProcessor entityProcessor;
|
||||
|
||||
public MtbDepo save(MultiDBTransactionManager multiDBTransactionManager, MtbDepo mtbDepo) throws Exception {
|
||||
List<EntityBase> entityToSave = new ArrayList<>();
|
||||
|
||||
mtbDepo.getMtbDepoPosizioni().stream()
|
||||
.forEach(x->x.setOperation(OperationType.INSERT_OR_UPDATE));
|
||||
|
||||
List<String> posizioni =
|
||||
mtbDepo.
|
||||
getMtbDepoPosizioni().stream().filter(x -> x.getPosIsChanged() != null && x.getPosIsChanged().equalsIgnoreCase("S"))
|
||||
.map(MtbDepoPosizioni::getPosizione)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (!posizioni.isEmpty()) {
|
||||
|
||||
String sql = String.format(
|
||||
"SELECT * FROM jrl_fase_posizioni WHERE posizione IN (%s)",
|
||||
UtilityDB.listValueToString(posizioni));
|
||||
|
||||
List<JrlFasePosizioni> jrlFasePosizionis = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, JrlFasePosizioni.class);
|
||||
|
||||
if (jrlFasePosizionis != null) {
|
||||
jrlFasePosizionis.forEach(x ->
|
||||
x
|
||||
.setCodMdep(mtbDepo.getCodMdep())
|
||||
.setOperation(OperationType.UPDATE));
|
||||
entityToSave.addAll(jrlFasePosizionis);
|
||||
}
|
||||
sql = String.format(
|
||||
"SELECT cod_cmac, cod_mdep, posizione FROM ctb_amac WHERE posizione IN (%s)",
|
||||
UtilityDB.listValueToString(posizioni));
|
||||
|
||||
List<CtbAmac> ctbAmacs = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, CtbAmac.class);
|
||||
|
||||
if (ctbAmacs != null) {
|
||||
ctbAmacs.forEach(x ->
|
||||
x
|
||||
.setCodMdep(mtbDepo.getCodMdep())
|
||||
.setOperation(OperationType.UPDATE));
|
||||
entityToSave.addAll(ctbAmacs);
|
||||
}
|
||||
}
|
||||
|
||||
List<String> aree = mtbDepo.getMtbDepoArea().stream().map(x -> x.getCodArea()).collect(Collectors.toList());
|
||||
List<MtbDepoArea> mtbDepoAreas = mtbDepo.getMtbDepoPosizioni()
|
||||
.stream()
|
||||
.filter(x -> x.getCodArea() != null && !aree.contains(x.getCodArea()))
|
||||
.map(x -> {
|
||||
MtbDepoArea area =
|
||||
new MtbDepoArea().setCodMdep(x.getCodMdep())
|
||||
.setCodArea(x.getCodArea());
|
||||
area.setOperation(OperationType.INSERT_OR_UPDATE);
|
||||
return area;
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
|
||||
if (!mtbDepoAreas.isEmpty()) {
|
||||
mtbDepo.getMtbDepoArea().addAll(mtbDepoAreas);
|
||||
}
|
||||
entityToSave.add(mtbDepo);
|
||||
|
||||
List<EntityBase> entityRet = entityProcessor.processEntityList(entityToSave, multiDBTransactionManager, true);
|
||||
UtilityEntity.throwEntitiesException(entityRet);
|
||||
|
||||
MtbDepo mtbDepoRet = entityRet.stream().filter(x -> x instanceof MtbDepo).map(x -> (MtbDepo) x).findFirst().orElse(null);
|
||||
return mtbDepoRet;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user