varie per importazione movimenti di rossogargano

This commit is contained in:
2024-10-28 10:38:03 +01:00
parent e2b997c4b4
commit 26e88f4b29
7 changed files with 105 additions and 19 deletions

View File

@@ -0,0 +1,21 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20241025173251 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement("ALTER TABLE ctb_movt ADD rif_import varchar(40)");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -220,20 +220,8 @@ public class EmsServices {
boolean anyError = checkForErrorsAndAddToResponse(entityImporter, tmpResult, result, gestName, format, fileContent, file.getName(), anomaliaIsError, headless);
/* 22/01/2018 MARCO: Se la procedura di import va a buon fine, il file viene spostato nella cartella Imported a prescindere dalla presenza o meno di anomalie. */
if (!anyError && file != null && !anomaliaIsError) {
String absolutePath = setupGest.getImportSetup(multiDBTransactionManager.getPrimaryConnection(), type, format, "PATH_FILE_IMPORTED");
if (!UtilityString.isNullOrEmpty(absolutePath)) {
String fileNameDest = entityImporter.renameFile(file.getName(), tmpResult);
File destFile = new File(absolutePath + File.separator + fileNameDest);
if (destFile.exists()) {
destFile.delete();
}
if (!UtilityFile.directoryExists(absolutePath)) {
UtilityFile.directoryCreate(absolutePath);
}
FileUtils.moveFile(file, destFile);
}
}
if (!anyError && file != null && !anomaliaIsError)
moveFileImported(type, format, file, entityImporter, tmpResult);
}
} catch (Exception ex) {
if (headless) {
@@ -286,7 +274,13 @@ public class EmsServices {
List<EntityBase> tmpResult = (List<EntityBase>) entityImporter.doImport();
response.getAnomalie().addAll(entityImporter.getAnomalie());
checkForErrorsAndAddToResponse(entityImporter, tmpResult, result, gestName, format, fileContent, fileName, anomaliaIsError, headless);
boolean anyError = checkForErrorsAndAddToResponse(entityImporter, tmpResult, result, gestName, format, fileContent, fileName, anomaliaIsError, headless);
if (!anyError && fileContent != null && !anomaliaIsError){
File file = new File(fileName);
FileUtils.writeByteArrayToFile(file, fileContent);
moveFileImported(type, format, file, entityImporter, tmpResult);
}
} catch (Exception ex) {
if (headless) {
@@ -315,6 +309,21 @@ public class EmsServices {
}
}
private void moveFileImported(String type, String format, File file, IEntityImporter entityImporter, List<EntityBase> tmpResult) throws Exception {
String absolutePath = setupGest.getImportSetup(multiDBTransactionManager.getPrimaryConnection(), type, format, "PATH_FILE_IMPORTED");
if (!UtilityString.isNullOrEmpty(absolutePath)) {
String fileNameDest = entityImporter.renameFile(file.getName(), tmpResult);
File destFile = new File(absolutePath + File.separator + fileNameDest);
if (destFile.exists()) {
destFile.delete();
}
if (!UtilityFile.directoryExists(absolutePath)) {
UtilityFile.directoryCreate(absolutePath);
}
FileUtils.moveFile(file, destFile);
}
}
/**
* Procedura di impostazione parametri Entity Importer
*

View File

@@ -118,6 +118,9 @@ public class CtbMovt extends EntityBase {
@SqlField(value = "data_comp_iva")
private Date dataCompIva;
@SqlField(value = "rif_import", maxLength = 40)
private String rifImport;
@JsonProperty(value = "flag_scorporo")
private String flagScorporo;
@@ -581,6 +584,15 @@ public class CtbMovt extends EntityBase {
return this;
}
public String getRifImport() {
return rifImport;
}
public CtbMovt setRifImport(String rifImport) {
this.rifImport = rifImport;
return this;
}
public List<CtbMovi> getCtbMovi() {
return ctbMovi;
}

File diff suppressed because one or more lines are too long

View File

@@ -3,9 +3,14 @@ package it.integry.ems.contabil.Import;
import it.integry.ems.Import.base.BaseEntityImporter;
import it.integry.ems.Import.base.IEntityImporter;
import it.integry.ems.contabil.Import.service.ContabilImportService;
import it.integry.ems.document.Import.DocumentiImporter;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.entity.CtbMovt;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Optional;
public class ContabilImporter extends BaseEntityImporter<List<EntityBase>> implements IEntityImporter<List<EntityBase>> {
@@ -64,4 +69,26 @@ public class ContabilImporter extends BaseEntityImporter<List<EntityBase>> imple
return this.text;
}
}
@Override
public String renameFile(String orginalFileName, List<EntityBase> entities) throws Exception {
{
ContabilImporter.Format enumFormat = ContabilImporter.Format.fromString(super.format);
String fileNameDest = null;
if (enumFormat != null) {
switch (enumFormat) {
case DOCFINANCE:
String rifImport = entities.stream()
.filter(x -> x instanceof CtbMovt).findFirst().map(x -> ((CtbMovt) x).getRifImport()).orElse(null);
fileNameDest = rifImport + ".txt";
break;
default:
fileNameDest = super.renameFile(orginalFileName, entities);
}
}
return fileNameDest;
}
}
}

View File

@@ -497,6 +497,11 @@ public class MovimentiContabiliDocfinanceDTO {
}
public static CtbMovt fromMovimenti(MovimentiContabiliDocfinanceDTO mov){
return new CtbMovt().setDataCmov(mov.getDataOperazione()).setCodCcau(mov.getCausaleCoge()).setDescrizioneCaus(String.valueOf(mov.hashCode()));
return new CtbMovt()
.setDataCmov(mov.getDataOperazione())
.setCodCcau(mov.getCausaleCoge())
.setDescrizioneCaus(String.valueOf(mov.hashCode()))
.setNumDoc(Integer.valueOf(mov.getMovimento()))
.setRifImport(mov.getAnnoCoge() + "_" + mov.getNumeroRitornoCoge());
}
}

View File

@@ -582,13 +582,26 @@ public class ContabilImportService {
TxtMapper<MovimentiContabiliDocfinanceDTO> txtMapper = new TxtMapper<MovimentiContabiliDocfinanceDTO>()
.setFieldsSplitChar("");
List<MovimentiContabiliDocfinanceDTO> deserialize = txtMapper.deserialize(lines, MovimentiContabiliDocfinanceDTO.class);
String sql =
Query.format(
"SELECT CAST(count(*) as bit ) FROM ctb_movt WHERE rif_import = %s",
deserialize.get(0).getAnnoCoge() + "_" + deserialize.get(0).getNumeroRitornoCoge()
);
if ( UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql))
throw new Exception("Impossibile importare questo file, movimenti già importati");
Map<CtbMovt, List<MovimentiContabiliDocfinanceDTO>> movimenti = deserialize.stream().collect(Collectors.groupingBy(MovimentiContabiliDocfinanceDTO::fromMovimenti));
List<CtbMovt> ctbMovtList = new ArrayList<>();
for (CtbMovt ctbMovt : movimenti.keySet()) {
String codCcau = ctbMovt.getCodCcau();
String sql = Query.format("SELECT CAST(COUNT(*) AS BIT) FROM ctb_caus WHERE cod_ccau = %s", codCcau);
sql = Query.format("SELECT CAST(COUNT(*) AS BIT) FROM ctb_caus WHERE cod_ccau = %s", codCcau);
boolean codCcauExists = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql);
if (!codCcauExists) {
@@ -674,7 +687,6 @@ public class ContabilImportService {
if (listAnomalie.isEmpty() || listAnomalie.stream().noneMatch(AnomalieDTO::isError)){
return entityProcessor.processEntityList(ctbMovtList, true);
}
return new ArrayList<>();
}
}