Modifiche importazione documenti consortile

This commit is contained in:
2025-01-30 17:31:52 +01:00
parent 99b4bbb9f1
commit 1d35861f1e
6 changed files with 263 additions and 13 deletions

View File

@@ -0,0 +1,23 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250129094019 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("IMPORT_DOCUMENTI ACQUISTO", "CONSORTILE", "NEW_VERSION", "N",
"Se impostato a S parte la nuova versione che gestisce la produzione sulla consortile", false, null, false, false,
false, false, false, null, false, null);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -122,8 +122,14 @@ public class DocumentiImporter extends BaseEntityImporter<List<EntityBase>> impl
.importDocWeb(type, format, requestDto.getWhereCond(), anomalie);
break;
case CONSORTILE:
ConsortileFilterDTO filter = mapJsonToDTO(requestDto.getRawContent(), ConsortileFilterDTO.class);
if (filter.getNewVersion().compareTo("S") == 0){
entities = getContextBean(DocumentiConsortileService.class)
.trasferimentoDocumentiAcquisto(type, format, mapJsonToDTO(requestDto.getRawContent(), ConsortileFilterDTO.class), anomalie);
.trasferimentoDocumentiAcquistoNew(type, format, mapJsonToDTO(requestDto.getRawContent(), ConsortileFilterDTO.class), anomalie);
}else {
entities = getContextBean(DocumentiConsortileService.class)
.trasferimentoDocumentiAcquistoOld(type, format, mapJsonToDTO(requestDto.getRawContent(), ConsortileFilterDTO.class), anomalie);
}
break;
case SCAR_MP_DA_DIST:

View File

@@ -16,6 +16,16 @@ public class ConsortileFilterDTO implements Serializable {
@JsonProperty(value = "cod_anag")
private String codAnag;
@DtoField(format = formatDate)
@JsonProperty(value = "data_doc_fine")
private Date dataDocFine;
@JsonProperty(value = "new_version")
private String newVersion;
@JsonProperty(value = "conto_lavoro")
private String contoLavoro;
public Date getDataDoc() {
return dataDoc;
}
@@ -33,4 +43,28 @@ public class ConsortileFilterDTO implements Serializable {
this.codAnag = codAnag;
return this;
}
public Date getDataDocFine() {
return dataDocFine;
}
public void setDataDocFine(Date dataDocFine) {
this.dataDocFine = dataDocFine;
}
public String getNewVersion() {
return newVersion;
}
public void setNewVersion(String newVersion) {
this.newVersion = newVersion;
}
public String getContoLavoro() {
return contoLavoro;
}
public void setContoLavoro(String contoLavoro) {
this.contoLavoro = contoLavoro;
}
}

View File

