Metodi per app ConSegna
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good

This commit is contained in:
2024-12-05 17:04:37 +01:00
parent 88045e83f8
commit 2c335ba683
8 changed files with 622 additions and 1 deletions

View File

@@ -3,7 +3,8 @@ package it.integry.ems.model;
public enum IntegryApplicationEnum {
GESTIONALE_BASE("5858a2a0-1188-4edd-8f71-d7da5bfb350d"),
PVM("845da2d9-f2f9-4f8d-ad5b-34b65a91eb6d"),
WMS("fa3a21af-606b-4129-a22b-aedc2a52c7b6");
WMS("fa3a21af-606b-4129-a22b-aedc2a52c7b6"),
CONSEGNA("c012124f-4f11-471c-ae12-81bd4a97626c");
private String text;

View File

@@ -0,0 +1,31 @@
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.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.*;
@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());
}
}

View File

@@ -0,0 +1,37 @@
package it.integry.ems.logistic.conSegna.dto;
import java.util.Date;
public class ConSegnaRequestDataDTO {
private String username;
private Date dataDoc;
private String numDoc;
public String getUsername() {
return username;
}
public ConSegnaRequestDataDTO setUsername(String username) {
this.username = username;
return this;
}
public Date getDataDoc() {
return dataDoc;
}
public ConSegnaRequestDataDTO setDataDoc(Date dataDoc) {
this.dataDoc = dataDoc;
return this;
}
public String getNumDoc() {
return numDoc;
}
public ConSegnaRequestDataDTO setNumDoc(String numDoc) {
this.numDoc = numDoc;
return this;
}
}

View File

@@ -0,0 +1,39 @@
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

@@ -0,0 +1,189 @@
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;
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 List<DettaglioRigheDTO> getDettaglioRighe() {
return dettaglioRighe;
}
public DatiConsegneDTO setDettaglioRighe(List<DettaglioRigheDTO> dettaglioRighe) {
this.dettaglioRighe = dettaglioRighe;
return this;
}
public Date getDataDoc() {
return dataDoc;
}
public DatiConsegneDTO setDataDoc(Date dataDoc) {
this.dataDoc = dataDoc;
return this;
}
}

View File

@@ -0,0 +1,50 @@
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

@@ -0,0 +1,117 @@
package it.integry.ems.logistic.conSegna.dto;
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 = "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;
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;
}
}

View File

@@ -0,0 +1,157 @@
package it.integry.ems.logistic.conSegna.service;
import it.integry.ems.logistic.conSegna.dto.*;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.entity.DtbDocr;
import it.integry.ems_model.entity.StbFilesAttached;
import it.integry.ems_model.utility.Query;
import it.integry.ems_model.utility.UtilityDB;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
@Service
@Scope(value = "request")
public class ConSegnaService {
@Autowired
private MultiDBTransactionManager multiDBTransactionManager;
public List<DatiClientiDTO> getDatiConsegne(ConSegnaRequestDataDTO consegnaRequestData) throws Exception {
String username = consegnaRequestData.getUsername();
Date dataDoc = consegnaRequestData.getDataDoc();
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.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
);
List<DatiConsegneDTO> datiConsegne = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DatiConsegneDTO.class);
if (datiConsegne == null) return null;
getDettaglioBolla(username, dataDoc, datiConsegne);
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());
getSospesiCliente(datiClientiList);
return datiClientiList;
}
public void getDettaglioBolla(String username, Date dataDoc, 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 = %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
);
List<DtbDocr> dtbDocrList = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbDocr.class);
assert dtbDocrList != null;
datiConsegne = datiConsegne.stream()
.map(datiConsegneDTO -> {
List<DettaglioRigheDTO> dettaglioRigheList = dtbDocrList.stream()
.filter(dtbDocr -> dtbDocr.getNumDoc().equals(datiConsegneDTO.getNumDoc()))
.map(dtbDocr -> new DettaglioRigheDTO()
.setDescrizione(dtbDocr.getDescrizione())
.setQtaDoc(dtbDocr.getQtaDoc())
.setNumDoc(dtbDocr.getNumDoc())
.setUntMis(dtbDocr.getUntDoc()))
.collect(Collectors.toList());
return datiConsegneDTO.setDettaglioRighe(dettaglioRigheList);
})
.collect(Collectors.toList());
}
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));
}
}
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);
}
}