Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
This commit is contained in:
@@ -42,6 +42,7 @@ public class UtilityString {
|
||||
//-----------------------------------------------------------------------------------------
|
||||
//senza spazi
|
||||
put("^\\d{8}$", "yyyyMMdd");
|
||||
put("^\\d{6}$", "yyMMdd");
|
||||
put("^\\d{1,2}\\s[a-z]{3}\\s\\d{4}$", "dd MMM yyyy");
|
||||
put("^\\d{1,2}\\s[a-z]{4,}\\s\\d{4}$", "dd MMMM yyyy");
|
||||
|
||||
|
||||
@@ -4,8 +4,7 @@ import it.integry.ems.response.FileItem;
|
||||
import org.apache.commons.io.FilenameUtils;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
import java.util.zip.*;
|
||||
|
||||
public class UtilityZip {
|
||||
@@ -133,25 +132,32 @@ public class UtilityZip {
|
||||
return outputStream.toByteArray();
|
||||
}
|
||||
|
||||
public static List<byte[]> extractZipFile(byte[] zipFile) throws Exception {
|
||||
List<byte[]> extractedFiles = new ArrayList<>();
|
||||
ByteArrayInputStream inputStream = new ByteArrayInputStream(zipFile);
|
||||
ZipInputStream zipInputStream = new ZipInputStream(inputStream);
|
||||
public static Map<String, byte[]> extractZipFile(String zipFilePath) throws IOException {
|
||||
Map<String, byte[]> extractedFiles = new HashMap<>();
|
||||
|
||||
try (ZipFile zipFile = new ZipFile(zipFilePath)) {
|
||||
Enumeration<? extends ZipEntry> entries = zipFile.entries();
|
||||
|
||||
while (entries.hasMoreElements()) {
|
||||
ZipEntry entry = entries.nextElement();
|
||||
|
||||
if (entry.isDirectory()) continue;
|
||||
|
||||
try (InputStream is = zipFile.getInputStream(entry);
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
|
||||
|
||||
while (zipInputStream.getNextEntry() != null) {
|
||||
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
||||
byte[] buffer = new byte[1024];
|
||||
int len;
|
||||
while ((len = zipInputStream.read(buffer)) > 0) {
|
||||
outputStream.write(buffer, 0, len);
|
||||
}
|
||||
extractedFiles.add(outputStream.toByteArray());
|
||||
zipInputStream.closeEntry();
|
||||
outputStream.close();
|
||||
while ((len = is.read(buffer)) > 0) {
|
||||
baos.write(buffer, 0, len);
|
||||
}
|
||||
|
||||
extractedFiles.put(entry.getName(), baos.toByteArray());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
zipInputStream.close();
|
||||
inputStream.close();
|
||||
return extractedFiles;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,98 @@
|
||||
package it.integry.ems.document.Import.dto;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
public class AckIntesaDTO {
|
||||
|
||||
private String tipo;
|
||||
private int IdFile;
|
||||
private String tipoDoc;
|
||||
private LocalDate DataFirma;
|
||||
private String numDoc;
|
||||
private LocalDate dataDoc;
|
||||
private String pIva;
|
||||
private String codFisc;
|
||||
private String fileName;
|
||||
|
||||
public String getTipo() {
|
||||
return tipo;
|
||||
}
|
||||
|
||||
public AckIntesaDTO setTipo(String tipo) {
|
||||
this.tipo = tipo;
|
||||
return this;
|
||||
}
|
||||
|
||||
public int getIdFile() {
|
||||
return IdFile;
|
||||
}
|
||||
|
||||
public AckIntesaDTO setIdFile(int idFile) {
|
||||
IdFile = idFile;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getTipoDoc() {
|
||||
return tipoDoc;
|
||||
}
|
||||
|
||||
public AckIntesaDTO setTipoDoc(String tipoDoc) {
|
||||
this.tipoDoc = tipoDoc;
|
||||
return this;
|
||||
}
|
||||
|
||||
public LocalDate getDataFirma() {
|
||||
return DataFirma;
|
||||
}
|
||||
|
||||
public AckIntesaDTO setDataFirma(LocalDate dataFirma) {
|
||||
DataFirma = dataFirma;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getNumDoc() {
|
||||
return numDoc;
|
||||
}
|
||||
|
||||
public AckIntesaDTO setNumDoc(String numDoc) {
|
||||
this.numDoc = numDoc;
|
||||
return this;
|
||||
}
|
||||
|
||||
public LocalDate getDataDoc() {
|
||||
return dataDoc;
|
||||
}
|
||||
|
||||
public AckIntesaDTO setDataDoc(LocalDate dataDoc) {
|
||||
this.dataDoc = dataDoc;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getpIva() {
|
||||
return pIva;
|
||||
}
|
||||
|
||||
public AckIntesaDTO setpIva(String pIva) {
|
||||
this.pIva = pIva;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodFisc() {
|
||||
return codFisc;
|
||||
}
|
||||
|
||||
public AckIntesaDTO setCodFisc(String codFisc) {
|
||||
this.codFisc = codFisc;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getFileName() {
|
||||
return fileName;
|
||||
}
|
||||
|
||||
public AckIntesaDTO setFileName(String fileName) {
|
||||
this.fileName = fileName;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,17 +1,104 @@
|
||||
package it.integry.ems.document.Import.service;
|
||||
|
||||
import it.integry.ems.Import.dto.ImportRequestDTO;
|
||||
import it.integry.ems.document.Import.dto.AckIntesaDTO;
|
||||
import it.integry.ems.response.FileItem;
|
||||
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.entity.DtbDocuLog;
|
||||
import it.integry.ems_model.types.OperationType;
|
||||
import it.integry.ems_model.utility.*;
|
||||
import org.apache.commons.codec.binary.Base64;
|
||||
import org.checkerframework.checker.units.qual.A;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Service
|
||||
@Scope(value = "request")
|
||||
public class AckImportService {
|
||||
|
||||
public List<EntityBase> importAckIntesa(String type, String format, ImportRequestDTO requestDto) {
|
||||
return null;
|
||||
@Autowired
|
||||
private MultiDBTransactionManager multiDBTransactionManager;
|
||||
|
||||
@Autowired
|
||||
private EntityProcessor entityProcessor;
|
||||
|
||||
public List<EntityBase> importAckIntesa(String type, String format, ImportRequestDTO request) throws Exception {
|
||||
Map<String, byte[]> fileList = UtilityZip.extractZipFile(request.getPathFile());
|
||||
List<EntityBase> resultList = new ArrayList<>();
|
||||
|
||||
for (Map.Entry<String, byte[]> fileMap : fileList.entrySet()) {
|
||||
String fileName = fileMap.getKey();
|
||||
byte[] file = fileMap.getValue();
|
||||
|
||||
if (!fileName.contains("ACK2"))
|
||||
continue;
|
||||
|
||||
List<AckIntesaDTO> ackList = parseCSVLineToDTO(
|
||||
UtilityCSV.readCSV(new String(file, StandardCharsets.UTF_8), ";")
|
||||
);
|
||||
|
||||
for (AckIntesaDTO ack : ackList) {
|
||||
String documentFileName = ack.getFileName();
|
||||
|
||||
String[] parts = documentFileName.replace(".pdf", "").split("_");
|
||||
|
||||
String codDtip = parts[1];
|
||||
String serDoc = parts[2].replace("-", "/");
|
||||
int numDoc = Integer.parseInt(parts[3]);
|
||||
LocalDate dataDoc = UtilityString.parseLocalDate(parts[4]);
|
||||
String codAnag = parts[5];
|
||||
|
||||
codAnag = "C7401";
|
||||
codDtip = "ABRW";
|
||||
|
||||
DtbDocuLog dtbDocuLog = new DtbDocuLog()
|
||||
.setCodDtip(codDtip)
|
||||
.setNumDoc(numDoc)
|
||||
.setSerDoc(serDoc)
|
||||
.setDataDoc(UtilityLocalDate.localDateToDate(dataDoc))
|
||||
.setCodAnag(codAnag)
|
||||
.setFlagType("E")
|
||||
.setDocType("DOCUMENTI")
|
||||
.setFormatFile("INTESA");
|
||||
dtbDocuLog.setOperation(OperationType.SELECT_OBJECT);
|
||||
dtbDocuLog.setOnlyPkMaster(false);
|
||||
|
||||
dtbDocuLog = entityProcessor.processEntity(dtbDocuLog, multiDBTransactionManager);
|
||||
|
||||
dtbDocuLog.setFlagErrore(false);
|
||||
dtbDocuLog.setOnlyPkMaster(true);
|
||||
dtbDocuLog.setOperation(OperationType.UPDATE);
|
||||
|
||||
resultList.add(entityProcessor.processEntity(dtbDocuLog, multiDBTransactionManager, false));
|
||||
}
|
||||
}
|
||||
|
||||
return resultList;
|
||||
}
|
||||
|
||||
private List<AckIntesaDTO> parseCSVLineToDTO(List<List<String>> csvContent) {
|
||||
List<AckIntesaDTO> ackList = new ArrayList<>();
|
||||
|
||||
for (List<String> line : csvContent) {
|
||||
for (int i = 0; i < line.size(); i++) {
|
||||
if (i == line.size() - 1){
|
||||
ackList.add(
|
||||
new AckIntesaDTO()
|
||||
.setFileName(line.get(i))
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ackList;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ import it.integry.ems_model.utility.*;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.apache.poi.ss.formula.functions.T;
|
||||
import org.quartz.SimpleTrigger;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -52,7 +53,11 @@ public class DocumentiIntesaExportService {
|
||||
List<DtbDoct> dtbDocts = UtilityDB.executeSimpleQueryDTO(conn, sql, DtbDoct.class);
|
||||
if (dtbDocts == null || dtbDocts.isEmpty()) throw new Exception("Nessun documento trovato");
|
||||
|
||||
List<Date> dateDocumenti = dtbDocts.stream().map(DtbDoct::getDataDoc).collect(Collectors.toList());
|
||||
List<Date> dataDocList = dtbDocts.stream().map(DtbDoct::getDataDoc).collect(Collectors.toList());
|
||||
List<Integer> numDocList = dtbDocts.stream().map(DtbDoct::getNumDoc).collect(Collectors.toList());
|
||||
List<String> serDocList = dtbDocts.stream().map(DtbDoct::getSerDoc).collect(Collectors.toList());
|
||||
List<String> codAnagList = dtbDocts.stream().map(DtbDoct::getCodAnag).collect(Collectors.toList());
|
||||
List<String> codDtipList = dtbDocts.stream().map(DtbDoct::getCodDtip).collect(Collectors.toList());
|
||||
|
||||
Map<String, String> setup = setupGest.getExportSetupSection(conn, type, format);
|
||||
String piattaforma = setup.get("PIATTAFORMA");
|
||||
@@ -96,7 +101,11 @@ public class DocumentiIntesaExportService {
|
||||
" ON doc.data_doc = pdf.data_doc AND doc.num_doc = pdf.num_doc AND doc.ser_doc = pdf.ser_doc\n" +
|
||||
" AND doc.cod_anag = pdf.cod_anag AND doc.cod_dtip = pdf.cod_dtip\n" +
|
||||
" CROSS APPLY azienda\n" +
|
||||
"WHERE doc.data_doc IN (" + UtilityDB.listValueToString(dateDocumenti) + ")\n" +
|
||||
"WHERE doc.data_doc IN (" + UtilityDB.listValueToString(dataDocList) + ")\n" +
|
||||
" AND doc.num_doc IN (" + UtilityDB.listValueToString(numDocList) + ")\n" +
|
||||
" AND doc.ser_doc IN (" + UtilityDB.listValueToString(serDocList) + ")\n" +
|
||||
" AND doc.cod_dtip IN (" + UtilityDB.listValueToString(codDtipList) + ")\n" +
|
||||
" AND doc.cod_anag IN (" + UtilityDB.listValueToString(codAnagList) + ")\n" +
|
||||
" AND doc.gestione = 'V'\n" +
|
||||
" AND dtb_tipi.tipo_emissione = 'DIRETTA'\n" +
|
||||
" AND pdf.rn = 1",
|
||||
@@ -124,7 +133,11 @@ public class DocumentiIntesaExportService {
|
||||
" INNER JOIN RankedPDF pdf\n" +
|
||||
" ON doc.data_doc = pdf.data_doc AND doc.num_doc = pdf.num_doc AND doc.ser_doc = pdf.ser_doc\n" +
|
||||
" AND doc.cod_anag = pdf.cod_anag AND doc.cod_dtip = pdf.cod_dtip\n" +
|
||||
"WHERE doc.data_doc = " + UtilityDB.listValueToString(dateDocumenti) + "\n" +
|
||||
"WHERE doc.data_doc IN (" + UtilityDB.listValueToString(dataDocList) + ")\n" +
|
||||
" AND doc.num_doc IN (" + UtilityDB.listValueToString(numDocList) + ")\n" +
|
||||
" AND doc.ser_doc IN (" + UtilityDB.listValueToString(serDocList) + ")\n" +
|
||||
" AND doc.cod_dtip IN (" + UtilityDB.listValueToString(codDtipList) + ")\n" +
|
||||
" AND doc.cod_anag IN (" + UtilityDB.listValueToString(codAnagList) + ")\n" +
|
||||
" AND doc.gestione = 'V'\n" +
|
||||
" AND dtb_tipi.tipo_emissione = 'DIRETTA'\n" +
|
||||
" AND pdf.rn = 1",
|
||||
|
||||
Reference in New Issue
Block a user