Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
This commit is contained in:
@@ -42,6 +42,7 @@ public class UtilityString {
|
|||||||
//-----------------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------------
|
||||||
//senza spazi
|
//senza spazi
|
||||||
put("^\\d{8}$", "yyyyMMdd");
|
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]{3}\\s\\d{4}$", "dd MMM yyyy");
|
||||||
put("^\\d{1,2}\\s[a-z]{4,}\\s\\d{4}$", "dd MMMM 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 org.apache.commons.io.FilenameUtils;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.zip.*;
|
import java.util.zip.*;
|
||||||
|
|
||||||
public class UtilityZip {
|
public class UtilityZip {
|
||||||
@@ -103,7 +102,7 @@ public class UtilityZip {
|
|||||||
do {
|
do {
|
||||||
try {
|
try {
|
||||||
if (retries > 0)
|
if (retries > 0)
|
||||||
fileName = FilenameUtils.getBaseName(fileName) + "_" + retries+"." + FilenameUtils.getExtension(fileName);
|
fileName = FilenameUtils.getBaseName(fileName) + "_" + retries + "." + FilenameUtils.getExtension(fileName);
|
||||||
ZipEntry zipEntry = new ZipEntry(fileName);
|
ZipEntry zipEntry = new ZipEntry(fileName);
|
||||||
zipEntry.setSize(content.length);
|
zipEntry.setSize(content.length);
|
||||||
zipOutputStream.putNextEntry(zipEntry);
|
zipOutputStream.putNextEntry(zipEntry);
|
||||||
@@ -133,25 +132,32 @@ public class UtilityZip {
|
|||||||
return outputStream.toByteArray();
|
return outputStream.toByteArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<byte[]> extractZipFile(byte[] zipFile) throws Exception {
|
public static Map<String, byte[]> extractZipFile(String zipFilePath) throws IOException {
|
||||||
List<byte[]> extractedFiles = new ArrayList<>();
|
Map<String, byte[]> extractedFiles = new HashMap<>();
|
||||||
ByteArrayInputStream inputStream = new ByteArrayInputStream(zipFile);
|
|
||||||
ZipInputStream zipInputStream = new ZipInputStream(inputStream);
|
|
||||||
|
|
||||||
while (zipInputStream.getNextEntry() != null) {
|
try (ZipFile zipFile = new ZipFile(zipFilePath)) {
|
||||||
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
Enumeration<? extends ZipEntry> entries = zipFile.entries();
|
||||||
byte[] buffer = new byte[1024];
|
|
||||||
int len;
|
while (entries.hasMoreElements()) {
|
||||||
while ((len = zipInputStream.read(buffer)) > 0) {
|
ZipEntry entry = entries.nextElement();
|
||||||
outputStream.write(buffer, 0, len);
|
|
||||||
|
if (entry.isDirectory()) continue;
|
||||||
|
|
||||||
|
try (InputStream is = zipFile.getInputStream(entry);
|
||||||
|
ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
|
||||||
|
|
||||||
|
byte[] buffer = new byte[1024];
|
||||||
|
int len;
|
||||||
|
while ((len = is.read(buffer)) > 0) {
|
||||||
|
baos.write(buffer, 0, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
extractedFiles.put(entry.getName(), baos.toByteArray());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
extractedFiles.add(outputStream.toByteArray());
|
|
||||||
zipInputStream.closeEntry();
|
|
||||||
outputStream.close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
zipInputStream.close();
|
|
||||||
inputStream.close();
|
|
||||||
return extractedFiles;
|
return extractedFiles;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +1,104 @@
|
|||||||
package it.integry.ems.document.Import.service;
|
package it.integry.ems.document.Import.service;
|
||||||
|
|
||||||
import it.integry.ems.Import.dto.ImportRequestDTO;
|
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.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.context.annotation.Scope;
|
||||||
import org.springframework.stereotype.Service;
|
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.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@Scope(value = "request")
|
@Scope(value = "request")
|
||||||
public class AckImportService {
|
public class AckImportService {
|
||||||
|
|
||||||
public List<EntityBase> importAckIntesa(String type, String format, ImportRequestDTO requestDto) {
|
@Autowired
|
||||||
return null;
|
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.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
import org.apache.poi.ss.formula.functions.T;
|
import org.apache.poi.ss.formula.functions.T;
|
||||||
|
import org.quartz.SimpleTrigger;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.annotation.Scope;
|
import org.springframework.context.annotation.Scope;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@@ -52,7 +53,11 @@ public class DocumentiIntesaExportService {
|
|||||||
List<DtbDoct> dtbDocts = UtilityDB.executeSimpleQueryDTO(conn, sql, DtbDoct.class);
|
List<DtbDoct> dtbDocts = UtilityDB.executeSimpleQueryDTO(conn, sql, DtbDoct.class);
|
||||||
if (dtbDocts == null || dtbDocts.isEmpty()) throw new Exception("Nessun documento trovato");
|
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);
|
Map<String, String> setup = setupGest.getExportSetupSection(conn, type, format);
|
||||||
String piattaforma = setup.get("PIATTAFORMA");
|
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" +
|
" 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" +
|
" AND doc.cod_anag = pdf.cod_anag AND doc.cod_dtip = pdf.cod_dtip\n" +
|
||||||
" CROSS APPLY azienda\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 doc.gestione = 'V'\n" +
|
||||||
" AND dtb_tipi.tipo_emissione = 'DIRETTA'\n" +
|
" AND dtb_tipi.tipo_emissione = 'DIRETTA'\n" +
|
||||||
" AND pdf.rn = 1",
|
" AND pdf.rn = 1",
|
||||||
@@ -124,7 +133,11 @@ public class DocumentiIntesaExportService {
|
|||||||
" INNER JOIN RankedPDF pdf\n" +
|
" 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" +
|
" 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" +
|
" 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 doc.gestione = 'V'\n" +
|
||||||
" AND dtb_tipi.tipo_emissione = 'DIRETTA'\n" +
|
" AND dtb_tipi.tipo_emissione = 'DIRETTA'\n" +
|
||||||
" AND pdf.rn = 1",
|
" AND pdf.rn = 1",
|
||||||
|
|||||||
Reference in New Issue
Block a user