[ROSSOGARGANO - accettazione da raccolta]

gestione scarichi
This commit is contained in:
2024-06-26 10:58:20 +02:00
parent b144d84549
commit ea2b8c7593
11 changed files with 300 additions and 116 deletions

View File

@@ -0,0 +1,26 @@
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;
public class Migration_20240620182157 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
String value = null;
if (isCustomer(IntegryCustomer.RossoGargano))
value = "RIBLT";
createSetup("PVM", "PIAN_ACC_ROSSG", "COD_JFAS_VERSAMENTI", value, "Reparto padre delle linee dei ribaltatori", false, null, false, false, false, false, false, null, false, "COD_JFAS");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,33 @@
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;
public class Migration_20240621115535 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
String value = null;
if (isCustomer(IntegryCustomer.RossoGargano)){
String sql1 = "INSERT INTO stb_activity_type (activity_type_id, estimated_duration, cod_jfas, user_name, flag_tipologia, link_gest, flag_attiva, flag_sal, flag_set_alarm, flag_generate_mov, flag_view_calendar) VALUES (N'ACCETTAZIONE_DA_RACCOLTA', 0, N'RACC', DEFAULT, N'A', N'ACCETTAZIONE', N'S', DEFAULT, DEFAULT, DEFAULT, DEFAULT)";
String sql2 = "INSERT INTO stb_activity_type (activity_type_id, estimated_duration, cod_jfas, user_name, flag_tipologia, link_gest, flag_attiva, flag_sal, flag_set_alarm, flag_generate_mov, flag_view_calendar) VALUES (N'NOTE_VERSAMENTO', 0, N'RIBLT', DEFAULT, N'A', N'LAVORAZIONE', N'S', DEFAULT, DEFAULT, DEFAULT, DEFAULT)";
executeInsertStatement(sql1);
executeInsertStatement(sql2);
}
value = "NOTE_VERSAMENTO";
createSetup("PVM", "PIAN_ACC_ROSSG", "TIPO_ATTIVITA_VERSAMENTO", value, "Id tipo attività per note di scarico prodotto", false, null, false, false, false, false, false, null, false, "ACTIVITY_TYPE");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -214,8 +214,9 @@ public class LoadColliDTO {
return saveDoc;
}
public void setSaveDoc(boolean saveDoc) {
public LoadColliDTO setSaveDoc(boolean saveDoc) {
this.saveDoc = saveDoc;
return this;
}
public String getActivityId() {

View File

@@ -534,6 +534,12 @@ public class UtilityDB {
}
}
@Nullable
public static <T> T executePreparedStatementDTOOnlyFirstRow(Connection conn, PreparedStatement ps, Class<T> clazz) throws SQLException, DataConverterNotFoundException, InstantiationException, IllegalAccessException {
List<T> results = executePreparedStatementDTO(conn, ps, clazz, null);
return results == null || results.isEmpty() ? null : results.get(0);
}
public static String addTableFrom(String sqlString, String listTable) {
int li_subQuery;

View File

@@ -0,0 +1,52 @@
package it.integry.ems.production.dto;
import it.integry.ems_model.annotation.SqlField;
public class PvmAuthorizationDTO {
@SqlField("authorization_name")
private String authorizationName;
@SqlField("display_only")
private String displayOnly;
@SqlField("enabled")
private String enabled;
@SqlField("visible")
private String visible;
public String getAuthorizationName() {
return authorizationName;
}
public PvmAuthorizationDTO setAuthorizationName(String authorizationName) {
this.authorizationName = authorizationName;
return this;
}
public String getDisplayOnly() {
return displayOnly;
}
public PvmAuthorizationDTO setDisplayOnly(String displayOnly) {
this.displayOnly = displayOnly;
return this;
}
public String getEnabled() {
return enabled;
}
public PvmAuthorizationDTO setEnabled(String enabled) {
this.enabled = enabled;
return this;
}
public String getVisible() {
return visible;
}
public PvmAuthorizationDTO setVisible(String visible) {
this.visible = visible;
return this;
}
}

View File

@@ -15,6 +15,7 @@ public class AccettazioneOrtoFruttaDTO {
private LocalDateTime oraInizPrep;
private String idPesata;
private LocalDateTime dataVers;
private LocalDateTime dataIns;
private LocalDate dataOrd;
private Integer numOrd;
private Integer rigaOrd;
@@ -68,7 +69,9 @@ public class AccettazioneOrtoFruttaDTO {
private Integer numDoc;
private String codDtip;
private BigDecimal valUnt;
private boolean generaDocAcquisto = false;
private boolean flagCaricoVerificato = false;
private AccettazioneOrtoFruttaDTO original;
public String getGestione() {
@@ -594,15 +597,6 @@ public class AccettazioneOrtoFruttaDTO {
return this;
}
public boolean getGeneraDocAcquisto() {
return generaDocAcquisto;
}
public AccettazioneOrtoFruttaDTO setGeneraDocAcquisto(boolean generaDocAcquisto) {
this.generaDocAcquisto = generaDocAcquisto;
return this;
}
public String getSerDocProvv() {
return serDocProvv;
}
@@ -629,4 +623,31 @@ public class AccettazioneOrtoFruttaDTO {
this.idPesata = idPesata;
return this;
}
public LocalDateTime getDataIns() {
return dataIns;
}
public AccettazioneOrtoFruttaDTO setDataIns(LocalDateTime dataIns) {
this.dataIns = dataIns;
return this;
}
public boolean getFlagCaricoVerificato() {
return flagCaricoVerificato;
}
public AccettazioneOrtoFruttaDTO setFlagCaricoVerificato(boolean flagCaricoVerificato) {
this.flagCaricoVerificato = flagCaricoVerificato;
return this;
}
public AccettazioneOrtoFruttaDTO getOriginal() {
return original;
}
public AccettazioneOrtoFruttaDTO setOriginal(AccettazioneOrtoFruttaDTO original) {
this.original = original;
return this;
}
}

View File

@@ -1356,14 +1356,16 @@ public class MesProductionServiceV2 {
default:
command = null;
}
if (command != null) {
HashMap<String, Object> body = new HashMap<>();
Integer idLotto = jtbLott != null ? jtbLott.getIdLotto() : Integer.parseInt(groupStepDTO.getIdLotto());
body.put("idLotto", idLotto);
body.put("codJfas", groupStepDTO.getCodJfas());
HashMap<String, Object> body = new HashMap<>();
Integer idLotto = jtbLott != null ? jtbLott.getIdLotto() : Integer.parseInt(groupStepDTO.getIdLotto());
body.put("idLotto", idLotto);
body.put("codJfas", groupStepDTO.getCodJfas());
ObjectMapper mapper = new ObjectMapper();
sendCommand(groupStepDTO.getCodJfas(), command, mapper.convertValue(body, JsonNode.class));
ObjectMapper mapper = new ObjectMapper();
sendCommand(groupStepDTO.getCodJfas(), command, mapper.convertValue(body, JsonNode.class));
}
}
@@ -1471,6 +1473,6 @@ public class MesProductionServiceV2 {
"WHERE jtb_lott.cod_jfas = " + UtilityDB.valueToString(codJfas) + "\n" +
" AND jtb_lott.id_lotto = " + UtilityDB.valueToString(idLotto) + "";
return UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(),sql,AttachmentDTO.class);
return UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, AttachmentDTO.class);
}
}

