Revert rinomina package consegna

This commit is contained in:
2025-02-21 15:42:17 +01:00
parent 7d5437238e
commit 73c59dc41e
12 changed files with 245 additions and 1030 deletions

View File

@@ -58,7 +58,7 @@
<classPattern>it.integry.ems.product.dto.*</classPattern>
<classPattern>it.integry.ems.production.dto.*</classPattern>
<classPattern>it.integry.ems.retail.wms.generic.dto.articolo.*</classPattern>
<classPattern>it.integry.ems.logistic.consegna.dto.*</classPattern>
<classPattern>it.integry.ems.logistic.conSegna.dto.*</classPattern>
</classPatterns>
<excludeClasses>
<excludeClass>it.integry.ems_model.base.EntityInterface</excludeClass>

View File

@@ -5,9 +5,14 @@ import java.util.Date;
public class ConSegnaRequestDataDTO {
private String username;
private Date dataDoc;
private Date minDataDoc = new Date();
private Date maxDataDoc = new Date();
private String numDoc;
private boolean loadDettaglioRighe = true;
private boolean loadSospesiCliente = true;
private boolean loadDatiPdf = false;
public String getUsername() {
return username;
}
@@ -17,12 +22,27 @@ public class ConSegnaRequestDataDTO {
return this;
}
public Date getDataDoc() {
return dataDoc;
public ConSegnaRequestDataDTO setDataDoc(Date dataDoc) {
this.minDataDoc = dataDoc;
this.maxDataDoc = dataDoc;
return this;
}
public ConSegnaRequestDataDTO setDataDoc(Date dataDoc) {
this.dataDoc = dataDoc;
public Date getMinDataDoc() {
return minDataDoc;
}
public ConSegnaRequestDataDTO setMinDataDoc(Date minDataDoc) {
this.minDataDoc = minDataDoc;
return this;
}
public Date getMaxDataDoc() {
return maxDataDoc;
}
public ConSegnaRequestDataDTO setMaxDataDoc(Date maxDataDoc) {
this.maxDataDoc = maxDataDoc;
return this;
}
@@ -34,4 +54,31 @@ public class ConSegnaRequestDataDTO {
this.numDoc = numDoc;
return this;
}
public boolean isLoadDettaglioRighe() {
return loadDettaglioRighe;
}
public ConSegnaRequestDataDTO setLoadDettaglioRighe(boolean loadDettaglioRighe) {
this.loadDettaglioRighe = loadDettaglioRighe;
return this;
}
public boolean isLoadSospesiCliente() {
return loadSospesiCliente;
}
public ConSegnaRequestDataDTO setLoadSospesiCliente(boolean loadSospesiCliente) {
this.loadSospesiCliente = loadSospesiCliente;
return this;
}
public boolean isLoadDatiPdf() {
return loadDatiPdf;
}
public ConSegnaRequestDataDTO setLoadDatiPdf(boolean loadDatiPdf) {
this.loadDatiPdf = loadDatiPdf;
return this;
}
}

View File

@@ -53,6 +53,14 @@ public class DatiConsegneDTO {
@SqlField(value = "note")
private String note;
@SqlField(value = "user_name")
private String userName;
@SqlField(value = "full_name")
private String fullName;
private DatiPdfDTO datiPdf;
private List<DettaglioRigheDTO> dettaglioRighe;
public Integer getNumDoc() {
@@ -172,15 +180,6 @@ public class DatiConsegneDTO {
return this;
}
public List<DettaglioRigheDTO> getDettaglioRighe() {
return dettaglioRighe;
}
public DatiConsegneDTO setDettaglioRighe(List<DettaglioRigheDTO> dettaglioRighe) {
this.dettaglioRighe = dettaglioRighe;
return this;
}
public Date getDataDoc() {
return dataDoc;
}
@@ -198,4 +197,40 @@ public class DatiConsegneDTO {
this.note = note;
return this;
}
public String getUserName() {
return userName;
}
public DatiConsegneDTO setUserName(String userName) {
this.userName = userName;
return this;
}
public String getFullName() {
return fullName;
}
public DatiConsegneDTO setFullName(String fullName) {
this.fullName = fullName;
return this;
}
public DatiPdfDTO getDatiPdf() {
return datiPdf;
}
public DatiConsegneDTO setDatiPdf(DatiPdfDTO datiPdf) {
this.datiPdf = datiPdf;
return this;
}
public List<DettaglioRigheDTO> getDettaglioRighe() {
return dettaglioRighe;
}
public DatiConsegneDTO setDettaglioRighe(List<DettaglioRigheDTO> dettaglioRighe) {
this.dettaglioRighe = dettaglioRighe;
return this;
}
}

View File

@@ -1,4 +1,4 @@
package it.integry.ems.logistic.consegna.dto;
package it.integry.ems.logistic.conSegna.dto;
import com.fasterxml.jackson.annotation.JsonIgnore;
import it.integry.ems_model.annotation.SqlField;

View File

@@ -1,17 +1,24 @@
package it.integry.ems.logistic.conSegna.service;
import it.integry.ems.document.export.service.DocumentiIntesaExportService;
import it.integry.ems.exception.PrimaryDatabaseNotPresentException;
import it.integry.ems.logistic.conSegna.dto.*;
import it.integry.ems.order.dto.UserGroupENUM;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.entity.*;
import it.integry.ems_model.exception.DataConverterNotFoundException;
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.UtilityDate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.sql.SQLException;
import java.util.*;
import java.util.stream.Collectors;
@@ -27,55 +34,83 @@ public class ConSegnaService {
public List<DatiClientiDTO> getDatiConsegne(ConSegnaRequestDataDTO consegnaRequestData) throws Exception {
String username = consegnaRequestData.getUsername();
Date dataDoc = consegnaRequestData.getDataDoc();
Date minDataDoc = UtilityDate.isNull(consegnaRequestData.getMinDataDoc(), new Date());
Date maxDataDoc = UtilityDate.isNull(consegnaRequestData.getMaxDataDoc(), new Date());
String sql = Query.format(
"SELECT dtb_doct.num_doc,\n" +
" dtb_doct.cod_vvet,\n" +
" IIF(dtb_doct.cod_vdes IS NOT NULL, vtb_dest.destinatario, gtb_anag.rag_soc) AS cliente,\n" +
" IIF(dtb_doct.cod_vdes IS NOT NULL, vtb_dest.citta, gtb_anag.citta) AS citta,\n" +
" IIF(dtb_doct.cod_vdes IS NOT NULL, vtb_dest.indirizzo, gtb_anag.indirizzo) AS indirizzo,\n" +
" dtb_doct.cod_anag,\n" +
" dtb_doct.cod_dtip,\n" +
" dtb_doct.ser_doc,\n" +
" dtb_doct.annotazioni AS note,\n" +
" dtb_doct.data_doc,\n" +
" IIF(dtb_tipi.segno_qta_scar > 0, dtb_doct.num_colli, NULL) AS num_colli,\n" +
" dtb_doct.cod_vdes,\n" +
" IIF(dtb_doct.cod_forn_td IS NULL,\n" +
" dtb_tipi.segno_qta_scar * (dtb_doct.tot_imponib + dtb_doct.tot_iva - dtb_doct.tot_omaggi), 0) AS tot_doc,\n" +
" SUM(\n" +
" IIF(dtb_doct.cod_forn_td IS NULL AND ISNULL(gtb_paga.gg_prima_rata, 0) = 0,\n" +
" dtb_tipi.segno_qta_scar * (dtb_doct.tot_imponib + dtb_doct.tot_iva - dtb_doct.tot_omaggi), 0)\n" +
" ) OVER (PARTITION BY dtb_doct.cod_anag, dtb_doct.cod_vdes) AS imp_incasso,\n" +
" dtb_doct.peso\n" +
"FROM dtb_doct\n" +
" INNER JOIN gtb_anag ON dtb_doct.cod_anag = gtb_anag.cod_anag\n" +
" INNER JOIN dtb_tipi ON dtb_doct.cod_dtip = dtb_tipi.cod_dtip\n" +
" INNER JOIN Wtb_users users ON users.User_code = dtb_doct.cod_vvet\n" +
" LEFT OUTER JOIN vtb_dest ON dtb_doct.cod_anag = vtb_dest.cod_anag AND dtb_doct.cod_vdes = vtb_dest.cod_vdes\n" +
" LEFT OUTER JOIN gtb_paga ON dtb_doct.cod_paga = gtb_paga.cod_paga\n" +
"WHERE users.User_name = %s\n" +
" AND dtb_doct.data_doc = %s\n" +
" AND dtb_doct.gestione = 'V'\n" +
" AND dtb_tipi.tipo_emissione = 'DIRETTA'\n" +
" AND dtb_tipi.segno_qta_scar <> 0\n" +
"ORDER BY dtb_doct.cod_vvet,\n" +
" dtb_doct.cod_auto,\n" +
" IIF(dtb_doct.cod_vdes IS NOT NULL, vtb_dest.citta, gtb_anag.citta),\n" +
" IIF(dtb_doct.cod_vdes IS NOT NULL, vtb_dest.indirizzo, gtb_anag.indirizzo),\n" +
" IIF(dtb_doct.cod_vdes IS NOT NULL, vtb_dest.destinatario, gtb_anag.rag_soc),\n" +
" dtb_doct.data_doc,\n" +
" dtb_doct.ser_doc,\n" +
" dtb_doct.num_doc",
username, dataDoc
);
"SELECT dtb_doct.num_doc,\n" +
" dtb_doct.cod_vvet,\n" +
" IIF(dtb_doct.cod_vdes IS NOT NULL, vtb_dest.destinatario, gtb_anag.rag_soc) AS cliente,\n" +
" IIF(dtb_doct.cod_vdes IS NOT NULL, vtb_dest.citta, gtb_anag.citta) AS citta,\n" +
" IIF(dtb_doct.cod_vdes IS NOT NULL, vtb_dest.indirizzo, gtb_anag.indirizzo) AS indirizzo,\n" +
" dtb_doct.cod_anag,\n" +
" dtb_doct.cod_dtip,\n" +
" dtb_doct.ser_doc,\n" +
" dtb_doct.annotazioni AS note,\n" +
" dtb_doct.data_doc,\n" +
" IIF(dtb_tipi.segno_qta_scar > 0, dtb_doct.num_colli, NULL) AS num_colli,\n" +
" dtb_doct.cod_vdes,\n" +
" IIF(dtb_doct.cod_forn_td IS NULL,\n" +
" dtb_tipi.segno_qta_scar * (dtb_doct.tot_imponib + dtb_doct.tot_iva - dtb_doct.tot_omaggi), 0) AS tot_doc,\n" +
" SUM(\n" +
" IIF(dtb_doct.cod_forn_td IS NULL AND ISNULL(gtb_paga.gg_prima_rata, 0) = 0,\n" +
" dtb_tipi.segno_qta_scar * (dtb_doct.tot_imponib + dtb_doct.tot_iva - dtb_doct.tot_omaggi), 0)\n" +
" ) OVER (PARTITION BY dtb_doct.cod_anag, dtb_doct.cod_vdes) AS imp_incasso,\n" +
" dtb_doct.peso,\n" +
" su.user_name,\n" +
" su.full_name\n" +
"FROM dtb_doct\n" +
" INNER JOIN gtb_anag ON dtb_doct.cod_anag = gtb_anag.cod_anag\n" +
" INNER JOIN dtb_tipi ON dtb_doct.cod_dtip = dtb_tipi.cod_dtip\n" +
" INNER JOIN stb_user su ON su.User_code = dtb_doct.cod_vvet AND su.key_group = %s\n" +
" LEFT OUTER JOIN vtb_dest ON dtb_doct.cod_anag = vtb_dest.cod_anag AND dtb_doct.cod_vdes = vtb_dest.cod_vdes\n" +
" LEFT OUTER JOIN gtb_paga ON dtb_doct.cod_paga = gtb_paga.cod_paga\n" +
"WHERE ([username] IS NULL OR su.User_name = [username])\n" +
" AND dtb_doct.data_doc BETWEEN %s AND %s\n" +
" AND dtb_doct.gestione = 'V'\n" +
" AND dtb_tipi.tipo_emissione = 'DIRETTA'\n" +
" AND dtb_tipi.segno_qta_scar <> 0\n" +
"ORDER BY dtb_doct.cod_vvet,\n" +
" dtb_doct.cod_auto,\n" +
" IIF(dtb_doct.cod_vdes IS NOT NULL, vtb_dest.citta, gtb_anag.citta),\n" +
" IIF(dtb_doct.cod_vdes IS NOT NULL, vtb_dest.indirizzo, gtb_anag.indirizzo),\n" +
" IIF(dtb_doct.cod_vdes IS NOT NULL, vtb_dest.destinatario, gtb_anag.rag_soc),\n" +
" dtb_doct.data_doc,\n" +
" dtb_doct.ser_doc,\n" +
" dtb_doct.num_doc",
UserGroupENUM.VETTORE_CONSEGNATARIO.getValue(),
minDataDoc,
maxDataDoc
)
.replace("[username]", UtilityDB.valueToString(username));
List<DatiConsegneDTO> datiConsegne = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DatiConsegneDTO.class);
if (datiConsegne == null) return null;
if (datiConsegne == null) return Collections.emptyList();
getDettaglioBolla(username, dataDoc, datiConsegne);
if (consegnaRequestData.isLoadDettaglioRighe()) {
getDettaglioRighe(username, minDataDoc, maxDataDoc, datiConsegne);
}
if (consegnaRequestData.isLoadDatiPdf()) {
List<DatiPdfDTO> docuSigned = getDatiDoc(minDataDoc, maxDataDoc);
if (docuSigned != null) {
datiConsegne.forEach(datiConsegneDTO -> {
Optional<DatiPdfDTO> optionalDatiDoc = docuSigned.stream()
.filter(datiPdfDTO ->
datiPdfDTO.getCodAnag().equalsIgnoreCase(datiConsegneDTO.getCodAnag())
&& datiPdfDTO.getCodDtip().equalsIgnoreCase(datiConsegneDTO.getCodDtip())
&& datiPdfDTO.getDataDoc().equals(datiConsegneDTO.getDataDoc())
&& datiPdfDTO.getSerDoc().equalsIgnoreCase(datiConsegneDTO.getSerDoc())
&& datiPdfDTO.getNumDoc().equals(datiConsegneDTO.getNumDoc())
)
.findFirst();
datiConsegneDTO.setDatiPdf(optionalDatiDoc.orElse(null));
});
}
}
Map<String, List<DatiConsegneDTO>> groupedByCodAnag = datiConsegne.stream()
.collect(Collectors.groupingBy(DatiConsegneDTO::getCodAnag));
@@ -90,12 +125,14 @@ public class ConSegnaService {
})
.collect(Collectors.toList());
getSospesiCliente(datiClientiList);
if (consegnaRequestData.isLoadSospesiCliente()) {
getSospesiCliente(datiClientiList);
}
return datiClientiList;
}
public void getDettaglioBolla(String username, Date dataDoc, List<DatiConsegneDTO> datiConsegne) throws Exception {
public void getDettaglioRighe(String username, Date minDataDoc, Date maxDataDoc, List<DatiConsegneDTO> datiConsegne) throws Exception {
String sql = Query.format(
"SELECT dtb_docr.num_doc,\n" +
" dtb_docr.ser_doc,\n" +
@@ -111,22 +148,30 @@ public class ConSegnaService {
" INNER JOIN Wtb_users users ON users.User_code = dtb_doct.cod_vvet\n" +
" INNER JOIN dtb_tipi ON dtb_doct.cod_dtip = dtb_tipi.cod_dtip\n" +
"WHERE users.User_name = %s\n" +
" AND dtb_doct.data_doc = %s\n" +
" AND dtb_doct.data_doc BETWEEN %s AND %s\n" +
" AND dtb_doct.gestione = 'V'\n" +
" AND dtb_tipi.tipo_emissione = 'DIRETTA'\n" +
" AND dtb_tipi.segno_qta_scar <> 0\n" +
" AND dtb_docr.qta_doc <> 0\n" +
"ORDER BY dtb_docr.num_doc",
username, dataDoc
username, minDataDoc, maxDataDoc
);
List<DtbDocr> dtbDocrList = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbDocr.class);
assert dtbDocrList != null;
datiConsegne = datiConsegne.stream()
.map(datiConsegneDTO -> {
if (dtbDocrList == null) {
return;
}
datiConsegne
.forEach(datiConsegneDTO -> {
List<DettaglioRigheDTO> dettaglioRigheList = dtbDocrList.stream()
.filter(dtbDocr -> dtbDocr.getNumDoc().equals(datiConsegneDTO.getNumDoc()))
.filter(dtbDocr ->
dtbDocr.getCodAnag().equalsIgnoreCase(datiConsegneDTO.getCodAnag())
&& dtbDocr.getCodDtip().equalsIgnoreCase(datiConsegneDTO.getCodDtip())
&& dtbDocr.getDataDoc().equals(datiConsegneDTO.getDataDoc())
&& dtbDocr.getSerDoc().equalsIgnoreCase(datiConsegneDTO.getSerDoc())
&& dtbDocr.getNumDoc().equals(datiConsegneDTO.getNumDoc()))
.map(dtbDocr -> new DettaglioRigheDTO()
.setDescrizione(dtbDocr.getDescrizione())
.setQtaDoc(dtbDocr.getQtaDoc())
@@ -134,9 +179,8 @@ public class ConSegnaService {
.setUntMis(dtbDocr.getUntDoc()))
.collect(Collectors.toList());
return datiConsegneDTO.setDettaglioRighe(dettaglioRigheList);
})
.collect(Collectors.toList());
datiConsegneDTO.setDettaglioRighe(dettaglioRigheList);
});
}
private void getSospesiCliente(List<DatiClientiDTO> datiClienti) throws Exception {
@@ -150,6 +194,55 @@ public class ConSegnaService {
}
}
private List<DatiPdfDTO> getDatiDoc(Date minDataDoc, Date maxDataDoc) throws SQLException, IOException, PrimaryDatabaseNotPresentException, DataConverterNotFoundException, InstantiationException, IllegalAccessException {
String sql = Query.format(
"WITH SignedPDF AS (SELECT pdf.*,\n" +
" ROW_NUMBER() OVER ( PARTITION BY pdf.data_doc, pdf.num_doc, pdf.ser_doc, pdf.cod_anag, pdf.cod_dtip ORDER BY pdf.versione DESC) AS rankedSigned\n" +
" FROM dtb_doc_pdf pdf\n" +
" INNER JOIN dtb_tipi\n" +
" ON pdf.cod_dtip = dtb_tipi.cod_dtip\n" +
" WHERE pdf.filename LIKE [signed_prefix]\n" +
" AND dtb_tipi.tipo_emissione = 'DIRETTA'),\n" +
" OriginalPDF AS (SELECT pdf.*,\n" +
" ROW_NUMBER() OVER ( PARTITION BY pdf.data_doc, pdf.num_doc, pdf.ser_doc, pdf.cod_anag, pdf.cod_dtip ORDER BY pdf.versione DESC) AS rankedOriginal\n" +
" FROM dtb_doc_pdf pdf\n" +
" INNER JOIN dtb_tipi\n" +
" ON pdf.cod_dtip = dtb_tipi.cod_dtip\n" +
" WHERE pdf.filename NOT LIKE [signed_prefix]\n" +
" AND dtb_tipi.tipo_emissione = 'DIRETTA'),\n" +
" FinalPDF AS (SELECT o.cod_anag,\n" +
" o.cod_dtip,\n" +
" o.data_doc,\n" +
" o.ser_doc,\n" +
" o.num_doc,\n" +
" o.versione AS versione_originale,\n" +
" s.versione AS versione_firmata\n" +
" FROM OriginalPDF o\n" +
" LEFT OUTER JOIN SignedPDF s\n" +
" ON o.data_doc = s.data_doc AND o.num_doc = s.num_doc AND\n" +
" o.ser_doc = s.ser_doc AND\n" +
" o.cod_anag = s.cod_anag AND o.cod_dtip = s.cod_dtip AND s.rankedSigned = 1\n" +
" WHERE o.rankedOriginal = 1)\n" +
"SELECT pdf.*,\n" +
" CAST(IIF(ddl.flag_errore IS NULL, 0, 1) AS BIT) AS flag_esportato,\n" +
" CAST(IIF(ddl.flag_errore IS NOT NULL AND ddl.flag_errore = 0, 1, 0) AS BIT) AS flag_conservato\n" +
"FROM dtb_doct doc\n" +
" INNER JOIN FinalPDF pdf ON doc.data_doc = pdf.data_doc AND doc.num_doc = pdf.num_doc AND\n" +
" doc.ser_doc = pdf.ser_doc AND doc.cod_anag = pdf.cod_anag AND\n" +
" doc.cod_dtip = pdf.cod_dtip\n" +
" LEFT OUTER JOIN dtb_docu_log ddl ON pdf.data_doc = ddl.data_doc AND pdf.num_doc = ddl.num_doc AND\n" +
" pdf.ser_doc = ddl.ser_doc AND ddl.cod_anag = pdf.cod_anag AND\n" +
" ddl.cod_dtip = pdf.cod_dtip\n" +
"WHERE doc.data_doc BETWEEN %s AND %s\n" +
" AND doc.gestione = 'V'",
minDataDoc,
maxDataDoc
)
.replace("[signed_prefix]", UtilityDB.valueToString(DocumentiIntesaExportService.SIGNED_PREFIX));
return UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DatiPdfDTO.class);
}
public StbFilesAttached getCertificato() throws Exception {
String sql = "SELECT files.*\n" +
"FROM stb_files_attached AS files\n" +

View File

@@ -1,56 +0,0 @@
package it.integry.ems.logistic.consegna.controller;
import it.integry.common.var.CommonConstants;
import it.integry.ems.logistic.consegna.dto.ConSegnaRequestDataDTO;
import it.integry.ems.logistic.consegna.dto.DatiConsegneDTO;
import it.integry.ems.logistic.consegna.dto.SospesiClienteDTO;
import it.integry.ems.logistic.consegna.service.ConSegnaService;
import it.integry.ems.response.ServiceRestResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@Scope(value = "request")
@RequestMapping("/consegna")
public class ConSegnaController {
@Autowired
private ConSegnaService conSegnaService;
@RequestMapping(value = "getDatiConsegne", method = RequestMethod.POST)
public ServiceRestResponse getDatiConsegne(@RequestParam(CommonConstants.PROFILE_DB) String config,
@RequestBody ConSegnaRequestDataDTO deliveryRequestData) throws Exception {
return ServiceRestResponse.createPositiveResponse(conSegnaService.getDatiConsegne(deliveryRequestData));
}
@RequestMapping(value = "getCertificato", method = RequestMethod.GET)
public ServiceRestResponse getCertificato(@RequestParam(CommonConstants.PROFILE_DB) String config) throws Exception {
return ServiceRestResponse.createPositiveResponse(conSegnaService.getCertificato());
}
@RequestMapping(value = "syncSospesi", method = RequestMethod.POST)
public ServiceRestResponse syncSospesi(@RequestParam(CommonConstants.PROFILE_DB) String config,
@RequestParam String username,
@RequestBody List<SospesiClienteDTO> sospesi) throws Exception {
if (sospesi == null || sospesi.isEmpty())
return ServiceRestResponse.createPositiveResponse();
conSegnaService.syncSospesi(sospesi, username);
return ServiceRestResponse.createPositiveResponse();
}
@RequestMapping(value = "syncDocumenti", method = RequestMethod.POST)
public ServiceRestResponse syncDocumenti(@RequestParam(CommonConstants.PROFILE_DB) String config,
@RequestParam String username,
@RequestBody DatiConsegneDTO datiConsegna) throws Exception {
conSegnaService.syncDocumenti(datiConsegna);
return ServiceRestResponse.createPositiveResponse();
}
}

View File

@@ -1,84 +0,0 @@
package it.integry.ems.logistic.consegna.dto;
import java.util.Date;
public class ConSegnaRequestDataDTO {
private String username;
private Date minDataDoc = new Date();
private Date maxDataDoc = new Date();
private String numDoc;
private boolean loadDettaglioRighe = true;
private boolean loadSospesiCliente = true;
private boolean loadDatiPdf = false;
public String getUsername() {
return username;
}
public ConSegnaRequestDataDTO setUsername(String username) {
this.username = username;
return this;
}
public ConSegnaRequestDataDTO setDataDoc(Date dataDoc) {
this.minDataDoc = dataDoc;
this.maxDataDoc = dataDoc;
return this;
}
public Date getMinDataDoc() {
return minDataDoc;
}
public ConSegnaRequestDataDTO setMinDataDoc(Date minDataDoc) {
this.minDataDoc = minDataDoc;
return this;
}
public Date getMaxDataDoc() {
return maxDataDoc;
}
public ConSegnaRequestDataDTO setMaxDataDoc(Date maxDataDoc) {
this.maxDataDoc = maxDataDoc;
return this;
}
public String getNumDoc() {
return numDoc;
}
public ConSegnaRequestDataDTO setNumDoc(String numDoc) {
this.numDoc = numDoc;
return this;
}
public boolean isLoadDettaglioRighe() {
return loadDettaglioRighe;
}
public ConSegnaRequestDataDTO setLoadDettaglioRighe(boolean loadDettaglioRighe) {
this.loadDettaglioRighe = loadDettaglioRighe;
return this;
}
public boolean isLoadSospesiCliente() {
return loadSospesiCliente;
}
public ConSegnaRequestDataDTO setLoadSospesiCliente(boolean loadSospesiCliente) {
this.loadSospesiCliente = loadSospesiCliente;
return this;
}
public boolean isLoadDatiPdf() {
return loadDatiPdf;
}
public ConSegnaRequestDataDTO setLoadDatiPdf(boolean loadDatiPdf) {
this.loadDatiPdf = loadDatiPdf;
return this;
}
}

View File

@@ -1,39 +0,0 @@
package it.integry.ems.logistic.consegna.dto;
import java.util.List;
public class DatiClientiDTO {
private String codAnag;
private List<DatiConsegneDTO> datiConsegne;
private List<SospesiClienteDTO> sospesiCliente;
public String getCodAnag() {
return codAnag;
}
public DatiClientiDTO setCodAnag(String codAnag) {
this.codAnag = codAnag;
return this;
}
public List<DatiConsegneDTO> getDatiConsegne() {
return datiConsegne;
}
public DatiClientiDTO setDatiConsegne(List<DatiConsegneDTO> datiConsegne) {
this.datiConsegne = datiConsegne;
return this;
}
public List<SospesiClienteDTO> getSospesiCliente() {
return sospesiCliente;
}
public DatiClientiDTO setSospesiCliente(List<SospesiClienteDTO> sospesiCliente) {
this.sospesiCliente = sospesiCliente;
return this;
}
}

View File

@@ -1,236 +0,0 @@
package it.integry.ems.logistic.consegna.dto;
import it.integry.ems_model.annotation.SqlField;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
public class DatiConsegneDTO {
@SqlField(value = "num_doc")
private Integer numDoc;
@SqlField(value = "cod_vvet")
private String codVvet;
@SqlField(value = "cliente")
private String cliente;
@SqlField(value = "citta")
private String citta;
@SqlField(value = "indirizzo")
private String indirizzo;
@SqlField(value = "cod_anag")
private String codAnag;
@SqlField(value = "cod_dtip")
private String codDtip;
@SqlField(value = "ser_doc")
private String serDoc;
@SqlField(value = "num_colli")
private String numColli;
@SqlField(value = "cod_vdes")
private String codVdes;
@SqlField(value = "tot_doc")
private BigDecimal totDoc;
@SqlField(value = "imp_incasso")
private BigDecimal impIncasso;
@SqlField(value = "peso")
private String peso;
@SqlField(value = "data_doc")
private Date dataDoc;
@SqlField(value = "note")
private String note;
@SqlField(value = "user_name")
private String userName;
@SqlField(value = "full_name")
private String fullName;
private DatiPdfDTO datiPdf;
private List<DettaglioRigheDTO> dettaglioRighe;
public Integer getNumDoc() {
return numDoc;
}
public DatiConsegneDTO setNumDoc(Integer numDoc) {
this.numDoc = numDoc;
return this;
}
public String getCodVvet() {
return codVvet;
}
public DatiConsegneDTO setCodVvet(String codVvet) {
this.codVvet = codVvet;
return this;
}
public String getCliente() {
return cliente;
}
public DatiConsegneDTO setCliente(String cliente) {
this.cliente = cliente;
return this;
}
public String getCitta() {
return citta;
}
public DatiConsegneDTO setCitta(String citta) {
this.citta = citta;
return this;
}
public String getIndirizzo() {
return indirizzo;
}
public DatiConsegneDTO setIndirizzo(String indirizzo) {
this.indirizzo = indirizzo;
return this;
}
public String getCodAnag() {
return codAnag;
}
public DatiConsegneDTO setCodAnag(String codAnag) {
this.codAnag = codAnag;
return this;
}
public String getCodDtip() {
return codDtip;
}
public DatiConsegneDTO setCodDtip(String codDtip) {
this.codDtip = codDtip;
return this;
}
public String getSerDoc() {
return serDoc;
}
public DatiConsegneDTO setSerDoc(String serDoc) {
this.serDoc = serDoc;
return this;
}
public String getNumColli() {
return numColli;
}
public DatiConsegneDTO setNumColli(String numColli) {
this.numColli = numColli;
return this;
}
public String getCodVdes() {
return codVdes;
}
public DatiConsegneDTO setCodVdes(String codVdes) {
this.codVdes = codVdes;
return this;
}
public BigDecimal getTotDoc() {
return totDoc;
}
public DatiConsegneDTO setTotDoc(BigDecimal totDoc) {
this.totDoc = totDoc;
return this;
}
public BigDecimal getImpIncasso() {
return impIncasso;
}
public DatiConsegneDTO setImpIncasso(BigDecimal impIncasso) {
this.impIncasso = impIncasso;
return this;
}
public String getPeso() {
return peso;
}
public DatiConsegneDTO setPeso(String peso) {
this.peso = peso;
return this;
}
public Date getDataDoc() {
return dataDoc;
}
public DatiConsegneDTO setDataDoc(Date dataDoc) {
this.dataDoc = dataDoc;
return this;
}
public String getNote() {
return note;
}
public DatiConsegneDTO setNote(String note) {
this.note = note;
return this;
}
public String getUserName() {
return userName;
}
public DatiConsegneDTO setUserName(String userName) {
this.userName = userName;
return this;
}
public String getFullName() {
return fullName;
}
public DatiConsegneDTO setFullName(String fullName) {
this.fullName = fullName;
return this;
}
public DatiPdfDTO getDatiPdf() {
return datiPdf;
}
public DatiConsegneDTO setDatiPdf(DatiPdfDTO datiPdf) {
this.datiPdf = datiPdf;
return this;
}
public List<DettaglioRigheDTO> getDettaglioRighe() {
return dettaglioRighe;
}
public DatiConsegneDTO setDettaglioRighe(List<DettaglioRigheDTO> dettaglioRighe) {
this.dettaglioRighe = dettaglioRighe;
return this;
}
}

View File

@@ -1,50 +0,0 @@
package it.integry.ems.logistic.consegna.dto;
import java.math.BigDecimal;
public class DettaglioRigheDTO {
private String descrizione;
private BigDecimal qtaDoc;
private Integer numDoc;
private String untMis;
public String getDescrizione() {
return descrizione;
}
public DettaglioRigheDTO setDescrizione(String descrizione) {
this.descrizione = descrizione;
return this;
}
public BigDecimal getQtaDoc() {
return qtaDoc;
}
public Integer getNumDoc() {
return numDoc;
}
public DettaglioRigheDTO setNumDoc(Integer numDoc) {
this.numDoc = numDoc;
return this;
}
public DettaglioRigheDTO setQtaDoc(BigDecimal qtaDoc) {
this.qtaDoc = qtaDoc;
return this;
}
public String getUntMis() {
return untMis;
}
public DettaglioRigheDTO setUntMis(String untMis) {
this.untMis = untMis;
return this;
}
}

View File

@@ -1,160 +0,0 @@
package it.integry.ems.logistic.consegna.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import it.integry.ems_model.annotation.SqlField;
import java.math.BigDecimal;
import java.util.Date;
public class SospesiClienteDTO {
@SqlField(value = "cod_anag")
private String codAnag;
@SqlField(value = "cod_dtip")
private String codDtip;
@SqlField(value = "data_doc")
private Date dataDoc;
@SqlField(value = "num_doc")
private Integer numDoc;
@SqlField(value = "ser_doc")
private String serDoc;
@SqlField(value = "cod_vdes")
private String codVdes;
@SqlField(value = "imp_sospeso")
private BigDecimal impSospeso;
@SqlField(value = "cod_vage")
private String codVage;
@SqlField(value = "cod_vvet")
private String codVvet;
@SqlField(value = "data_scad")
private Date dataScad;
private BigDecimal importoPagato;
@JsonProperty(value = "contanti")
private boolean contanti;
@JsonProperty(value = "assegni")
private boolean assegni;
@JsonProperty(value = "carte")
private boolean carte;
public String getCodAnag() {
return codAnag;
}
public SospesiClienteDTO setCodAnag(String codAnag) {
this.codAnag = codAnag;
return this;
}
public String getCodDtip() {
return codDtip;
}
public SospesiClienteDTO setCodDtip(String codDtip) {
this.codDtip = codDtip;
return this;
}
public Date getDataDoc() {
return dataDoc;
}
public SospesiClienteDTO setDataDoc(Date dataDoc) {
this.dataDoc = dataDoc;
return this;
}
public Integer getNumDoc() {
return numDoc;
}
public SospesiClienteDTO setNumDoc(Integer numDoc) {
this.numDoc = numDoc;
return this;
}
public String getCodVdes() {
return codVdes;
}
public SospesiClienteDTO setCodVdes(String codVdes) {
this.codVdes = codVdes;
return this;
}
public BigDecimal getImpSospeso() {
return impSospeso;
}
public SospesiClienteDTO setImpSospeso(BigDecimal impSospeso) {
this.impSospeso = impSospeso;
return this;
}
public String getCodVage() {
return codVage;
}
public SospesiClienteDTO setCodVage(String codVage) {
this.codVage = codVage;
return this;
}
public String getCodVvet() {
return codVvet;
}
public SospesiClienteDTO setCodVvet(String codVvet) {
this.codVvet = codVvet;
return this;
}
public Date getDataScad() {
return dataScad;
}
public SospesiClienteDTO setDataScad(Date dataScad) {
this.dataScad = dataScad;
return this;
}
public String getSerDoc() {
return serDoc;
}
public SospesiClienteDTO setSerDoc(String serDoc) {
this.serDoc = serDoc;
return this;
}
public BigDecimal getImportoPagato() {
return importoPagato;
}
public SospesiClienteDTO setImportoPagato(BigDecimal importoPagato) {
this.importoPagato = importoPagato;
return this;
}
public String getTipoPaga() {
if (contanti) {
return "CONTANTI";
} else if (assegni) {
return "ASSEGNI";
} else if (carte) {
return "CARTE";
} else {
return null;
}
}
}

View File

@@ -1,335 +0,0 @@
package it.integry.ems.logistic.consegna.service;
import it.integry.ems.document.export.service.DocumentiIntesaExportService;
import it.integry.ems.exception.PrimaryDatabaseNotPresentException;
import it.integry.ems.logistic.consegna.dto.*;
import it.integry.ems.order.dto.UserGroupENUM;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.entity.*;
import it.integry.ems_model.exception.DataConverterNotFoundException;
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.UtilityDate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.sql.SQLException;
import java.util.*;
import java.util.stream.Collectors;
@Service
@Scope(value = "request")
public class ConSegnaService {
@Autowired
private MultiDBTransactionManager multiDBTransactionManager;
@Autowired
private EntityProcessor entityProcessor;
public List<DatiClientiDTO> getDatiConsegne(ConSegnaRequestDataDTO consegnaRequestData) throws Exception {
String username = consegnaRequestData.getUsername();
Date minDataDoc = UtilityDate.isNull(consegnaRequestData.getMinDataDoc(), new Date());
Date maxDataDoc = UtilityDate.isNull(consegnaRequestData.getMaxDataDoc(), new Date());
String sql = Query.format(
"SELECT dtb_doct.num_doc,\n" +
" dtb_doct.cod_vvet,\n" +
" IIF(dtb_doct.cod_vdes IS NOT NULL, vtb_dest.destinatario, gtb_anag.rag_soc) AS cliente,\n" +
" IIF(dtb_doct.cod_vdes IS NOT NULL, vtb_dest.citta, gtb_anag.citta) AS citta,\n" +
" IIF(dtb_doct.cod_vdes IS NOT NULL, vtb_dest.indirizzo, gtb_anag.indirizzo) AS indirizzo,\n" +
" dtb_doct.cod_anag,\n" +
" dtb_doct.cod_dtip,\n" +
" dtb_doct.ser_doc,\n" +
" dtb_doct.annotazioni AS note,\n" +
" dtb_doct.data_doc,\n" +
" IIF(dtb_tipi.segno_qta_scar > 0, dtb_doct.num_colli, NULL) AS num_colli,\n" +
" dtb_doct.cod_vdes,\n" +
" IIF(dtb_doct.cod_forn_td IS NULL,\n" +
" dtb_tipi.segno_qta_scar * (dtb_doct.tot_imponib + dtb_doct.tot_iva - dtb_doct.tot_omaggi), 0) AS tot_doc,\n" +
" SUM(\n" +
" IIF(dtb_doct.cod_forn_td IS NULL AND ISNULL(gtb_paga.gg_prima_rata, 0) = 0,\n" +
" dtb_tipi.segno_qta_scar * (dtb_doct.tot_imponib + dtb_doct.tot_iva - dtb_doct.tot_omaggi), 0)\n" +
" ) OVER (PARTITION BY dtb_doct.cod_anag, dtb_doct.cod_vdes) AS imp_incasso,\n" +
" dtb_doct.peso,\n" +
" su.user_name,\n" +
" su.full_name\n" +
"FROM dtb_doct\n" +
" INNER JOIN gtb_anag ON dtb_doct.cod_anag = gtb_anag.cod_anag\n" +
" INNER JOIN dtb_tipi ON dtb_doct.cod_dtip = dtb_tipi.cod_dtip\n" +
" INNER JOIN stb_user su ON su.User_code = dtb_doct.cod_vvet AND su.key_group = %s\n" +
" LEFT OUTER JOIN vtb_dest ON dtb_doct.cod_anag = vtb_dest.cod_anag AND dtb_doct.cod_vdes = vtb_dest.cod_vdes\n" +
" LEFT OUTER JOIN gtb_paga ON dtb_doct.cod_paga = gtb_paga.cod_paga\n" +
"WHERE ([username] IS NULL OR su.User_name = [username])\n" +
" AND dtb_doct.data_doc BETWEEN %s AND %s\n" +
" AND dtb_doct.gestione = 'V'\n" +
" AND dtb_tipi.tipo_emissione = 'DIRETTA'\n" +
" AND dtb_tipi.segno_qta_scar <> 0\n" +
"ORDER BY dtb_doct.cod_vvet,\n" +
" dtb_doct.cod_auto,\n" +
" IIF(dtb_doct.cod_vdes IS NOT NULL, vtb_dest.citta, gtb_anag.citta),\n" +
" IIF(dtb_doct.cod_vdes IS NOT NULL, vtb_dest.indirizzo, gtb_anag.indirizzo),\n" +
" IIF(dtb_doct.cod_vdes IS NOT NULL, vtb_dest.destinatario, gtb_anag.rag_soc),\n" +
" dtb_doct.data_doc,\n" +
" dtb_doct.ser_doc,\n" +
" dtb_doct.num_doc",
UserGroupENUM.VETTORE_CONSEGNATARIO.getValue(),
minDataDoc,
maxDataDoc
)
.replace("[username]", UtilityDB.valueToString(username));
List<DatiConsegneDTO> datiConsegne = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DatiConsegneDTO.class);
if (datiConsegne == null) return Collections.emptyList();
if (consegnaRequestData.isLoadDettaglioRighe()) {
getDettaglioRighe(username, minDataDoc, maxDataDoc, datiConsegne);
}
if (consegnaRequestData.isLoadDatiPdf()) {
List<DatiPdfDTO> docuSigned = getDatiDoc(minDataDoc, maxDataDoc);
if (docuSigned != null) {
datiConsegne.forEach(datiConsegneDTO -> {
Optional<DatiPdfDTO> optionalDatiDoc = docuSigned.stream()
.filter(datiPdfDTO ->
datiPdfDTO.getCodAnag().equalsIgnoreCase(datiConsegneDTO.getCodAnag())
&& datiPdfDTO.getCodDtip().equalsIgnoreCase(datiConsegneDTO.getCodDtip())
&& datiPdfDTO.getDataDoc().equals(datiConsegneDTO.getDataDoc())
&& datiPdfDTO.getSerDoc().equalsIgnoreCase(datiConsegneDTO.getSerDoc())
&& datiPdfDTO.getNumDoc().equals(datiConsegneDTO.getNumDoc())
)
.findFirst();
datiConsegneDTO.setDatiPdf(optionalDatiDoc.orElse(null));
});
}
}
Map<String, List<DatiConsegneDTO>> groupedByCodAnag = datiConsegne.stream()
.collect(Collectors.groupingBy(DatiConsegneDTO::getCodAnag));
List<DatiClientiDTO> datiClientiList = groupedByCodAnag.entrySet().stream()
.map(entry -> {
String codAnag = entry.getKey();
List<DatiConsegneDTO> consegne = entry.getValue();
return new DatiClientiDTO()
.setCodAnag(codAnag)
.setDatiConsegne(consegne);
})
.collect(Collectors.toList());
if (consegnaRequestData.isLoadSospesiCliente()) {
getSospesiCliente(datiClientiList);
}
return datiClientiList;
}
public void getDettaglioRighe(String username, Date minDataDoc, Date maxDataDoc, List<DatiConsegneDTO> datiConsegne) throws Exception {
String sql = Query.format(
"SELECT dtb_docr.num_doc,\n" +
" dtb_docr.ser_doc,\n" +
" dtb_docr.cod_anag,\n" +
" dtb_docr.cod_dtip,\n" +
" dtb_docr.descrizione,\n" +
" qta_doc,\n" +
" unt_doc\n" +
"FROM dtb_docr\n" +
" INNER JOIN dtb_doct ON dtb_docr.cod_anag = dtb_doct.cod_anag AND dtb_docr.cod_dtip = dtb_doct.cod_dtip AND\n" +
" dtb_docr.data_doc = dtb_doct.data_doc AND dtb_docr.ser_doc = dtb_doct.ser_doc AND\n" +
" dtb_docr.num_doc = dtb_doct.num_doc\n" +
" INNER JOIN Wtb_users users ON users.User_code = dtb_doct.cod_vvet\n" +
" INNER JOIN dtb_tipi ON dtb_doct.cod_dtip = dtb_tipi.cod_dtip\n" +
"WHERE users.User_name = %s\n" +
" AND dtb_doct.data_doc BETWEEN %s AND %s\n" +
" AND dtb_doct.gestione = 'V'\n" +
" AND dtb_tipi.tipo_emissione = 'DIRETTA'\n" +
" AND dtb_tipi.segno_qta_scar <> 0\n" +
" AND dtb_docr.qta_doc <> 0\n" +
"ORDER BY dtb_docr.num_doc",
username, minDataDoc, maxDataDoc
);
List<DtbDocr> dtbDocrList = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbDocr.class);
if (dtbDocrList == null) {
return;
}
datiConsegne
.forEach(datiConsegneDTO -> {
List<DettaglioRigheDTO> dettaglioRigheList = dtbDocrList.stream()
.filter(dtbDocr ->
dtbDocr.getCodAnag().equalsIgnoreCase(datiConsegneDTO.getCodAnag())
&& dtbDocr.getCodDtip().equalsIgnoreCase(datiConsegneDTO.getCodDtip())
&& dtbDocr.getDataDoc().equals(datiConsegneDTO.getDataDoc())
&& dtbDocr.getSerDoc().equalsIgnoreCase(datiConsegneDTO.getSerDoc())
&& dtbDocr.getNumDoc().equals(datiConsegneDTO.getNumDoc()))
.map(dtbDocr -> new DettaglioRigheDTO()
.setDescrizione(dtbDocr.getDescrizione())
.setQtaDoc(dtbDocr.getQtaDoc())
.setNumDoc(dtbDocr.getNumDoc())
.setUntMis(dtbDocr.getUntDoc()))
.collect(Collectors.toList());
datiConsegneDTO.setDettaglioRighe(dettaglioRigheList);
});
}
private void getSospesiCliente(List<DatiClientiDTO> datiClienti) throws Exception {
for (DatiClientiDTO datiCliente : datiClienti) {
String sql = Query.format(
"SELECT * FROM dbo.getSospesoClienti(NULL, %s)",
datiCliente.getCodAnag()
);
datiCliente.setSospesiCliente(UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, SospesiClienteDTO.class));
}
}
private List<DatiPdfDTO> getDatiDoc(Date minDataDoc, Date maxDataDoc) throws SQLException, IOException, PrimaryDatabaseNotPresentException, DataConverterNotFoundException, InstantiationException, IllegalAccessException {
String sql = Query.format(
"WITH SignedPDF AS (SELECT pdf.*,\n" +
" ROW_NUMBER() OVER ( PARTITION BY pdf.data_doc, pdf.num_doc, pdf.ser_doc, pdf.cod_anag, pdf.cod_dtip ORDER BY pdf.versione DESC) AS rankedSigned\n" +
" FROM dtb_doc_pdf pdf\n" +
" INNER JOIN dtb_tipi\n" +
" ON pdf.cod_dtip = dtb_tipi.cod_dtip\n" +
" WHERE pdf.filename LIKE [signed_prefix]\n" +
" AND dtb_tipi.tipo_emissione = 'DIRETTA'),\n" +
" OriginalPDF AS (SELECT pdf.*,\n" +
" ROW_NUMBER() OVER ( PARTITION BY pdf.data_doc, pdf.num_doc, pdf.ser_doc, pdf.cod_anag, pdf.cod_dtip ORDER BY pdf.versione DESC) AS rankedOriginal\n" +
" FROM dtb_doc_pdf pdf\n" +
" INNER JOIN dtb_tipi\n" +
" ON pdf.cod_dtip = dtb_tipi.cod_dtip\n" +
" WHERE pdf.filename NOT LIKE [signed_prefix]\n" +
" AND dtb_tipi.tipo_emissione = 'DIRETTA'),\n" +
" FinalPDF AS (SELECT o.cod_anag,\n" +
" o.cod_dtip,\n" +
" o.data_doc,\n" +
" o.ser_doc,\n" +
" o.num_doc,\n" +
" o.versione AS versione_originale,\n" +
" s.versione AS versione_firmata\n" +
" FROM OriginalPDF o\n" +
" LEFT OUTER JOIN SignedPDF s\n" +
" ON o.data_doc = s.data_doc AND o.num_doc = s.num_doc AND\n" +
" o.ser_doc = s.ser_doc AND\n" +
" o.cod_anag = s.cod_anag AND o.cod_dtip = s.cod_dtip AND s.rankedSigned = 1\n" +
" WHERE o.rankedOriginal = 1)\n" +
"SELECT pdf.*,\n" +
" CAST(IIF(ddl.flag_errore IS NULL, 0, 1) AS BIT) AS flag_esportato,\n" +
" CAST(IIF(ddl.flag_errore IS NOT NULL AND ddl.flag_errore = 0, 1, 0) AS BIT) AS flag_conservato\n" +
"FROM dtb_doct doc\n" +
" INNER JOIN FinalPDF pdf ON doc.data_doc = pdf.data_doc AND doc.num_doc = pdf.num_doc AND\n" +
" doc.ser_doc = pdf.ser_doc AND doc.cod_anag = pdf.cod_anag AND\n" +
" doc.cod_dtip = pdf.cod_dtip\n" +
" LEFT OUTER JOIN dtb_docu_log ddl ON pdf.data_doc = ddl.data_doc AND pdf.num_doc = ddl.num_doc AND\n" +
" pdf.ser_doc = ddl.ser_doc AND ddl.cod_anag = pdf.cod_anag AND\n" +
" ddl.cod_dtip = pdf.cod_dtip\n" +
"WHERE doc.data_doc BETWEEN %s AND %s\n" +
" AND doc.gestione = 'V'",
minDataDoc,
maxDataDoc
)
.replace("[signed_prefix]", UtilityDB.valueToString(DocumentiIntesaExportService.SIGNED_PREFIX));
return UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DatiPdfDTO.class);
}
public StbFilesAttached getCertificato() throws Exception {
String sql = "SELECT files.*\n" +
"FROM stb_files_attached AS files\n" +
" INNER JOIN stb_gest_setup setup ON setup.value = files.id_attach\n" +
"WHERE gest_name = 'CONSEGNA'\n" +
" AND section = 'SETUP'\n" +
" AND key_section = 'ID_CERTIFICATO'";
return UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, StbFilesAttached.class);
}
public void syncSospesi(List<SospesiClienteDTO> sospesi, String username) throws Exception {
Connection conn = multiDBTransactionManager.getPrimaryConnection();
Date data = new Date();
String sql = Query.format(
"SELECT User_code\n" +
"FROM Wtb_users\n" +
"WHERE User_name = %s",
username
);
String codVvet = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql);
sql = Query.format(
"SELECT *\n" +
"FROM vtb_dist_incat\n" +
"WHERE data_dist = %s\n" +
" AND cod_vvet = %s",
data, codVvet
);
VtbDistIncat vtbDistIncat = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(conn, sql, VtbDistIncat.class);
if (vtbDistIncat == null) {
vtbDistIncat = new VtbDistIncat();
vtbDistIncat.setCodVvet(codVvet).setDataDist(data);
vtbDistIncat.setOperation(OperationType.INSERT);
} else {
vtbDistIncat.setOperation(OperationType.UPDATE);
}
for (SospesiClienteDTO sospeso : sospesi) {
VtbDistIncar vtbDistIncar = new VtbDistIncar();
vtbDistIncar.setCodAnag(sospeso.getCodAnag());
vtbDistIncar.setCodDtip(sospeso.getCodDtip());
vtbDistIncar.setDataDoc(sospeso.getDataDoc());
vtbDistIncar.setNumDoc(sospeso.getNumDoc());
vtbDistIncar.setSerDoc(sospeso.getSerDoc());
vtbDistIncar.setImpIncasso(sospeso.getImportoPagato());
sql = Query.format(
"SELECT value\n" +
"FROM stb_gest_setup\n" +
"WHERE gest_name = 'VTB_DIST_INCAT'\n" +
" AND section = 'COD_PAGA'\n" +
" AND key_section = %s",
sospeso.getTipoPaga()
);
String codPaga = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql);
vtbDistIncar.setCodPaga(codPaga);
vtbDistIncar.setOperation(OperationType.INSERT);
vtbDistIncat.getVtbDistIncar().add(vtbDistIncar);
}
entityProcessor.processEntity(vtbDistIncat, multiDBTransactionManager);
}
public void syncDocumenti(DatiConsegneDTO datiConsegna) throws Exception {
String sql = Query.format(
"SELECT *\n" +
"FROM dtb_doct\n" +
"WHERE data_doc = %s\n" +
" AND ser_doc = %s\n" +
" AND cod_dtip = %s\n" +
" AND cod_anag = %s\n" +
" AND num_doc = %s",
datiConsegna.getDataDoc(), datiConsegna.getSerDoc(), datiConsegna.getCodDtip(), datiConsegna.getCodAnag(), datiConsegna.getNumDoc()
);
DtbDoct dtbDoct = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbDoct.class);
dtbDoct
.setAnnotazioni(datiConsegna.getNote())
.setOperation(OperationType.UPDATE);
entityProcessor.processEntity(dtbDoct, multiDBTransactionManager, false);
}
}