Finish Hotfix-1

This commit is contained in:
2024-09-17 13:03:30 +02:00
14 changed files with 1356 additions and 152 deletions

View File

@@ -0,0 +1,97 @@
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;
import it.integry.ems_model.entity.AtbForn;
import it.integry.ems_model.entity.MtbAart;
import it.integry.ems_model.entity.VtbClie;
import it.integry.ems_model.entity.WtbUsers;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.UtilityDB;
import java.sql.PreparedStatement;
import java.util.ArrayList;
import java.util.List;
public class Migration_20240828094457 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
String val = null;
if (isCustomer(IntegryCustomer.Tosca)) {
val = "01";
}
createSetup("EDGE_CONN", "SETUP", "COD_ATIP_MP", val, "Codice tipo fornitore materia prima (cassette tbw)", "COD_ATIP");
if (!isCustomer(IntegryCustomer.Tosca))
return;
String sql = "SELECT * from vtb_clie";
List<VtbClie> listaClienti = UtilityDB.executeSimpleQueryDTO(advancedDataSource.getConnection(), sql, VtbClie.class);
if (listaClienti.isEmpty())
return;
for (VtbClie clie : listaClienti) {
AtbForn forn = new AtbForn();
forn
.setCodAnag(clie.getCodAnag())
.setCodAtip(val)
.setOperation(OperationType.INSERT);
clie
.setOperation(OperationType.DELETE);
forn.manageWithParentConnection(advancedDataSource.getConnection(), droolsDataCompleting);
clie.manageWithParentConnection(advancedDataSource.getConnection(), droolsDataCompleting);
}
List<String> queryDiacod = new ArrayList<>();
//WOOD
queryDiacod.add("UPDATE mtb_aart SET diacod = N'934' WHERE cod_mart = N'RPC416AW'");
queryDiacod.add("UPDATE mtb_aart SET diacod = N'935' WHERE cod_mart = N'RPC416WW'");
queryDiacod.add("UPDATE mtb_aart SET diacod = N'937' WHERE cod_mart = N'RPC4311SW'");
queryDiacod.add("UPDATE mtb_aart SET diacod = N'942' WHERE cod_mart = N'RPC611AW'");
queryDiacod.add("UPDATE mtb_aart SET diacod = N'943' WHERE cod_mart = N'RPC613AW'");
queryDiacod.add("UPDATE mtb_aart SET diacod = N'944' WHERE cod_mart = N'RPC616AW'");
queryDiacod.add("UPDATE mtb_aart SET diacod = N'946' WHERE cod_mart = N'RPC619AW'");
queryDiacod.add("UPDATE mtb_aart SET diacod = N'947' WHERE cod_mart = N'RPC622AW'");
queryDiacod.add("UPDATE mtb_aart SET diacod = N'948' WHERE cod_mart = N'RPC623AW'");
//GREEN
queryDiacod.add("UPDATE mtb_aart SET diacod = N'936' WHERE cod_mart = N'RPC4311'");
queryDiacod.add("UPDATE mtb_aart SET diacod = N'939' WHERE cod_mart = N'RPC4317'");
queryDiacod.add("UPDATE mtb_aart SET diacod = N'950' WHERE cod_mart = N'RPC6411'");
queryDiacod.add("UPDATE mtb_aart SET diacod = N'952' WHERE cod_mart = N'RPC6416'");
queryDiacod.add("UPDATE mtb_aart SET diacod = N'955' WHERE cod_mart = N'RPC6419'");
queryDiacod.add("UPDATE mtb_aart SET diacod = N'958' WHERE cod_mart = N'RPC6423'");
//MEAT
queryDiacod.add("UPDATE mtb_aart SET diacod = N'1501' WHERE cod_mart = N'RPC4317M'");
queryDiacod.add("UPDATE mtb_aart SET diacod = N'1850' WHERE cod_mart = N'RPC6411M'");
queryDiacod.add("UPDATE mtb_aart SET diacod = N'957' WHERE cod_mart = N'RPC6419M'");
queryDiacod.add("INSERT INTO mtb_depo_intercode (cod_forn, intercode, cod_mdep, user_name, cod_vdes, email_ordine) VALUES (N'F0000', N'ACC-00048931',N'CE',NULL, N'01', null);");
queryDiacod.add("INSERT INTO mtb_depo_intercode (cod_forn, intercode, cod_mdep, user_name, cod_vdes, email_ordine) VALUES (N'F0000', N'ACC-00063682',N'RM',NULL, N'02', null);");
queryDiacod.add("INSERT INTO mtb_depo_intercode (cod_forn, intercode, cod_mdep, user_name, cod_vdes, email_ordine) VALUES (N'F0000', N'ACC-00053786',N'MI',NULL, N'03', null);");
queryDiacod.add("INSERT INTO mtb_depo_intercode (cod_forn, intercode, cod_mdep, user_name, cod_vdes, email_ordine) VALUES (N'F0000', N'ACC-00060042',N'RG',NULL, N'04', null);");
queryDiacod.add("INSERT INTO mtb_depo_intercode (cod_forn, intercode, cod_mdep, user_name, cod_vdes, email_ordine) VALUES (N'F0000', N'ACC-00055852',N'VR',NULL, N'05', null);");
queryDiacod.add("INSERT INTO mtb_depo_intercode (cod_forn, intercode, cod_mdep, user_name, cod_vdes, email_ordine) VALUES (N'F0000', N'ACC-00069093',N'BA',NULL, N'06', null);");
queryDiacod.add("INSERT INTO mtb_depo_intercode (cod_forn, intercode, cod_mdep, user_name, cod_vdes, email_ordine) VALUES (N'F0000', N'ACC-00069743',N'CZ',NULL, N'07', null);");
queryDiacod.add("INSERT INTO mtb_depo_intercode (cod_forn, intercode, cod_mdep, user_name, cod_vdes, email_ordine) VALUES (N'F0000', N'ACC-00063683',N'FC',NULL, N'08', null);");
for (String updateDiacodSql : queryDiacod) {
PreparedStatement updateDefaultFlagPS = advancedDataSource.getConnection().prepareStatement(updateDiacodSql);
updateDefaultFlagPS.setQueryTimeout(30);
updateDefaultFlagPS.executeUpdate();
updateDefaultFlagPS.close();
}
}
@Override
public void down() throws Exception {
}
}

View File

