Revert rinomina package consegna
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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" +
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user