@@ -30,6 +30,8 @@ import java.util.Date;
import java.util.HashMap;
import java.util.List;
import static it.integry.ems.rules.completing.QueryRules.getSingleValue;
@Service
@Scope(value = "request")
public class DocumentiConsortileService {
@@ -148,8 +150,7 @@ public class DocumentiConsortileService {
return passaporto;
}
public List<EntityBase> trasferimentoDocumentiAcquisto(String type, String format, ConsortileFilterDTO filter, List<AnomalieDTO> anomalie) throws Exception {
public List<EntityBase> trasferimentoDocumentiAcquistoNew(String type, String format, ConsortileFilterDTO filter, List<AnomalieDTO> anomalie) throws Exception {
MultiDBTransactionManager multiDBTransactionManagerAzAgr = new MultiDBTransactionManager();
List<EntityBase> docAConsortile = new ArrayList<EntityBase>();
List<EntityBase> docVAzAgr = new ArrayList<EntityBase>();
@@ -158,11 +159,195 @@ public class DocumentiConsortileService {
String codAnag = filter.getCodAnag();
Date dataDoc = filter.getDataDoc();
Date dataDocFine = filter.getDataDocFine();
String contoLavoro = filter.getContoLavoro();
String dataDocString = new SimpleDateFormat("yyyy-MM-dd").format(dataDoc);
dataDoc = UtilityDate.StringToDate(dataDocString, CommonConstants.DATE_FORMAT_YMD);
String codDtip = null, serDocAcq = null;
String whereCond = "gruppo = " + UtilityDB.valueToString(contoLavoro);
query = "select DATEDIFF(day, " + UtilityDB.valueDateToString(dataDoc, CommonConstants.DATE_FORMAT_YMD) + ", " +
UtilityDB.valueDateToString(dataDocFine, CommonConstants.DATE_FORMAT_YMD) + ")";
Integer ggPeriodo = (Integer) getSingleValue(multiDBTransactionManager.getPrimaryConnection(), query);
query = "select * from dbo.getFLDocAcqForTrasf(" + UtilityDB.valueDateToString(dataDoc, CommonConstants.DATE_FORMAT_YMD) + "," +
UtilityDB.valueDateToString(dataDocFine, CommonConstants.DATE_FORMAT_YMD) + "," +
UtilityDB.valueToString(codAnag) + ")doc ";
query = UtilityDB.addwhereCond(query, whereCond, true);
List<HashMap<String, Object>> results = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), query);
for (int j = 0; j < results.size(); j++) {
HashMap<String, Object> result = results.get(j);
codDtip = UtilityHashMap.getValueIfExists(result, "cod_dtip");
serDocAcq = UtilityHashMap.getValueIfExists(result, "ser_doc");
String codMart = UtilityHashMap.getValueIfExists(result, "cod_mart");
String descrizione = UtilityHashMap.getValueIfExists(result, "descrizione");
String descrizioneEstesa = UtilityHashMap.getValueIfExists(result, "descrizione_estesa");
String codAlis = UtilityHashMap.getValueIfExists(result, "cod_alis");
String passaporto = UtilityHashMap.getValueIfExists(result, "passaporto");
String origine = UtilityHashMap.getValueIfExists(result, "origine");
String untDoc = UtilityHashMap.getValueIfExists(result, "unt_doc");
BigDecimal przAcq = UtilityHashMap.getValueIfExists(result, "prz_acq");
BigDecimal rapConv = UtilityHashMap.getValueIfExists(result, "rap_conv");
String profileDB = UtilityHashMap.getValueIfExists(result, "profileDB");
BigDecimal qtaVend = UtilityHashMap.getValueIfExists(result, "qta_vend");
Integer rowID = UtilityHashMap.getValueIfExists(result, "rowID");
String codDtipVend = UtilityHashMap.getValueIfExists(result, "cod_dtip_vend");
String codMdep = UtilityHashMap.getValueIfExists(result, "cod_mdep");
String codVlis = UtilityHashMap.getValueIfExists(result, "cod_vlis");
String codAnagVend = UtilityHashMap.getValueIfExists(result, "cod_anag_vend");
// Connessione al database dell'azienda agricola
if (j == 0) {
DataSource dsSync = new DataSource();
dsSync.initialize(profileDB);
multiDBTransactionManagerAzAgr.setPrimaryDs(profileDB);
}
// Creazione documento vendita per azienda agricola
String serDocVend = null;
String codIreg = null;
Integer numIreg = null;
Integer numDocVend = 0;
if (rowID == 1) {
// Acquisizione numero documento di vendita azienda agricola che diventerà documenti di acquisto della consortile
query = "select cod_ireg, num_ireg, ISNULL(serie, '/') from dtb_tipi where cod_dtip = " + UtilityDB.valueToString(codDtipVend);
PreparedStatement stmDati = multiDBTransactionManagerAzAgr.getPrimaryConnection().prepareStatement(query);
ResultSet rsDati = stmDati.executeQuery();
while (rsDati.next()) {
codIreg = rsDati.getString(1);
numIreg = rsDati.getInt(2);
serDocVend = rsDati.getString(3);
}
rsDati.close();
stmDati.close();
numDocVend = DocumentRules.nextNumDoc(multiDBTransactionManagerAzAgr.getPrimaryConnection(), dataDoc, codIreg, serDocVend, numIreg, numDocVend);
// Creazione testata documento
docV = new DtbDoct();
docV.setOperation(OperationType.INSERT);
docV.setCodDtip(codDtipVend);
docV.setCodAnag(codAnagVend);
docV.setDataDoc(dataDoc);
docV.setSerDoc(serDocVend);
docV.setNumDoc(numDocVend);
docV.setCodMdep(codMdep);
docV.setListino(codVlis);
docVAzAgr.add(docV);
}
DtbDocr docrV = new DtbDocr();
docrV.setOperation(OperationType.INSERT);
docrV.setCodMart(codMart);
docrV.setDescrizione(descrizione);
docrV.setDescrizioneEstesa(descrizioneEstesa);
docrV.setUntDoc(untDoc);
docrV.setRapConv(rapConv);
docrV.setQtaDoc(qtaVend);
docrV.setPartitaMag(origine);
String passaportoAzAgricola = getPassaportoAzAgricola(multiDBTransactionManager, multiDBTransactionManagerAzAgr, codAlis, codMart, origine, dataDoc);
docrV.setCodArtFor(passaportoAzAgricola);
docrV.setCodAlis(codAlis);
docrV.setValUnt(przAcq);
docV.getDtbDocr().add(docrV);
// Creazione documento di acquisto per consortile
if (rowID == 1) {
docA = new DtbDoct();
docA.setOperation(OperationType.INSERT);
docA.setCodDtip(codDtip);
docA.setCodAnag(codAnag);
docA.setDataDoc(dataDoc);
docA.setSerDoc(serDocAcq);
docA.setNumDoc(numDocVend);
docA.setCodMdep(codMdep);
docA.setListino(codAlis);
docAConsortile.add(docA);
}
DtbDocr docrA = new DtbDocr();
docrA.setOperation(OperationType.INSERT);
docrA.setCodMart(codMart);
docrA.setDescrizione(descrizione);
docrA.setDescrizioneEstesa(descrizioneEstesa);
docrA.setUntDoc(untDoc);
docrA.setRapConv(rapConv);
docrA.setQtaDoc(qtaVend);
docrA.setPartitaMag(origine);
docrA.setCodArtFor(passaporto);
docrA.setCodAlis(codAlis);
docrA.setValUnt(przAcq);
docA.getDtbDocr().add(docrA);
}
/*Nella tabella del log dei documenti importati non possiamo inserire il documento di vendita, perchè in un documento
ci sono più listini di acquisto e quindi più documenti di acquisto da creare e se impostiamo tutto il documento come importato,
per il fornitore successivo non creerebbe gli altri documenti di acquisto, quindi creo un documento fittizio con tipo_doc, cod_anag e data_doc*/
if (!docAConsortile.isEmpty()) {
ggPeriodo = ggPeriodo + 1;
for (int i = 0; i < ggPeriodo; i++) {
Date dataDocDett = UtilityDate.dateAdd(dataDoc, i);
DtbDocuLog docuLog = new DtbDocuLog();
docuLog.setOperation(OperationType.INSERT_OR_UPDATE);
docuLog.setCodAnag(codAnag);
docuLog.setCodDtip(codDtip);
docuLog.setSerDoc(serDocAcq);
docuLog.setDataDoc(dataDocDett);
docuLog.setNumDoc(0);
docuLog.setNote(contoLavoro);
docuLog.setFlagType("I");
docuLog.setFormatFile(format);
docuLog.setDocType(type);
docuLog.setDateTimeLog(new Date());
docuLog.setUserName(requestDataDTO.getUsername());
docAConsortile.add(docuLog);
}
}
// Registrazione documenti acquisto consortile
for (int i = 0; i < docAConsortile.size(); i++) {
entityProcessor.processEntity(docAConsortile.get(i), true, true, multiDBTransactionManager.getPrimaryDatasource().getProfile(), multiDBTransactionManager);
if (docAConsortile.get(i).getException() != null) {
multiDBTransactionManager.rollbackAll();
multiDBTransactionManagerAzAgr.rollbackAll();
throw new Exception(docAConsortile.get(i).getException().getMessage());
}
}
// Registrazione documenti vendita azienda agricola
for (int i = 0; i < docVAzAgr.size(); i++) {
entityProcessor.processEntity(docVAzAgr.get(i), true, true, multiDBTransactionManagerAzAgr.getPrimaryDatasource().getProfile(), multiDBTransactionManagerAzAgr);
if (docVAzAgr.get(i).getException() != null) {
multiDBTransactionManager.rollbackAll();
multiDBTransactionManagerAzAgr.rollbackAll();
throw new Exception(docVAzAgr.get(i).getException().getMessage());
}
}
if (docAConsortile.isEmpty()) {
throw new Exception("Non ci sono documenti da importare");
} else {
multiDBTransactionManagerAzAgr.commitAll();
multiDBTransactionManager.commitAll();
}
return docAConsortile;
}
public List<EntityBase> trasferimentoDocumentiAcquistoOld(String type, String format, ConsortileFilterDTO filter, List<AnomalieDTO> anomalie) throws Exception {
MultiDBTransactionManager multiDBTransactionManagerAzAgr = new MultiDBTransactionManager();
List<EntityBase> docAConsortile = new ArrayList<EntityBase>();
List<EntityBase> docVAzAgr = new ArrayList<EntityBase>();
DtbDoct docA = new DtbDoct();
DtbDoct docV = new DtbDoct();
String codAnag = filter.getCodAnag();
Date dataDoc = filter.getDataDoc();
Date dataDocFine = filter.getDataDocFine();
String dataDocString = new SimpleDateFormat("yyyy-MM-dd").format(dataDoc);
dataDoc = UtilityDate.StringToDate(dataDocString, CommonConstants.DATE_FORMAT_YMD);
String codDtip = null, serDocAcq = null;
query = "select * from dbo.getFLDocAcqForTrasf(" + UtilityDB.valueDateToString(dataDoc, CommonConstants.DATE_FORMAT_YMD) + "," + UtilityDB.valueToString(codAnag) + ")doc ";
query = "select * from dbo.getFLDocAcqForTrasf(" + UtilityDB.valueDateToString(dataDoc, CommonConstants.DATE_FORMAT_YMD) + ", " + UtilityDB.valueDateToString(dataDoc, CommonConstants.DATE_FORMAT_YMD) + "," + UtilityDB.valueToString(codAnag) + ")doc ";
List<HashMap<String, Object>> results = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), query);
for (int j = 0; j < results.size(); j++) {
HashMap<String, Object> result = results.get(j);
@@ -277,6 +462,7 @@ public class DocumentiConsortileService {
docuLog.setSerDoc(serDocAcq);
docuLog.setDataDoc(dataDoc);
docuLog.setNumDoc(0);
docuLog.setNote("A");
docuLog.setFlagType("I");
docuLog.setFormatFile(format);
docuLog.setDocType(type);

View File

@@ -1,5 +1,6 @@
package it.integry.ems.production.controller;
import it.integry.ems.javabeans.RequestDataDTO;
import it.integry.ems.production.dto.FLAggListinoProdDTO;
import it.integry.ems.production.dto.FLDatiProdDTO;
import it.integry.ems.production.service.FLProductionService;
@@ -28,6 +29,9 @@ public class FLProductionController {
@Autowired
private FLProductionService MLProductionService;
@Autowired
RequestDataDTO requestDataDTO;
@RequestMapping(value = EmsRestConstants.PATH_FL_AGGIORNA_LISTINO_PROD, method = RequestMethod.POST)
public @ResponseBody
ServiceRestResponse FLAggiornaListinoProd(HttpServletRequest request,
@@ -35,7 +39,7 @@ public class FLProductionController {
ServiceRestResponse response;
try {
MLProductionService.FLAggiornaListinoProd(flAggListinoProdDTO);
MLProductionService.FLAggiornaListinoProd(flAggListinoProdDTO, requestDataDTO.getProfileDB());
response = new ServiceRestResponse(EsitoType.OK);
} catch (Exception e) {
logger.error(request.getRequestURI(), e);

View File

@@ -337,7 +337,7 @@ public class FLProductionService {
ps.close();
}
public void FLAggiornaListinoProd(FLAggListinoProdDTO flAggListinoProdDTO) throws Exception {
public void FLAggiornaListinoProd(FLAggListinoProdDTO flAggListinoProdDTO, String profileDB) throws Exception {
String passaporto = null, passaportoDBCentrale = null;
Integer versione = 0;
OperationType operationType = null;
@@ -398,10 +398,8 @@ public class FLProductionService {
if ("S".compareTo(isDBcentrale) == 0) {
/* passaporto = getNextNumPassaporto(connDBCentrale, codCentroAziDBCentrale, flAggListinoProdDTO.getDataProd());
passaportoDBCentrale = passaporto;*/
passaporto = flAggListinoProdDTO.getPassaporto();
passaporto = getNextNumPassaporto(connDBCentrale, codCentroAziDBCentrale, flAggListinoProdDTO.getDataProd());
passaportoDBCentrale = passaporto;
}
if (!UtilityString.isNullOrEmpty(flAggListinoProdDTO.getCodAlis())) {
@@ -440,7 +438,7 @@ public class FLProductionService {
String erroreMessage = mtbListData.getException().getMessage();
throw new Exception(erroreMessage);
} else {
if ("N".compareTo(contoLavoro) == 0 && isDBcentrale.compareTo("N") == 0) {
if ("N".compareTo(contoLavoro) == 0 && !profileDBCentrale.equalsIgnoreCase(profileDB)) {
/*******************************************************
* AGGIORNAMENTO LISTINO FORNITORE DATABASE CENTRALE
* ******************************************************/
@@ -535,5 +533,4 @@ public class FLProductionService {
} else throw new Exception("Listino non presente in anagrafica o non valorizzato");
}
}