@@ -6,11 +6,13 @@ import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellUtil;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.sql.Timestamp;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
public class UtilityExcel {
@@ -93,6 +95,10 @@ public class UtilityExcel {
*/
public static Iterator<Row> readXlsxFile(ImportRequestDTO requestDTO, boolean ignoreHeader) throws Exception {
InputStream stream = new ByteArrayInputStream(Base64.decodeBase64(requestDTO.getRawContentB64()));
return readXlsxFile(stream,ignoreHeader);
}
public static Iterator<Row> readXlsxFile(InputStream stream, boolean ignoreHeader) throws Exception {
OPCPackage pkg = OPCPackage.open(stream);
Workbook workbook = new XSSFWorkbook(pkg);

View File

@@ -14,6 +14,7 @@ public class EmsCustomRestConstants {
*/
public static final String PATH_TOSCA_CLOSE_OPENED_STEPS = "closeOpenedSteps";
public static final String PATH_TOSCA_SWITCH_ORDINE_LAVORO = "switchOrdineLavoro";
public static final String PATH_TOSCA_IMPORT_SALES_ORDERS = "importOrdiniVendita";
public static final String PATH_TOSCA_MIGRATE_UL_TRASFERITE = "migrateUlTrasferite";
@@ -30,6 +31,6 @@ public class EmsCustomRestConstants {
/**
* ROSSO GARGANO
*/
public static final String PATH_ROSSO_GARGANO_CAMBIO_LOTTO_PROD = "cambioLottoProd";
public static final String PATH_ROSSO_GARGANO_SYNC_CERTIFICATI_VALORIZZATI = "syncCertificatiValorizzati";
}

View File

@@ -16,7 +16,7 @@ import javax.servlet.http.HttpServletRequest;
@RestController
@Scope(value = "request")
@RequestMapping("rossogargano/mes")
@RequestMapping("rossogargano")
public class RossoGarganoProductionController {
private final Logger logger = LogManager.getLogger();
@@ -28,12 +28,16 @@ public class RossoGarganoProductionController {
public MultiDBTransactionManager multiDBTransactionManager;
@RequestMapping(value = EmsCustomRestConstants.PATH_ROSSO_GARGANO_CAMBIO_LOTTO_PROD, method = RequestMethod.POST)
@RequestMapping(value = EmsCustomRestConstants.PATH_ROSSO_GARGANO_SYNC_CERTIFICATI_VALORIZZATI, method = RequestMethod.POST)
public @ResponseBody
ServiceRestResponse cambioLottoProduzione(HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String profileDB) {
ServiceRestResponse syncCertificati(HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
@RequestParam("externalProfileDb") String externalProfileDB)
{
try {
rossoGarganoProductionService.cambioLottoProduzione();
rossoGarganoProductionService.syncCertificati(externalProfileDB);
return ServiceRestResponse.createPositiveResponse();
} catch (Exception e) {

View File

@@ -1,12 +1,31 @@
package it.integry.ems.customizations.production.service;
import it.integry.ems.production.dto.ortofrutta.AccettazioneOrtoFruttaDTO;
import it.integry.ems.production.service.MesProductionServiceV2;
import it.integry.ems.production.service.OrtoFruttaProductionService;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.system.exchange.dto.CertificatiValorizzatiDTO;
import it.integry.ems.system.exchange.service.ExchangeImportDataManagerService;
import it.integry.ems.system.exchange.service.ExchangeImportSchemaManagerService;
import it.integry.ems_model.base.EquatableEntityInterface;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.Query;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityLocalDate;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import java.sql.Connection;
import java.time.LocalDate;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
@Service
@Scope("request")
public class RossoGarganoProductionService {
@@ -20,130 +39,340 @@ public class RossoGarganoProductionService {
@Autowired
private MesProductionServiceV2 mesProductionServiceV2;
public void cambioLottoProduzione() throws Exception {
@Autowired
private ExchangeImportSchemaManagerService exchangeImportSchemaManagerService;
// Date dataOrd = new Date();
@Autowired
private ExchangeImportDataManagerService exchangeImportDataManagerService;
@Autowired
private OrtoFruttaProductionService ortoFruttaProductionService;
private final Logger logger = LogManager.getLogger();
public void syncCertificati(String externalProfileDb) throws Exception {
try (MultiDBTransactionManager externalTransactionManager = new MultiDBTransactionManager(externalProfileDb)) {
importaValorizzazioniCertificati(externalTransactionManager);
}
}
public void importaValorizzazioniCertificati(MultiDBTransactionManager exchangeDb) throws Exception {
try {
exchangeImportSchemaManagerService.syncSchema(exchangeDb.getPrimaryConnection(), ExchangeImportSchemaManagerService.SchemaType.ValorizzazioneCertificati, true);
final List<CertificatiValorizzatiDTO> exchangeCertificatiOld = retrieveCertificatiValorizzati(
exchangeDb.getPrimaryConnection(),
UtilityLocalDate.getNow().minusMonths(4),
true, false);
final List<CertificatiValorizzatiDTO> exchangeCertificatiNew = retrieveCertificatiValorizzati(
exchangeDb.getPrimaryConnection(),
UtilityLocalDate.getNow().minusMonths(4),
false, true);
List<EquatableEntityInterface> allData = exchangeImportDataManagerService
.runSync(CertificatiValorizzatiDTO.class, exchangeCertificatiOld, exchangeCertificatiNew);
if (allData == null || allData.isEmpty())
return;
allData = allData.stream().filter(x -> !x.getOperation().equals(OperationType.DELETE)).collect(Collectors.toList());
final Exception[] firstExceptionToThrow = {null};
final AtomicInteger[] importedCounter = {new AtomicInteger()};
for (EquatableEntityInterface dataToSave : allData) {
CertificatiValorizzatiDTO cert = (CertificatiValorizzatiDTO) dataToSave;
try {
//
// String sql = "SELECT cod_anag FROM " + MtbDepo.ENTITY + " WHERE cod_mdep = " + UtilityDB.valueToString(codMdep);
// String codAnag = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
//
// sql = "SELECT ISNULL(MAX(num_ord), -1) FROM " + DtbOrdt.ENTITY + " " +
// "WHERE gestione = 'L' " +
// "AND cod_anag = " + UtilityDB.valueToString(codAnag) + " " +
// "AND cod_jfas = " + UtilityDB.valueToString(codJfas) + " " +
// "AND data_ord = " + UtilityDB.valueToString(dataOrd);
//
// Integer numOrd = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
//
// List<DtbOrdSteps> openedSteps = mesProductionServiceV2.getOpenedSteps(codJfas);
//
// if (openedSteps != null) {
// for (DtbOrdSteps dtbOrdStep : openedSteps) {
// mesProductionServiceV2.closeStep(dtbOrdStep.getDataOrd(), dtbOrdStep.getNumOrd(), dtbOrdStep.getGestione(), codJfas, dtbOrdStep.getIdStep(), dtbOrdStep.getIdRiga());
// }
// }
//
// sql = "SELECT data_ord, num_ord, gestione " +
// "FROM dtb_ordt " +
// "WHERE num_ord <> " + UtilityDB.valueToString(numOrd) + " and flag_evaso_forzato <> 'S' and flag_evaso_prod <> 'E' AND cod_jfas = " + UtilityDB.valueToString(codJfas);
// List<DtbOrdt> dtbOrdtsToClose = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbOrdt.class);
//
// if (dtbOrdtsToClose != null && !dtbOrdtsToClose.isEmpty()) {
// for (DtbOrdt dtbOrdtToClose : dtbOrdtsToClose) {
// dtbOrdtToClose
// .setFlagEvasoProd("E")
// .setFlagEvasoForzato("S");
//
// dtbOrdtToClose.setOperation(OperationType.UPDATE);
// entityProcessor.processEntity(dtbOrdtToClose, false, multiDBTransactionManager);
// }
// }
//
//
// String sqlLastWorkedOrder = "SELECT TOP 1 note, descrizione_attivita, num_ord, data_ord\n" +
// "FROM dtb_ord_steps\n" +
// "WHERE gestione = 'L'\n" +
// " AND cod_jfas = " + UtilityDB.valueToString(codJfas) +
// " ORDER BY data_ord DESC, num_ord DESC, id_riga desc";
// final HashMap<String, Object> stringObjectHashMap = UtilityDB.executeSimpleQueryOnlyFirstRow(multiDBTransactionManager.getPrimaryConnection(), sqlLastWorkedOrder);
// String lastFormato = UtilityHashMap.getValueIfExists(stringObjectHashMap, "descrizione_attivita");
// String lastTurno = UtilityHashMap.getValueIfExists(stringObjectHashMap, "note");
//
// /*lastFormato = null;
// lastFormato = "WOOD";
// lastFormato = "GREEN";
//
//
// formato = null;
// formato = "WOOD";
// formato = "GREEN";*/
//
// boolean rotateTurno = formato == null || (lastFormato != null && lastFormato.equalsIgnoreCase(formato));
//
// if (!rotateTurno) lastFormato = formato;
//
// DtbOrdt dtbOrdtToInsert = new DtbOrdt()
// .setCodMdep(codMdep)
// .setCodAnag(codAnag)
// .setDataOrd(dataOrd)
// .setCodJfas(codJfas)
// .setGestione("L")
// .setQtaProd(BigDecimal.ONE)
// .setRapConvProd(BigDecimal.ONE)
// .setDtbOrdr(new ArrayList<>())
// .setDtbOrdSteps(new ArrayList<>());
//
//
// DtbOrdSteps dtbOrdStep = new DtbOrdSteps()
// .setCodJfas(codJfas)
// .setDataIniz(dataOrd);
// dtbOrdStep.setOperation(OperationType.INSERT);
//
// Integer idRigaStep = 1;
// if (numOrd >= 0) {
// sql = "SELECT MAX(id_riga) FROM " + DtbOrdSteps.ENTITY +
// " WHERE gestione = 'L'" +
// " AND data_ord = " + UtilityDB.valueToString(dataOrd) +
// " AND num_ord = " + UtilityDB.valueToString(numOrd);
//
// idRigaStep = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
// dtbOrdStep.setIdStep(idRigaStep);
// int lastTurnoInt = Integer.parseInt(lastTurno.split(" ")[1]);
//
// if (rotateTurno) ++lastTurnoInt;
// dtbOrdStep.setNote("Turno " + lastTurnoInt);
// } else {
// DtbOrdSteps dtbOrdStepZero = new DtbOrdSteps()
// .setCodJfas(codJfas)
// .setIdStep(0);
//
// dtbOrdStepZero.setOperation(OperationType.INSERT);
// dtbOrdtToInsert.getDtbOrdSteps().add(dtbOrdStepZero);
//
// dtbOrdStep.setIdStep(1)
// .setNote("Turno " + idRigaStep);
// }
//
// dtbOrdStep.setDescrizioneAttivita(lastFormato);
//
// dtbOrdtToInsert.getDtbOrdSteps().add(dtbOrdStep);
// dtbOrdtToInsert.setOperation(OperationType.INSERT_OR_UPDATE);
//
// if (numOrd >= 0) dtbOrdtToInsert.setNumOrd(numOrd);
// else {
// DtbOrdr dtbOrdr = new DtbOrdr()
// .setCodJfas(codJfas)
// .setDataInizProd(dataOrd)
// .setQtaOrd(BigDecimal.ONE)
// .setNumCnf(BigDecimal.ONE)
// .setQtaCnf(BigDecimal.ONE)
// .setDescrizione("Cassette da lavare");
// dtbOrdr.setOperation(OperationType.INSERT);
//
// dtbOrdtToInsert.getDtbOrdr().add(dtbOrdr);
// }
//
// entityProcessor.processEntity(dtbOrdtToInsert, multiDBTransactionManager);
if (!syncCertificato(cert))
continue;
updateCertificatoImported(exchangeDb.getPrimaryConnection(), cert, true);
multiDBTransactionManager.commitAll();
exchangeDb.commitAll();
logger.debug("Sincronizzati {} certificati di {}", importedCounter[0].incrementAndGet(), allData.size());
} catch (Exception ex) {
if (firstExceptionToThrow[0] == null) firstExceptionToThrow[0] = ex;
logger.error("Errore durante la sincronizzazione del certificato n. " + cert.getNumDoc() + " del " + UtilityDB.valueToString(cert.getDataDoc()), ex);
multiDBTransactionManager.rollbackAll();
}
}
if (firstExceptionToThrow[0] != null) throw firstExceptionToThrow[0];
} finally {
exchangeImportSchemaManagerService.deleteTempTables(exchangeDb.getPrimaryConnection(), ExchangeImportSchemaManagerService.SchemaType.ValorizzazioneCertificati);
}
}
private boolean syncCertificato(CertificatiValorizzatiDTO cert) throws Exception {
AccettazioneOrtoFruttaDTO original = getOriginalAccettazione(cert);
if (original == null)
return false;
AccettazioneOrtoFruttaDTO dto = original.clone();
dto
.setCodAnag(cert.getCodAnag())
.setCodVdes(cert.getCodVdes())
.setPrezzoFinale(cert.getValUnt())
.setValUnt(cert.getValUnt())
.setCodVzon(cert.getCodVzon())
.setScarto(cert.getScartoKg())
.setCnfRese(cert.getCasseRese())
.setNumCnf(cert.getCasseScaricate())
.setIndiceVariazione(cert.getIndiceVariazione())
.setTassoRiduzione(cert.getTassoRiduzione())
;
dto.setOriginal(original);
ortoFruttaProductionService.accettazioneDaRaccolta(dto);
return true;
}
private AccettazioneOrtoFruttaDTO getOriginalAccettazione(CertificatiValorizzatiDTO cert) throws Exception {
String sql = "WITH cod_mgrp_mp AS (SELECT 'MG' AS value),\n" +
" collo AS (SELECT mtb_colt.data_collo,\n" +
" mtb_colt.gestione,\n" +
" mtb_colt.ser_collo,\n" +
" mtb_colt.num_collo,\n" +
" mtb_colt.cod_mdep,\n" +
" mtb_colt.data_ord,\n" +
" mtb_colt.num_ord,\n" +
" mtb_colt.posizione,\n" +
" mtb_colt.activity_id,\n" +
" mtb_colt.cod_jfas,\n" +
" mtb_colt.data_vers,\n" +
" mtb_colt.ora_iniz_prep,\n" +
" mtb_colt.id_pesata,\n" +
" mtb_colt.ora_fine_prep,\n" +
" mtb_colr.cod_mart,\n" +
" mtb_colr.partita_mag,\n" +
" mtb_colt.peso_kg AS peso_lordo_camion,\n" +
" IIF(mtb_colt.peso_netto_kg = 0, mtb_colt.peso_kg,\n" +
" mtb_colt.peso_netto_kg) AS peso_netto_camion,\n" +
" IIF(mtb_colt.peso_netto_kg > 0, mtb_colt.peso_kg - mtb_colt.peso_netto_kg, 0) AS tara_camion,\n" +
" mtb_colr.peso_lordo_kg AS peso_lordo_pedane,\n" +
" mtb_colr.peso_netto_kg AS peso_netto_pedane,\n" +
" mtb_colr.peso_lordo_kg - mtb_colr.peso_netto_kg AS tara_pedane,\n" +
" mtb_colr.qta_col,\n" +
" mtb_colr.qta_cnf,\n" +
" mtb_colr.num_cnf,\n" +
" mtb_colt.num_doc_provv,\n" +
" mtb_colt.data_doc_provv,\n" +
" mtb_colt.cod_dtip_provv,\n" +
" mtb_colt.ser_doc_provv,\n" +
" mtb_colt.data_doc,\n" +
" mtb_colt.num_doc,\n" +
" mtb_colt.cod_dtip,\n" +
" mtb_colt.cod_anag,\n" +
" mtb_colt.ser_doc,\n" +
" mtb_aart.cod_tcol_UI,\n" +
" tcol_art.cod_mart AS cod_mart_bin,\n" +
" tcol_art.peso_kg AS tara_cnf_unt,\n" +
" mtb_aart.descrizione,\n" +
" mtb_aart.unt_mis\n" +
" FROM mtb_colt\n" +
" INNER JOIN mtb_colr ON mtb_colt.gestione = mtb_colr.gestione AND\n" +
" mtb_colt.data_collo = mtb_colr.data_collo AND\n" +
" mtb_colt.ser_collo = mtb_colr.ser_collo AND\n" +
" mtb_colt.num_collo = mtb_colr.num_collo\n" +
" INNER JOIN mtb_aart ON mtb_colr.cod_mart = mtb_aart.cod_mart\n" +
" LEFT OUTER JOIN mtb_tcol ON mtb_aart.cod_tcol_UI = mtb_tcol.cod_tcol\n" +
" LEFT OUTER JOIN mtb_aart tcol_art ON tcol_art.cod_mart = mtb_tcol.cod_mart\n" +
" INNER JOIN cod_mgrp_mp ON mtb_aart.cod_mgrp = cod_mgrp_mp.value\n" +
" WHERE mtb_colt.gestione = 'L'\n" +
" AND mtb_colt.segno = 1\n" +
" AND mtb_colt.data_doc = " + UtilityDB.valueToString(cert.getDataDoc()) + "\n" +
" AND mtb_colt.num_doc = " + UtilityDB.valueToString(cert.getNumDoc()) + "),\n" +
" carat AS (SELECT mtb_partita_mag_carat.activity_id,\n" +
" mtb_partita_mag_carat.cod_mart,\n" +
" mtb_partita_mag_carat.partita_mag,\n" +
" MIN(CASE WHEN carat = 'Lotto Produttore' THEN val_carat END) AS lottoProduttore,\n" +
" MIN(CASE WHEN carat = 'Modalita Raccolta' THEN val_carat END) AS modalitaRaccolta,\n" +
" MIN(CASE WHEN carat = 'varieta' THEN val_carat END) AS varieta\n" +
" FROM mtb_partita_mag_carat\n" +
" INNER JOIN collo ON collo.partita_mag = mtb_partita_mag_carat.partita_mag AND\n" +
" collo.cod_mart = mtb_partita_mag_carat.cod_mart AND\n" +
" collo.activity_id = mtb_partita_mag_carat.activity_id\n" +
" WHERE carat IN ('Lotto Produttore', 'Modalita Raccolta', 'varieta')\n" +
" GROUP BY mtb_partita_mag_carat.activity_id, mtb_partita_mag_carat.cod_mart,\n" +
" mtb_partita_mag_carat.partita_mag),\n" +
" ordRacc AS (SELECT dtb_ordt.data_ord,\n" +
" dtb_ordt.num_ord,\n" +
" dtb_ordt.gestione,\n" +
" dtb_ordt.cod_jfas,\n" +
" dtb_ordr.partita_mag AS partita_mag,\n" +
" dtb_ordr.riga_ord,\n" +
" dtb_ordr.cod_mart AS cod_mart_racc,\n" +
" dtb_ordt.partita_mag AS partita_mag_racc,\n" +
" dtb_ordr.val_unt AS val_unt_racc\n" +
" FROM dtb_ordt\n" +
" INNER JOIN collo\n" +
" ON collo.data_ord = dtb_ordt.data_ord AND collo.num_ord = dtb_ordt.num_ord AND\n" +
" collo.gestione = dtb_ordt.gestione\n" +
" INNER JOIN dtb_ordr ON dtb_ordr.data_ord = dtb_ordt.data_ord AND\n" +
" dtb_ordr.num_ord = dtb_ordt.num_ord AND\n" +
" dtb_ordr.gestione = dtb_ordt.gestione),\n" +
" Certificato AS (SELECT dtb_doct.data_doc,\n" +
" dtb_doct.ser_doc,\n" +
" dtb_doct.num_doc,\n" +
" dtb_doct.cod_anag,\n" +
" dtb_doct.cod_dtip,\n" +
" dtb_doct.targa,\n" +
" dtb_doct.targa_rim,\n" +
" dtb_doct.cod_vvet,\n" +
" dtb_doct.cod_vzon,\n" +
" SUM(IIF(dtb_docr.cod_mart = collo.cod_mart_bin AND dtb_docr.qta_doc < 0,\n" +
" ABS(dtb_docr.qta_doc),\n" +
" 0)) AS cnf_rese\n" +
" FROM dtb_doct\n" +
" INNER JOIN collo ON collo.cod_anag = dtb_doct.cod_anag AND\n" +
" collo.cod_dtip = dtb_doct.cod_dtip AND\n" +
" collo.data_doc = dtb_doct.data_doc AND\n" +
" collo.ser_doc = dtb_doct.ser_doc AND\n" +
" collo.num_doc = dtb_doct.num_doc\n" +
" LEFT OUTER JOIN dtb_docr ON dtb_doct.cod_anag = dtb_docr.cod_anag AND\n" +
" dtb_doct.cod_dtip = dtb_docr.cod_dtip AND\n" +
" dtb_doct.data_doc = dtb_docr.data_doc AND\n" +
" dtb_doct.ser_doc = dtb_docr.ser_doc AND\n" +
" dtb_doct.num_doc = dtb_docr.num_doc\n" +
" GROUP BY dtb_doct.data_doc, dtb_doct.ser_doc, dtb_doct.num_doc, dtb_doct.cod_anag,\n" +
" dtb_doct.cod_dtip,\n" +
" dtb_doct.targa, dtb_doct.targa_rim, dtb_doct.cod_vvet, dtb_doct.cod_vzon),\n" +
" ddt AS (SELECT dtb_doct.data_doc,\n" +
" dtb_doct.ser_doc,\n" +
" dtb_doct.num_doc,\n" +
" dtb_doct.cod_anag,\n" +
" dtb_doct.cod_dtip,\n" +
" dtb_docr.cod_mart,\n" +
" dtb_docr.val_unt,\n" +
" dtb_docr.val_unt + ((dtb_docr.val_unt * dtb_docr.sconto5 / 100) * -1) AS prezzo_finale,\n" +
" dtb_docr.sconto5,\n" +
" SUM(IIF(qta_doc > 0, qta_doc, 0)) AS qta_doc,\n" +
" SUM(IIF(qta_doc < 0, qta_doc, 0)) AS qta_scarto,\n" +
" SUM(qta_doc) AS qta_imp,\n" +
" SUM(importo_riga) AS tot_doc\n" +
" FROM dtb_doct\n" +
" INNER JOIN collo\n" +
" ON collo.cod_anag = dtb_doct.cod_anag AND collo.cod_dtip_provv = dtb_doct.cod_dtip AND\n" +
" collo.data_doc_provv = dtb_doct.data_doc AND\n" +
" collo.ser_doc_provv = dtb_doct.ser_doc AND\n" +
" collo.num_doc_provv = dtb_doct.num_doc\n" +
" INNER JOIN ordRacc ON collo.data_ord = ordRacc.data_ord AND collo.num_ord = ordRacc.num_ord AND\n" +
" collo.gestione = ordRacc.gestione\n" +
" LEFT OUTER JOIN dtb_docr ON dtb_doct.cod_anag = dtb_docr.cod_anag AND\n" +
" dtb_doct.cod_dtip = dtb_docr.cod_dtip AND\n" +
" dtb_doct.data_doc = dtb_docr.data_doc AND\n" +
" dtb_doct.ser_doc = dtb_docr.ser_doc AND\n" +
" dtb_doct.num_doc = dtb_docr.num_doc AND\n" +
" dtb_docr.cod_mart = ordRacc.cod_mart_racc\n" +
" GROUP BY dtb_docr.val_unt, dtb_docr.cod_mart, dtb_doct.cod_dtip, dtb_doct.cod_anag, dtb_doct.ser_doc,\n" +
" dtb_doct.data_doc, dtb_doct.num_doc, dtb_docr.sconto5)\n" +
"\n" +
"\n" +
"SELECT collo.gestione AS gestione,\n" +
" collo.data_collo AS dataCollo,\n" +
" collo.num_collo AS numCollo,\n" +
" collo.ser_collo AS serCollo,\n" +
" ddt.cod_anag AS codAnag,\n" +
" collo.cod_mdep AS codMdepProd,\n" +
" collo.ora_fine_prep AS oraFinePrep,\n" +
" collo.ora_iniz_prep AS oraInizPrep,\n" +
" collo.id_pesata AS idPesata,\n" +
" collo.data_vers AS dataVers,\n" +
" collo.data_ord AS dataOrd,\n" +
" collo.num_ord AS numOrd,\n" +
" ordRacc.riga_ord AS rigaOrd,\n" +
" collo.partita_mag AS partitaRaccolta,\n" +
" collo.cod_mart AS codMart,\n" +
" ordRacc.cod_jfas AS codJfas,\n" +
" collo.descrizione AS descrizione,\n" +
" collo.unt_mis AS untMis,\n" +
" ordRacc.partita_mag AS partitaMag,\n" +
" collo.qta_col AS qtaCol,\n" +
" collo.num_cnf AS numCnf,\n" +
" collo.qta_cnf AS qtaCnf,\n" +
" peso_lordo_camion AS pesoLordoCamion,\n" +
" peso_netto_pedane + (collo.tara_cnf_unt * collo.num_cnf) AS pesoNettoCamion,\n" +
" peso_lordo_camion -\n" +
" (peso_netto_pedane + (collo.tara_cnf_unt * collo.num_cnf)) AS pesoTaraCamion,\n" +
" peso_netto_pedane + (collo.tara_cnf_unt * collo.num_cnf) AS pesoLordoPedane,\n" +
" peso_netto_pedane AS pesoNettoPedane,\n" +
" tara_pedane AS pesoTaraPedane,\n" +
" collo.num_doc_provv AS numDocProvv,\n" +
" collo.data_doc_provv AS dataDocProvv,\n" +
" collo.cod_dtip_provv AS codDtipProvv,\n" +
" collo.ser_doc_provv AS serDocProvv,\n" +
" Certificato.targa AS targa,\n" +
" Certificato.targa_rim AS targaRim,\n" +
" Certificato.cod_vvet AS codVvet,\n" +
" Certificato.cod_vzon AS codVzon,\n" +
" collo.data_doc AS dataDoc,\n" +
" collo.num_doc AS numDoc,\n" +
" collo.cod_dtip AS codDtip,\n" +
" ordRacc.val_unt_racc AS prezzoContratto,\n" +
" ddt.prezzo_finale AS prezzoFinale,\n" +
" Certificato.cnf_rese AS cnfRese,\n" +
" ISNULL(collo.tara_cnf_unt, 0) AS taraCnf,\n" +
" collo.tara_cnf_unt * collo.num_cnf AS totCnf,\n" +
" -1 * (ddt.qta_scarto * 100) / ddt.qta_doc AS tassoRiduzione,\n" +
" ddt.sconto5 AS indiceVariazione,\n" +
" ddt.qta_scarto * -1 AS scarto,\n" +
" ISNULL(ddt.qta_imp, collo.qta_col) AS nettoPagamento,\n" +
" ISNULL(ddt.tot_doc,\n" +
" (ISNULL(ddt.val_unt, ordRacc.val_unt_racc) * ISNULL(ddt.qta_imp, collo.qta_col))) AS importo,\n" +
" IIF(ISNULL(ddt.num_doc, 0) > 0, 1, 0) AS docRegistrato,\n" +
" carat.lottoProduttore,\n" +
" carat.modalitaRaccolta,\n" +
" carat.varieta\n" +
"FROM collo\n" +
" INNER JOIN ordRacc\n" +
" ON collo.data_ord = ordRacc.data_ord AND collo.num_ord = ordRacc.num_ord AND\n" +
" collo.gestione = ordRacc.gestione\n" +
" LEFT OUTER JOIN Certificato\n" +
" ON collo.cod_anag = Certificato.cod_anag AND collo.cod_dtip = Certificato.cod_dtip AND\n" +
" collo.data_doc = Certificato.data_doc AND collo.ser_doc = Certificato.ser_doc AND\n" +
" collo.num_doc = Certificato.num_doc\n" +
" LEFT OUTER JOIN ddt ON collo.cod_anag = ddt.cod_anag AND collo.cod_dtip_provv = ddt.cod_dtip AND\n" +
" collo.data_doc_provv = ddt.data_doc AND collo.ser_doc_provv = ddt.ser_doc AND\n" +
" collo.num_doc_provv = ddt.num_doc\n" +
" , carat";
return UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, AccettazioneOrtoFruttaDTO.class);
}
private void updateCertificatoImported(Connection connection, CertificatiValorizzatiDTO cert, boolean useTempTable) throws Exception {
final HashMap<String, Object> importedKey = new HashMap<String, Object>() {{
put("data_doc", cert.getDataDoc());
put("num_doc", cert.getNumDoc());
}};
exchangeImportDataManagerService.updateImportedStatus(connection, "valorizzazione_certificati", importedKey, useTempTable);
}
private List<CertificatiValorizzatiDTO> retrieveCertificatiValorizzati(Connection primaryConnection, LocalDate minDate, boolean retrieveAlreadyImported, boolean useTempTable) throws Exception {
String valorizzazioneCertificatiOriginalTableName = "valorizzazione_certificati";
String valorizzazioneCertificatiTableName = valorizzazioneCertificatiOriginalTableName + (useTempTable ? "_tmp" : "");
if (useTempTable) {
UtilityDB.executeStatement(primaryConnection,
"INSERT INTO " + valorizzazioneCertificatiTableName +
" SELECT * FROM " + valorizzazioneCertificatiOriginalTableName
);
}
return exchangeImportDataManagerService.retrieveDataFromExchange(primaryConnection, CertificatiValorizzatiDTO.class,
valorizzazioneCertificatiTableName, Query.format("cod_mart is not null AND data_doc > {}", minDate), retrieveAlreadyImported);
}
}

View File

@@ -0,0 +1,54 @@
package it.integry.ems.customizations.sales.controller;
import it.integry.common.var.CommonConstants;
import it.integry.ems.customizations.constant.EmsCustomRestConstants;
import it.integry.ems.customizations.production.service.ToscaProductionService;
import it.integry.ems.customizations.sales.service.ToscaSalesService;
import it.integry.ems.response.EsitoType;
import it.integry.ems.response.ServiceRestResponse;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
@RestController
@Scope(value = "request")
@RequestMapping("tosca/sales")
public class ToscaSalesController {
private final Logger logger = LogManager.getLogger();
@Autowired
public ToscaSalesService toscaSalesService;
@Autowired
public MultiDBTransactionManager multiDBTransactionManager;
@RequestMapping(value = EmsCustomRestConstants.PATH_TOSCA_IMPORT_SALES_ORDERS, method = RequestMethod.POST)
public @ResponseBody
ServiceRestResponse importOrdiniVendita(HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
@RequestPart() MultipartFile file
) {
try {
toscaSalesService.importOrdiniVendita(file);
return ServiceRestResponse.createPositiveResponse();
} catch (Exception e) {
try {
multiDBTransactionManager.rollbackAll();
} catch (Exception ex) {
logger.error(request.getRequestURI(), e);
}
logger.error(request.getRequestURI(), e);
return new ServiceRestResponse(EsitoType.KO, profileDB, e);
}
}
}

View File

@@ -0,0 +1,170 @@
package it.integry.ems.customizations.sales.dto;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;
public class ToscaOrdineVenditaDTO {
private String transactionNumber;
private Date dateTransaction;
private Long itemNumber;
private String itemName;
private BigDecimal quantityDelivered;
private String depotNumber;
private String depotName;
private String flowDirection;
private Integer flowTypeId;
private String flowTypeName;
private Long CounterPId;
private String CounterPNr;
private String CounterPName;
private String codAnag;
private String codMart;
private String codMdep;
public String getTransactionNumber() {
return transactionNumber;
}
public ToscaOrdineVenditaDTO setTransactionNumber(String transactionNumber) {
this.transactionNumber = transactionNumber;
return this;
}
public Date getDateTransaction() {
return dateTransaction;
}
public ToscaOrdineVenditaDTO setDateTransaction(Date dateTransaction) {
this.dateTransaction = dateTransaction;
return this;
}
public Long getItemNumber() {
return itemNumber;
}
public ToscaOrdineVenditaDTO setItemNumber(Long itemNumber) {
this.itemNumber = itemNumber;
return this;
}
public String getItemName() {
return itemName;
}
public ToscaOrdineVenditaDTO setItemName(String itemName) {
this.itemName = itemName;
return this;
}
public BigDecimal getQuantityDelivered() {
return quantityDelivered;
}
public ToscaOrdineVenditaDTO setQuantityDelivered(BigDecimal quantityDelivered) {
this.quantityDelivered = quantityDelivered;
return this;
}
public String getDepotNumber() {
return depotNumber;
}
public ToscaOrdineVenditaDTO setDepotNumber(String depotNumber) {
this.depotNumber = depotNumber;
return this;
}
public String getDepotName() {
return depotName;
}
public ToscaOrdineVenditaDTO setDepotName(String depotName) {
this.depotName = depotName;
return this;
}
public String getFlowDirection() {
return flowDirection;
}
public ToscaOrdineVenditaDTO setFlowDirection(String flowDirection) {
this.flowDirection = flowDirection;
return this;
}
public Integer getFlowTypeId() {
return flowTypeId;
}
public ToscaOrdineVenditaDTO setFlowTypeId(Integer flowTypeId) {
this.flowTypeId = flowTypeId;
return this;
}
public String getFlowTypeName() {
return flowTypeName;
}
public ToscaOrdineVenditaDTO setFlowTypeName(String flowTypeName) {
this.flowTypeName = flowTypeName;
return this;
}
public Long getCounterPId() {
return CounterPId;
}
public ToscaOrdineVenditaDTO setCounterPId(Long counterPId) {
CounterPId = counterPId;
return this;
}
public String getCounterPNr() {
return CounterPNr;
}
public ToscaOrdineVenditaDTO setCounterPNr(String counterPNr) {
CounterPNr = counterPNr;
return this;
}
public String getCounterPName() {
return CounterPName;
}
public ToscaOrdineVenditaDTO setCounterPName(String counterPName) {
CounterPName = counterPName;
return this;
}
public String getCodAnag() {
return codAnag;
}
public ToscaOrdineVenditaDTO setCodAnag(String codAnag) {
this.codAnag = codAnag;
return this;
}
public String getCodMart() {
return codMart;
}
public ToscaOrdineVenditaDTO setCodMart(String codMart) {
this.codMart = codMart;
return this;
}
public String getCodMdep() {
return codMdep;
}
public ToscaOrdineVenditaDTO setCodMdep(String codMdep) {
this.codMdep = codMdep;
return this;
}
}

View File

@@ -0,0 +1,238 @@
package it.integry.ems.customizations.sales.service;
import it.integry.common.var.CommonConstants;
import it.integry.ems.customizations.sales.dto.ToscaOrdineVenditaDTO;
import it.integry.ems.production.service.MesProductionServiceV2;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityEntity;
import it.integry.ems_model.entity.DtbOrdr;
import it.integry.ems_model.entity.DtbOrdt;
import it.integry.ems_model.entity.GtbAnag;
import it.integry.ems_model.entity.VtbClie;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.*;
import org.apache.bcel.classfile.Utility;
import org.apache.poi.ss.usermodel.Row;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@Service
@Scope("request")
public class ToscaSalesService {
@Autowired
private MultiDBTransactionManager multiDBTransactionManager;
@Autowired
private EntityProcessor entityProcessor;
public void importOrdiniLavorazione() {
}
public void importOrdiniVendita(MultipartFile file) throws Exception {
InputStream inputStream = file.getInputStream();
List<ToscaOrdineVenditaDTO> ordiniDaImportare = parseFile(inputStream);
List<Date> invalidDates = ordiniDaImportare.stream().map(ToscaOrdineVenditaDTO::getDateTransaction).distinct().filter(d -> d.before(UtilityDate.getStartOfDay(new Date()))).collect(Collectors.toList());
if (!UtilityList.isNullOrEmpty(invalidDates))
throw new Exception("Caricare l'impegnato per giorni passati non è consentito");
importAnagrafiche(ordiniDaImportare);
Map<String, List<ToscaOrdineVenditaDTO>> ordini = ordiniDaImportare.stream().collect(Collectors.groupingBy(ToscaOrdineVenditaDTO::getTransactionNumber));
for (String transactionNumber : ordini.keySet()) {
List<ToscaOrdineVenditaDTO> rows = ordini.get(transactionNumber);
importOrdine(transactionNumber, rows);
}
clearOldOrders();
}
private List<ToscaOrdineVenditaDTO> parseFile(InputStream inputStream) throws Exception {
Iterator<Row> rowIterator = UtilityExcel.readXlsxFile(inputStream, true);
List<ToscaOrdineVenditaDTO> ordiniDaImportare = new ArrayList<>();
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
ToscaOrdineVenditaDTO newDTO = new ToscaOrdineVenditaDTO();
newDTO
.setTransactionNumber(UtilityExcel.getCellAsString(row, 0))
.setDateTransaction(UtilityExcel.getCellAsDate(row, 1, CommonConstants.DATE_FORMAT_DMY_DASHED))
.setItemNumber(Long.valueOf(UtilityExcel.getCellAsString(row, 2)))
.setItemName(UtilityExcel.getCellAsString(row, 3))
.setQuantityDelivered(new BigDecimal(UtilityExcel.getCellAsString(row, 4)))
.setDepotNumber(UtilityExcel.getCellAsString(row, 5))
.setDepotName(UtilityExcel.getCellAsString(row, 6))
.setFlowDirection(UtilityExcel.getCellAsString(row, 7))
.setFlowTypeId(Integer.valueOf(UtilityExcel.getCellAsString(row, 8)))
.setFlowTypeName(UtilityExcel.getCellAsString(row, 9))
.setCounterPId(Long.valueOf(UtilityExcel.getCellAsString(row, 10)))
.setCounterPNr(UtilityExcel.getCellAsString(row, 11))
.setCounterPName(UtilityExcel.getCellAsString(row, 12))
.setCodAnag(findCodAnagFromDiacod(newDTO.getCounterPNr()))
.setCodMart(findCodMartFromDiacod(String.valueOf(newDTO.getItemNumber())))
.setCodMdep(findCodMdepFromDiacod(newDTO.getDepotNumber()))
;
ordiniDaImportare.add(newDTO);
}
return ordiniDaImportare;
}
private String findCodMdepFromDiacod(String diacod) throws Exception {
String sql = "select cod_mdep from mtb_depo_intercode where intercode = " + UtilityDB.valueToString(diacod);
return UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
}
private String findCodMartFromDiacod(String diacod) throws Exception {
String sql = "SELECT cod_mart from mtb_aart where diacod = " + UtilityDB.valueToString(diacod);
return UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
}
private String findCodAnagFromDiacod(String diacod) throws Exception {
String sql = "SELECT gtb_anag.cod_anag from gtb_anag inner join vtb_clie on vtb_clie.cod_anag = gtb_anag.cod_anag where diacod = " + UtilityDB.valueToString(diacod);
return UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
}
private void importOrdine(String transactionNumber, List<ToscaOrdineVenditaDTO> rows) throws Exception {
ToscaOrdineVenditaDTO testata = rows.get(0);
DtbOrdt ordine = getOrdineVendita(transactionNumber, testata.getCodMdep());
ordine.setCodAnag(testata.getCodAnag())
.setCodMdep(testata.getCodMdep());
for (ToscaOrdineVenditaDTO row : rows) {
DtbOrdr dbRow = ordine.getDtbOrdr().stream().filter(x -> x.getCodMart().equalsIgnoreCase(row.getCodMart())).findFirst().orElse(new DtbOrdr());
dbRow
.setFlagEvasoForzato("N")
.setCodMart(row.getCodMart())
.setQtaOrd(row.getQuantityDelivered().abs())
.setDataCons(row.getDateTransaction())
.setOperation(OperationType.INSERT_OR_UPDATE);
if (dbRow.getRigaOrd() == null) {
ordine.getDtbOrdr().add(dbRow);
}
}
ordine.getDtbOrdr().stream().filter(x -> x.getOperation() == OperationType.NO_OP).forEach(x -> x.setFlagEvasoForzato("S").setOperation(OperationType.UPDATE));
entityProcessor.processEntity(ordine, true, multiDBTransactionManager);
}
private DtbOrdt getOrdineVendita(String transactionNumber, String codMdep) throws Exception {
String sql = "SELECT * from dtb_ordt where gestione = 'V' and rif_ord = " + UtilityDB.valueToString(transactionNumber) + " AND cod_mdep = " + UtilityDB.valueToString(codMdep);
DtbOrdt ordine = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbOrdt.class);
if (ordine == null) {
ordine = new DtbOrdt();
ordine.setDataOrd(new Date())
.setGestione("V");
} else {
List<DtbOrdr> orderRows = getRigheOrdine(ordine);
orderRows.forEach(r -> r.setOperation(OperationType.NO_OP));
ordine.setDtbOrdr(orderRows);
}
ordine
.setRifOrd(transactionNumber)
.setOperation(OperationType.INSERT_OR_UPDATE);
return ordine;
}
private List<DtbOrdr> getRigheOrdine(DtbOrdt ordine) throws Exception {
String sql = "SELECT * from dtb_ordr where data_ord = " + UtilityDB.valueToString(ordine.getDataOrd()) + " AND num_ord = " + UtilityDB.valueToString(ordine.getNumOrd()) + " AND gestione = " + UtilityDB.valueToString(ordine.getGestione());
return UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbOrdr.class);
}
private void importAnagrafiche(List<ToscaOrdineVenditaDTO> ordini) throws Exception {
String sql = "SELECT gtb_anag.* from gtb_anag inner join vtb_clie on vtb_clie.cod_anag = gtb_anag.cod_anag where diacod in (" + UtilityDB.listValueToString(ordini.stream().map(ToscaOrdineVenditaDTO::getCounterPNr).collect(Collectors.toList())) + ") ";
List<GtbAnag> clientiEsistenti = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, GtbAnag.class);
if (UtilityList.isNullOrEmpty(clientiEsistenti))
clientiEsistenti = new ArrayList<>();
for (ToscaOrdineVenditaDTO order : ordini) {
if (!UtilityString.isNullOrEmpty(order.getCodAnag()))
continue;
String codAnag = clientiEsistenti.stream().filter(x -> x.getDiacod().equalsIgnoreCase(order.getCounterPNr())).findFirst().orElse(new GtbAnag()).getCodAnag();
if (!UtilityString.isNullOrEmpty(codAnag)) {
order.setCodAnag(codAnag);
continue;
}
String ragSoc = order.getCounterPName();
GtbAnag gtbAnag = new GtbAnag();
gtbAnag
.setPrecode("C")
.setRagSoc(ragSoc.length() >= 40 ? ragSoc.substring(0, 39) : ragSoc)
.setNote(ragSoc)
.setDiacod(order.getCounterPNr())
.setOperation(OperationType.INSERT);
VtbClie clie = new VtbClie();
clie.setOperation(OperationType.INSERT);
gtbAnag.setVtbClie(clie);
entityProcessor.processEntity(gtbAnag, true, multiDBTransactionManager);
order.setCodAnag(gtbAnag.getCodAnag());
clientiEsistenti.add(gtbAnag);
}
}
private void clearOldOrders() throws Exception {
String sql = "SELECT dtb_ordr.*\n" +
"FROM dtb_ordt\n" +
" INNER JOIN dtb_ordr ON dtb_ordr.gestione = dtb_ordt.gestione\n" +
" AND dtb_ordr.data_ord = dtb_ordt.data_ord\n" +
" AND dtb_ordr.num_ord = dtb_ordt.num_ord\n" +
"where dtb_ordt.gestione = 'V'\n" +
"and dtb_ordr.flag_evaso_forzato = 'N' and data_cons < CAST (getdate() as date);\n" +
"\n";
List<DtbOrdr> righeOrdiniDaAnnullare = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbOrdr.class);
if (UtilityList.isNullOrEmpty(righeOrdiniDaAnnullare))
return;
List<DtbOrdt> ordiniDaAnnullare = new ArrayList<>();
for (DtbOrdr row : righeOrdiniDaAnnullare) {
DtbOrdt ord = ordiniDaAnnullare.stream().filter(x -> x.getDataOrd() == row.getDataOrd() && Objects.equals(x.getNumOrd(), row.getNumOrd()) && Objects.equals(x.getGestione(), row.getGestione())).findFirst().orElse(new DtbOrdt());
row
.setFlagEvasoForzato("S")
.setOperation(OperationType.UPDATE)
;
ord.setDataOrd(row.getDataOrd())
.setGestione(row.getGestione())
.setNumOrd(row.getNumOrd())
.getDtbOrdr().add(row);
if (ord.getOperation() == null) {
ord.setOperation(OperationType.UPDATE);
ordiniDaAnnullare.add(ord);
}
}
entityProcessor.processEntityList(ordiniDaAnnullare, true);
UtilityEntity.throwEntitiesException(ordiniDaAnnullare);
}
}

View File

@@ -3,6 +3,7 @@ package it.integry.ems.production.controller;
import it.integry.ems.production.dto.ortofrutta.AccettazioneOrtoFruttaDTO;
import it.integry.ems.production.service.OrtoFruttaProductionService;
import it.integry.ems.response.ServiceRestResponse;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
@@ -21,6 +22,8 @@ public class OrtoFruttaController {
@Autowired
private OrtoFruttaProductionService ortoFruttaProductionService;
@Autowired
private MultiDBTransactionManager multiDBTransactionManager;
@RequestMapping(value = "/entrata/salva", method = RequestMethod.POST)

View File

@@ -1,74 +1,140 @@
package it.integry.ems.production.dto.ortofrutta;
import it.integry.ems_model.annotation.SqlField;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
public class AccettazioneOrtoFruttaDTO {
public class AccettazioneOrtoFruttaDTO implements Cloneable {
//dati collo
@SqlField("gestione")
private String gestione;
@SqlField("dataCollo")
private LocalDate dataCollo;
@SqlField("numCollo")
private Integer numCollo;
@SqlField("serCollo")
private String serCollo;
@SqlField("oraFinePrep")
private LocalDateTime oraFinePrep;
@SqlField("oraInizPrep")
private LocalDateTime oraInizPrep;
@SqlField("idPesata")
private String idPesata;
@SqlField("dataVers")
private LocalDateTime dataVers;
@SqlField("dataIns")
private LocalDateTime dataIns;
@SqlField("dataOrd")
private LocalDate dataOrd;
@SqlField("numOrd")
private Integer numOrd;
@SqlField("rigaOrd")
private Integer rigaOrd;
@SqlField("partitaRaccolta")
private String partitaRaccolta;
@SqlField("codMart")
private String codMart;
@SqlField("codJfas")
private String codJfas;
@SqlField("descrizione")
private String descrizione;
@SqlField("untMis")
private String untMis;
@SqlField("partitaMag")
private String partitaMag;
@SqlField("qtaCol")
private BigDecimal qtaCol;
@SqlField("numCnf")
private BigDecimal numCnf;
@SqlField("qtaCnf")
private BigDecimal qtaCnf;
@SqlField("ragSocProduttore")
private String ragSocProduttore;
@SqlField("partIvaProduttore")
private String partIvaProduttore;
@SqlField("varieta")
private String varieta;
@SqlField("ragSocOp")
private String ragSocOp;
@SqlField("partIvaOp")
private String partIvaOp;
@SqlField("ragSocCoop")
private String ragSocCoop;
@SqlField("partIvaCoop")
private String partIvaCoop;
@SqlField("numDocProvv")
private Integer numDocProvv;
@SqlField("serDocProvv")
private String serDocProvv;
@SqlField("dataDocProvv")
private LocalDate dataDocProvv;
@SqlField("targa")
private String targa;
@SqlField("targaRim")
private String targaRim;
@SqlField("codVvet")
private String codVvet;
@SqlField("codVdes")
private String codVdes;
@SqlField("codAnag")
private String codAnag;
@SqlField("codMdep")
private String codMdep;
@SqlField("codMdepProd")
private String codMdepProd;
@SqlField("prezzoContratto")
private BigDecimal prezzoContratto;
@SqlField("NumericTextBox")
private BigDecimal NumericTextBox;
@SqlField("prezzoFinale")
private BigDecimal prezzoFinale;
@SqlField("cnfRese")
private BigDecimal cnfRese;
@SqlField("taraCnf")
private BigDecimal taraCnf;
@SqlField("totCnf")
private BigDecimal totCnf;
@SqlField("tassoRiduzione")
private BigDecimal tassoRiduzione;
@SqlField("scarto")
private BigDecimal scarto;
@SqlField("nettoPagamento")
private BigDecimal nettoPagamento;
@SqlField("importo")
private BigDecimal importo;
@SqlField("pesoLordoCamion")
private BigDecimal pesoLordoCamion;
@SqlField("pesoNettoCamion")
private BigDecimal pesoNettoCamion;
@SqlField("pesoTaraCamion")
private BigDecimal pesoTaraCamion;
@SqlField("pesoLordoPedane")
private BigDecimal pesoLordoPedane;
@SqlField("pesoNettoPedane")
private BigDecimal pesoNettoPedane;
@SqlField("codDtipProvv")
private String codDtipProvv;
@SqlField("dataDoc")
private LocalDate dataDoc;
@SqlField("numDoc")
private Integer numDoc;
@SqlField("codDtip")
private String codDtip;
@SqlField("valUnt")
private BigDecimal valUnt;
@SqlField("original")
private AccettazioneOrtoFruttaDTO original;
@SqlField("lottoProduttore")
private String lottoProduttore;
@SqlField("modalitaRaccolta")
private String modalitaRaccolta;
@SqlField("codVzon")
private String codVzon;
@SqlField("indiceVariazione")
private BigDecimal indiceVariazione;
public String getGestione() {
@@ -603,23 +669,23 @@ public class AccettazioneOrtoFruttaDTO {
}
public boolean isCertificatoEdited() {
if (this.original == null )
if (this.original == null)
return false;
return ! this.original.getCodAnag().equalsIgnoreCase(this.codAnag)
|| ! this.original.getCodDtip().equalsIgnoreCase(this.codDtip);
return !this.original.getCodAnag().equalsIgnoreCase(this.codAnag)
|| !this.original.getCodDtip().equalsIgnoreCase(this.codDtip);
}
public boolean isDDTEdited() {
if (this.original == null )
if (this.original == null)
return false;
return ! this.original.getCodAnag().equalsIgnoreCase(this.codAnag)
|| ! this.original.getCodDtipProvv().equalsIgnoreCase(this.codDtipProvv)
|| ! (this.original.getNumDocProvv().equals(this.numDocProvv))
|| ! this.original.getSerDocProvv().equalsIgnoreCase(this.serDocProvv)
|| ! (this.original.getDataDocProvv().isEqual(this.dataDocProvv));
return !this.original.getCodAnag().equalsIgnoreCase(this.codAnag)
|| !this.original.getCodDtipProvv().equalsIgnoreCase(this.codDtipProvv)
|| !(this.original.getNumDocProvv().equals(this.numDocProvv))
|| !this.original.getSerDocProvv().equalsIgnoreCase(this.serDocProvv)
|| !(this.original.getDataDocProvv().isEqual(this.dataDocProvv));
}
@@ -649,4 +715,22 @@ public class AccettazioneOrtoFruttaDTO {
this.codVzon = codVzon;
return this;
}
@Override
public AccettazioneOrtoFruttaDTO clone() {
try {
return (AccettazioneOrtoFruttaDTO) super.clone();
} catch (CloneNotSupportedException e) {
throw new AssertionError();
}
}
public BigDecimal getIndiceVariazione() {
return indiceVariazione;
}
public AccettazioneOrtoFruttaDTO setIndiceVariazione(BigDecimal indiceVariazione) {
this.indiceVariazione = indiceVariazione;
return this;
}
}

View File

@@ -149,7 +149,7 @@ public class OrtoFruttaProductionService {
if (dto.getOriginal() != null) {
datiPartita = UtilityDB.executeSimpleQueryDTO(
multiDBTransactionManager.getPrimaryConnection(),
Query.format("SELECT * from mtb_partita_mag_carat where cod_mart = {} and partita_mag = {} and carat in ({},{},{})", dto.getCodMart(), dto.getPartitaRaccolta(), caratLottoProd, caratModalitaRaccolta,caratVarietaRaccolta),
Query.format("SELECT * from mtb_partita_mag_carat where cod_mart = {} and partita_mag = {} and carat in ({},{},{})", dto.getCodMart(), dto.getPartitaRaccolta(), caratLottoProd, caratModalitaRaccolta, caratVarietaRaccolta),
MtbPartitaMagCarat.class);
if (!UtilityList.isNullOrEmpty(datiPartita)) {
if (!UtilityString.streNull(dto.getOriginal().getLottoProduttore()).equalsIgnoreCase(UtilityString.streNull(dto.getLottoProduttore()))) {
@@ -205,7 +205,7 @@ public class OrtoFruttaProductionService {
"SETUP",
"SER_DOC_CAR");
//todo: caso da gestire - cambio fornitore del documento
if (dto.getOriginal() != null && dto.isCertificatoEdited()) {
DtbDoct oldDoc = new DtbDoct();
oldDoc
@@ -378,7 +378,7 @@ public class OrtoFruttaProductionService {
//alla creazione della bolla (DDT) creare documento di acquisto e scarico di materiale alla pianta
if (!UtilityBigDecimal.isNullOrZero(dto.getQtaCol()) && !UtilityBigDecimal.isNullOrZero(dto.getPrezzoFinale())) {
if (!UtilityBigDecimal.isNullOrZero(dto.getQtaCol()) && !UtilityBigDecimal.isNullOrZero(dto.getValUnt())) {
DtbOrdt ordAcq = getOrdineAcquistoCollegato(dto.getGestione(), UtilityLocalDate.localDateToDate(dto.getDataOrd()), dto.getNumOrd());
DtbDoct ddt = generaDdtAcq(dto, ordAcq, activityId);
DtbDoct slav = generaScaricoLav(dto, ordAcq, activityId);
@@ -464,6 +464,10 @@ public class OrtoFruttaProductionService {
.setCodMdep(ordAcq.getCodMdep())
;
BigDecimal qtaScarto = dto.getQtaCol().multiply(dto.getTassoRiduzione()).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP);
BigDecimal qtaCnf = dto.getQtaCol().divide(dto.getNumCnf(), 3, RoundingMode.HALF_UP);
BigDecimal qtaDoc = dto.getQtaCol().subtract(qtaScarto);
BigDecimal numCnf = qtaDoc.divide(qtaCnf, 2, RoundingMode.HALF_UP);
DtbDocr row = new DtbDocr();
row
.setCodMart(ordAcq.getDtbOrdr().get(0).getCodMart())
@@ -471,8 +475,11 @@ public class OrtoFruttaProductionService {
.setDataOrd(UtilityLocalDate.localDateToDate(dto.getDataOrd()))
.setNumOrd(dto.getNumOrd())
.setRigaOrd(rigaOrd)
.setQtaDoc(dto.getQtaCol())
.setValUnt(dto.getPrezzoFinale())
.setQtaDoc(qtaDoc)
.setNumCnf(numCnf)
.setQtaCnf(qtaCnf)
.setValUnt(dto.getValUnt())
.setSconto5(dto.getIndiceVariazione().negate())
.setOperation(OperationType.INSERT);
slav.getDtbDocr().add(row);
@@ -528,7 +535,7 @@ public class OrtoFruttaProductionService {
.setAnnotazioni(String.format("CERT N. %d", dto.getNumDoc()))
;
BigDecimal qtaCnf = dto.getQtaCol().divide(dto.getNumCnf(), 3, RoundingMode.HALF_UP);
DtbDocr rowPlus = new DtbDocr();
rowPlus
.setCodMart(ordAcq.getDtbOrdr().get(0).getCodMart())
@@ -538,15 +545,33 @@ public class OrtoFruttaProductionService {
.setRigaOrd(ordAcq.getDtbOrdr().get(0).getRigaOrd())
.setQtaDoc(dto.getQtaCol())
.setNumCnf(dto.getNumCnf())
.setQtaCnf(dto.getQtaCol().divide(dto.getNumCnf(), 3, RoundingMode.HALF_UP))
.setQtaCnf(qtaCnf)
.setPesoLordo(dto.getPesoLordoPedane())
.setValUnt(dto.getPrezzoFinale())
.setSconto8(dto.getTassoRiduzione())
.setValUnt(dto.getValUnt())
.setSconto5(dto.getIndiceVariazione().negate())
.setOperation(OperationType.INSERT);
if (!UtilityBigDecimal.isNullOrZero(dto.getTassoRiduzione()))
rowPlus.setNote("SCARTO: " + dto.getTassoRiduzione() + "%");
ddt.getDtbDocr().add(rowPlus);
if (!UtilityBigDecimal.isNullOrZero(dto.getTassoRiduzione())) {
DtbDocr rowScarto = new DtbDocr();
BigDecimal qtaDoc = dto.getQtaCol().multiply(dto.getTassoRiduzione()).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP);
BigDecimal numCnf = qtaDoc.divide(qtaCnf, 2, RoundingMode.HALF_UP);
rowScarto
.setCodMart(ordAcq.getDtbOrdr().get(0).getCodMart())
.setPartitaMag(ordAcq.getDtbOrdr().get(0).getPartitaMag())
.setDataOrd(ordAcq.getDataOrd())
.setNumOrd(ordAcq.getNumOrd())
.setRigaOrd(ordAcq.getDtbOrdr().get(0).getRigaOrd())
.setQtaDoc(qtaDoc.negate())
.setNumCnf(numCnf.negate())
.setQtaCnf(qtaCnf)
.setPesoLordo(dto.getPesoLordoPedane())
.setValUnt(dto.getValUnt())
.setSconto5(dto.getIndiceVariazione().negate())
.setNote("SCARTO: " + dto.getTassoRiduzione() + "%")
.setOperation(OperationType.INSERT);
ddt.getDtbDocr().add(rowScarto);
}
entityProcessor.processEntity(ddt, true, multiDBTransactionManager);
UtilityEntity.throwEntityException(ddt);
return ddt;

View File

@@ -11,6 +11,7 @@ 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.DtbDoct;
import it.integry.ems_model.entity.MtbColr;
import it.integry.ems_model.entity.MtbColt;
import it.integry.ems_model.service.SetupGest;
@@ -201,6 +202,7 @@ public class WMSMagazzinoBufferService {
.setCodMdep(mtbColtToUpdate.getCodMdep())
.setSaveDoc(true)
.setColli(Collections.singletonList(mtbColtToUpdate));
loadColliService.createDocFromColli(multiDBTransactionManager, loadColliDTO);
DtbDoct doc = loadColliService.createDocFromColli(multiDBTransactionManager, loadColliDTO);
entityProcessor.processEntity(doc,true,multiDBTransactionManager);
}
}

View File

@@ -0,0 +1,289 @@
package it.integry.ems.system.exchange.dto;
import it.integry.ems_model.annotation.SqlField;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.base.EntityInterface;
import it.integry.ems_model.base.EntityPropertyHolder;
import it.integry.ems_model.base.EquatableEntityInterface;
import it.integry.ems_model.exception.EntityException;
import it.integry.ems_model.rulescompleting.DroolsDataCompleting;
import it.integry.ems_model.types.OperationType;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.io.IOException;
import java.math.BigDecimal;
import java.sql.Connection;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
public class CertificatiValorizzatiDTO extends EntityBase implements EquatableEntityInterface<CertificatiValorizzatiDTO> {
private final static Logger logger = LogManager.getLogger();
@SqlField("data_doc")
private LocalDate dataDoc;
@SqlField("num_doc")
private Long numDoc;
@SqlField("id_pesata")
private String idPesata;
@SqlField("data_vers")
private LocalDateTime dataVers;
@SqlField("cod_mart")
private String codMart;
@SqlField("varieta")
private String varieta;
@SqlField("targa")
private String targa;
@SqlField("targa_rim")
private String targaRim;
@SqlField("cod_vvet")
private String codVvet;
@SqlField("cod_vdes")
private String codVdes;
@SqlField("cod_anag")
private String codAnag;
@SqlField("val_unt")
private BigDecimal valUnt;
@SqlField("lotto_produttore")
private String lottoProduttore;
@SqlField("cod_vzon")
private String codVzon;
@SqlField("peso_lordo_kg")
private BigDecimal pesoLordoKg;
@SqlField("peso_netto_kg")
private BigDecimal pesoNettoKg;
@SqlField("scarto_kg")
private BigDecimal scartoKg;
@SqlField("casse_scaricate")
private BigDecimal casseScaricate;
@SqlField("casse_rese")
private BigDecimal casseRese;
@SqlField("indice_variazione")
private BigDecimal indiceVariazione;
@SqlField("tasso_riduzione")
private BigDecimal tassoRiduzione;
public CertificatiValorizzatiDTO() {
super(logger);
}
public LocalDate getDataDoc() {
return dataDoc;
}
public CertificatiValorizzatiDTO setDataDoc(LocalDate dataDoc) {
this.dataDoc = dataDoc;
return this;
}
public Long getNumDoc() {
return numDoc;
}
public CertificatiValorizzatiDTO setNumDoc(Long numDoc) {
this.numDoc = numDoc;
return this;
}
public String getIdPesata() {
return idPesata;
}
public CertificatiValorizzatiDTO setIdPesata(String idPesata) {
this.idPesata = idPesata;
return this;
}
public LocalDateTime getDataVers() {
return dataVers;
}
public CertificatiValorizzatiDTO setDataVers(LocalDateTime dataVers) {
this.dataVers = dataVers;
return this;
}
public String getCodMart() {
return codMart;
}
public CertificatiValorizzatiDTO setCodMart(String codMart) {
this.codMart = codMart;
return this;
}
public String getVarieta() {
return varieta;
}
public CertificatiValorizzatiDTO setVarieta(String varieta) {
this.varieta = varieta;
return this;
}
public String getTarga() {
return targa;
}
public CertificatiValorizzatiDTO setTarga(String targa) {
this.targa = targa;
return this;
}
public String getTargaRim() {
return targaRim;
}
public CertificatiValorizzatiDTO setTargaRim(String targaRim) {
this.targaRim = targaRim;
return this;
}
public String getCodVvet() {
return codVvet;
}
public CertificatiValorizzatiDTO setCodVvet(String codVvet) {
this.codVvet = codVvet;
return this;
}
public String getCodVdes() {
return codVdes;
}
public CertificatiValorizzatiDTO setCodVdes(String codVdes) {
this.codVdes = codVdes;
return this;
}
public String getCodAnag() {
return codAnag;
}
public CertificatiValorizzatiDTO setCodAnag(String codAnag) {
this.codAnag = codAnag;
return this;
}
public BigDecimal getValUnt() {
return valUnt;
}
public CertificatiValorizzatiDTO setValUnt(BigDecimal valUnt) {
this.valUnt = valUnt;
return this;
}
public String getLottoProduttore() {
return lottoProduttore;
}
public CertificatiValorizzatiDTO setLottoProduttore(String lottoProduttore) {
this.lottoProduttore = lottoProduttore;
return this;
}
public String getCodVzon() {
return codVzon;
}
public CertificatiValorizzatiDTO setCodVzon(String codVzon) {
this.codVzon = codVzon;
return this;
}
public BigDecimal getPesoLordoKg() {
return pesoLordoKg;
}
public CertificatiValorizzatiDTO setPesoLordoKg(BigDecimal pesoLordoKg) {
this.pesoLordoKg = pesoLordoKg;
return this;
}
public BigDecimal getPesoNettoKg() {
return pesoNettoKg;
}
public CertificatiValorizzatiDTO setPesoNettoKg(BigDecimal pesoNettoKg) {
this.pesoNettoKg = pesoNettoKg;
return this;
}
public BigDecimal getScartoKg() {
return scartoKg;
}
public CertificatiValorizzatiDTO setScartoKg(BigDecimal scartoKg) {
this.scartoKg = scartoKg;
return this;
}
public BigDecimal getCasseScaricate() {
return casseScaricate;
}
public CertificatiValorizzatiDTO setCasseScaricate(BigDecimal casseScaricate) {
this.casseScaricate = casseScaricate;
return this;
}
public BigDecimal getCasseRese() {
return casseRese;
}
public CertificatiValorizzatiDTO setCasseRese(BigDecimal casseRese) {
this.casseRese = casseRese;
return this;
}
public BigDecimal getIndiceVariazione() {
return indiceVariazione;
}
public CertificatiValorizzatiDTO setIndiceVariazione(BigDecimal indiceVariazione) {
this.indiceVariazione = indiceVariazione;
return this;
}
public BigDecimal getTassoRiduzione() {
return tassoRiduzione;
}
public CertificatiValorizzatiDTO setTassoRiduzione(BigDecimal tassoRiduzione) {
this.tassoRiduzione = tassoRiduzione;
return this;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof CertificatiValorizzatiDTO)) return false;
CertificatiValorizzatiDTO that = (CertificatiValorizzatiDTO) o;
return Objects.equals(getDataDoc(), that.getDataDoc()) && Objects.equals(getNumDoc(), that.getNumDoc()) && Objects.equals(getIdPesata(), that.getIdPesata()) && Objects.equals(getDataVers(), that.getDataVers()) && Objects.equals(getCodMart(), that.getCodMart()) && Objects.equals(getVarieta(), that.getVarieta()) && Objects.equals(getTarga(), that.getTarga()) && Objects.equals(getTargaRim(), that.getTargaRim()) && Objects.equals(getCodVvet(), that.getCodVvet()) && Objects.equals(getCodVdes(), that.getCodVdes()) && Objects.equals(getCodAnag(), that.getCodAnag()) && Objects.equals(getValUnt(), that.getValUnt()) && Objects.equals(getLottoProduttore(), that.getLottoProduttore()) && Objects.equals(getCodVzon(), that.getCodVzon()) && Objects.equals(getPesoLordoKg(), that.getPesoLordoKg()) && Objects.equals(getPesoNettoKg(), that.getPesoNettoKg()) && Objects.equals(getScartoKg(), that.getScartoKg()) && Objects.equals(getCasseScaricate(), that.getCasseScaricate()) && Objects.equals(getCasseRese(), that.getCasseRese()) && Objects.equals(getIndiceVariazione(), that.getIndiceVariazione()) && Objects.equals(getTassoRiduzione(), that.getTassoRiduzione());
}
@Override
public int hashCodeKey() {
return Objects.hash(getDataDoc(), getNumDoc());
}
@Override
public int hashCode() {
return Objects.hash(getDataDoc(), getNumDoc(), getIdPesata(), getDataVers(), getCodMart(), getVarieta(), getTarga(), getTargaRim(), getCodVvet(), getCodVdes(), getCodAnag(), getValUnt(), getLottoProduttore(), getCodVzon(), getPesoLordoKg(), getPesoNettoKg(), getScartoKg(), getCasseScaricate(), getCasseRese(), getIndiceVariazione(), getTassoRiduzione());
}
@Override
public boolean equalsKey(CertificatiValorizzatiDTO that) {
if (this == that) return true;
return Objects.equals(getDataDoc(), that.getDataDoc()) && Objects.equals(getNumDoc(), that.getNumDoc());
}
}

View File

@@ -24,7 +24,8 @@ public class ExchangeImportSchemaManagerService {
Articoli(4),
PartiteMagazzinoLavorazione(5),
VersamentoGrezzo(6),
CampiRaccolta(7);
CampiRaccolta(7),
ValorizzazioneCertificati(8);
private final int value;
@@ -67,6 +68,7 @@ public class ExchangeImportSchemaManagerService {
put(SchemaType.PartiteMagazzinoLavorazione, Arrays.asList("mtb_partita_mag_lav"));
put(SchemaType.VersamentoGrezzo, Arrays.asList("mtb_colt_versamento_grezzo", "mtb_colr_versamento_grezzo"));
put(SchemaType.CampiRaccolta, Collections.singletonList("campi_raccolta"));
put(SchemaType.ValorizzazioneCertificati, Collections.singletonList("valorizzazione_certificati"));
}};
public void syncSchema(Connection connection, SchemaType schemaType, boolean createTempTablesToo) throws Exception {