Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
This commit is contained in:
@@ -128,7 +128,7 @@ public class MinIOService implements IObjectStorageService {
|
||||
@Override
|
||||
public void disconnect() {
|
||||
|
||||
if(mMinioClient != null) {
|
||||
if (mMinioClient != null) {
|
||||
try {
|
||||
mMinioClient.close();
|
||||
} catch (Exception e) {
|
||||
@@ -163,17 +163,17 @@ public class MinIOService implements IObjectStorageService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte[] downloadObject(@Nonnull String objectName) throws Exception {
|
||||
public byte[] downloadObject(@Nonnull String objectName) throws ServerException, InsufficientDataException, MinIONotEnabledException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {
|
||||
return internalDownloadObject(objectName, mDefaultBucketName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte[] downloadObject(@Nonnull String objectName, @Nonnull MultiDBTransactionManager multiDBTransactionManager) throws Exception {
|
||||
public byte[] downloadObject(@Nonnull String objectName, @Nonnull MultiDBTransactionManager multiDBTransactionManager) throws ServerException, SQLException, InsufficientDataException, MinIONotEnabledException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, PrimaryDatabaseNotPresentException, InternalException {
|
||||
return internalDownloadObject(objectName, getBucketName(multiDBTransactionManager));
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte[] downloadObject(@Nonnull String objectName, @Nonnull Connection connection) throws Exception {
|
||||
public byte[] downloadObject(@Nonnull String objectName, @Nonnull Connection connection) throws ServerException, SQLException, InsufficientDataException, MinIONotEnabledException, ErrorResponseException, NoSuchAlgorithmException, IOException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {
|
||||
return internalDownloadObject(objectName, getBucketName(connection));
|
||||
}
|
||||
|
||||
@@ -195,7 +195,7 @@ public class MinIOService implements IObjectStorageService {
|
||||
return objectName;
|
||||
}
|
||||
|
||||
private byte[] internalDownloadObject(@Nonnull String objectName, @Nonnull String bucketName) throws Exception {
|
||||
private byte[] internalDownloadObject(@Nonnull String objectName, @Nonnull String bucketName) throws MinIONotEnabledException, ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {
|
||||
this.checkStatus();
|
||||
this.checkConnection();
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ import com.fasterxml.jackson.databind.annotation.JsonTypeResolver;
|
||||
import com.google.common.base.Joiner;
|
||||
import com.microsoft.sqlserver.jdbc.SQLServerConnection;
|
||||
import com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement;
|
||||
import io.minio.errors.ErrorResponseException;
|
||||
import io.minio.errors.*;
|
||||
import it.integry.common.var.CommonConstants;
|
||||
import it.integry.common.var.EmsDBConst;
|
||||
import it.integry.ems._context.ApplicationContextProvider;
|
||||
@@ -492,7 +492,7 @@ public abstract class EntityBase implements Serializable, Cloneable, EntityInter
|
||||
return false;
|
||||
}
|
||||
|
||||
public EntityBase selectAndMergeEntity(Connection connection, EntityBase entity) throws IllegalAccessException, IOException, FieldMissingException, SQLException, ConverterNotConfiguredException, MergeEntityDBToObjectException, XmlPullParserException, NoSuchAlgorithmException, InvalidKeyException, MinIONotEnabledException {
|
||||
public EntityBase selectAndMergeEntity(Connection connection, EntityBase entity) throws IllegalAccessException, IOException, FieldMissingException, SQLException, ConverterNotConfiguredException, MergeEntityDBToObjectException, XmlPullParserException, NoSuchAlgorithmException, InvalidKeyException, MinIONotEnabledException, ServerException, InsufficientDataException, ErrorResponseException, InvalidResponseException, XmlParserException, InternalException {
|
||||
String where;
|
||||
|
||||
if (!entity.getOnlyPkMaster() && entity.getOperation() == OperationType.SELECT_OBJECT) {
|
||||
@@ -556,7 +556,7 @@ public abstract class EntityBase implements Serializable, Cloneable, EntityInter
|
||||
} else throw new Exception("Impossibile confrontare le entity");
|
||||
}
|
||||
|
||||
private EntityBase mergeEntityDBToObject(Connection connection, HashMap<String, Object> datiDb, EntityBase entity) throws IllegalAccessException, ConverterNotConfiguredException, SQLException, XmlPullParserException, NoSuchAlgorithmException, IOException, InvalidKeyException, MergeEntityDBToObjectException, MinIONotEnabledException {
|
||||
private EntityBase mergeEntityDBToObject(Connection connection, HashMap<String, Object> datiDb, EntityBase entity) throws ServerException, SQLException, InsufficientDataException, MinIONotEnabledException, ErrorResponseException, NoSuchAlgorithmException, IOException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException, IllegalAccessException, MergeEntityDBToObjectException, ConverterNotConfiguredException {
|
||||
if (UtilityHashMap.isPresent(datiDb)) {
|
||||
MinIOService minIOService = ApplicationContextProvider.getApplicationContext().getBean(MinIOService.class);
|
||||
|
||||
@@ -632,14 +632,15 @@ public abstract class EntityBase implements Serializable, Cloneable, EntityInter
|
||||
}
|
||||
|
||||
field.set(entity, columnValue);
|
||||
} catch (SQLException | MinIONotEnabledException | XmlPullParserException |
|
||||
NoSuchAlgorithmException |
|
||||
IOException | InvalidKeyException e) {
|
||||
} catch (SQLException | MinIONotEnabledException |
|
||||
NoSuchAlgorithmException | IOException | InvalidKeyException | ServerException |
|
||||
InsufficientDataException | ErrorResponseException | InvalidResponseException |
|
||||
XmlParserException | InternalException | IllegalAccessException e) {
|
||||
if (!UtilityDebug.isDebugExecution() && !UtilityDebug.isIntegryServer()) {
|
||||
throw e;
|
||||
} else {
|
||||
logger.error(e);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.kie.api.definition.type.PropertyReactive;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
@@ -37,10 +38,10 @@ public class GtbAnagNote extends EntityBase {
|
||||
private String note;
|
||||
|
||||
@SqlField(value = "data_ins", nullable = false, defaultObjectValue = CommonConstants.SYSDATE)
|
||||
private Date dataIns;
|
||||
private LocalDate dataIns;
|
||||
|
||||
@SqlField(value = "data_scad", format = CommonConstants.SYSDATE)
|
||||
private Date dataScad;
|
||||
private LocalDate dataScad;
|
||||
|
||||
@SqlField(value = "flag_segn_scad", maxLength = 1, nullable = false, defaultObjectValue = "N")
|
||||
private String flagSegnScad;
|
||||
@@ -94,20 +95,20 @@ public class GtbAnagNote extends EntityBase {
|
||||
return this;
|
||||
}
|
||||
|
||||
public Date getDataIns() {
|
||||
public LocalDate getDataIns() {
|
||||
return dataIns;
|
||||
}
|
||||
|
||||
public GtbAnagNote setDataIns(Date dataIns) {
|
||||
public GtbAnagNote setDataIns(LocalDate dataIns) {
|
||||
this.dataIns = dataIns;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Date getDataScad() {
|
||||
public LocalDate getDataScad() {
|
||||
return dataScad;
|
||||
}
|
||||
|
||||
public GtbAnagNote setDataScad(Date dataScad) {
|
||||
public GtbAnagNote setDataScad(LocalDate dataScad) {
|
||||
this.dataScad = dataScad;
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -61,7 +61,9 @@ public class SqlFieldHolder {
|
||||
private static SpelExpressionParser pp;
|
||||
private static StandardEvaluationContext ctx;
|
||||
|
||||
private static final ResponseJSONObjectMapper jsonObjectMapper = ApplicationContextProvider.getApplicationContext().getBean(ResponseJSONObjectMapper.class);
|
||||
private static final ResponseJSONObjectMapper jsonObjectMapper = ApplicationContextProvider.getApplicationContext() != null ?
|
||||
ApplicationContextProvider.getApplicationContext().getBean(ResponseJSONObjectMapper.class)
|
||||
: new ResponseJSONObjectMapper();
|
||||
|
||||
private static final TypeReference<List<String>> STRING_LIST_TYPE_REF = new TypeReference<List<String>>() {
|
||||
};
|
||||
|
||||
@@ -16,6 +16,7 @@ import it.integry.ems_model.exception.DataConverterNotFoundException;
|
||||
import it.integry.ems_model.types.OperationType;
|
||||
import it.integry.ems_model.types.TypeDbObject;
|
||||
import it.integry.ems_model.utility.dto.IndexTableDTO;
|
||||
import it.integry.ems_model.utility.dto.PageableRequestDTO;
|
||||
import it.integry.ems_model.utility.dto.PaginatedDTO;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
@@ -548,7 +549,29 @@ public class UtilityDB {
|
||||
return executeSimpleQueryDTO(conn, querySql, clazz, null);
|
||||
}
|
||||
|
||||
public static <T> PaginatedDTO<T> executePaginatedQueryDTO(Connection conn, String querySql, Class<T> clazz, int page, int pageSize) throws SQLException, DataConverterNotFoundException, InstantiationException, IllegalAccessException {
|
||||
public static <T> PaginatedDTO<T> executePaginatedQueryDTO(Connection conn, String querySql, Class<T> clazz, PageableRequestDTO pageableRequestDTO) throws SQLException {
|
||||
final String paginatedQuery = UtilityQuery.generatePaginatedSelect(querySql, pageableRequestDTO);
|
||||
|
||||
final List<HashMap<String, Object>> result = executeSimpleQuery(conn, paginatedQuery);
|
||||
|
||||
int totalCount = 0;
|
||||
|
||||
if (!result.isEmpty()) {
|
||||
totalCount = UtilityHashMap.getValueIfExists(result.get(0), "rows_count");
|
||||
}
|
||||
|
||||
final List<T> resultList = UtilityHashMap.mapListToObjects(result, clazz);
|
||||
|
||||
PaginatedDTO<T> paginatedDTO = new PaginatedDTO<>();
|
||||
|
||||
paginatedDTO
|
||||
.setData(resultList)
|
||||
.setTotalCount(totalCount);
|
||||
|
||||
return paginatedDTO;
|
||||
}
|
||||
|
||||
public static <T> PaginatedDTO<T> executePaginatedQueryDTO(Connection conn, String querySql, Class<T> clazz, int page, int pageSize) throws SQLException {
|
||||
final String paginatedQuery = UtilityQuery.generatePaginatedSelect(querySql, page, pageSize);
|
||||
|
||||
final List<HashMap<String, Object>> result = executeSimpleQuery(conn, paginatedQuery);
|
||||
@@ -675,9 +698,6 @@ public class UtilityDB {
|
||||
break;
|
||||
|
||||
case Types.TINYINT:
|
||||
result = Byte.class;
|
||||
break;
|
||||
|
||||
case Types.SMALLINT:
|
||||
result = Short.class;
|
||||
break;
|
||||
|
||||
@@ -2,12 +2,14 @@ package it.integry.ems_model.utility;
|
||||
|
||||
import it.integry.ems_model.annotation.SqlField;
|
||||
import it.integry.ems_model.utility.dto.FilterDTO;
|
||||
import it.integry.ems_model.utility.dto.SortDTO;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -52,7 +54,7 @@ public class UtilityFilter {
|
||||
return where;
|
||||
}
|
||||
|
||||
String value = (String) subFilter.getValue();
|
||||
String value = String.valueOf(subFilter.getValue());
|
||||
|
||||
try {
|
||||
if (value.matches("\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.*")) {
|
||||
@@ -137,4 +139,25 @@ public class UtilityFilter {
|
||||
return "(" + sql + ")";
|
||||
}
|
||||
|
||||
public static String processSort(SortDTO[] sort) {
|
||||
return processSort(sort, false);
|
||||
}
|
||||
|
||||
public static String processSort(SortDTO[] sort, boolean reverse) {
|
||||
List<String> arraySort = Arrays.stream(sort)
|
||||
.map(sortDTO ->
|
||||
String.format(
|
||||
"%s %s",
|
||||
sortDTO.getField(),
|
||||
sortDTO.getDir()
|
||||
)
|
||||
)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (reverse) {
|
||||
Collections.reverse(arraySort);
|
||||
}
|
||||
|
||||
return String.join(", ", arraySort);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import it.integry.common.var.CommonConstants;
|
||||
import it.integry.ems.sync.MultiDBTransaction.Connection;
|
||||
import it.integry.ems_model.annotation.SqlField;
|
||||
import it.integry.ems_model.base.EntityBase;
|
||||
import it.integry.ems_model.utility.dto.PageableRequestDTO;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
@@ -20,6 +21,51 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
public class UtilityQuery {
|
||||
public static String generatePaginatedSelect(String query, PageableRequestDTO pageableRequestDTO) {
|
||||
String sql = query;
|
||||
|
||||
if (!query.contains("WITH")) {
|
||||
sql = String.format(
|
||||
"WITH TempResult AS (SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS row_number,\n" +
|
||||
" *\n" +
|
||||
" FROM (%s) t" +
|
||||
" WHERE [filter]),\n" +
|
||||
" TempCount AS (SELECT COUNT(*) AS rows_count\n" +
|
||||
" FROM TempResult)\n" +
|
||||
"SELECT TempResult.*,\n" +
|
||||
" TempCount.*\n" +
|
||||
"FROM TempResult,\n" +
|
||||
" TempCount\n" +
|
||||
"ORDER BY [orderBy]",
|
||||
query
|
||||
);
|
||||
}
|
||||
|
||||
String filter = "1 = 1";
|
||||
String sort = "row_number";
|
||||
|
||||
if (pageableRequestDTO != null) {
|
||||
if (pageableRequestDTO.getFilter() != null) {
|
||||
filter = UtilityFilter.processFilters(pageableRequestDTO.getFilter());
|
||||
}
|
||||
|
||||
if (pageableRequestDTO.getSort() != null) {
|
||||
sort = UtilityFilter.processSort(pageableRequestDTO.getSort());
|
||||
}
|
||||
|
||||
if (pageableRequestDTO.getPage() != null && pageableRequestDTO.getPageSize() != null) {
|
||||
sort += "\nOFFSET ([pageNum] - 1) * [pageSize] ROWS FETCH NEXT [pageSize] ROWS ONLY";
|
||||
|
||||
sort = sort.replace("[pageNum]", String.valueOf(pageableRequestDTO.getPage()));
|
||||
sort = sort.replace("[pageSize]", String.valueOf(pageableRequestDTO.getPageSize()));
|
||||
}
|
||||
}
|
||||
|
||||
sql = sql.replace("[filter]", filter);
|
||||
sql = sql.replace("[orderBy]", sort);
|
||||
|
||||
return sql;
|
||||
}
|
||||
|
||||
public static String generatePaginatedSelect(String query, int pageNumber, int pageSize) {
|
||||
String sql = "WITH TempResult AS (SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS row_number, " +
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
package it.integry.ems_model.utility.dto;
|
||||
|
||||
public class PageableRequestDTO {
|
||||
private FilterDTO filter;
|
||||
|
||||
private Integer page;
|
||||
|
||||
private Integer pageSize;
|
||||
|
||||
private SortDTO[] sort;
|
||||
|
||||
public FilterDTO getFilter() {
|
||||
return filter;
|
||||
}
|
||||
|
||||
public PageableRequestDTO setFilter(FilterDTO filter) {
|
||||
this.filter = filter;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Integer getPage() {
|
||||
return page;
|
||||
}
|
||||
|
||||
public PageableRequestDTO setPage(Integer page) {
|
||||
this.page = page;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Integer getPageSize() {
|
||||
return pageSize;
|
||||
}
|
||||
|
||||
public PageableRequestDTO setPageSize(Integer pageSize) {
|
||||
this.pageSize = pageSize;
|
||||
return this;
|
||||
}
|
||||
|
||||
public SortDTO[] getSort() {
|
||||
return sort;
|
||||
}
|
||||
|
||||
public PageableRequestDTO setSort(SortDTO[] sort) {
|
||||
this.sort = sort;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package it.integry.ems_model.utility.dto;
|
||||
|
||||
public class SortDTO {
|
||||
String field;
|
||||
|
||||
String dir;
|
||||
|
||||
public String getField() {
|
||||
return field;
|
||||
}
|
||||
|
||||
public SortDTO setField(String field) {
|
||||
this.field = field;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDir() {
|
||||
return dir;
|
||||
}
|
||||
|
||||
public SortDTO setDir(String dir) {
|
||||
this.dir = dir;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -164,4 +164,14 @@ when
|
||||
then
|
||||
String codVvet = AnagRules.completeCodVvet(conn, $vtbVett);
|
||||
modify ( $vtbVett ) { setCodVvet(codVvet) }
|
||||
end
|
||||
|
||||
|
||||
rule "completeDataInsGtbAnagNote"
|
||||
no-loop
|
||||
when
|
||||
eval(completeRulesEnabled)
|
||||
$entity: GtbAnagNote(dataIns == null)
|
||||
then
|
||||
modify ( $entity ) { setDataIns(UtilityLocalDate.getNow()) }
|
||||
end
|
||||
@@ -180,7 +180,7 @@ public class PassiveInvoiceRecapObject {
|
||||
DettaglioPagamentoType dettPag =
|
||||
dati.getDettaglioPagamento().stream().filter(p -> p.getIBAN() != null).findFirst().orElse(null);
|
||||
if (dettPag != null) {
|
||||
object.setIban(dettPag.getIBAN());
|
||||
object.setIban(dettPag.getIBAN().toUpperCase());
|
||||
//break;
|
||||
}
|
||||
|
||||
|
||||
@@ -153,7 +153,6 @@ public class PassiveInvoiceService {
|
||||
message = null;
|
||||
}
|
||||
|
||||
//saveIbanForn(recapObject.getCodAnag(), recapObject.getIban());
|
||||
saveAnagForn(recapObject);
|
||||
|
||||
String prefixDesc = String.format("[%s - %s]", recapObject.getCodAnag(), recapObject.getRagSoc());
|
||||
@@ -176,7 +175,9 @@ public class PassiveInvoiceService {
|
||||
|
||||
if (recapObject.getNumDoc() != null) {
|
||||
String iban = recapObject.getIban();
|
||||
if (iban != null){iban.toUpperCase();}
|
||||
if (iban != null) {
|
||||
iban.toUpperCase();
|
||||
}
|
||||
additionalAttachmentInfo.put(DATA_DOC_KEY, recapObject.getDate());
|
||||
additionalAttachmentInfo.put(NUM_DOC_KEY, recapObject.getNumDoc());
|
||||
additionalAttachmentInfo.put(TOT_DOC_KEY, recapObject.getTotDoc());
|
||||
@@ -188,10 +189,10 @@ public class PassiveInvoiceService {
|
||||
if (!recapObject.getScadenze().isEmpty()) {
|
||||
additionalAttachmentInfo.put(SCADENZE_KEY, recapObject.getScadenze());
|
||||
}
|
||||
if (!recapObject.getIva().isEmpty()){
|
||||
if (!recapObject.getIva().isEmpty()) {
|
||||
additionalAttachmentInfo.put(CASTELLETTO_IVA_KEY, recapObject.getIva());
|
||||
}
|
||||
if (!recapObject.getDdt().isEmpty()){
|
||||
if (!recapObject.getDdt().isEmpty()) {
|
||||
additionalAttachmentInfo.put(DDT_KEY, recapObject.getDdt());
|
||||
}
|
||||
|
||||
@@ -260,7 +261,7 @@ public class PassiveInvoiceService {
|
||||
return dtbDocXml;
|
||||
}).toList();
|
||||
|
||||
if(dtbDoxXmlList == null || dtbDoxXmlList.isEmpty()){
|
||||
if (dtbDoxXmlList == null || dtbDoxXmlList.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -378,7 +379,7 @@ public class PassiveInvoiceService {
|
||||
Date dataDoc = UtilityHashMap.getValueIfExists(additionalInfo, DATA_DOC_KEY);
|
||||
String numDoc = UtilityHashMap.getValueIfExists(additionalInfo, NUM_DOC_KEY);
|
||||
|
||||
if ( parentId == null ) {
|
||||
if (parentId == null) {
|
||||
String regexName = ".{0,}([A-Z]{2}[a-z,A-Z,0-9]{2,28}[_][a-z,A-Z,0-9]{1,5}).{0,}";
|
||||
Pattern pattern = Pattern.compile(regexName);
|
||||
Matcher matcher = pattern.matcher(description);
|
||||
@@ -433,7 +434,7 @@ public class PassiveInvoiceService {
|
||||
}
|
||||
|
||||
String iban = UtilityHashMap.<String>getValueIfExists(additionalInfo, IBAN_KEY);
|
||||
if ( iban != null ) {
|
||||
if (iban != null) {
|
||||
iban = iban.toUpperCase();
|
||||
}
|
||||
DtbFatturePassive fatturePassive = new DtbFatturePassive()
|
||||
@@ -495,35 +496,20 @@ public class PassiveInvoiceService {
|
||||
return nextId;
|
||||
}
|
||||
|
||||
private void saveIbanForn(String codForn, String iban) throws Exception {
|
||||
if (!UtilityString.isNullOrEmpty(codForn) && codForn.length() <= 5 && !UtilityString.isNullOrEmpty(iban)) {
|
||||
GtbAnag gtbAnag = new GtbAnag();
|
||||
gtbAnag.setCodAnag(codForn);
|
||||
gtbAnag.setOperation(OperationType.NO_OP);
|
||||
|
||||
AtbForn atbForn = new AtbForn();
|
||||
atbForn.setOperation(OperationType.UPDATE);
|
||||
atbForn.setCodAnag(codForn);
|
||||
atbForn.setIban(iban);
|
||||
gtbAnag.setAtbForn(atbForn);
|
||||
|
||||
entityProcessor.processEntity(gtbAnag, true, multiDBTransactionManager);
|
||||
}
|
||||
}
|
||||
|
||||
private void saveAnagForn(PassiveInvoiceRecapObject recapObject) throws Exception {
|
||||
Boolean saveIban = setupGest.getSetupBoolean(multiDBTransactionManager.getPrimaryConnection(), "DATI_AZIENDA", "FATTURAZIONE_ELETTRONICA", "SALVA_IBAN_FORN");
|
||||
if (UtilityString.isNullOrEmpty(recapObject.getCodAnag()) || recapObject.getCodAnag().equalsIgnoreCase(recapObject.getErrorCodAnag())) {
|
||||
GtbAnag gtbAnag = recapObject.getGtbAnag();
|
||||
gtbAnag.setOperation(OperationType.INSERT);
|
||||
AtbForn atbForn = new AtbForn();
|
||||
atbForn.setOperation(OperationType.INSERT);
|
||||
atbForn.setIban(recapObject.getIban());
|
||||
GtbAnagNote gtbAnagNote = new GtbAnagNote();
|
||||
gtbAnagNote.setTipoNote("CODIFICA_AUTOMATICA");
|
||||
gtbAnagNote.setNote("Codice Anagrafico codificato automaticamente, verifiare che i dati siano completi");
|
||||
gtbAnagNote.setFlagSegnCmov("S");
|
||||
gtbAnagNote.setFlagSegnScad("S");
|
||||
gtbAnagNote.setDataIns(new Date());
|
||||
if (saveIban)
|
||||
atbForn.setIban(recapObject.getIban());
|
||||
GtbAnagNote gtbAnagNote = new GtbAnagNote()
|
||||
.setTipoNote("CODIFICA_AUTOMATICA")
|
||||
.setNote("Codice Anagrafico codificato automaticamente, verifiare che i dati siano completi")
|
||||
.setFlagSegnCmov("S")
|
||||
.setFlagSegnScad("S");
|
||||
gtbAnag.getGtbAnagNote().add(gtbAnagNote);
|
||||
gtbAnag.setAtbForn(atbForn);
|
||||
|
||||
@@ -548,19 +534,19 @@ public class PassiveInvoiceService {
|
||||
throw new Exception("Il file selezionato non contiene la partita iva di quest'azienda");
|
||||
}
|
||||
}
|
||||
for(FatturePassiveCsvDTO f: fatturePassiveCsvDTOS) {
|
||||
String partIvaForn = f.getPartitaIvaFornitore().replace("'","");
|
||||
for (FatturePassiveCsvDTO f : fatturePassiveCsvDTOS) {
|
||||
String partIvaForn = f.getPartitaIvaFornitore().replace("'", "");
|
||||
String numFattura = f.getNumFattura().replace("'", "");
|
||||
Date dataDoc = f.getDataEmissione();
|
||||
String progressivoSdi = f.getSdi().replace("'", "");
|
||||
|
||||
String sql = Query.format(
|
||||
"SELECT CAST(COUNT(*) AS BIT)\n" +
|
||||
"FROM dtb_fatture_passive\n" +
|
||||
"WHERE part_iva = %s\n" +
|
||||
" AND num_doc = %s\n" +
|
||||
" AND data_doc = %s\n" +
|
||||
" AND identificativo_sdi = %S",
|
||||
"FROM dtb_fatture_passive\n" +
|
||||
"WHERE part_iva = %s\n" +
|
||||
" AND num_doc = %s\n" +
|
||||
" AND data_doc = %s\n" +
|
||||
" AND identificativo_sdi = %S",
|
||||
partIvaForn,
|
||||
numFattura,
|
||||
dataDoc,
|
||||
@@ -571,12 +557,12 @@ public class PassiveInvoiceService {
|
||||
if (!existDoc) {
|
||||
anomalie.add(AnomalieDTO.error(
|
||||
String.format("%s n. %s del %s fornitore: %s progressivo sdi: %s non presente nel sistema.",
|
||||
f.getTipoDocumento().replace("'", ""),
|
||||
numFattura,
|
||||
new SimpleDateFormat(CommonConstants.DATE_FORMAT_DMY).format(dataDoc),
|
||||
f.getDenominazioneFornitore().replace("'", ""),
|
||||
progressivoSdi)
|
||||
));
|
||||
f.getTipoDocumento().replace("'", ""),
|
||||
numFattura,
|
||||
new SimpleDateFormat(CommonConstants.DATE_FORMAT_DMY).format(dataDoc),
|
||||
f.getDenominazioneFornitore().replace("'", ""),
|
||||
progressivoSdi)
|
||||
));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -49,6 +49,19 @@ public class AgribookOrderController {
|
||||
|
||||
}
|
||||
|
||||
@RequestMapping(value = "v2", method = RequestMethod.GET)
|
||||
public @ResponseBody
|
||||
ServiceRestResponse paginatedRetrieveOrders(@RequestBody(required = false) AgribookRetrieveOrdersRequestDTO agribookRetrieveOrdersRequestDTO) throws Exception {
|
||||
return ServiceRestResponse.createPositiveResponse(agribookOrderService.paginatedRetrieveOrders(agribookRetrieveOrdersRequestDTO));
|
||||
}
|
||||
|
||||
@PutMapping
|
||||
public @ResponseBody
|
||||
ServiceRestResponse updateOrders(@RequestBody ArrayList<AgribookOrderDTO> agribookOrderDTOList) throws Exception {
|
||||
agribookOrderService.updateOrders(agribookOrderDTOList);
|
||||
|
||||
return ServiceRestResponse.createPositiveResponse();
|
||||
}
|
||||
|
||||
@RequestMapping(value = "updatePercClassi", method = RequestMethod.POST)
|
||||
public @ResponseBody
|
||||
|
||||
@@ -16,6 +16,7 @@ import it.integry.ems_model.service.SetupGest;
|
||||
import it.integry.ems_model.types.OperationType;
|
||||
import it.integry.ems_model.utility.*;
|
||||
import it.integry.ems_model.utility.dto.IndirizzoDTO;
|
||||
import it.integry.ems_model.utility.dto.PaginatedDTO;
|
||||
import org.apache.commons.text.StringSubstitutor;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
@@ -116,7 +117,7 @@ public class AgribookOrderService {
|
||||
" mtb_aart.cod_mtip,\n" +
|
||||
" mtb_tipi.descrizione AS macro_varieta,\n" +
|
||||
" CAST(ISNULL(mtb_partita_mag_carat.val_carat, 0) AS INT) AS num_piante,\n" +
|
||||
" CAST(ISNULL(carat_superficie.val_carat, 0) AS FLOAT) AS superficie,\n" +
|
||||
" CAST(ISNULL(carat_superficie.val_carat, 0) AS NUMERIC(7, 2)) AS superficie,\n" +
|
||||
" evase_totalmente\n" +
|
||||
" FROM opened_orders\n" +
|
||||
" INNER JOIN gtb_anag ON opened_orders.cod_anag = gtb_anag.cod_anag\n" +
|
||||
@@ -409,6 +410,423 @@ public class AgribookOrderService {
|
||||
return results;
|
||||
}
|
||||
|
||||
public PaginatedDTO<AgribookOrderDTO> paginatedRetrieveOrders(AgribookRetrieveOrdersRequestDTO agribookRetrieveOrdersRequestDTO) throws Exception {
|
||||
String sql = Query.format(
|
||||
"WITH opened_orders AS (SELECT dtb_ordt.gestione,\n" +
|
||||
" dtb_ordt.data_ord,\n" +
|
||||
" dtb_ordt.num_ord,\n" +
|
||||
" dtb_ordt.cod_anag,\n" +
|
||||
" dtb_ordt.cod_vdes,\n" +
|
||||
" dtb_ordt.cod_mdep,\n" +
|
||||
" dtb_ordt.netto_merce,\n" +
|
||||
" dtb_ordr.cod_mart,\n" +
|
||||
" dtb_ordr.descrizione AS varieta,\n" +
|
||||
" dtb_ordr.partita_mag,\n" +
|
||||
" dtb_ordr.unt_ord,\n" +
|
||||
" MIN(dtb_ordr.data_cons) AS data_cons_min,\n" +
|
||||
" MAX(dtb_ordr.data_cons) AS data_cons_max,\n" +
|
||||
" SUM(dtb_ordr.qta_ord) AS qta_prevista,\n" +
|
||||
" SUM(dtb_ordr.qta_evasa) AS qta_evasa,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN SUM(dtb_ordr.qta_ord - dtb_ordr.qta_evasa) < 0 THEN 0\n" +
|
||||
" ELSE SUM(dtb_ordr.qta_ord - dtb_ordr.qta_evasa) END AS qta_residua,\n" +
|
||||
" CAST(CASE\n" +
|
||||
" WHEN\n" +
|
||||
" COUNT(CASE WHEN flag_evaso = 'I' THEN 1 END) = 0\n" +
|
||||
" THEN 1\n" +
|
||||
" ELSE 0\n" +
|
||||
" END AS BIT) AS evase_totalmente\n" +
|
||||
" FROM dtb_ordt\n" +
|
||||
" INNER JOIN dtb_ordr ON dtb_ordt.gestione = dtb_ordr.gestione AND\n" +
|
||||
" dtb_ordt.data_ord = dtb_ordr.data_ord AND\n" +
|
||||
" dtb_ordt.num_ord = dtb_ordr.num_ord\n" +
|
||||
" WHERE dtb_ordt.gestione = 'A'\n" +
|
||||
" AND dtb_ordt.gestione_rif IS NULL\n" +
|
||||
" AND dtb_ordr.flag_evaso <> 'A'\n" +
|
||||
" GROUP BY dtb_ordt.cod_anag, dtb_ordt.cod_vdes, dtb_ordt.cod_mdep,\n" +
|
||||
" dtb_ordr.unt_ord, dtb_ordt.gestione, dtb_ordt.data_ord, dtb_ordt.num_ord,\n" +
|
||||
" dtb_ordr.cod_mart,\n" +
|
||||
" dtb_ordr.descrizione, dtb_ordr.partita_mag,\n" +
|
||||
" dtb_ordt.netto_merce),\n" +
|
||||
" result AS (SELECT CONCAT(gestione, '-', data_ord, '-', num_ord) AS id,\n" +
|
||||
" gestione,\n" +
|
||||
" data_ord,\n" +
|
||||
" YEAR(data_ord) AS anno,\n" +
|
||||
" num_ord,\n" +
|
||||
" opened_orders.cod_anag,\n" +
|
||||
" cod_vdes,\n" +
|
||||
" cod_mdep,\n" +
|
||||
" netto_merce,\n" +
|
||||
" opened_orders.cod_mart,\n" +
|
||||
" varieta,\n" +
|
||||
" opened_orders.partita_mag,\n" +
|
||||
" unt_ord,\n" +
|
||||
" data_cons_min,\n" +
|
||||
" data_cons_max,\n" +
|
||||
" qta_prevista,\n" +
|
||||
" qta_attesa AS qta_prevista_iniziale,\n" +
|
||||
" qta_evasa,\n" +
|
||||
" qta_residua,\n" +
|
||||
" mtb_aart.cod_mtip,\n" +
|
||||
" mtb_tipi.descrizione AS macro_varieta,\n" +
|
||||
" CAST(ISNULL(mtb_partita_mag_carat.val_carat, 0) AS INT) AS num_piante,\n" +
|
||||
" CAST(ISNULL(carat_superficie.val_carat, 0) AS NUMERIC(7, 2)) AS superficie,\n" +
|
||||
" evase_totalmente\n" +
|
||||
" FROM opened_orders\n" +
|
||||
" INNER JOIN gtb_anag ON opened_orders.cod_anag = gtb_anag.cod_anag\n" +
|
||||
" LEFT OUTER JOIN mtb_aart ON opened_orders.cod_mart = mtb_aart.cod_mart\n" +
|
||||
" LEFT OUTER JOIN mtb_tipi ON mtb_aart.cod_mtip = mtb_tipi.cod_mtip\n" +
|
||||
" LEFT OUTER JOIN mtb_partita_mag\n" +
|
||||
" ON opened_orders.partita_mag = mtb_partita_mag.partita_mag AND\n" +
|
||||
" opened_orders.cod_mart = mtb_partita_mag.cod_mart\n" +
|
||||
" LEFT OUTER JOIN mtb_partita_mag_carat\n" +
|
||||
" ON opened_orders.partita_mag = mtb_partita_mag_carat.partita_mag AND\n" +
|
||||
" opened_orders.cod_mart = mtb_partita_mag_carat.cod_mart AND\n" +
|
||||
" mtb_partita_mag_carat.carat = 'n-piante'\n" +
|
||||
" LEFT OUTER JOIN mtb_partita_mag_carat carat_superficie\n" +
|
||||
" ON opened_orders.partita_mag = carat_superficie.partita_mag AND\n" +
|
||||
" opened_orders.cod_mart = carat_superficie.cod_mart AND\n" +
|
||||
" carat_superficie.carat = 'superficie'\n" +
|
||||
" WHERE mtb_aart.cod_mgrp = dbo.getGestSetup('CRUSCOTTO_PRODUZIONE', 'SETUP', 'COD_MGRP_MP')),\n" +
|
||||
" activities AS (SELECT MAX(estimated_time) AS estimated_time,\n" +
|
||||
" cod_anag,\n" +
|
||||
" cod_vdes,\n" +
|
||||
" cod_mart,\n" +
|
||||
" partita_mag\n" +
|
||||
" FROM stb_activity\n" +
|
||||
" WHERE estimated_endtime IS NULL\n" +
|
||||
" AND activity_type_id = 'RILEVAZIONE'\n" +
|
||||
" GROUP BY cod_anag,\n" +
|
||||
" cod_vdes,\n" +
|
||||
" cod_mart,\n" +
|
||||
" partita_mag),\n" +
|
||||
" my_activities AS (SELECT DISTINCT user_name,\n" +
|
||||
" cod_anag,\n" +
|
||||
" cod_vdes,\n" +
|
||||
" cod_mart,\n" +
|
||||
" partita_mag,\n" +
|
||||
" 1 AS any_activity\n" +
|
||||
" FROM stb_activity\n" +
|
||||
" WHERE estimated_endtime IS NULL\n" +
|
||||
" AND activity_type_id = 'RILEVAZIONE'\n" +
|
||||
" AND user_name = %s),\n" +
|
||||
" attachments AS (SELECT mrl_partita_mag_attached.cod_mart,\n" +
|
||||
" mrl_partita_mag_attached.partita_mag,\n" +
|
||||
" COUNT(*) AS attachment_number\n" +
|
||||
" FROM mrl_partita_mag_attached\n" +
|
||||
" GROUP BY mrl_partita_mag_attached.cod_mart, mrl_partita_mag_attached.partita_mag),\n" +
|
||||
" TempResult AS (SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS row_number,\n" +
|
||||
" *\n" +
|
||||
" FROM (SELECT result.*,\n" +
|
||||
" activities.estimated_time AS next_activity,\n" +
|
||||
" CAST(ISNULL(my_activities.any_activity, 0) AS BIT) AS any_activity,\n" +
|
||||
" ISNULL(attachments.attachment_number, 0) AS attachments_count\n" +
|
||||
" FROM result\n" +
|
||||
" LEFT OUTER JOIN activities ON\n" +
|
||||
" result.cod_mart = activities.cod_mart AND\n" +
|
||||
" result.partita_mag = activities.partita_mag AND\n" +
|
||||
" result.cod_anag = activities.cod_anag AND\n" +
|
||||
" result.cod_vdes = activities.cod_vdes\n" +
|
||||
" LEFT OUTER JOIN my_activities ON\n" +
|
||||
" result.cod_mart = my_activities.cod_mart AND\n" +
|
||||
" result.partita_mag = my_activities.partita_mag AND\n" +
|
||||
" result.cod_anag = my_activities.cod_anag AND\n" +
|
||||
" result.cod_vdes = my_activities.cod_vdes\n" +
|
||||
" LEFT OUTER JOIN attachments ON\n" +
|
||||
" attachments.cod_mart = result.cod_mart AND\n" +
|
||||
" attachments.partita_mag = result.partita_mag) t\n" +
|
||||
" WHERE [filter]),\n" +
|
||||
" TempCount AS (SELECT COUNT(*) AS rows_count\n" +
|
||||
" FROM TempResult)\n" +
|
||||
"SELECT TempCount.*,\n" +
|
||||
" TempResult.*\n" +
|
||||
"FROM TempResult,\n" +
|
||||
" TempCount\n" +
|
||||
"ORDER BY [orderBy]",
|
||||
userSession.getUsername()
|
||||
);
|
||||
|
||||
PaginatedDTO<AgribookOrderDTO> results = UtilityDB.executePaginatedQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, AgribookOrderDTO.class, agribookRetrieveOrdersRequestDTO);
|
||||
|
||||
//Filling mtbPartitaMag
|
||||
List<MtbPartitaMag> partitaMagList = Stream.of(results.getData())
|
||||
.map(x -> {
|
||||
MtbPartitaMag mtbPartitaMag = new MtbPartitaMag()
|
||||
.setCodMart(x.getCodMart())
|
||||
.setPartitaMag(x.getPartitaMag());
|
||||
mtbPartitaMag.setOperation(OperationType.SELECT_OBJECT);
|
||||
return mtbPartitaMag;
|
||||
})
|
||||
.distinct()
|
||||
.toList();
|
||||
|
||||
entityProcessor.processEntityList(partitaMagList, true);
|
||||
|
||||
//Filling vtbDest
|
||||
List<VtbDest> vtbDestList = Stream.of(results.getData())
|
||||
.map(x -> {
|
||||
VtbDest vtbDest = new VtbDest()
|
||||
.setCodVdes(x.getCodVdes())
|
||||
.setCodAnag(x.getCodAnag());
|
||||
vtbDest.setOperation(OperationType.SELECT_OBJECT);
|
||||
return vtbDest;
|
||||
})
|
||||
.distinct()
|
||||
.toList();
|
||||
|
||||
entityProcessor.processEntityList(vtbDestList, true);
|
||||
|
||||
//Filling gtbAnag
|
||||
List<GtbAnag> gtbAnagList = Stream.of(results.getData())
|
||||
.map(x -> {
|
||||
GtbAnag gtbAnag = new GtbAnag()
|
||||
.setCodAnag(x.getCodAnag());
|
||||
gtbAnag.setOperation(OperationType.SELECT_OBJECT);
|
||||
return gtbAnag;
|
||||
})
|
||||
.distinct()
|
||||
.toList();
|
||||
|
||||
entityProcessor.processEntityList(gtbAnagList, true);
|
||||
|
||||
//Filling mtbDepo
|
||||
List<String> mtbDepoSearchList = Stream.of(results.getData())
|
||||
.map(AgribookOrderDTO::getCodMdep)
|
||||
.distinct()
|
||||
.withoutNulls()
|
||||
.toList();
|
||||
|
||||
List<MtbDepo> mtbDepoList = null;
|
||||
List<MtbDepoPosizioni> mtbDepoPosizioniList = null;
|
||||
|
||||
if (!mtbDepoSearchList.isEmpty()) {
|
||||
mtbDepoList = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(),
|
||||
"SELECT * FROM mtb_depo WHERE cod_mdep IN (" + UtilityQuery.concatStringFieldsWithSeparator(mtbDepoSearchList, ", ") + ")", MtbDepo.class);
|
||||
|
||||
mtbDepoPosizioniList = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(),
|
||||
"SELECT * FROM " + MtbDepoPosizioni.ENTITY + " WHERE cod_mdep IN (" + UtilityQuery.concatStringFieldsWithSeparator(mtbDepoSearchList, ", ") + ")", MtbDepoPosizioni.class);
|
||||
}
|
||||
|
||||
if (mtbDepoPosizioniList == null) mtbDepoPosizioniList = new ArrayList<>();
|
||||
|
||||
List<Object> idPosizioniToLook = Stream.of(mtbDepoPosizioniList)
|
||||
.map(x -> (Object) x.getIdPosizione())
|
||||
.distinct()
|
||||
.withoutNulls()
|
||||
.toList();
|
||||
|
||||
if (!idPosizioniToLook.isEmpty()) {
|
||||
List<StbPosizioni> stbPosizioniList = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(),
|
||||
"SELECT * FROM " + StbPosizioni.ENTITY + " WHERE id IN (" + UtilityQuery.concatObjectFieldsWithSeparator(idPosizioniToLook, ", ") + ")", StbPosizioni.class);
|
||||
|
||||
if (stbPosizioniList != null)
|
||||
for (MtbDepoPosizioni mtbDepoPosizioni : mtbDepoPosizioniList) {
|
||||
mtbDepoPosizioni.setStbPosizioni(Stream.of(stbPosizioniList).filter(x -> Objects.equals(x.getId(), mtbDepoPosizioni.getIdPosizione())).findFirst().orElse(null));
|
||||
}
|
||||
}
|
||||
|
||||
List<AgribookReportDTO> allReports = null;
|
||||
|
||||
if (agribookRetrieveOrdersRequestDTO != null && agribookRetrieveOrdersRequestDTO.isLoadReports()) {
|
||||
allReports = agribookReportService.retrieveReports(results.getData(), true);
|
||||
}
|
||||
|
||||
List<AgribookRaccoltaDTO> allRaccolte = null;
|
||||
|
||||
if (agribookRetrieveOrdersRequestDTO != null && agribookRetrieveOrdersRequestDTO.isLoadRaccolte()) {
|
||||
allRaccolte = agribookReportService.retrieveRaccolte(results.getData());
|
||||
}
|
||||
|
||||
for (AgribookOrderDTO agribookOrderDTO : results.getData()) {
|
||||
if (mtbDepoList != null) {
|
||||
//MtbDepo
|
||||
Optional<MtbDepo> foundMtbDepo = Stream.of(mtbDepoList)
|
||||
.filter(x -> x.getCodMdep().equalsIgnoreCase(agribookOrderDTO.getCodMdep()))
|
||||
.findFirst();
|
||||
|
||||
if (foundMtbDepo.isPresent()) {
|
||||
agribookOrderDTO.setMtbDepo(foundMtbDepo.get());
|
||||
}
|
||||
}
|
||||
|
||||
//MtbPartitaMag
|
||||
Optional<MtbPartitaMag> foundMtbPartMag = Stream.of(partitaMagList)
|
||||
.filter(x -> x.getCodMart().equals(agribookOrderDTO.getCodMart()) &&
|
||||
x.getPartitaMag().equals(agribookOrderDTO.getPartitaMag()))
|
||||
.findFirst();
|
||||
|
||||
if (foundMtbPartMag.isPresent()) {
|
||||
agribookOrderDTO.setMtbPartitaMag(foundMtbPartMag.get());
|
||||
|
||||
String campo = foundMtbPartMag.get().getPosizione();
|
||||
if (!UtilityString.isNullOrEmpty(campo)) {
|
||||
MtbDepoPosizioni mtbDepoPosizione = Stream.of(mtbDepoPosizioniList)
|
||||
.filter(x -> x.getPosizione().equalsIgnoreCase(campo))
|
||||
.findFirst().orElse(null);
|
||||
|
||||
if (mtbDepoPosizione != null && mtbDepoPosizione.getStbPosizioni() != null) {
|
||||
agribookOrderDTO.setDestinatario(AgribookDestinatarioDTO.fromStbPosizione(mtbDepoPosizione.getStbPosizioni()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//VtbDest
|
||||
if (agribookOrderDTO.getCodVdes() != null) {
|
||||
Optional<VtbDest> foundVtbDest = Stream.of(vtbDestList)
|
||||
.filter(x -> ((x.getCodVdes() == null && agribookOrderDTO.getCodVdes() == null) || (x.getCodVdes() != null && x.getCodVdes().equals(agribookOrderDTO.getCodVdes()))) &&
|
||||
x.getCodAnag().equals(agribookOrderDTO.getCodAnag()))
|
||||
.findFirst();
|
||||
|
||||
if (foundVtbDest.isPresent()) {
|
||||
if (agribookOrderDTO.getDestinatario() == null)
|
||||
agribookOrderDTO.setDestinatario(AgribookDestinatarioDTO.fromVtbDest(foundVtbDest.get()));
|
||||
else {
|
||||
agribookOrderDTO.getDestinatario().setDestinatario(foundVtbDest.get().getDestinatario())
|
||||
.setNumeroTelefono(foundVtbDest.get().getTel())
|
||||
.setSocieta(false)
|
||||
.setCap(foundVtbDest.get().getCap())
|
||||
.setCitta(foundVtbDest.get().getCitta())
|
||||
.setIndirizzo(foundVtbDest.get().getIndirizzo())
|
||||
.setProv(foundVtbDest.get().getProv());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Optional<GtbAnag> foundGtbAnag = Stream.of(gtbAnagList)
|
||||
.filter(x -> x.getCodAnag().equals(agribookOrderDTO.getCodAnag()))
|
||||
.findFirst();
|
||||
|
||||
if (foundGtbAnag.isPresent()) {
|
||||
if (agribookOrderDTO.getDestinatario() == null)
|
||||
agribookOrderDTO.setDestinatario(AgribookDestinatarioDTO.fromGtbAnag(foundGtbAnag.get()));
|
||||
else {
|
||||
agribookOrderDTO.getDestinatario().setDestinatario(foundGtbAnag.get().getRagSoc())
|
||||
.setNumeroTelefono(foundGtbAnag.get().getTelefono())
|
||||
.setSocieta(true)
|
||||
.setCap(foundGtbAnag.get().getCap())
|
||||
.setCitta(foundGtbAnag.get().getCitta())
|
||||
.setIndirizzo(foundGtbAnag.get().getIndirizzo())
|
||||
.setProv(foundGtbAnag.get().getProv());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final short initialWeekDayShort = Short.parseShort(setupGest.getSetup("PVM", "DELIVERY_PLAN", "GIORNO_INIZIO_SETTIMANA"));
|
||||
|
||||
if (allReports != null) {
|
||||
List<AgribookReportDTO> reports = allReports.stream()
|
||||
.filter(x -> x.getCodMart().equalsIgnoreCase(agribookOrderDTO.getCodMart())
|
||||
&& x.getPartitaMag().equalsIgnoreCase(agribookOrderDTO.getPartitaMag())
|
||||
).collect(Collectors.toList());
|
||||
|
||||
agribookOrderDTO.setPrevisioniRaccolta(
|
||||
Stream.of(reports)
|
||||
.filter(x -> x.getPrevRaccNumSett() != null && x.getPrevRaccNumSett() >= UtilityDate.dateToWeekNumber(LocalDate.now(), initialWeekDayShort))
|
||||
.groupBy(agribookReportDTO -> agribookReportDTO.getPrevRaccNumSett() == null ? "" : agribookReportDTO.getPrevRaccNumSett().toString())
|
||||
.map(reportsGroup -> {
|
||||
AgribookReportDTO lastReport = Iterables.getLast(reportsGroup.getValue());
|
||||
|
||||
int lastPrevRaccQtaSett = lastReport.getPrevRaccQtaSett() == null ? 0 : lastReport.getPrevRaccQtaSett();
|
||||
|
||||
int sumQtaClassePremium = lastPrevRaccQtaSett
|
||||
* lastReport.getPrevRaccPercClassePremium() / 100;
|
||||
int sumQtaClasse1 = lastPrevRaccQtaSett
|
||||
* lastReport.getPrevRaccPercClasse1() / 100;
|
||||
int sumQtaClasse2 = lastPrevRaccQtaSett
|
||||
* lastReport.getPrevRaccPercClasse2() / 100;
|
||||
|
||||
return new AgribookPrevRaccoltaDTO()
|
||||
.setDataRilevazione(lastReport.getDataRilevazione())
|
||||
.setNumSettimana(reportsGroup.getKey().equalsIgnoreCase("") ? null : Integer.valueOf(reportsGroup.getKey()))
|
||||
.setQtaSettimana(lastPrevRaccQtaSett)
|
||||
.setPercClassePremium(Float.valueOf((float) sumQtaClassePremium / lastPrevRaccQtaSett * 100).intValue())
|
||||
.setPercClasse1(Float.valueOf((float) sumQtaClasse1 / lastPrevRaccQtaSett * 100).intValue())
|
||||
.setPercClasse2(Float.valueOf((float) sumQtaClasse2 / lastPrevRaccQtaSett * 100).intValue());
|
||||
})
|
||||
.toList()
|
||||
);
|
||||
}
|
||||
|
||||
sql = Query.format(
|
||||
"SELECT mtb_colr.data_collo AS 'data', SUM(mtb_colr.qta_col) AS 'qta', jtb_flav.nome AS 'squadra'\n" +
|
||||
"FROM dtb_ordr\n" +
|
||||
" INNER JOIN dtb_ordt ON dtb_ordr.gestione = dtb_ordt.gestione AND\n" +
|
||||
" dtb_ordr.data_ord = dtb_ordt.data_ord AND\n" +
|
||||
" dtb_ordr.num_ord = dtb_ordt.num_ord\n" +
|
||||
" INNER JOIN gtb_anag ON dtb_ordt.cod_anag = gtb_anag.cod_anag\n" +
|
||||
" INNER JOIN azienda ON azienda.part_iva <> ISNULL(gtb_anag.part_iva, '')\n" +
|
||||
" INNER JOIN mtb_colt ON mtb_colt.gestione = dtb_ordt.gestione AND\n" +
|
||||
" mtb_colt.data_ord = dtb_ordt.data_ord AND\n" +
|
||||
" mtb_colt.num_ord = dtb_ordt.num_ord\n" +
|
||||
" INNER JOIN mtb_colr ON mtb_colt.gestione = mtb_colr.gestione AND\n" +
|
||||
" mtb_colt.data_collo = mtb_colr.data_collo AND\n" +
|
||||
" mtb_colt.ser_collo = mtb_colr.ser_collo AND\n" +
|
||||
" mtb_colt.num_collo = mtb_colr.num_collo\n" +
|
||||
" INNER JOIN jtb_lotr ON jtb_lotr.num_ord = dtb_ordr.num_ord AND\n" +
|
||||
" jtb_lotr.data_ord = dtb_ordr.data_ord AND\n" +
|
||||
" jtb_lotr.gestione = dtb_ordr.gestione\n" +
|
||||
" INNER JOIN jtb_lott ON jtb_lott.id_lotto = jtb_lotr.id_lotto AND\n" +
|
||||
" jtb_lott.cod_jfas = jtb_lotr.cod_jfas\n" +
|
||||
" INNER JOIN jtb_flav ON jtb_lott.cod_jflav = jtb_flav.cod_jflav\n" +
|
||||
"WHERE dtb_ordr.gestione = 'L'\n" +
|
||||
" AND dtb_ordr.cod_mart = %s\n" +
|
||||
" AND dtb_ordr.partita_mag = %s\n" +
|
||||
" AND mtb_colt.segno = 1\n" +
|
||||
" AND YEAR(dtb_ordr.data_ord) = YEAR(%s)\n" +
|
||||
"GROUP BY mtb_colr.data_collo, jtb_flav.nome",
|
||||
agribookOrderDTO.getCodMart(),
|
||||
agribookOrderDTO.getPartitaMag(),
|
||||
agribookOrderDTO.getDataOrd());
|
||||
|
||||
agribookOrderDTO.setStoricoRaccolta(UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, AgribookHarvestHistoryDTO.class));
|
||||
|
||||
if (allRaccolte != null) {
|
||||
List<AgribookRaccoltaDTO> raccolte = allRaccolte.stream()
|
||||
.filter(x -> x.getCodMart().equalsIgnoreCase(agribookOrderDTO.getCodMart())
|
||||
&& x.getPartitaMag().equalsIgnoreCase(agribookOrderDTO.getPartitaMag())
|
||||
).collect(Collectors.toList());
|
||||
|
||||
agribookOrderDTO.setRaccolte(raccolte);
|
||||
}
|
||||
}
|
||||
|
||||
return results;
|
||||
}
|
||||
|
||||
public void updateOrders(ArrayList<AgribookOrderDTO> agribookOrderDTOList) throws Exception {
|
||||
for (AgribookOrderDTO order : agribookOrderDTOList) {
|
||||
DtbOrdr dtbOrdr = new DtbOrdr()
|
||||
.setRigaOrd(1)
|
||||
.setQtaOrd(order.getQtaPrevista());
|
||||
|
||||
dtbOrdr.setOperation(OperationType.UPDATE);
|
||||
|
||||
DtbOrdt dtbOrdt = new DtbOrdt()
|
||||
.setGestione(order.getGestione())
|
||||
.setDataOrd(order.getDataOrd())
|
||||
.setNumOrd(order.getNumOrd())
|
||||
.setDtbOrdr(new ArrayList<>());
|
||||
|
||||
dtbOrdt.setOperation(OperationType.NO_OP);
|
||||
|
||||
dtbOrdt.getDtbOrdr().add(dtbOrdr);
|
||||
|
||||
entityProcessor.processEntity(dtbOrdt, true, multiDBTransactionManager);
|
||||
|
||||
MtbPartitaMag mtbPartitaMag = new MtbPartitaMag()
|
||||
.setPartitaMag(order.getPartitaMag())
|
||||
.setCodMart(order.getCodMart())
|
||||
.setNote(order.getMtbPartitaMag().getNote());
|
||||
|
||||
mtbPartitaMag.setOperation(OperationType.INSERT_OR_UPDATE);
|
||||
|
||||
entityProcessor.processEntity(mtbPartitaMag, true, multiDBTransactionManager);
|
||||
|
||||
this.savePiantePartita(order.getCodMart(), order.getPartitaMag(), order.getCodAnag(), order.getCodVdes(), order.getNumPiante());
|
||||
|
||||
this.saveSuperficie(order.getCodMart(), order.getPartitaMag(), order.getCodAnag(), order.getCodVdes(), order.getSuperficie());
|
||||
}
|
||||
}
|
||||
|
||||
public void updatePercClassi(String codMart, String partitaMag, int newPercClasse1, int newPercClasse2, int newPercClassePremium) throws Exception {
|
||||
|
||||
LocalDateTime dataRilevazione = UtilityLocalDate.getNowTime();
|
||||
@@ -494,26 +912,6 @@ public class AgribookOrderService {
|
||||
}
|
||||
|
||||
public void savePiantePartita(String codMart, String partitaMag, String codAnag, String codVdes, int piantePartita) throws Exception {
|
||||
StbActivity stbActivity = agribookActivityService.postActivity(
|
||||
OperationType.INSERT,
|
||||
codAnag,
|
||||
codVdes,
|
||||
codMart,
|
||||
partitaMag,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
"Aggiornamento numero piante a " + piantePartita,
|
||||
null
|
||||
);
|
||||
|
||||
|
||||
MtbPartitaMagCarat caratActivityId = new MtbPartitaMagCarat()
|
||||
.setDataRilevazione(UtilityLocalDate.getNowTime())
|
||||
.setCarat("activity-id")
|
||||
.setValCarat(stbActivity.getActivityId());
|
||||
caratActivityId.setOperation(OperationType.INSERT);
|
||||
|
||||
String sql = "SELECT CASE\n" +
|
||||
" WHEN\n" +
|
||||
" (SELECT mtb_partita_mag_carat.id_riga\n" +
|
||||
@@ -533,15 +931,45 @@ public class AgribookOrderService {
|
||||
" WHERE cod_mart = '${codMart}'\n" +
|
||||
" AND partita_mag = '${partitaMag}'\n" +
|
||||
" GROUP BY cod_mart, partita_mag), 0) + 1)\n" +
|
||||
" END id_riga;\n";
|
||||
" END id_riga,\n" +
|
||||
" (SELECT CAST(mtb_partita_mag_carat.val_carat AS INTEGER)\n" +
|
||||
" FROM mtb_partita_mag_carat\n" +
|
||||
" WHERE cod_mart = '${codMart}'\n" +
|
||||
" AND partita_mag = '${partitaMag}'\n" +
|
||||
" AND carat = 'n-piante') AS val_carat";
|
||||
|
||||
Map<String, String> valuesMap = ImmutableMap.of("codMart", codMart, "partitaMag", partitaMag);
|
||||
StringSubstitutor substitutor = new StringSubstitutor(valuesMap);
|
||||
|
||||
Integer idRiga = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), substitutor.replace(sql));
|
||||
HashMap<String, Object> rowNPiante = UtilityDB.executeSimpleQueryOnlyFirstRow(multiDBTransactionManager.getPrimaryConnection(), substitutor.replace(sql));
|
||||
|
||||
Integer valCarat = UtilityHashMap.getValueIfExists(rowNPiante, "val_carat");
|
||||
|
||||
if (valCarat != null && valCarat == piantePartita) {
|
||||
return;
|
||||
}
|
||||
|
||||
StbActivity stbActivity = agribookActivityService.postActivity(
|
||||
OperationType.INSERT,
|
||||
codAnag,
|
||||
codVdes,
|
||||
codMart,
|
||||
partitaMag,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
"Aggiornamento numero piante a " + piantePartita,
|
||||
null
|
||||
);
|
||||
|
||||
MtbPartitaMagCarat caratActivityId = new MtbPartitaMagCarat()
|
||||
.setDataRilevazione(UtilityLocalDate.getNowTime())
|
||||
.setCarat("activity-id")
|
||||
.setValCarat(stbActivity.getActivityId());
|
||||
caratActivityId.setOperation(OperationType.INSERT);
|
||||
|
||||
MtbPartitaMagCarat caratNPiante = new MtbPartitaMagCarat()
|
||||
.setIdRiga(idRiga)
|
||||
.setIdRiga(UtilityHashMap.getValueIfExists(rowNPiante, "id_riga"))
|
||||
.setCarat("n-piante")
|
||||
.setValCarat(String.valueOf(piantePartita))
|
||||
.setDataRilevazione(UtilityLocalDate.getNowTime());
|
||||
@@ -558,7 +986,85 @@ public class AgribookOrderService {
|
||||
mtbPartitaMag.getMtbPartitaMagCarat().add(caratNPiante);
|
||||
mtbPartitaMag.getMtbPartitaMagCarat().add(caratActivityId);
|
||||
|
||||
entityProcessor.processEntity(mtbPartitaMag, multiDBTransactionManager);
|
||||
entityProcessor.processEntity(mtbPartitaMag, true, multiDBTransactionManager);
|
||||
}
|
||||
|
||||
public void saveSuperficie(String codMart, String partitaMag, String codAnag, String codVdes, BigDecimal superficie) throws Exception {
|
||||
String sql = "SELECT CASE\n" +
|
||||
" WHEN\n" +
|
||||
" (SELECT mtb_partita_mag_carat.id_riga\n" +
|
||||
" FROM mtb_partita_mag_carat\n" +
|
||||
" WHERE cod_mart = '${codMart}'\n" +
|
||||
" AND partita_mag = '${partitaMag}'\n" +
|
||||
" AND carat = 'superficie') IS NOT NULL\n" +
|
||||
" THEN\n" +
|
||||
" (SELECT mtb_partita_mag_carat.id_riga\n" +
|
||||
" FROM mtb_partita_mag_carat\n" +
|
||||
" WHERE cod_mart = '${codMart}'\n" +
|
||||
" AND partita_mag = '${partitaMag}'\n" +
|
||||
" AND carat = 'superficie')\n" +
|
||||
" ELSE\n" +
|
||||
" (SELECT ISNULL((SELECT MAX(id_riga)\n" +
|
||||
" FROM mtb_partita_mag_carat\n" +
|
||||
" WHERE cod_mart = '${codMart}'\n" +
|
||||
" AND partita_mag = '${partitaMag}'\n" +
|
||||
" GROUP BY cod_mart, partita_mag), 0) + 1)\n" +
|
||||
" END id_riga,\n" +
|
||||
" (SELECT CAST(mtb_partita_mag_carat.val_carat AS NUMERIC(7, 2))\n" +
|
||||
" FROM mtb_partita_mag_carat\n" +
|
||||
" WHERE cod_mart = '${codMart}'\n" +
|
||||
" AND partita_mag = '${partitaMag}'\n" +
|
||||
" AND carat = 'superficie') AS val_carat";
|
||||
|
||||
Map<String, String> valuesMap = ImmutableMap.of("codMart", codMart, "partitaMag", partitaMag);
|
||||
StringSubstitutor substitutor = new StringSubstitutor(valuesMap);
|
||||
|
||||
HashMap<String, Object> rowSuperficie = UtilityDB.executeSimpleQueryOnlyFirstRow(multiDBTransactionManager.getPrimaryConnection(), substitutor.replace(sql));
|
||||
|
||||
BigDecimal valCarat = UtilityHashMap.getValueIfExists(rowSuperficie, "val_carat");
|
||||
|
||||
if (UtilityBigDecimal.equalsTo(valCarat, superficie)) {
|
||||
return;
|
||||
}
|
||||
|
||||
StbActivity stbActivity = agribookActivityService.postActivity(
|
||||
OperationType.INSERT,
|
||||
codAnag,
|
||||
codVdes,
|
||||
codMart,
|
||||
partitaMag,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
"Aggiornamento superficie a " + superficie,
|
||||
null
|
||||
);
|
||||
|
||||
MtbPartitaMagCarat caratActivityId = new MtbPartitaMagCarat()
|
||||
.setDataRilevazione(UtilityLocalDate.getNowTime())
|
||||
.setCarat("activity-id")
|
||||
.setValCarat(stbActivity.getActivityId());
|
||||
caratActivityId.setOperation(OperationType.INSERT);
|
||||
|
||||
MtbPartitaMagCarat caratSuperficie = new MtbPartitaMagCarat()
|
||||
.setIdRiga(UtilityHashMap.getValueIfExists(rowSuperficie, "id_riga"))
|
||||
.setCarat("superficie")
|
||||
.setValCarat(String.valueOf(superficie))
|
||||
.setDataRilevazione(UtilityLocalDate.getNowTime());
|
||||
|
||||
caratSuperficie.setOperation(OperationType.INSERT_OR_UPDATE);
|
||||
|
||||
MtbPartitaMag mtbPartitaMag = new MtbPartitaMag()
|
||||
.setCodMart(codMart)
|
||||
.setPartitaMag(partitaMag)
|
||||
.setMtbPartitaMagCarat(new ArrayList<>());
|
||||
|
||||
mtbPartitaMag.setOperation(OperationType.NO_OP);
|
||||
|
||||
mtbPartitaMag.getMtbPartitaMagCarat().add(caratSuperficie);
|
||||
mtbPartitaMag.getMtbPartitaMagCarat().add(caratActivityId);
|
||||
|
||||
entityProcessor.processEntity(mtbPartitaMag, true, multiDBTransactionManager);
|
||||
}
|
||||
|
||||
public List<EntityBase> syncQtaResidua(@Nullable List<DtbOrdr> orders) throws Exception {
|
||||
|
||||
@@ -5,10 +5,7 @@ import com.annimon.stream.Stream;
|
||||
import it.integry.ems.javabeans.RequestDataDTO;
|
||||
import it.integry.ems.json.ResponseJSONObjectMapper;
|
||||
import it.integry.ems.media.MimeTypesHandler;
|
||||
import it.integry.ems.production.agribook.model.AgribookMediaAttachmentDTO;
|
||||
import it.integry.ems.production.agribook.model.AgribookOrderDTO;
|
||||
import it.integry.ems.production.agribook.model.AgribookReportDTO;
|
||||
import it.integry.ems.production.agribook.model.AgribookReportPostResponseDTO;
|
||||
import it.integry.ems.production.agribook.model.*;
|
||||
import it.integry.ems.service.EntityProcessor;
|
||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||
import it.integry.ems_model.entity.MtbPartitaMag;
|
||||
@@ -16,10 +13,7 @@ import it.integry.ems_model.entity.MtbPartitaMagCarat;
|
||||
import it.integry.ems_model.entity.StbActivity;
|
||||
import it.integry.ems_model.entity.StbActivityFile;
|
||||
import it.integry.ems_model.types.OperationType;
|
||||
import it.integry.ems_model.utility.UtilityDB;
|
||||
import it.integry.ems_model.utility.UtilityLocalDate;
|
||||
import it.integry.ems_model.utility.UtilityQuery;
|
||||
import it.integry.ems_model.utility.UtilityString;
|
||||
import it.integry.ems_model.utility.*;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.http.MediaType;
|
||||
@@ -53,6 +47,21 @@ public class AgribookReportService {
|
||||
@Autowired
|
||||
private RequestDataDTO requestDataDTO;
|
||||
|
||||
public static final class ReportKeys {
|
||||
public static final String CALIBRO_KEY = "calibro";
|
||||
public static final String BRIX_KEY = "grado-brix";
|
||||
public static final String COLORE_KEY = "colore";
|
||||
public static final String PESO_KEY = "peso";
|
||||
public static final String DESTINAZIONE_KEY = "destinazione";
|
||||
public static final String PREV_RACC_NUM_SETT_KEY = "prev-racc-num-sett";
|
||||
public static final String PREV_RACC_QTA_KEY = "prev-racc-qta";
|
||||
public static final String PREV_RACC_PERC_CLASSE_PREMIUM_KEY = "prev-racc-perc-classe-premium";
|
||||
public static final String PREV_RACC_PERC_CLASSE_1_KEY = "prev-racc-perc-classe-1";
|
||||
public static final String PREV_RACC_PERC_CLASSE_2_KEY = "prev-racc-perc-classe-2";
|
||||
public static final String NOTE_KEY = "note";
|
||||
public static final String ACTIVITY_ID_KEY = "activity-id";
|
||||
}
|
||||
|
||||
public List<AgribookReportDTO> retrieveReports(List<AgribookOrderDTO> orders) throws Exception {
|
||||
return this.retrieveReports(orders, true);
|
||||
}
|
||||
@@ -295,7 +304,6 @@ public class AgribookReportService {
|
||||
return optNote.isPresent() ? optNote.get().getValCarat() : null;
|
||||
}
|
||||
|
||||
|
||||
private MtbPartitaMagCarat createCaratValue(String key, String value, AgribookReportDTO agribookReportDTO, boolean update) throws Exception {
|
||||
|
||||
MtbPartitaMagCarat mtbPartitaMagCarat = new MtbPartitaMagCarat()
|
||||
@@ -340,18 +348,43 @@ public class AgribookReportService {
|
||||
return mtbPartitaMagCarat;
|
||||
}
|
||||
|
||||
public static final class ReportKeys {
|
||||
public static final String CALIBRO_KEY = "calibro";
|
||||
public static final String BRIX_KEY = "grado-brix";
|
||||
public static final String COLORE_KEY = "colore";
|
||||
public static final String PESO_KEY = "peso";
|
||||
public static final String DESTINAZIONE_KEY = "destinazione";
|
||||
public static final String PREV_RACC_NUM_SETT_KEY = "prev-racc-num-sett";
|
||||
public static final String PREV_RACC_QTA_KEY = "prev-racc-qta";
|
||||
public static final String PREV_RACC_PERC_CLASSE_PREMIUM_KEY = "prev-racc-perc-classe-premium";
|
||||
public static final String PREV_RACC_PERC_CLASSE_1_KEY = "prev-racc-perc-classe-1";
|
||||
public static final String PREV_RACC_PERC_CLASSE_2_KEY = "prev-racc-perc-classe-2";
|
||||
public static final String NOTE_KEY = "note";
|
||||
public static final String ACTIVITY_ID_KEY = "activity-id";
|
||||
public List<AgribookRaccoltaDTO> retrieveRaccolte(List<AgribookOrderDTO> orders) throws Exception {
|
||||
if (UtilityList.isNullOrEmpty(orders)) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
String sql = "SELECT DISTINCT ddr.cod_anag,\n" +
|
||||
" ddr.cod_dtip,\n" +
|
||||
" ddr.data_doc,\n" +
|
||||
" ddr.ser_doc,\n" +
|
||||
" ddr.num_doc,\n" +
|
||||
" CAST(DATEPART(ISO_WEEK, ddr.data_doc) AS TINYINT) AS settimana,\n" +
|
||||
" ddr.unt_doc,\n" +
|
||||
" SUM(ddr.qta_doc) AS qta_doc,\n" +
|
||||
" do.cod_mart,\n" +
|
||||
" do.partita_mag\n" +
|
||||
"FROM dtb_docr ddr\n" +
|
||||
" INNER JOIN dtb_ordr do ON ddr.data_ord = do.data_ord AND ddr.num_ord = do.num_ord\n" +
|
||||
"WHERE do.gestione = 'A'\n";
|
||||
|
||||
List<HashMap<String, Object>> filter = Stream.of(orders)
|
||||
.map(x -> {
|
||||
HashMap<String, Object> tmp = new HashMap<>();
|
||||
tmp.put("do.cod_mart", x.getCodMart());
|
||||
tmp.put("do.partita_mag", x.getPartitaMag());
|
||||
return tmp;
|
||||
}).toList();
|
||||
|
||||
sql += "AND (" + UtilityQuery.concatFieldListInWhereCond(filter) + ")\n";
|
||||
sql += "GROUP BY ddr.cod_anag, ddr.cod_dtip, ddr.data_doc, ddr.ser_doc, ddr.num_doc, ddr.unt_doc, do.cod_mart, do.partita_mag\n";
|
||||
sql += "ORDER BY ddr.data_doc, ddr.num_doc";
|
||||
|
||||
List<AgribookRaccoltaDTO> raccolte = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, AgribookRaccoltaDTO.class);
|
||||
|
||||
if (raccolte == null) {
|
||||
raccolte = new ArrayList<>();
|
||||
}
|
||||
|
||||
return raccolte;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package it.integry.ems.production.agribook.model;
|
||||
|
||||
import it.integry.ems_model.annotation.SqlField;
|
||||
import it.integry.ems_model.annotation.Table;
|
||||
import it.integry.ems_model.base.ComposedEntityBase;
|
||||
import it.integry.ems_model.entity.MtbDepo;
|
||||
import it.integry.ems_model.entity.MtbPartitaMag;
|
||||
@@ -12,12 +13,15 @@ import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Table(AgribookOrderDTO.ENTITY)
|
||||
public class AgribookOrderDTO extends ComposedEntityBase {
|
||||
|
||||
private final static Logger logger = LogManager.getLogger();
|
||||
|
||||
public static final String ENTITY = "agribook_order_composed";
|
||||
|
||||
@SqlField("id")
|
||||
private String id;
|
||||
@SqlField("gestione")
|
||||
private String gestione;
|
||||
@SqlField("data_ord")
|
||||
@@ -83,12 +87,22 @@ public class AgribookOrderDTO extends ComposedEntityBase {
|
||||
|
||||
private List<AgribookOrderAttachmentDTO> attachments;
|
||||
|
||||
private List<AgribookRaccoltaDTO> raccolte;
|
||||
|
||||
public AgribookOrderDTO() {
|
||||
super(logger);
|
||||
onlyPkMaster = false;
|
||||
setOperation(OperationType.SELECT_OBJECT);
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public AgribookOrderDTO setId(String id) {
|
||||
this.id = id;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getGestione() {
|
||||
return gestione;
|
||||
@@ -377,4 +391,13 @@ public class AgribookOrderDTO extends ComposedEntityBase {
|
||||
this.storicoRaccolta = storicoRaccolta;
|
||||
return this;
|
||||
}
|
||||
|
||||
public List<AgribookRaccoltaDTO> getRaccolte() {
|
||||
return raccolte;
|
||||
}
|
||||
|
||||
public AgribookOrderDTO setRaccolte(List<AgribookRaccoltaDTO> raccolte) {
|
||||
this.raccolte = raccolte;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,116 @@
|
||||
package it.integry.ems.production.agribook.model;
|
||||
|
||||
import it.integry.ems_model.annotation.SqlField;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
|
||||
public class AgribookRaccoltaDTO {
|
||||
@SqlField("cod_anag")
|
||||
private String codAnag;
|
||||
|
||||
@SqlField("cod_dtip")
|
||||
private String codDtip;
|
||||
|
||||
@SqlField("data_doc")
|
||||
private LocalDate dataDoc;
|
||||
|
||||
@SqlField("num_doc")
|
||||
private Integer numDoc;
|
||||
|
||||
@SqlField("settimana")
|
||||
private Short settimana;
|
||||
|
||||
@SqlField("unt_doc")
|
||||
private String untDoc;
|
||||
|
||||
@SqlField("qta_doc")
|
||||
private BigDecimal qtaDoc;
|
||||
|
||||
@SqlField("cod_mart")
|
||||
private String codMart;
|
||||
|
||||
@SqlField("partita_mag")
|
||||
private String partitaMag;
|
||||
|
||||
public String getCodAnag() {
|
||||
return codAnag;
|
||||
}
|
||||
|
||||
public AgribookRaccoltaDTO setCodAnag(String codAnag) {
|
||||
this.codAnag = codAnag;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodDtip() {
|
||||
return codDtip;
|
||||
}
|
||||
|
||||
public AgribookRaccoltaDTO setCodDtip(String codDtip) {
|
||||
this.codDtip = codDtip;
|
||||
return this;
|
||||
}
|
||||
|
||||
public LocalDate getDataDoc() {
|
||||
return dataDoc;
|
||||
}
|
||||
|
||||
public AgribookRaccoltaDTO setDataDoc(LocalDate dataDoc) {
|
||||
this.dataDoc = dataDoc;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Integer getNumDoc() {
|
||||
return numDoc;
|
||||
}
|
||||
|
||||
public AgribookRaccoltaDTO setNumDoc(Integer numDoc) {
|
||||
this.numDoc = numDoc;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Short getSettimana() {
|
||||
return settimana;
|
||||
}
|
||||
|
||||
public AgribookRaccoltaDTO setSettimana(Short settimana) {
|
||||
this.settimana = settimana;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getUntDoc() {
|
||||
return untDoc;
|
||||
}
|
||||
|
||||
public AgribookRaccoltaDTO setUntDoc(String untDoc) {
|
||||
this.untDoc = untDoc;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getQtaDoc() {
|
||||
return qtaDoc;
|
||||
}
|
||||
|
||||
public AgribookRaccoltaDTO setQtaDoc(BigDecimal qtaDoc) {
|
||||
this.qtaDoc = qtaDoc;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodMart() {
|
||||
return codMart;
|
||||
}
|
||||
|
||||
public AgribookRaccoltaDTO setCodMart(String codMart) {
|
||||
this.codMart = codMart;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getPartitaMag() {
|
||||
return partitaMag;
|
||||
}
|
||||
|
||||
public AgribookRaccoltaDTO setPartitaMag(String partitaMag) {
|
||||
this.partitaMag = partitaMag;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package it.integry.ems.production.agribook.model;
|
||||
|
||||
import it.integry.ems_model.utility.dto.PageableRequestDTO;
|
||||
|
||||
public class AgribookRetrieveOrdersRequestDTO extends PageableRequestDTO {
|
||||
private boolean loadReports = false;
|
||||
private boolean loadRaccolte = false;
|
||||
|
||||
public boolean isLoadReports() {
|
||||
return loadReports;
|
||||
}
|
||||
|
||||
public AgribookRetrieveOrdersRequestDTO setLoadReports(boolean loadReports) {
|
||||
this.loadReports = loadReports;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isLoadRaccolte() {
|
||||
return loadRaccolte;
|
||||
}
|
||||
|
||||
public AgribookRetrieveOrdersRequestDTO setLoadRaccolte(boolean loadRaccolte) {
|
||||
this.loadRaccolte = loadRaccolte;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -157,7 +157,7 @@ public class WMSGenericController {
|
||||
WMSVersionDTO wmsVersionDTO = new WMSVersionDTO()
|
||||
.setLatestVersion(versionString)
|
||||
.setLatestVersionCode(versionCode)
|
||||
.setUrl("/wms/android-release" + suffix + ".apk");
|
||||
.setUrl("wms/android-release" + suffix + ".apk");
|
||||
|
||||
|
||||
lines.stream()
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user