View File

@@ -30,6 +30,8 @@ import org.springframework.stereotype.Service;
import java.io.IOException;
import java.math.BigDecimal;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@@ -60,10 +62,10 @@ public class OrtoFruttaProductionService {
public List<EntityBase> accettazioneDaRaccoltaBatch(List<AccettazioneOrtoFruttaDTO> dtoList) throws Exception {
List<EntityBase> entities = new ArrayList<>();
for (AccettazioneOrtoFruttaDTO dto: dtoList){
for (AccettazioneOrtoFruttaDTO dto : dtoList) {
entities.add(accettazioneDaRaccolta(dto));
}
return entities;
return entities;
}
public EntityBase accettazioneDaRaccolta(AccettazioneOrtoFruttaDTO dto) throws Exception {
@@ -75,7 +77,30 @@ public class OrtoFruttaProductionService {
if (dto.getDataOrd() == null || dto.getNumOrd() == null)
throw new Exception("Ordine di raccolta non selezionato!");
String sql = "SELECT *\n" +
String codDtipAcqCar = setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(), "CRUSCOTTO_PRODUZIONE",
"SETUP",
"COD_DTIP_ACCETTAZIONE");
String serDocAcqCar = setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(), "CRUSCOTTO_PRODUZIONE",
"SETUP",
"SER_DOC_ACCETTAZIONE");
String codJfas = setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(), "w_lpianoprod_rc",
"SETUP",
"FASE_RACC");
if (UtilityString.isNullOrEmpty(dto.getSerDocProvv()))
dto.setSerDocProvv(serDocAcqCar);
if (UtilityString.isNullOrEmpty(dto.getCodDtipProvv()))
dto.setCodDtipProvv(codDtipAcqCar);
if (UtilityString.isNullOrEmpty(dto.getCodJfas())) {
dto.setCodJfas(codJfas);
}
//controllo se il DDT richiesto è già occupato da un altro certificato
String sql = "SELECT data_collo,ser_collo,num_collo,gestione\n" +
"FROM mtb_colt\n" +
"WHERE data_doc_provv = " + UtilityDB.valueDateToString(UtilityLocalDate.localDateToDate(dto.getDataDocProvv()), CommonConstants.DATE_FORMAT_YMD) + "\n" +
" AND num_doc_provv = " + UtilityDB.valueToString(dto.getNumDocProvv()) + "\n" +
@@ -87,43 +112,8 @@ public class OrtoFruttaProductionService {
throw new Exception("Il documento di trasporto inserito è già esistente!");
}
sql = "SELECT *\n" +
"FROM dtb_doct\n" +
"WHERE data_doc = " + UtilityDB.valueDateToString(UtilityLocalDate.localDateToDate(dto.getDataDocProvv()), CommonConstants.DATE_FORMAT_YMD) + "\n" +
" AND num_doc = " + UtilityDB.valueToString(dto.getNumDocProvv()) + "\n" +
" AND cod_anag = " + UtilityDB.valueToString(dto.getCodAnagProduttore()) + "\n" +
"AND cod_dtip = " + UtilityDB.valueToString(dto.getCodDtipProvv()) + "\n" +
"and ser_doc = " + UtilityDB.valueToString(dto.getSerDocProvv()) + "\n";
DtbDoct ddtE = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbDoct.class);
if (ddtE != null){
throw new Exception("Non è possibile modificare un arrivo il cui documento è già stato emesso!");
}
String codJfas = setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(), "w_lpianoprod_rc",
"SETUP",
"FASE_RACC");
String codDtipAcqCar = setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(), "CRUSCOTTO_PRODUZIONE",
"SETUP",
"COD_DTIP_ACCETTAZIONE");
String serDocAcqCar = setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(), "CRUSCOTTO_PRODUZIONE",
"SETUP",
"SER_DOC_ACCETTAZIONE");
if (UtilityString.isNullOrEmpty(dto.getCodDtipProvv())) {
dto.setCodDtipProvv(codDtipAcqCar);
}
if (UtilityString.isNullOrEmpty(dto.getSerDocProvv())) {
dto.setSerDocProvv(serDocAcqCar);
}
if (UtilityString.isNullOrEmpty(dto.getCodJfas())) {
dto.setCodJfas(codJfas);
}
MtbColt collo;
//creo collo base se non esiste
if (UtilityInteger.isNullOrZero(dto.getNumCollo())) {
CaricoProdottoFinitoDTO createColloDto = new CaricoProdottoFinitoDTO();
createColloDto
@@ -140,7 +130,6 @@ public class OrtoFruttaProductionService {
completeDatiCollo(collo);
}
String activityId = collo.getActivityId();
@@ -148,7 +137,7 @@ public class OrtoFruttaProductionService {
if (activityId == null) {
StbActivity activity = new StbActivity()
.setFlagTipologia("A")
.setActivityTypeId("ACCETTAZIONE")
.setActivityTypeId("ACCETTAZIONE_DA_RACCOLTA")
.setUserName(requestDataDTO.getUsername());
activity.setOperation(OperationType.INSERT);
@@ -157,8 +146,6 @@ public class OrtoFruttaProductionService {
}
//Genero testata certificato di lavoro
String codDtipLavCar = setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(), "CRUSCOTTO_PRODUZIONE",
"SETUP",
"COD_DTIP_CAR");
@@ -207,15 +194,12 @@ public class OrtoFruttaProductionService {
.setPesoNettoKg(BigDecimal.ZERO)
.setOperation(OperationType.INSERT_OR_UPDATE);
if (setupGest.getSetupBoolean("PVM","PIAN_ACC_ROSSG","NUM_DOC_AS_BARCODE")){
if (setupGest.getSetupBoolean("PVM", "PIAN_ACC_ROSSG", "NUM_DOC_AS_BARCODE")) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yy");
collo.setBarcodeUl(dateFormat.format(UtilityLocalDate.localDateToDate(collo.getDataCollo())) + String.format("%06d", docLav.getNumDoc()));
}
collo.setOraInizPrep(UtilityLocalDate.localDateTimeToDate(dto.getOraInizPrep(), null));
if (!UtilityBigDecimal.isNullOrZero(dto.getQtaCol()))
collo.setOraFinePrep(new Date());
collo.setDataVers(UtilityLocalDate.localDateTimeToDate(dto.getDataVers(), null));
MtbColr row = collo.getMtbColr().stream().filter(x -> x.getCodMart().equalsIgnoreCase(dto.getCodMart())).findFirst().orElse(new MtbColr());
if (row.getNumOrd() == null) {
@@ -231,7 +215,6 @@ public class OrtoFruttaProductionService {
else
row.setQtaCnf(dto.getQtaCnf());
sql = "SELECT art_tcol.* from mtb_aart " +
" inner join mtb_tcol on mtb_tcol.cod_tcol = mtb_aart.cod_tcol_UI " +
" inner join mtb_aart art_tcol on art_tcol.cod_mart = mtb_tcol.cod_mart " +
@@ -313,35 +296,33 @@ public class OrtoFruttaProductionService {
}
// if (!UtilityBigDecimal.isNullOrZero(dto.getQtaCol())) {
List<MtbColt> lista = new ArrayList<>();
lista.add(collo);
LoadColliDTO loadColliDTO = new LoadColliDTO();
loadColliDTO
.setCodDtip(docLav.getCodDtip())
.setCodAnag(docLav.getCodAnag())
.setSerDoc(docLav.getSerDoc())
.setDataDoc(docLav.getDataDoc())
.setNumDoc(docLav.getNumDoc())
.setCodMdep(docLav.getCodMdep())
.setColli(lista);
docLav = loadColliService.createDocFromColli(multiDBTransactionManager, loadColliDTO);
entityProcessor.processEntity(docLav,true, multiDBTransactionManager);
UtilityEntity.throwEntityException(docLav);
// }
List<MtbColt> lista = new ArrayList<>();
lista.add(collo);
LoadColliDTO loadColliDTO = new LoadColliDTO();
loadColliDTO
.setCodDtip(docLav.getCodDtip())
.setCodAnag(docLav.getCodAnag())
.setSerDoc(docLav.getSerDoc())
.setDataDoc(docLav.getDataDoc())
.setNumDoc(docLav.getNumDoc())
.setCodMdep(docLav.getCodMdep())
.setColli(lista);
docLav = loadColliService.createDocFromColli(multiDBTransactionManager, loadColliDTO);
entityProcessor.processEntity(docLav, true, multiDBTransactionManager);
UtilityEntity.throwEntityException(docLav);
//alla creazione della bolla (DDT) creare documento di acquisto e scarico di materiale alla pianta
if (!UtilityBigDecimal.isNullOrZero(dto.getQtaCol()) && !UtilityBigDecimal.isNullOrZero(dto.getPrezzoFinale()) && dto.getGeneraDocAcquisto()) {
DtbOrdr ordAcq = getOrdineAcquistoCollegato(dto.getGestione(),UtilityLocalDate.localDateToDate(dto.getDataOrd()),dto.getNumOrd());
DtbDoct ddt = generaDdtAcq(dto,ordAcq,activityId);
DtbDoct slav = generaScaricoLav(dto,ordAcq,activityId);
if (!UtilityBigDecimal.isNullOrZero(dto.getQtaCol()) && !UtilityBigDecimal.isNullOrZero(dto.getPrezzoFinale())) {
DtbOrdr ordAcq = getOrdineAcquistoCollegato(dto.getGestione(), UtilityLocalDate.localDateToDate(dto.getDataOrd()), dto.getNumOrd());
DtbDoct ddt = generaDdtAcq(dto, ordAcq, activityId);
DtbDoct slav = generaScaricoLav(dto, ordAcq, activityId);
}
return collo;
}
private DtbOrdr getOrdineAcquistoCollegato(String gestione, Date dataOrd,Integer numOrd ) throws Exception {
private DtbOrdr getOrdineAcquistoCollegato(String gestione, Date dataOrd, Integer numOrd) throws Exception {
String sql = "WITH ordrLav AS (SELECT dtb_ordr.data_ord,\n" +
" dtb_ordr.gestione,\n" +
" dtb_ordr.num_ord,\n" +
@@ -355,7 +336,7 @@ public class OrtoFruttaProductionService {
" INNER JOIN mtb_aart ON dtb_ordr.cod_mart = mtb_aart.cod_mart AND mtb_aart.cod_mgrp = 'MP'\n" +
" WHERE dtb_ordr.data_ord = " + UtilityDB.valueDateToString(dataOrd, CommonConstants.DATE_FORMAT_YMD) + "\n" +
" AND dtb_ordr.num_ord = " + UtilityDB.valueToString(numOrd) + "\n" +
" AND dtb_ordr.gestione = "+UtilityDB.valueToString(gestione)+")\n" +
" AND dtb_ordr.gestione = " + UtilityDB.valueToString(gestione) + ")\n" +
"SELECT dtb_ordr.*\n" +
"FROM dtb_ordr\n" +
" INNER JOIN dtb_ordt ON dtb_ordt.data_ord = dtb_ordr.data_ord AND\n" +
@@ -365,7 +346,7 @@ public class OrtoFruttaProductionService {
" ordrLav.partita_mag = dtb_ordr.partita_mag AND dtb_ordt.cod_anag = ordrLav.cod_anag\n" +
"WHERE dtb_ordt.gestione = 'A'";
return UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbOrdr.class);
return UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbOrdr.class);
}
private DtbDoct generaScaricoLav(AccettazioneOrtoFruttaDTO dto, DtbOrdr ordAcq, String activityId) throws Exception {
@@ -378,12 +359,12 @@ public class OrtoFruttaProductionService {
"SETUP",
"SER_DOC_SCAR");
String sql = "SELECT riga_ord from dtb_ordr where gestione = "+UtilityDB.valueToString(dto.getGestione())+" " +
" and data_ord ="+UtilityDB.valueToString(dataOrd)+" " +
"AND num_ord = "+UtilityDB.valueToString(dto.getNumOrd())+" "+
"AND cod_mart = "+UtilityDB.valueToString(ordAcq.getCodMart())+" "+
"AND partita_mag = "+UtilityDB.valueToString(ordAcq.getPartitaMag());
Integer rigaOrd = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(),sql);
String sql = "SELECT riga_ord from dtb_ordr where gestione = " + UtilityDB.valueToString(dto.getGestione()) + " " +
" and data_ord =" + UtilityDB.valueToString(dataOrd) + " " +
"AND num_ord = " + UtilityDB.valueToString(dto.getNumOrd()) + " " +
"AND cod_mart = " + UtilityDB.valueToString(ordAcq.getCodMart()) + " " +
"AND partita_mag = " + UtilityDB.valueToString(ordAcq.getPartitaMag());
Integer rigaOrd = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
DtbDoct ddt = new DtbDoct();
ddt.setOperation(OperationType.INSERT);
@@ -420,8 +401,23 @@ public class OrtoFruttaProductionService {
}
private DtbDoct generaDdtAcq(AccettazioneOrtoFruttaDTO dto, DtbOrdr ordAcq, String activityId) throws Exception {
DtbDoct ddt = new DtbDoct();
ddt.setOperation(OperationType.INSERT);
DtbDoct ddt;
String sql = Query.format("SELECT * from dtb_doct where data_doc = %s and num_doc = %s AND ser_doc = %s and cod_anag = %s AND cod_dtip = %s and activity_id = %s ",
dto.getDataDocProvv(), dto.getNumDocProvv(), dto.getSerDocProvv(), dto.getCodAnagProduttore(), dto.getCodDtipProvv(), activityId);
PreparedStatement ps = multiDBTransactionManager.getPrimaryConnection().prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ddt = UtilityDB.executePreparedStatementDTOOnlyFirstRow(multiDBTransactionManager.getPrimaryConnection(),ps,DtbDoct.class);
if (ddt != null){
DtbDocr rowsDocLav = new DtbDocr();
rowsDocLav.deleteAllEntities(multiDBTransactionManager.getPrimaryConnection(), ddt);
ddt.setOperation(OperationType.UPDATE);
} else {
ddt = new DtbDoct();
ddt.setOperation(OperationType.INSERT);
}
ddt
.setActivityId(activityId)
.setCodDtip(dto.getCodDtipProvv())
@@ -443,23 +439,12 @@ public class OrtoFruttaProductionService {
.setRigaOrd(ordAcq.getRigaOrd())
.setQtaDoc(dto.getQtaCol())
.setValUnt(dto.getPrezzoFinale())
.setSconto8(dto.getTassoRiduzione())
.setOperation(OperationType.INSERT);
if (!UtilityBigDecimal.isNullOrZero(dto.getTassoRiduzione()))
rowPlus.setNote("SCARTO: "+dto.getTassoRiduzione()+"%");
ddt.getDtbDocr().add(rowPlus);
if (!UtilityBigDecimal.isNullOrZero(dto.getScarto())) {
DtbDocr rowMinus = new DtbDocr();
rowMinus
.setCodMart(ordAcq.getCodMart())
.setPartitaMag(ordAcq.getPartitaMag())
.setDataOrd(ordAcq.getDataOrd())
.setNumOrd(ordAcq.getNumOrd())
.setRigaOrd(ordAcq.getRigaOrd())
.setQtaDoc(dto.getScarto().multiply(BigDecimal.valueOf(-1)))
.setValUnt(dto.getPrezzoFinale())
.setNote("SCARTO")
.setOperation(OperationType.INSERT);
ddt.getDtbDocr().add(rowMinus);
}
entityProcessor.processEntity(ddt, true, multiDBTransactionManager);
UtilityEntity.throwEntityException(ddt);
return ddt;

View File

@@ -408,8 +408,8 @@ public class PvmController {
@RequestMapping(value = "checkDocReso", method = RequestMethod.POST)
public @ResponseBody
ServiceRestResponse checkDocReso(HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
@RequestBody DocFromPickingDTO docFromPickingDTO) throws Exception {
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
@RequestBody DocFromPickingDTO docFromPickingDTO) throws Exception {
if (!userSession.isAttivo()) {
throw new UsernameNotFoundException("Utente " + requestDataDTO.getUsername() + " non riconoscuto!");
}
@@ -784,4 +784,16 @@ public class PvmController {
return ServiceRestResponse.createNegativeResponse(e);
}
}
@RequestMapping(value = "pvm/gestione/{section}/permessi", method = RequestMethod.POST)
public @ResponseBody
ServiceRestResponse retrieveUserAuthorizations(@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
@PathVariable String section) throws Exception {
return ServiceRestResponse.createPositiveResponse(pvmService.getAuthorizations(section));
}
}

View File

@@ -19,6 +19,7 @@ import it.integry.ems.order.dto.UserGroupENUM;
import it.integry.ems.product.dto.CategorieCostoProdottoDTO;
import it.integry.ems.product.dto.CostoProdottoDTO;
import it.integry.ems.product.dto.TipoCosto;
import it.integry.ems.production.dto.PvmAuthorizationDTO;
import it.integry.ems.properties.EmsProperties;
import it.integry.ems.report.dto.JasperDTO;
import it.integry.ems.report.dto.PairsDTO;
@@ -3764,4 +3765,17 @@ public class PvmService {
}
}
}
public List<PvmAuthorizationDTO> getAuthorizations(String section) throws Exception {
String username = requestDataDTO.getUsername();
String sql = "SELECT dw_colname AS authorization_name, display_only, enabled, visible\n" +
"FROM stb_edit_limit\n" +
"WHERE gest_name = 'PVM'\n" +
" AND dw_name = "+UtilityDB.valueToString(section)+"\n" +
" AND user_name = "+ UtilityDB.valueToString(username)+" ";
return UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, PvmAuthorizationDTO.class);
}
}

View File

@@ -5,13 +5,19 @@ import it.integry.ems.retail.wms.dto.InsertUDSRowRequestDTO;
import it.integry.ems.retail.wms.generic.dto.MagazzinoBufferVersamentoMaterialeCloseRequestDTO;
import it.integry.ems.retail.wms.generic.dto.MagazzinoBufferVersamentoMaterialeRequestDTO;
import it.integry.ems.retail.wms.lavorazione.service.WMSLavorazioneService;
import it.integry.ems.rules.businessLogic.LoadColliService;
import it.integry.ems.rules.businessLogic.dto.LoadColliDTO;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.config.EmsRestConstants;
import it.integry.ems_model.entity.MtbColr;
import it.integry.ems_model.entity.MtbColt;
import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.UtilityBigDecimal;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityDate;
import it.integry.ems_model.utility.UtilityLocalDate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
@@ -21,6 +27,8 @@ import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
@Service
@@ -36,6 +44,11 @@ public class WMSMagazzinoBufferService {
@Autowired
private EntityProcessor entityProcessor;
@Autowired
private LoadColliService loadColliService;
@Autowired
private SetupGest setupGest;
public boolean isVersamentoStarted(MagazzinoBufferVersamentoMaterialeRequestDTO magazzinoBufferVersamentoMaterialeRequestDTO, String posizione) throws Exception {
@@ -64,7 +77,9 @@ public class WMSMagazzinoBufferService {
throw new Exception("C'è già un versamento attivo su questa posizione");
MtbColt mtbColtRef = magazzinoBufferVersamentoMaterialeRequestDTO.getInputMtbColt();
mtbColtRef.setOraInizPrep(new Date())
.setOraFinePrep(EmsRestConstants.DATE_NULL)
.setOperation(OperationType.UPDATE);
String sql = "SELECT TOP 1 * " +
" FROM mvw_sitart_udc_det_inventario " +
" WHERE num_collo = " + UtilityDB.valueToString(mtbColtRef.getNumCollo()) +
@@ -92,6 +107,9 @@ public class WMSMagazzinoBufferService {
.setNumCnf(BigDecimal.ZERO)
.setQtaCnf(udcMtbColr.getQtaCnf())
.setPartitaMag(udcMtbColr.getPartitaMag()));
entityProcessor.processEntity(mtbColtRef,true,multiDBTransactionManager);
}
@@ -148,6 +166,12 @@ public class WMSMagazzinoBufferService {
.setOperation(OperationType.UPDATE);
mtbColrsToSave.add(udsMtbColr);
List<EntityBase> entityList = new ArrayList<>();
mtbColtRef
.setOraFinePrep(UtilityLocalDate.localDateTimeToDate(endDateTime))
.setOperation(OperationType.UPDATE);
entityList.add(mtbColtRef);
for (int i = 0; i < totalNumCnf - 1; i++) {
final MtbColr clone = (MtbColr) udsMtbColr.clone();
@@ -165,7 +189,15 @@ public class WMSMagazzinoBufferService {
.setMtbColr(mtbColrsToSave);
mtbColtToUpdate
.setOperation(OperationType.UPDATE);
entityList.add(mtbColtToUpdate);
entityProcessor.processEntity(mtbColtToUpdate, multiDBTransactionManager);
entityProcessor.processEntityList(entityList, multiDBTransactionManager,true);
LoadColliDTO loadColliDTO = new LoadColliDTO()
.setCodDtip(setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(),"W_PORDI_RC","SETUP_DOCUMENTI","COD_DTIP_SCAR"))
.setCodMdep(mtbColtToUpdate.getCodMdep())
.setSaveDoc(true)
.setColli(Collections.singletonList(mtbColtToUpdate));
loadColliService.createDocFromColli(multiDBTransactionManager,loadColliDTO);
}
}