Merge branch 'develop' into feature/Feature-ORDL

This commit is contained in:
2024-09-09 10:45:30 +02:00
39 changed files with 608 additions and 393 deletions

View File

@@ -289,6 +289,9 @@ public abstract class BaseMigration implements MigrationModelInterface {
boolean flagTipoJson, boolean flagTipoColore, String tipoSetup, boolean flagMultiValue,
String query) throws Exception {
if (!UtilityDebug.isDebugExecution() && existsSetup(gestName, section, keySection))
return;
if (!UtilityString.isNullOrEmpty(query) && UtilityString.isNullOrEmpty(codQuery)) {
codQuery = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(advancedDataSource.getConnection(),
Query.format("SELECT cod_query FROM stb_gest_setup_query WHERE query_default = %s", query));

View File

@@ -0,0 +1,30 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomer;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240902104948 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
String value = null;
if (isCustomer(IntegryCustomer.Carelli)) {
value = "114BA|114SS|114SR";
}
createSetup("PVM", "DOC_INTERNI", "REQUEST_NUM_DOC", value,
"Inserire i tipi documento per i quali deve essere richiesto il numero documento", false, null, false, false,
false, false, false, null, false, null);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,35 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomer;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240902130713 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("PVM", "DOC_INTERNI", "CHECK_RIF_DOC", null,
"Tipi documento da controllare", false, null, false, false,
false, false, false, "dtb_tipi", false, null);
if (isCustomerDb(IntegryCustomerDB.Carelli_Carelli, IntegryCustomerDB.Carelli_GestFood, IntegryCustomerDB.Carelli_Panimal)){
executeInsertStatement("INSERT INTO stb_gest_setup_det VALUES ('PVM', 'DOC_INTERNI', 'CHECK_RIF_DOC', 'dtb_tipi', 'FRUMA', 'BA|BA0|BA1')");
}
if (isCustomerDb(IntegryCustomerDB.Carelli_Format)){
executeInsertStatement("INSERT INTO stb_gest_setup_det VALUES ('PVM', 'DOC_INTERNI', 'CHECK_RIF_DOC', 'dtb_tipi', '114BA', 'RETEC|RECLF|RECLA')");
executeInsertStatement("INSERT INTO stb_gest_setup_det VALUES ('PVM', 'DOC_INTERNI', 'CHECK_RIF_DOC', 'dtb_tipi', '114SS', 'RETEC|RECLF|RECLA')");
executeInsertStatement("INSERT INTO stb_gest_setup_det VALUES ('PVM', 'DOC_INTERNI', 'CHECK_RIF_DOC', 'dtb_tipi', '114SR', 'RETEC|RECLF|RECLA')");
}
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,25 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240902154922 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetupQuery("SI_NO", "SI_NO", "SELECT 'S' UNION ALL SELECT 'N'");
createSetup("DATI_AZIENDA", "FATTURAZIONE_ELETTRONICA", "INSERT_IVA", "S",
"Inserisce il castellatto iva dal file xml", false, "SI_NO", false, false,
false, false, false, null, false, "SELECT 'S' UNION ALL SELECT 'N'");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,24 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240902160634 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("DATI_AZIENDA", "FATTURAZIONE_ELETTRONICA", "INSERT_DDT", "N",
"Inserisce i DDT leggendo le info dalla fattura elettronica", false, "SI_NO", false, false,
false, false, false, null, false, "SELECT 'S' UNION ALL SELECT 'N'");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,21 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240906164323 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement("update stb_menu set flag_attivo = 'N' where cod_opz in ('vg107', 'ag030','ag031','lg081','lg082', 'vg106', 'ag032')" );
}
@Override
public void down() throws Exception {
}
}

View File

@@ -37,6 +37,4 @@ public interface IObjectStorageService {
boolean isEnabled();
List<String> listFiles(@Nonnull MultiDBTransactionManager multiDBTransactionManager) throws Exception;
boolean bulkDelete(@Nonnull MultiDBTransactionManager multiDBTransactionManager, @Nonnull List<String> objectNameList) throws Exception;
}

View File

@@ -1,19 +1,17 @@
package it.integry.ems.object_storage.minio;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.io.ByteStreams;
import io.minio.*;
import io.minio.errors.*;
import io.minio.messages.DeleteError;
import io.minio.messages.DeleteObject;
import io.minio.messages.Item;
import it.integry.annotations.PostContextConstruct;
import it.integry.ems.exception.PrimaryDatabaseNotPresentException;
import it.integry.ems.object_storage.interfaces.IObjectStorageService;
import it.integry.ems.service.HttpRestWrapper;
import it.integry.ems.settings.Model.MinIOSettingsModel;
import it.integry.ems.settings.Model.SettingsModel;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import org.apache.http.entity.ContentType;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
@@ -24,13 +22,11 @@ import javax.annotation.Nonnull;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
@@ -241,11 +237,16 @@ public class MinIOService implements IObjectStorageService {
.map(DeleteObject::new)
.collect(Collectors.toList());
this.mMinioClient.removeObjects(RemoveObjectsArgs.builder()
final Iterable<Result<DeleteError>> results = this.mMinioClient.removeObjects(RemoveObjectsArgs.builder()
.bucket(getBucketName(multiDBTransactionManager))
.objects(objectsToDelete)
.build());
for (final Result<DeleteError> result : results) {
final DeleteError deleteError = result.get();
deleteError.code();
}
return true;
}
@@ -259,50 +260,19 @@ public class MinIOService implements IObjectStorageService {
this.checkStatus();
this.checkConnection();
String url = String.format("http://%s/scandir.php", settingsModel.getMinioConfiguration().getHost());
StringBuilder srb = new StringBuilder();
final Iterable<Result<Item>> results = this.mMinioClient.listObjects(ListObjectsArgs.builder()
.bucket(getBucketName(multiDBTransactionManager))
.build());
HashMap<String, String> queryParam = new HashMap<>();
queryParam.put("bucket", getBucketName(multiDBTransactionManager));
ArrayList<String> files = new ArrayList<>();
int statusResponse = HttpRestWrapper.callGenericGet(url, null, null, srb, queryParam);
if (statusResponse == 200) {
for (final Result<Item> result : results) {
final Item item = result.get();
files.add(item.objectName());
}
ObjectMapper mapper = new ObjectMapper();
JsonNode jsonNode = mapper.readTree(srb.toString());
ArrayList<String> files = new ArrayList<>(jsonNode.size());
jsonNode.forEach(x -> {
files.add(x.asText().replaceAll("\"", ""));
});
return files;
} else return null;
}
@Override
public boolean bulkDelete(@Nonnull MultiDBTransactionManager multiDBTransactionManager, @Nonnull List<String> objectNameList) throws Exception {
this.checkStatus();
this.checkConnection();
String url = String.format("http://%s/deleteBucketContent.php", settingsModel.getMinioConfiguration().getHost());
StringBuilder srb = new StringBuilder();
HashMap<String, String> queryParam = new HashMap<>();
queryParam.put("bucket", getBucketName(multiDBTransactionManager));
ObjectMapper mapper = new ObjectMapper();
StringWriter writer = new StringWriter();
mapper.writeValue(writer, objectNameList);
String dtoJson = writer.toString();
int statusResponse = HttpRestWrapper.callGeneric(url, null, null, dtoJson, ContentType.APPLICATION_JSON, srb, queryParam);
if (statusResponse == 200) {
return true;
} else return false;
return files;
}
private void checkStatus() throws MinIONotEnabledException {

View File

@@ -557,7 +557,7 @@ public class AccountingRules extends QueryRules {
if (ctbScad.getImpDare() == null)
impDare = ctbMovr.getImpDare();
else
impDare = ctbScad.getImpDare().divide(cambioScad).setScale(5, RoundingMode.HALF_UP);
impDare = ctbScad.getImpDare().divide(cambioScad, 5, RoundingMode.HALF_UP);
}
if (UtilityBigDecimal.greaterThan(ctbMovr.getImpAvere(), BigDecimal.ZERO)) {
if (ctbScad.getImpAvere() == null)

View File

@@ -937,6 +937,7 @@ public abstract class EntityBase implements Serializable, Cloneable, EntityInter
final List<Field> childs = entityHolder.getEntityChildrenFields(getClass());
for (Field entityChildField : childs) {
entityChildField.setAccessible(true);
Object entityChildRef = entityChildField.get(clonedEntity);
if (entityChildRef instanceof List) {
for (EntityBase entityChild : (List<EntityBase>) entityChildRef) {

View File

@@ -12,6 +12,8 @@ import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
@@ -58,6 +60,8 @@ public class UtilityQuery {
if (value instanceof Date)
sbWhereCond.append(keys[k] + (value == null ? " IS NULL" : " = " + UtilityDB.valueDateToString((Date) value, CommonConstants.DATETIME_FORMAT_YMD)));
else if (value instanceof LocalDate || value instanceof LocalDateTime)
sbWhereCond.append(keys[k] + (value == null ? " IS NULL" : " = " + UtilityDB.valueToString(value)));
else if (value instanceof Integer || value instanceof Long || value instanceof Float || value instanceof Double || value instanceof BigDecimal)
sbWhereCond.append(keys[k] + (value == null ? " IS NULL" : " = " + UtilityDB.valueToString(value)));
else {

File diff suppressed because one or more lines are too long

View File

@@ -1,5 +1,6 @@
package it.integry.ems.activity.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import it.integry.ems_model.annotation.SqlField;
import java.util.Date;
@@ -27,7 +28,7 @@ public class TreeViewDTO {
@SqlField("row")
private int row;
@SqlField("isFinished")
@JsonProperty("isFinished")
private boolean isFinished;
@SqlField("esito")
@@ -99,12 +100,12 @@ public class TreeViewDTO {
return this;
}
public boolean isFinished() {
public boolean getIsFinished() {
return isFinished;
}
public TreeViewDTO setFinished(boolean finished) {
isFinished = finished;
public TreeViewDTO setIsFinished(boolean isFinished) {
this.isFinished = isFinished;
return this;
}

View File

@@ -924,15 +924,6 @@ public class ActivityService {
" ISNULL(parent.activity_description, 'Altre Attività') AS 'parent_activity_description',\n" +
" creator.full_name AS 'user_creator_name',\n" +
" parent.activity_type_id AS 'parent_activity_type',\n" +
" CASE\n" +
" WHEN stb_activity_result.flag_stato_attivita IS NULL THEN 0 --backlog\n" +
" WHEN stb_activity_result.flag_stato_attivita = 0 THEN 1 --programmato\n" +
" WHEN stb_activity_result.flag_stato_attivita = 1 THEN 2 --in corso\n" +
" WHEN stb_activity_result.flag_stato_attivita = 2 AND\n" +
" stb_activity_result.flag_activity_result = -1 THEN 3 --sospesa\n" +
" WHEN stb_activity_result.flag_stato_attivita = 2 AND\n" +
" stb_activity_result.flag_activity_result = 1 THEN 4 --test\n" +
" ELSE 5 /*completata*/ END AS stato_attivita,\n" +
" CAST(ISNULL(integry_tag.is_bug, 0) AS BIT) AS is_bug,\n" +
" integry_tag.tags,\n" +
" DENSE_RANK() OVER (ORDER BY parent.project_description, parent.activity_description) AS 'id_processo',\n" +
@@ -972,8 +963,6 @@ public class ActivityService {
" ON stb_activity.parent_activity_id = parent.activity_id\n" +
" WHERE stb_activity.flag_tipologia = 'P') parent\n" +
" ON stb_activity.parent_activity_id = parent.activity_id\n" +
" LEFT OUTER JOIN stb_activity_result\n" +
" ON stb_activity.activity_result_id = stb_activity_result.activity_result_id\n" +
" LEFT OUTER JOIN integry_tag ON stb_activity.activity_id = integry_tag.activity_id\n";
if (daInstallare) {
@@ -1038,7 +1027,16 @@ public class ActivityService {
" CAST(ISNULL(sottoattivita.done_previous_month, 0) AS BIT) AS done_previous_month,\n" +
" CAST(ISNULL(sottoattivita.done_this_quarter, 0) AS BIT) AS done_this_quarter,\n" +
" CAST(ISNULL(sottoattivita.done_previous_quarter, 0) AS BIT) AS done_previous_quarter,\n" +
" stato_attivita,\n" +
" CASE\n" +
" WHEN stb_activity_result.flag_stato_attivita IS NULL and ISNULL(sottoattivita.ore, 0) = 0 THEN 0 --backlog\n" +
" WHEN stb_activity_result.flag_stato_attivita = 0 THEN 1 --programmato\n" +
" WHEN stb_activity_result.flag_stato_attivita IS NULL and ISNULL(sottoattivita.ore, 0) <> 0 THEN 2 --in corso\n" +
" WHEN stb_activity_result.flag_stato_attivita = 1 THEN 2 --in corso\n" +
" WHEN stb_activity_result.flag_stato_attivita = 2 AND\n" +
" stb_activity_result.flag_activity_result = -1 THEN 3 --sospesa\n" +
" WHEN stb_activity_result.flag_stato_attivita = 2 AND\n" +
" stb_activity_result.flag_activity_result = 1 THEN 4 --test\n" +
" ELSE 5 /*completata*/ END AS stato_attivita,\n" +
" is_bug,\n" +
" tags,\n" +
" CAST(CASE WHEN estimated_enddate < CAST(GETDATE() AS DATE) THEN 1 ELSE 0 END AS BIT) AS scaduta,\n" +
@@ -1060,6 +1058,8 @@ public class ActivityService {
" task.aCanone as a_canone " +
"FROM processi\n" +
" LEFT OUTER JOIN sottoattivita ON processi.activity_id = sottoattivita.parent_activity_id\n" +
" LEFT OUTER JOIN stb_activity_result\n" +
" ON processi.esito = stb_activity_result.activity_result_id\n" +
" OUTER APPLY ( SELECT CAST(MAX(CASE WHEN task.cod_jfas <> 'C01' THEN 0 ELSE 1 END) AS BIT) AS daPagare,\n" +
" CAST(MAX(CASE WHEN task.cod_jfas = 'C01' THEN 0 ELSE 1 END) AS BIT) AS aCanone \n" +
" FROM stb_activity task WHERE processi.activity_id = task.parent_activity_id) task ";

View File

@@ -161,11 +161,15 @@ public class PassiveInvoiceRecapObject {
/*Dati DDT*/
for (DatiDDTType datiDDT : body.getDatiGenerali().getDatiDDT()){
DtbFatturePassiveDdt dtbFatturePassiveDdt = new DtbFatturePassiveDdt()
.setNumero(datiDDT.getNumeroDDT())
.setData(datiDDT.getDataDDT().toGregorianCalendar().getTime());
object.getDdt().add(dtbFatturePassiveDdt);
Date dataDDT = datiDDT.getDataDDT().toGregorianCalendar().getTime();
if ( !object.getDdt().stream()
.anyMatch(x-> x.getNumero().equalsIgnoreCase(datiDDT.getNumeroDDT())
&& UtilityDate.equals(x.getData(), dataDDT))) {
DtbFatturePassiveDdt dtbFatturePassiveDdt = new DtbFatturePassiveDdt()
.setNumero(datiDDT.getNumeroDDT())
.setData(dataDDT);
object.getDdt().add(dtbFatturePassiveDdt);
}
}
/*Verifica esistenza IBAN del fornitore*/

View File

@@ -369,7 +369,7 @@ public class DigitalInvoiceBackupService {
Session session = Session.getInstance(new Properties());
for (FileItem receipt : receipts) {
String name = receipt.getFileName();
String name = receipt.getFileName().toLowerCase();
String content = receipt.getFileb64Content();
Pattern pattern = Pattern.compile("(.{0,})(.xml|.zip|.eml|.msg|.p7m){1}");
Matcher matcher = pattern.matcher(name);

View File

@@ -82,6 +82,9 @@ public class OrdiniImporter extends BaseEntityImporter<List<EntityBase>> impleme
case GSE:
result = getContextBean(OrdiniImportService.class).importGSEOrder(type, format, requestDto);
break;
case TOSCA:
result = getContextBean(OrdiniImportService.class).importOrdiniToscaExcel(type, format, requestDto);
break;
default:
throw new Exception("Tipo " + format + " non supportato");
@@ -111,7 +114,8 @@ public class OrdiniImporter extends BaseEntityImporter<List<EntityBase>> impleme
MAGENTO("MAGENTO"),
EURITMO("EURITMO"),
GS("GS"),
GSE("GSE");
GSE("GSE"),
TOSCA("TOSCA");
private String text;

View File

@@ -275,4 +275,11 @@ public class OrdiniImportService {
return entityBases;
}
public List<EntityBase> importOrdiniToscaExcel(String type, String format, ImportRequestDTO requestDTO) throws Exception {
Connection conn = multiDBTransactionManager.getPrimaryConnection();
HashMap<String, String> setup = setupGest.getImportSetupSection(conn, type, format);
// requestDTO.get
return new ArrayList<>();
}
}

View File

@@ -99,7 +99,8 @@ public class ImportListiniAcquistoApuliaCarrefourService {
* la logica del prezzo netto netto.
*/
List<ListinoApuliaCarrefourDTO> variazioniListini = getVariazioni(type, format, setup, dataImport, dataInizVarizioni, conn);
boolean importVarFuture = setup.get("IMPORT_VAR_FUTURE").equalsIgnoreCase("S");
List<ListinoApuliaCarrefourDTO> variazioniListini = getVariazioni(type, format, setup, dataImport, dataInizVarizioni, conn, importVarFuture);
Date dataOraImport = new Date();
List<MtbLisaData> righeListino =
@@ -136,51 +137,6 @@ public class ImportListiniAcquistoApuliaCarrefourService {
}
).toList();
if (setup.get("IMPORT_VAR_FUTURE").equalsIgnoreCase("S")) {
sql = "SELECT mtb_lisa_apulia_succ.cod_alis,\n" +
" mtb_lisa_apulia_succ.data_prz_acq AS data_iniz,\n" +
" mtb_lisa_apulia_succ.cod_art_for AS cod_art_for,\n" +
" mtb_lisa_apulia_succ.prz_acq AS prz_acq,\n" +
" mtb_lisa_apulia_succ.descrizione AS descr_art_forn,\n" +
" mtb_lisa_apulia_succ.barcode AS cod_barre,\n" +
" mtb_lisa_apulia_succ.unt_mis_acq,\n" +
" mtb_lisa_apulia_succ.qta_cnf,\n" +
" mtb_lisa_apulia_succ.colli_x_pedane,\n" +
" mtb_lisa_apulia_succ.linea,\n" +
" mtb_lisa_apulia_succ.prz_ven_sugg,\n" +
" mtb_lisa_apulia_succ.cod_aliq,\n" +
" mtb_lisa_apulia_succ.prz_base_prop as prz_vend_sug,\n" +
" mtb_lisa_apulia_succ.perc_premio as perc_promo,\n" +
" IsNull(mtb_lisa_apulia_succ.val_premio, 0) as val_promo\n" +
"FROM mtb_lisa_apulia_succ\n" +
"WHERE mtb_lisa_apulia_succ.data_prz_acq > " + UtilityDB.valueDateToString(dataImport, CommonConstants.DATE_FORMAT_YMD) + "\n" +
" AND mtb_lisa_apulia_succ.cod_alis NOT IN (SELECT value_string AS cod_alis\n" +
" FROM dbo.parsestringintoarray(\n" +
" (SELECT dbo.getgestsetup('IMPORT_LISTINI ACQUISTO',\n" +
" 'APULIA_CARREFOUR',\n" +
" 'LISTINI_DA_ESCLUDERE')),\n" +
" '|'))";
List<MtbLisaData> mtbLisaData = new ResultSetMapper()
.mapQuerySetToList(conn, sql, MtbLisaData.class, OperationType.INSERT_OR_UPDATE);
if (mtbLisaData != null) {
Stream.of(mtbLisaData)
.forEach(
x -> x
.setPrzVenSug(UtilityBigDecimal.isNull(x.getPrzVenSug(), BigDecimal.ZERO))
.setPerc1(BigDecimal.ZERO)
.setPerc2(BigDecimal.ZERO)
.setPerc3(BigDecimal.ZERO)
.setPerc4(BigDecimal.ZERO)
.setPercOneri(UtilityBigDecimal.isNull(x.getPercOneri(), BigDecimal.ZERO))
.setValOneri(UtilityBigDecimal.isNull(x.getValOneri(), BigDecimal.ZERO))
.setPercPromo(UtilityBigDecimal.isNull(x.getPercPromo(), BigDecimal.ZERO))
.setValPromo(BigDecimal.ZERO)
);
righeListino.addAll(mtbLisaData);
}
}
List<String> listCond =
Stream.of(righeListino)
.filter(x->x.getQtaCnf() != null )
@@ -239,8 +195,10 @@ public class ImportListiniAcquistoApuliaCarrefourService {
for (Map.Entry<AtbListData, List<MtbLisaData>> listino : listini) {
AtbListData atbListData = listino.getKey();
if ( UtilityLocalDate.isAfterToday(UtilityLocalDate.localDateTimeFromDate(atbListData.getDataIniz())))
if ( UtilityLocalDate.isAfterToday(UtilityLocalDate.localDateTimeFromDate(atbListData.getDataIniz()))) {
atbListData.setOperation(OperationType.INSERT_OR_UPDATE);
listino.getValue().stream().forEach(x->x.setOperation(OperationType.INSERT_OR_UPDATE));
}
atbListData.setMtbLisaData(listino.getValue());
entityProcessor.processEntity(atbListData, multiDBTransactionManager);
@@ -263,8 +221,10 @@ public class ImportListiniAcquistoApuliaCarrefourService {
return entityRet;
}
private static List<ListinoApuliaCarrefourDTO> getVariazioni(String type, String format, Map<String, String> setup, Date dataImport, Date dataInizVarizioni, Connection conn) throws SQLException, DataConverterNotFoundException, InstantiationException, IllegalAccessException {
String sql;
private static List<ListinoApuliaCarrefourDTO> getVariazioni(String type, String format, Map<String, String> setup, Date dataImport, Date dataInizVarizioni,
Connection conn, boolean importVarFuture) throws Exception {
BigDecimal percOneri = new BigDecimal(UtilityHashMap.getValueIfExists(setup, "PERC_ONERI:DIR", "0"));
BigDecimal percOneriRif = new BigDecimal(UtilityHashMap.getValueIfExists(setup, "PERC_ONERI:RIF", "0"));
@@ -289,106 +249,105 @@ public class ImportListiniAcquistoApuliaCarrefourService {
+ "ELSE IsNull(apulia.data_prz_acq, " + UtilityDB.valueDateToString(dataImport, CommonConstants.DATE_FORMAT_YMD) + ") END ";
}
sql =
("SELECT ISNULL(apulia.cod_alis, lisa.cod_alis) AS cod_alis,\n" +
" [COLUMN_DATA_INIZ] AS data_iniz,\n" +
" ISNULL(apulia.cod_art_for, lisa.cod_art_for) AS cod_art_for,\n" +
" CASE WHEN apulia.cod_alis IS NOT NULL THEN apulia.prz_acq ELSE NULL END AS prz_acq,\n" +
" apulia.descrizione AS descrizione,\n" +
" apulia.barcode AS barcode,\n" +
" apulia.unt_mis_acq AS unt_mis_acq,\n" +
" apulia.qta_cnf AS qta_cnf,\n" +
" apulia.colli_x_pedane AS colli_x_pedane,\n" +
" CASE\n" +
" WHEN lisa.cod_art_for IS NULL THEN apulia.prz_base_prop\n" +
" ELSE lisa.prz_ven_sug END AS prz_ven_sug,\n" +
" CASE\n" +
" WHEN lisa.cod_art_for IS NULL AND apulia.cod_art_for IS NOT NULL THEN 'I'\n" +
" WHEN lisa.cod_art_for IS NOT NULL AND apulia.cod_art_for IS NULL THEN 'D'\n" +
" ELSE 'U' END AS tipo_variazione,\n" +
" lisa.data_iniz AS data_iniz_lisa,\n" +
" [COLUMN_PERC_ONERI] AS perc_oneri,\n" +
" COUNT(*)\n" +
" OVER (PARTITION BY ISNULL(apulia.cod_alis, lisa.cod_alis), [COLUMN_DATA_INIZ], ISNULL(apulia.cod_art_for, lisa.cod_art_for)) AS count_art_for,\n" +
" apulia.cod_aliq,\n" +
" apulia.prz_base_prop,\n" +
" apulia.perc_premio AS prec_promo,\n" +
" ISNULL(apulia.val_premio, 0) AS val_promo\n" +
"FROM (SELECT DISTINCT mtb_lisa_apulia_succ.cod_alis,\n" +
" mtb_lisa_apulia_succ.data_prz_acq,\n" +
" mtb_lisa_apulia_succ.cod_art_for AS cod_art_for,\n" +
" mtb_lisa_apulia_succ.prz_acq AS prz_acq,\n" +
" mtb_lisa_apulia_succ.descrizione,\n" +
" mtb_lisa_apulia_succ.barcode,\n" +
" mtb_lisa_apulia_succ.descrizione_divisione_forn,\n" +
" mtb_lisa_apulia_succ.partita_iva_forn,\n" +
" mtb_lisa_apulia_succ.unt_mis_acq,\n" +
" mtb_lisa_apulia_succ.qta_cnf,\n" +
" mtb_lisa_apulia_succ.colli_x_pedane,\n" +
" mtb_lisa_apulia_succ.linea,\n" +
" CASE WHEN mtb_lisa_apulia_succ.cod_alis LIKE 'AP%' and IsNumeric(RIGHT(cod_alis,3)) = 1 THEN 'RIF' ELSE 'DIR' END tipo_listino,\n" +
" mtb_lisa_apulia_succ.anno_contratto,\n" +
" mtb_lisa_apulia_succ.perc_contratto,\n" +
" mtb_lisa_apulia_succ.rag_soc_forn,\n" +
" mtb_lisa_apulia_succ.prz_ven_sugg,\n" +
" mtb_lisa_apulia_succ.cod_forn,\n" +
" mtb_lisa_apulia_succ.cod_aliq,\n" +
" mtb_lisa_apulia_succ.prz_base_prop,\n" +
" mtb_lisa_apulia_succ.perc_premio,\n" +
" mtb_lisa_apulia_succ.val_premio\n" +
" FROM mtb_lisa_apulia_succ\n" +
" WHERE mtb_lisa_apulia_succ.data_prz_acq <= [DATA_IMPORT]\n" +
" AND mtb_lisa_apulia_succ.cod_alis NOT IN (SELECT value_string AS cod_alis\n" +
" FROM dbo.parsestringintoarray(\n" +
" (SELECT dbo.getgestsetup('IMPORT_[TYPE]',\n" +
" '[FORMAT]',\n" +
" 'LISTINI_DA_ESCLUDERE')),\n" +
" '|'))) apulia\n" +
" FULL OUTER JOIN (SELECT lisa.cod_alis,\n" +
" cod_art_for,\n" +
" prz_acq,\n" +
" val_promo,\n" +
" perc_oneri,\n" +
" prz_ven_sug,\n" +
" CASE WHEN data_iniz < '2020/01/01' THEN '2020/01/01' ELSE data_iniz END AS data_iniz,\n" +
" tipo_variazione\n" +
" FROM dbo.getlistinoacquisto([DATA_IMPORT], NULL, NULL, NULL, 'N', NULL) lisa\n" +
" LEFT OUTER JOIN (SELECT value_string AS cod_alis\n" +
" FROM dbo.parsestringintoarray(\n" +
" (SELECT dbo.getgestsetup('IMPORT_[TYPE]',\n" +
" '[FORMAT]',\n" +
" 'LISTINI_DA_ESCLUDERE')),\n" +
" '|')) listini_esclusi\n" +
" ON lisa.cod_alis = listini_esclusi.cod_alis\n" +
" WHERE lisa.cod_alis LIKE 'AP%'\n" +
" AND lisa.tipo_variazione <> 'D'\n" +
" AND lisa.tipo_variazione IS NOT NULL\n" +
" AND listini_esclusi.cod_alis IS NULL) lisa\n" +
" ON apulia.cod_alis = lisa.cod_alis AND apulia.cod_art_for = lisa.cod_art_for\n" +
" LEFT OUTER JOIN mtb_lisa ON apulia.cod_alis = mtb_lisa.cod_alis AND apulia.cod_art_for = mtb_lisa.cod_art_for\n" +
" LEFT OUTER JOIN mtb_aart ON mtb_lisa.cod_mart = mtb_aart.cod_mart\n" +
" LEFT OUTER JOIN (SELECT mtb_grup.cod_mgrp,\n" +
" REPLACE(key_section, 'PERC_ONERI:', '') AS tipo_listino,\n" +
" ISNULL(CONVERT(NUMERIC(20, 5), stb_gest_setup_det.value), 0) AS perc_oneri\n" +
" FROM mtb_grup\n" +
" LEFT OUTER JOIN stb_gest_setup_det ON gest_name = 'IMPORT_[TYPE]' AND\n" +
" section = '[FORMAT]' AND\n" +
" key_section LIKE 'PERC_ONERI%' AND\n" +
" mtb_grup.cod_mgrp =\n" +
" stb_gest_setup_det.val_col_rif) oneri\n" +
" ON apulia.tipo_listino = oneri.tipo_listino AND mtb_aart.cod_mgrp = oneri.cod_mgrp\n" +
"WHERE (apulia.data_prz_acq >= [DATA_INIZ_VAR] OR \n " +
" ISNULL(lisa.cod_art_for, '') <> ISNULL(apulia.cod_art_for, '')) AND \n"+
" (ISNULL(lisa.prz_acq, 0) <> ISNULL(apulia.prz_acq, 0) OR\n" +
" ISNULL(lisa.perc_oneri, 0) <> [COLUMN_PERC_ONERI] OR\n" +
" ISNULL(lisa.cod_art_for, '') <> ISNULL(apulia.cod_art_for, '') OR\n" +
" ISNULL(lisa.val_promo, 0) <> ISNULL(apulia.val_premio, 0))")
.replace("[COLUMN_DATA_INIZ]", calcDataIniz)
.replace("[TYPE]", type)
.replace("[FORMAT]", format)
.replace("[COLUMN_PERC_ONERI]", columnPercOneri)
.replace("[DATA_INIZ_VAR]",UtilityDB.valueDateToString(dataInizVarizioni, CommonConstants.DATE_FORMAT_YMD) )
.replace("[DATA_IMPORT]", UtilityDB.valueDateToString(dataImport, CommonConstants.DATE_FORMAT_YMD));
String sql = ("SELECT ISNULL(apulia.cod_alis, lisa.cod_alis) AS cod_alis,\n" +
" iif(apulia.data_prz_acq is not null and apulia.data_prz_acq > [COLUMN_DATA_INIZ],apulia.data_prz_acq, [COLUMN_DATA_INIZ]) AS data_iniz,\n" +
" ISNULL(apulia.cod_art_for, lisa.cod_art_for) AS cod_art_for,\n" +
" CASE WHEN apulia.cod_alis IS NOT NULL THEN apulia.prz_acq ELSE NULL END AS prz_acq,\n" +
" apulia.descrizione AS descrizione,\n" +
" apulia.barcode AS barcode,\n" +
" apulia.unt_mis_acq AS unt_mis_acq,\n" +
" apulia.qta_cnf AS qta_cnf,\n" +
" apulia.colli_x_pedane AS colli_x_pedane,\n" +
" CASE\n" +
" WHEN lisa.cod_art_for IS NULL THEN apulia.prz_base_prop\n" +
" ELSE lisa.prz_ven_sug END AS prz_ven_sug,\n" +
" CASE\n" +
" WHEN lisa.cod_art_for IS NULL AND apulia.cod_art_for IS NOT NULL THEN 'I'\n" +
" WHEN lisa.cod_art_for IS NOT NULL AND apulia.cod_art_for IS NULL THEN 'D'\n" +
" ELSE 'U' END AS tipo_variazione,\n" +
" lisa.data_iniz AS data_iniz_lisa,\n" +
" [COLUMN_PERC_ONERI] AS perc_oneri,\n" +
" COUNT(*)\n" +
" OVER (PARTITION BY ISNULL(apulia.cod_alis, lisa.cod_alis), [COLUMN_DATA_INIZ], ISNULL(apulia.cod_art_for, lisa.cod_art_for)) AS count_art_for,\n" +
" apulia.cod_aliq,\n" +
" apulia.prz_base_prop,\n" +
" apulia.perc_premio AS prec_promo,\n" +
" ISNULL(apulia.val_premio, 0) AS val_promo\n" +
"FROM (SELECT DISTINCT mtb_lisa_apulia_succ.cod_alis,\n" +
" mtb_lisa_apulia_succ.data_prz_acq,\n" +
" mtb_lisa_apulia_succ.cod_art_for AS cod_art_for,\n" +
" mtb_lisa_apulia_succ.prz_acq AS prz_acq,\n" +
" mtb_lisa_apulia_succ.descrizione,\n" +
" mtb_lisa_apulia_succ.barcode,\n" +
" mtb_lisa_apulia_succ.descrizione_divisione_forn,\n" +
" mtb_lisa_apulia_succ.partita_iva_forn,\n" +
" mtb_lisa_apulia_succ.unt_mis_acq,\n" +
" mtb_lisa_apulia_succ.qta_cnf,\n" +
" mtb_lisa_apulia_succ.colli_x_pedane,\n" +
" mtb_lisa_apulia_succ.linea,\n" +
" CASE WHEN mtb_lisa_apulia_succ.cod_alis LIKE 'AP%' and IsNumeric(RIGHT(cod_alis,3)) = 1 THEN 'RIF' ELSE 'DIR' END tipo_listino,\n" +
" mtb_lisa_apulia_succ.anno_contratto,\n" +
" mtb_lisa_apulia_succ.perc_contratto,\n" +
" mtb_lisa_apulia_succ.rag_soc_forn,\n" +
" mtb_lisa_apulia_succ.prz_ven_sugg,\n" +
" mtb_lisa_apulia_succ.cod_forn,\n" +
" mtb_lisa_apulia_succ.cod_aliq,\n" +
" mtb_lisa_apulia_succ.prz_base_prop,\n" +
" mtb_lisa_apulia_succ.perc_premio,\n" +
" mtb_lisa_apulia_succ.val_premio\n" +
" FROM mtb_lisa_apulia_succ\n" +
" WHERE " + (importVarFuture?"":"mtb_lisa_apulia_succ.data_prz_acq <= [DATA_IMPORT] AND \n") +
" mtb_lisa_apulia_succ.cod_alis NOT IN (SELECT value_string AS cod_alis\n" +
" FROM dbo.parsestringintoarray(\n" +
" (SELECT dbo.getgestsetup('IMPORT_[TYPE]',\n" +
" '[FORMAT]',\n" +
" 'LISTINI_DA_ESCLUDERE')),\n" +
" '|'))) apulia\n" +
" FULL OUTER JOIN (SELECT lisa.cod_alis,\n" +
" cod_art_for,\n" +
" prz_acq,\n" +
" val_promo,\n" +
" perc_oneri,\n" +
" prz_ven_sug,\n" +
" CASE WHEN data_iniz < '2020/01/01' THEN '2020/01/01' ELSE data_iniz END AS data_iniz,\n" +
" tipo_variazione\n" +
" FROM dbo.getlistinoacquisto([DATA_IMPORT], NULL, NULL, NULL, 'N', NULL) lisa\n" +
" LEFT OUTER JOIN (SELECT value_string AS cod_alis\n" +
" FROM dbo.parsestringintoarray(\n" +
" (SELECT dbo.getgestsetup('IMPORT_[TYPE]',\n" +
" '[FORMAT]',\n" +
" 'LISTINI_DA_ESCLUDERE')),\n" +
" '|')) listini_esclusi\n" +
" ON lisa.cod_alis = listini_esclusi.cod_alis\n" +
" WHERE lisa.cod_alis LIKE 'AP%'\n" +
" AND lisa.tipo_variazione <> 'D'\n" +
" AND lisa.tipo_variazione IS NOT NULL\n" +
" AND listini_esclusi.cod_alis IS NULL) lisa\n" +
" ON apulia.cod_alis = lisa.cod_alis AND apulia.cod_art_for = lisa.cod_art_for\n" +
" LEFT OUTER JOIN mtb_lisa ON apulia.cod_alis = mtb_lisa.cod_alis AND apulia.cod_art_for = mtb_lisa.cod_art_for\n" +
" LEFT OUTER JOIN mtb_aart ON mtb_lisa.cod_mart = mtb_aart.cod_mart\n" +
" LEFT OUTER JOIN (SELECT mtb_grup.cod_mgrp,\n" +
" REPLACE(key_section, 'PERC_ONERI:', '') AS tipo_listino,\n" +
" ISNULL(CONVERT(NUMERIC(20, 5), stb_gest_setup_det.value), 0) AS perc_oneri\n" +
" FROM mtb_grup\n" +
" LEFT OUTER JOIN stb_gest_setup_det ON gest_name = 'IMPORT_[TYPE]' AND\n" +
" section = '[FORMAT]' AND\n" +
" key_section LIKE 'PERC_ONERI%' AND\n" +
" mtb_grup.cod_mgrp =\n" +
" stb_gest_setup_det.val_col_rif) oneri\n" +
" ON apulia.tipo_listino = oneri.tipo_listino AND mtb_aart.cod_mgrp = oneri.cod_mgrp\n" +
"WHERE (apulia.data_prz_acq >= [DATA_INIZ_VAR] OR \n " +
" ISNULL(lisa.cod_art_for, '') <> ISNULL(apulia.cod_art_for, '')) AND \n" +
" (ISNULL(lisa.prz_acq, 0) <> ISNULL(apulia.prz_acq, 0) OR\n" +
" ISNULL(lisa.perc_oneri, 0) <> [COLUMN_PERC_ONERI] OR\n" +
" ISNULL(lisa.cod_art_for, '') <> ISNULL(apulia.cod_art_for, '') OR\n" +
" ISNULL(lisa.val_promo, 0) <> ISNULL(apulia.val_premio, 0)) " )
.replace("[COLUMN_DATA_INIZ]", calcDataIniz)
.replace("[TYPE]", type)
.replace("[FORMAT]", format)
.replace("[COLUMN_PERC_ONERI]", columnPercOneri)
.replace("[DATA_INIZ_VAR]", UtilityDB.valueDateToString(dataInizVarizioni, CommonConstants.DATE_FORMAT_YMD))
.replace("[DATA_IMPORT]", UtilityDB.valueDateToString(dataImport, CommonConstants.DATE_FORMAT_YMD));
List<ListinoApuliaCarrefourDTO> variazioniListini = UtilityDB.executeSimpleQueryDTO(conn, sql, ListinoApuliaCarrefourDTO.class);
return variazioniListini;

View File

@@ -56,6 +56,7 @@ public class AgribookFieldService {
.setNazione("IT")
.setLat(dto.getLat())
.setLng(dto.getLng())
.setCodVzon(dto.getCodVzon())
.setPartIva(dto.getPartIva())
.setRagSocLegale(dto.getRagSocLegale())
.setCodFiscLegale(dto.getCodFiscLegale())
@@ -139,6 +140,7 @@ public class AgribookFieldService {
.setCodAnag(dto.getCodAnag())
.setCodMdep(codMdepDest)
.setCodVdes(codVdes)
.setCodVzon(dto.getCodVzon())
.setDataInizProd(UtilityLocalDate.localDateToDate(dto.getDataInizProd()))
.setDtbOrdr(ordrList)
.setOperation(OperationType.INSERT);

View File

@@ -31,6 +31,7 @@ public class AgribookNewFieldRequestDTO {
private String datiCatastali;
private String note;
private String varieta;
private String codVzon;
private LocalDate dataInizProd;
private LocalDate dataOrd;
@@ -285,4 +286,13 @@ public class AgribookNewFieldRequestDTO {
this.provLegale = provLegale;
return this;
}
public String getCodVzon() {
return codVzon;
}
public AgribookNewFieldRequestDTO setCodVzon(String codVzon) {
this.codVzon = codVzon;
return this;
}
}

View File

@@ -78,10 +78,10 @@ public class ProductionController {
return ServiceRestResponse.createPositiveResponse(productionService.chiudiOrdineLavorazione(chiusuraLavorazioneDTO));
}
@RequestMapping(value = "/creaOrdineProd", method = RequestMethod.POST)
@RequestMapping(value = "/saveOrdineProd", method = RequestMethod.POST)
public @ResponseBody
ServiceRestResponse creaOrdineProd(@RequestBody CreaOrdineProdDTO creaOrdineProdDTO) throws Exception {
return ServiceRestResponse.createPositiveResponse(productionService.creaOrdineProd(creaOrdineProdDTO));
ServiceRestResponse saveOrdineProd(@RequestBody CreaOrdineProdDTO creaOrdineProdDTO) throws Exception {
return ServiceRestResponse.createPositiveResponse(productionService.saveOrdineProd(creaOrdineProdDTO));
}
@RequestMapping(value = "/getArtsProdByCodMart", method = RequestMethod.GET)

View File

@@ -7,14 +7,17 @@ import java.util.List;
public class CreaOrdineProdDTO {
private LocalDate dataOrd;
private Integer numOrd;
private String codAnag;
private String codVdes;
private String codVzon;
private String codMdep;
private String codMart;
private String partitaMag;
private BigDecimal numCnf;
private BigDecimal valUnt;
private BigDecimal colliPedana;
private BigDecimal qtaOrd;
private String untOrd;
private List<ModificheDistintaDTO> modificheDistinta = new ArrayList<>();
private String descrizionePartita;
@@ -28,6 +31,15 @@ public class CreaOrdineProdDTO {
return this;
}
public Integer getNumOrd() {
return numOrd;
}
public CreaOrdineProdDTO setNumOrd(Integer numOrd) {
this.numOrd = numOrd;
return this;
}
public String getCodAnag() {
return codAnag;
}
@@ -126,4 +138,22 @@ public class CreaOrdineProdDTO {
this.descrizionePartita = descrizionePartita;
return this;
}
public BigDecimal getQtaOrd() {
return qtaOrd;
}
public CreaOrdineProdDTO setQtaOrd(BigDecimal qtaOrd) {
this.qtaOrd = qtaOrd;
return this;
}
public String getCodVzon() {
return codVzon;
}
public CreaOrdineProdDTO setCodVzon(String codVzon) {
this.codVzon = codVzon;
return this;
}
}

View File

@@ -68,6 +68,7 @@ public class AccettazioneOrtoFruttaDTO {
private AccettazioneOrtoFruttaDTO original;
private String lottoProduttore;
private String modalitaRaccolta;
private String codVzon;
public String getGestione() {
@@ -639,4 +640,13 @@ public class AccettazioneOrtoFruttaDTO {
this.modalitaRaccolta = modalitaRaccolta;
return this;
}
public String getCodVzon() {
return codVzon;
}
public AccettazioneOrtoFruttaDTO setCodVzon(String codVzon) {
this.codVzon = codVzon;
return this;
}
}

View File

@@ -142,13 +142,14 @@ public class OrtoFruttaProductionService {
List<MtbPartitaMagCarat> datiPartita;
MtbPartitaMagCarat lottoProd = new MtbPartitaMagCarat();
MtbPartitaMagCarat modalitaRaccolta = new MtbPartitaMagCarat();
MtbPartitaMagCarat varietaRaccolta = new MtbPartitaMagCarat();
String caratLottoProd = "Lotto Produttore";
String caratModalitaRaccolta = "Modalita Raccolta";
String caratVarietaRaccolta = "Varieta";
if (dto.getOriginal() != null) {
datiPartita = UtilityDB.executeSimpleQueryDTO(
multiDBTransactionManager.getPrimaryConnection(),
Query.format("SELECT * from mtb_partita_mag_carat where cod_mart = {} and partita_mag = {} and carat in ({},{})", dto.getCodMart(), dto.getPartitaRaccolta(), caratLottoProd, caratModalitaRaccolta),
Query.format("SELECT * from mtb_partita_mag_carat where cod_mart = {} and partita_mag = {} and carat in ({},{},{})", dto.getCodMart(), dto.getPartitaRaccolta(), caratLottoProd, caratModalitaRaccolta,caratVarietaRaccolta),
MtbPartitaMagCarat.class);
if (!UtilityList.isNullOrEmpty(datiPartita)) {
if (!UtilityString.streNull(dto.getOriginal().getLottoProduttore()).equalsIgnoreCase(UtilityString.streNull(dto.getLottoProduttore()))) {
@@ -158,6 +159,9 @@ public class OrtoFruttaProductionService {
if (!UtilityString.streNull(dto.getOriginal().getModalitaRaccolta()).equalsIgnoreCase(UtilityString.streNull(dto.getModalitaRaccolta()))) {
modalitaRaccolta = datiPartita.stream().filter(x -> x.getCarat().equalsIgnoreCase(caratModalitaRaccolta)).findFirst().orElse(new MtbPartitaMagCarat());
}
if (!UtilityString.streNull(dto.getOriginal().getModalitaRaccolta()).equalsIgnoreCase(UtilityString.streNull(dto.getModalitaRaccolta()))) {
varietaRaccolta = datiPartita.stream().filter(x -> x.getCarat().equalsIgnoreCase(caratVarietaRaccolta)).findFirst().orElse(new MtbPartitaMagCarat());
}
}
}
lottoProd
@@ -173,7 +177,7 @@ public class OrtoFruttaProductionService {
.setActivityId(activityId)
.setDataRilevazione(LocalDateTime.now())
.setOperation(OperationType.INSERT_OR_UPDATE);
modalitaRaccolta
varietaRaccolta
.setCarat(caratVarietaRaccolta)
.setValCarat(dto.getVarieta())
.setActivityId(activityId)
@@ -182,6 +186,7 @@ public class OrtoFruttaProductionService {
datiPartita = new ArrayList<>();
datiPartita.add(lottoProd);
datiPartita.add(modalitaRaccolta);
datiPartita.add(varietaRaccolta);
MtbPartitaMag part = new MtbPartitaMag();
part
@@ -231,6 +236,7 @@ public class OrtoFruttaProductionService {
.setTargaRim(dto.getTargaRim())
.setActivityId(activityId)
.setCodVvet(dto.getCodVvet())
.setCodVzon(dto.getCodVzon())
.setOperation(OperationType.INSERT_OR_UPDATE);
entityProcessor.processEntity(docLav, true, multiDBTransactionManager);
@@ -514,6 +520,7 @@ public class OrtoFruttaProductionService {
.setCodAnag(dto.getCodAnag())
.setCodVdes(ordAcq.getCodVdes())
.setSerDoc(dto.getSerDocProvv())
.setCodVzon(dto.getCodVzon())
.setDataOrd(ordAcq.getDataOrd())
.setNumOrd(ordAcq.getNumOrd())
.setCodMdep(ordAcq.getCodMdep())

View File

@@ -10,8 +10,6 @@ import it.integry.ems.exception.PrimaryDatabaseNotPresentException;
import it.integry.ems.production.dto.*;
import it.integry.ems.rules.businessLogic.LoadColliService;
import it.integry.ems.rules.businessLogic.dto.LoadColliDTO;
import it.integry.ems.rules.completing.PartitaMagRules;
import it.integry.ems.rules.completing.dto.DatiPartitaMagDTO;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityEntity;
@@ -965,7 +963,7 @@ public class ProductionService {
return ordineLav;
}
public DtbOrdt creaOrdineProd(CreaOrdineProdDTO creaOrdineProdDTO) throws Exception {
public DtbOrdt saveOrdineProd(CreaOrdineProdDTO creaOrdineProdDTO) throws Exception {
if (ObjectUtils.anyNull(
creaOrdineProdDTO.getDataOrd(),
creaOrdineProdDTO.getCodAnag(),
@@ -979,26 +977,32 @@ public class ProductionService {
Date dataOrd = Date.from(creaOrdineProdDTO.getDataOrd().atStartOfDay(ZoneId.systemDefault()).toInstant());
DtbOrdr rigaOrdProd = new DtbOrdr()
.setCodMart(creaOrdineProdDTO.getCodMart())
DtbOrdr rigaOrdProd = getRigaOrdProdFromOrdLav(dataOrd, creaOrdineProdDTO.getNumOrd());
if (rigaOrdProd == null) {
rigaOrdProd = new DtbOrdr();
}
rigaOrdProd.setCodMart(creaOrdineProdDTO.getCodMart())
.setPartitaMag(creaOrdineProdDTO.getPartitaMag())
.setValUnt(creaOrdineProdDTO.getValUnt())
.setNumCnf(creaOrdineProdDTO.getNumCnf())
.setQtaOrd(creaOrdineProdDTO.getQtaOrd())
.setColliPedana(creaOrdineProdDTO.getColliPedana())
.setUntOrd(creaOrdineProdDTO.getUntOrd());
.setUntOrd(creaOrdineProdDTO.getUntOrd())
.setOperation(creaOrdineProdDTO.getNumOrd() != null ? OperationType.UPDATE : OperationType.INSERT_OR_UPDATE);
rigaOrdProd.setOperation(OperationType.INSERT);
DtbOrdt testataOrdProd = new DtbOrdt()
.setGestione("A")
.setGestione(UtilityString.isNull(rigaOrdProd.getGestione(), "A"))
.setGestioneRif("A")
.setDataOrd(dataOrd)
.setNumOrd(rigaOrdProd.getNumOrd())
.setCodAnag(creaOrdineProdDTO.getCodAnag())
.setCodVdes(creaOrdineProdDTO.getCodVdes())
.setCodMdep(creaOrdineProdDTO.getCodMdep())
.setCodVzon(creaOrdineProdDTO.getCodVzon())
.addDtbOrdr(rigaOrdProd);
testataOrdProd.setOperation(OperationType.INSERT);
testataOrdProd.setOperation(creaOrdineProdDTO.getNumOrd() != null ? OperationType.UPDATE : OperationType.INSERT_OR_UPDATE);
entityProcessor.processEntity(testataOrdProd, multiDBTransactionManager);
UtilityEntity.throwEntityException(testataOrdProd);
@@ -1011,6 +1015,7 @@ public class ProductionService {
DtbOrdt ordLav = new DtbOrdt();
ordLav.setOperation(OperationType.NO_OP);
ordLav.setGestione("L")
.setCodVzon(creaOrdineProdDTO.getCodVzon())
.setDataOrd(rigaOrdProd.getDataOrdRif())
.setNumOrd(rigaOrdProd.getNumOrdRif());
for (ModificheDistintaDTO mod : creaOrdineProdDTO.getModificheDistinta()) {
@@ -1036,6 +1041,22 @@ public class ProductionService {
return testataOrdProd;
}
private DtbOrdr getRigaOrdProdFromOrdLav(Date dataOrd, Integer numOrd) throws Exception {
String sql = Query.format(
"SELECT rowProd.*\n" +
"FROM dtb_ordr rowProd\n" +
" INNER JOIN dtb_ordt ordLav ON\n" +
" ordLav.data_ord_rif = rowProd.data_ord\n" +
" AND ordLav.num_ord_rif = rowProd.num_ord\n" +
" AND rowProd.gestione = 'A'\n" +
" AND ordLav.gestione = 'L'\n" +
" AND ordLav.riga_ord_rif = rowProd.riga_ord\n" +
"WHERE ordLav.data_ord = %s and ordLav.num_ord = %s",
UtilityDate.formatDate(dataOrd, CommonConstants.DATE_FORMAT_YMD), numOrd);
return UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbOrdr.class);
}
public List<MtbAart> getArtsProdByCodMart(String codMart) throws SQLException, IOException, PrimaryDatabaseNotPresentException, DataConverterNotFoundException, InstantiationException, IllegalAccessException {
String sql = Query.format(
"SELECT cod_prod AS cod_mart,\n" +

View File

@@ -102,7 +102,7 @@ public class VariazioniPvExportServices {
String codVlis = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), query);
if (!UtilityString.isNullOrEmpty(codVlis)) {
whereCond = "vtb_list.cod_vlis = " + UtilityDB.valueToString(codVlis);
variazioniPvDTO.setWhereCondArt(whereCond);
variazioniPvDTO.setWhereCondLisv(whereCond);
}
}

View File

@@ -767,14 +767,15 @@ public class PvmService {
String filtroArticoli = setupGest.getSetup(conn, "PVM", "DOC_INTERNI", "FILTRO_ARTICOLI");
String campoFiltro = setupGest.getSetup(conn, "PVM", "DOC_INTERNI", "CAMPO_FILTRO_ARTICOLI");
if (!UtilityString.isNullOrEmpty(filtroArticoli)) {
ObjectMapper objectMapper = new ObjectMapper();
TypeReference<List<FiltroArtDTO>> mapType = new TypeReference<List<FiltroArtDTO>>() {
};
filtroDTO = objectMapper.readValue(filtroArticoli, mapType);
final Optional<FiltroArtDTO> filtro = Stream.of(filtroDTO)
filtroDTO = jsonObjectMapper.readValue(filtroArticoli, mapType);
final java.util.Optional<FiltroArtDTO> filtro = filtroDTO.stream()
.filter(filtroArtDTO -> filtroArtDTO.getCodDtip().equalsIgnoreCase(codDtip) &&
filtroArtDTO.getCodMdep() == null || filtroArtDTO.getCodMdep().equalsIgnoreCase(codMdep))
(filtroArtDTO.getCodMdep() == null || filtroArtDTO.getCodMdep().equalsIgnoreCase(codMdep)))
.findFirst();
if (filtro.isPresent()) {
whereCondArticoli = filtro.get().getWhereCond();
}
@@ -2906,7 +2907,7 @@ public class PvmService {
} else if ("L".equalsIgnoreCase(gestione) && docFromPickingDTO.getColli().size() == 1 && isDocNote(whereCondColli)) {
//Salviamo solo la data documento
query = "SELECT gestione, data_collo , ser_collo , num_collo , Cast(getDate() as date) as data_doc, cod_dtip_provv as cod_dtip FROM mtb_colt ";
query = "SELECT gestione, data_collo , ser_collo , num_collo , CAST(getDate() AS DATE) AS data_doc, cod_dtip_provv AS cod_dtip FROM mtb_colt ";
query = UtilityDB.addwhereCond(query, whereCondColli, false);
MtbColt collo = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), query, MtbColt.class);
@@ -2968,12 +2969,12 @@ public class PvmService {
" mtb_colt.data_ord, " +
" mtb_colt.num_ord, " +
" mtb_colt.gestione + '|' + " +
" case when mtb_colt.gestione = 'L' THEN '' ELSE mtb_colt.cod_anag END + '|' + " +
" case when mtb_colt.gestione = 'L' THEN '' ELSE IsNull(mtb_colt.cod_vdes,'') END + '|' + " +
" case when mtb_colt.gestione = 'L' THEN '' ELSE IsNull(dtb_ordt.listino,'') END + '|' + " +
" mtb_colt.cod_mdep as gruppo, " +
" CASE WHEN mtb_colt.gestione = 'L' THEN '' ELSE mtb_colt.cod_anag END + '|' + " +
" CASE WHEN mtb_colt.gestione = 'L' THEN '' ELSE IsNull(mtb_colt.cod_vdes,'') END + '|' + " +
" CASE WHEN mtb_colt.gestione = 'L' THEN '' ELSE IsNull(dtb_ordt.listino,'') END + '|' + " +
" mtb_colt.cod_mdep AS gruppo, " +
" vtb_clie.cod_dtip_sped, " +
" Round(sum(qta_col), 3) as tot_qta " +
" Round(SUM(qta_col), 3) AS tot_qta " +
" FROM mtb_colt INNER JOIN mtb_colr ON mtb_colt.gestione = mtb_colr.gestione AND " +
" mtb_colt.data_collo = mtb_colr.data_collo AND " +
" mtb_colt.ser_collo = mtb_colr.ser_collo AND " +
@@ -2993,9 +2994,9 @@ public class PvmService {
" mtb_colt.num_ord, " +
" vtb_clie.cod_dtip_sped, " +
" mtb_colt.gestione + '|' + " +
" case when mtb_colt.gestione = 'L' THEN '' ELSE mtb_colt.cod_anag END + '|' + " +
" case when mtb_colt.gestione = 'L' THEN '' ELSE IsNull(mtb_colt.cod_vdes,'') END + '|' + " +
" case when mtb_colt.gestione = 'L' THEN '' ELSE IsNull(dtb_ordt.listino,'') END + '|' + " +
" CASE WHEN mtb_colt.gestione = 'L' THEN '' ELSE mtb_colt.cod_anag END + '|' + " +
" CASE WHEN mtb_colt.gestione = 'L' THEN '' ELSE IsNull(mtb_colt.cod_vdes,'') END + '|' + " +
" CASE WHEN mtb_colt.gestione = 'L' THEN '' ELSE IsNull(dtb_ordt.listino,'') END + '|' + " +
" mtb_colt.cod_mdep " +
"ORDER BY mtb_colt.gestione, mtb_colt.cod_anag, mtb_colt.cod_vdes, mtb_colt.cod_mdep, mtb_colt.data_collo, mtb_colt.num_collo ";
query = UtilityDB.addwhereCond(query, whereCondColli, false);
@@ -3197,12 +3198,12 @@ public class PvmService {
query =
"SELECT wtb_users.user_name, wtb_users.password, wtb_users_info.format_file, COUNT(wtb_users_info.format_file) over (partition by wtb_users_info.user_name) as count_export" +
" FROM wtb_users " +
" FROM wtb_users " +
"INNER JOIN wtb_users_info ON wtb_users.User_name = wtb_users_info.user_name " +
"LEFT OUTER JOIN wtb_clie ON wtb_users.User_name = wtb_clie.user_name AND wtb_users_info.export_type = 'DOCUMENTI VENDITA' " +
"LEFT OUTER JOIN wtb_forn ON wtb_users.User_name = wtb_forn.user_name AND wtb_users_info.export_type <> 'DOCUMENTI VENDITA'" +
" WHERE wtb_users_info.flag_state = 'S' and " +
" wtb_users_info.export_type = " + UtilityDB.valueToString(exportType);
" WHERE wtb_users_info.flag_state = 'S' and " +
" wtb_users_info.export_type = " + UtilityDB.valueToString(exportType);
query = UtilityDB.addwhereCond(query, whereCondAnag, true);
HashMap<String, Object> datiExport = UtilityDB.executeSimpleQueryOnlyFirstRow(multiDBTransactionManager.getPrimaryConnection(), query);

View File

@@ -638,7 +638,6 @@ public class GiacenzaService {
" ON k.cod_mart = r.cod_mart),\n" +
" final AS (SELECT cod_mart, qta_inv, data_inventario\n" +
" FROM inv\n" +
" WHERE qta_inv != 0\n" +
" UNION\n" +
" SELECT mtb_comp.cod_mart,\n" +
" ROUND(SUM(ISNULL(qta_inv, 0)) / SUM(qta_std), 2),\n" +

View File

@@ -22,15 +22,16 @@ public class WMSDocumentController {
@Autowired
private WMSDocumentService wmsDocumentService;
@RequestMapping(value = "/checkFruma", method = RequestMethod.GET)
@RequestMapping(value = "/checkDoc", method = RequestMethod.GET)
public @ResponseBody
ServiceRestResponse checkDocument(@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
@RequestParam String fornitore,
@RequestParam String numDoc,
@RequestParam Date dataDoc) throws Exception {
@RequestParam(required = false) String fornitore,
@RequestParam(required = false) String numDoc,
@RequestParam(required = false) String tipoDoc,
@RequestParam(required = false) Date dataDoc) throws Exception {
return ServiceRestResponse.createPositiveResponse(
wmsDocumentService.checkFrumaDoc(fornitore, numDoc, dataDoc)
wmsDocumentService.checkDoc(fornitore, numDoc, dataDoc, tipoDoc)
);
}

View File

@@ -8,6 +8,7 @@ import it.integry.ems.retail.wms.documenti.dto.DocumentArtDTO;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.entity.MtbUntMis;
import it.integry.ems_model.entity._enum.GestioneEnum;
import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.utility.Query;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityString;
@@ -15,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import java.sql.Connection;
import java.util.*;
import java.util.stream.Collectors;
@@ -32,36 +34,35 @@ public class WMSDocumentService {
@Autowired
private MultiDBTransactionManager multiDBTransactionManager;
public Boolean checkFrumaDoc(String fornitore, String numDoc, Date dataDoc) throws Exception {
String sql =
Query.format("SELECT *\n" +
@Autowired
private SetupGest setupGest;
public Boolean checkDoc(String fornitore, String numDoc, Date dataDoc, String tipoDoc) throws Exception {
Connection conn = multiDBTransactionManager.getPrimaryConnection();
String doc = setupGest.getSetupDet(conn, "PVM", "DOC_INTERNI", "CHECK_RIF_DOC", tipoDoc);
if (doc == null) return true;
String sql = Query.format("SELECT gestione FROM dtb_tipi WHERE cod_dtip = %s", tipoDoc);
String gestione = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql);
sql =
String.format("SELECT *\n" +
"FROM wdtb_doct\n" +
"WHERE wdtb_doct.data_doc = %s\n" +
" AND wdtb_doct.cod_anag = %s\n" +
(gestione.equalsIgnoreCase("L") ? "" : " AND wdtb_doct.cod_anag = " + UtilityDB.valueToString(fornitore) + "\n") +
" AND wdtb_doct.num_doc = %s\n" +
" AND wdtb_doct.gestione = 'A'\n",
dataDoc,
fornitore,
numDoc
" AND wdtb_doct.cod_dtip IN (%S)\n",
UtilityDB.valueToString(dataDoc),
UtilityDB.valueToString(numDoc),
UtilityDB.listValueToString(Arrays.asList(doc.split("\\|")))
);
List<HashMap<String, Object>> hashMaps = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), sql);
if ( hashMaps.isEmpty() ) {
if (hashMaps.isEmpty()) {
sql =
Query.format("SELECT *\n" +
"FROM dtb_doct\n" +
" INNER JOIN dtb_tipi ON dtb_doct.cod_dtip = dtb_tipi.cod_dtip\n" +
"WHERE dtb_doct.data_doc = %s\n" +
" AND dtb_doct.cod_anag = %s\n" +
" AND dtb_doct.num_doc = %s\n" +
" AND dtb_tipi.gestione = 'A'\n" +
" AND dtb_tipi.segno_qta_car >= 1",
dataDoc,
fornitore,
numDoc
);
sql = sql.replaceAll("wdtb_doct", "dtb_doct");
hashMaps = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), sql);
}

View File

@@ -28,6 +28,7 @@ import it.integry.ems.service.PrinterService;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.user.UserSession;
import it.integry.ems.utility.UtilityEntity;
import it.integry.ems.utility.UtilityLogger;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.db.ResultSetMapper;
import it.integry.ems_model.entity.*;
@@ -2182,9 +2183,11 @@ public class WMSGenericService {
}
if (!UtilityBigDecimal.equalsTo(qtaScaricata, qtaDaScaricare)) {
anomalieList.add(AnomalieDTO.warning("Non è stato possibile scaricare tutta la quantita di materia prima richiesta dalla posizione " + scaricoMateriaPrimaDTO.getPosizione() +
String warning = "Non è stato possibile scaricare tutta la quantita di materia prima richiesta dalla posizione " + scaricoMateriaPrimaDTO.getPosizione() +
" dell'articolo " + giacInPosizioneMapByCodMart.getKey() + ". " +
"E' stata richiesta una quantità di " + UtilityBigDecimal.round(qtaDaScaricare, 3) + " e non è stato possibile scaricarne " + UtilityBigDecimal.round(qtaDaScaricare.subtract(qtaScaricata), 3)));
"E' stata richiesta una quantità di " + UtilityBigDecimal.round(qtaDaScaricare, 3) + " e non è stato possibile scaricarne " + UtilityBigDecimal.round(qtaDaScaricare.subtract(qtaScaricata), 3);
logger.error(warning);
anomalieList.add(AnomalieDTO.warning(warning));
}
}

View File

@@ -1387,15 +1387,9 @@ public class SystemController {
@RequestMapping(value = EmsRestConstants.PATH_OBJECT_STORAGE_ORPHAN_FILES_CLEANER, method = RequestMethod.POST)
public ServiceRestResponse objectStorageOrphanFilesCleaner(HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String configuration) {
try {
systemService.minioOrphanFilesCleaner();
return ServiceRestResponse.createPositiveResponse();
} catch (Exception ex) {
logger.error(request.getRequestURI(), ex);
return new ServiceRestResponse(EsitoType.KO, configuration, ex);
}
@RequestParam(CommonConstants.PROFILE_DB) String configuration) throws Exception {
systemService.minioOrphanFilesCleaner();
return ServiceRestResponse.createPositiveResponse();
}
@RequestMapping(value = EmsRestConstants.PATH_DEFAULT_AZIENDA, method = RequestMethod.GET)
@@ -1693,7 +1687,7 @@ public class SystemController {
final List<MtbColt> mtbColtsToFix = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), queryRetrieveColli, MtbColt.class);
if(mtbColtsToFix == null || mtbColtsToFix.isEmpty())
if (mtbColtsToFix == null || mtbColtsToFix.isEmpty())
return ServiceRestResponse.createPositiveResponse();
for (MtbColt mtbColtToFix : mtbColtsToFix) {

View File

@@ -57,6 +57,8 @@ public class CertificatiSinfoOneDTO {
private BigDecimal scartoCq;
@SqlField("cod_vvet")
private String codVvet;
@SqlField("cod_vzon")
private String codVzon;
@SqlField("vettore")
private String vettore;
@@ -293,4 +295,13 @@ public class CertificatiSinfoOneDTO {
this.vettore = vettore;
return this;
}
public String getCodVzon() {
return codVzon;
}
public CertificatiSinfoOneDTO setCodVzon(String codVzon) {
this.codVzon = codVzon;
return this;
}
}

View File

@@ -80,6 +80,8 @@ public class ExchangeCampiRaccoltaDTO implements EquatableEntityInterface<Exchan
private boolean newPartita;
@SqlField("note")
private String note;
@SqlField("codVzon")
private String codVzon;
public String getCodAnag() {
return codAnag;
@@ -321,7 +323,37 @@ public class ExchangeCampiRaccoltaDTO implements EquatableEntityInterface<Exchan
if (this == o) return true;
if (!(o instanceof ExchangeCampiRaccoltaDTO)) return false;
ExchangeCampiRaccoltaDTO that = (ExchangeCampiRaccoltaDTO) o;
return isNewDest() == that.isNewDest() && isNewPartita() == that.isNewPartita() && Objects.equals(getPartitaMag(), that.getPartitaMag()) && Objects.equals(getCodAnag(), that.getCodAnag()) && Objects.equals(getRagSoc(), that.getRagSoc()) && Objects.equals(getCodVdes(), that.getCodVdes()) && Objects.equals(getProduttore(), that.getProduttore()) && Objects.equals(getCooperativa(), that.getCooperativa()) && Objects.equals(getIndirizzoCoop(), that.getIndirizzoCoop()) && Objects.equals(getCittaCoop(), that.getCittaCoop()) && Objects.equals(getCapCoop(), that.getCapCoop()) && Objects.equals(getProvCoop(), that.getProvCoop()) && Objects.equals(getPartIvaCoop(), that.getPartIvaCoop()) && Objects.equals(getOp(), that.getOp()) && Objects.equals(getCodAnagProd(), that.getCodAnagProd()) && Objects.equals(getRagSocProd(), that.getRagSocProd()) && Objects.equals(getIndirizzoProd(), that.getIndirizzoProd()) && Objects.equals(getCittaProd(), that.getCittaProd()) && Objects.equals(getCapProd(), that.getCapProd()) && Objects.equals(getProvProd(), that.getProvProd()) && Objects.equals(getPartIvaProd(), that.getPartIvaProd()) && Objects.equals(getCodMartMp(), that.getCodMartMp()) && Objects.equals(getCodMartMg(), that.getCodMartMg()) && Objects.equals(getVarieta(), that.getVarieta()) && Objects.equals(getLottoFornitore(), that.getLottoFornitore()) && Objects.equals(getValUnt(), that.getValUnt()) && Objects.equals(getUntMis(), that.getUntMis()) && Objects.equals(getQtaAttesa(), that.getQtaAttesa()) && Objects.equals(getDataInizProd(), that.getDataInizProd()) && Objects.equals(getNote(), that.getNote());
return isNewDest() == that.isNewDest() &&
isNewPartita() == that.isNewPartita() &&
Objects.equals(getPartitaMag(), that.getPartitaMag()) &&
Objects.equals(getCodAnag(), that.getCodAnag()) &&
Objects.equals(getRagSoc(), that.getRagSoc()) &&
Objects.equals(getCodVdes(), that.getCodVdes()) &&
Objects.equals(getProduttore(), that.getProduttore()) &&
Objects.equals(getCooperativa(), that.getCooperativa()) &&
Objects.equals(getIndirizzoCoop(), that.getIndirizzoCoop()) &&
Objects.equals(getCittaCoop(), that.getCittaCoop()) &&
Objects.equals(getCapCoop(), that.getCapCoop()) &&
Objects.equals(getProvCoop(), that.getProvCoop()) &&
Objects.equals(getPartIvaCoop(), that.getPartIvaCoop()) &&
Objects.equals(getOp(), that.getOp()) &&
Objects.equals(getCodAnagProd(), that.getCodAnagProd()) &&
Objects.equals(getRagSocProd(), that.getRagSocProd()) &&
Objects.equals(getIndirizzoProd(), that.getIndirizzoProd()) &&
Objects.equals(getCittaProd(), that.getCittaProd()) &&
Objects.equals(getCapProd(), that.getCapProd()) &&
Objects.equals(getProvProd(), that.getProvProd()) &&
Objects.equals(getPartIvaProd(), that.getPartIvaProd()) &&
Objects.equals(getCodMartMp(), that.getCodMartMp()) &&
Objects.equals(getCodMartMg(), that.getCodMartMg()) &&
Objects.equals(getVarieta(), that.getVarieta()) &&
Objects.equals(getLottoFornitore(), that.getLottoFornitore()) &&
Objects.equals(getValUnt(), that.getValUnt()) &&
Objects.equals(getUntMis(), that.getUntMis()) &&
Objects.equals(getQtaAttesa(), that.getQtaAttesa()) &&
Objects.equals(getDataInizProd(), that.getDataInizProd()) &&
Objects.equals(getNote(), that.getNote()) &&
Objects.equals(getCodVzon(), that.getCodVzon()) ;
}
@Override
@@ -606,4 +638,13 @@ public class ExchangeCampiRaccoltaDTO implements EquatableEntityInterface<Exchan
this.newPartita = newPartita;
return this;
}
public String getCodVzon() {
return codVzon;
}
public ExchangeCampiRaccoltaDTO setCodVzon(String codVzon) {
this.codVzon = codVzon;
return this;
}
}

View File

@@ -21,12 +21,13 @@ import org.springframework.stereotype.Service;
import java.sql.Connection;
import java.time.LocalDate;
import java.util.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
import static java.util.stream.Collectors.groupingBy;
@SuppressWarnings("rawtypes")
@Service
public class ExchangeColliImportService {
@@ -89,7 +90,7 @@ public class ExchangeColliImportService {
testataTableName = null;
}
final List<MtbColt> exchangeImportedMtbColts = importColliLavorazione(
List<MtbColt> exchangeImportedMtbColts = importColliLavorazione(
exchangeMultiDb.getPrimaryConnection(),
UtilityLocalDate.getNow().minusWeeks(1),
UtilityLocalDate.getNow(),
@@ -101,7 +102,6 @@ public class ExchangeColliImportService {
UtilityLocalDate.getNow(),
false, useTempTable, testataTableName, righeTableName);
List<EquatableEntityInterface> importedMtbColts = exchangeImportedMtbColts.stream()
.map(x -> (EquatableEntityInterface) x)
.collect(Collectors.toList());
@@ -113,7 +113,11 @@ public class ExchangeColliImportService {
List<EquatableEntityInterface> allMtbColts = exchangeImportDataManagerService
.runSync(MtbColt.class, importedMtbColts, updatedMtbColts);
allMtbColts.forEach(x -> x.setOperation(x.getOperation() == OperationType.INSERT ? OperationType.INSERT_OR_UPDATE : x.getOperation()));
allMtbColts.forEach(x -> {
x.setOperation(x.getOperation() == OperationType.INSERT ? OperationType.INSERT_OR_UPDATE : x.getOperation());
((MtbColt)x).getMtbColr().forEach(y -> y.setOperation(y.getOperation() == OperationType.INSERT ? OperationType.INSERT_OR_UPDATE : y.getOperation()));
});
AtomicInteger importedCounter = new AtomicInteger();
@@ -185,10 +189,6 @@ public class ExchangeColliImportService {
mtbColrLavTableName, Query.format("data_collo BETWEEN {} AND {}", minDate, maxDate), retrieveAlreadyImported);
final Map<Integer, List<MtbColr>> testGroupBy = mtbColrLav.parallelStream()
.collect(groupingBy(x -> Objects.hash(x.getGestione(), x.getNumCollo(), x.getDataCollo(), x.getSerCollo())));
mtbColtLav
.parallelStream()
.forEach(x -> {
@@ -251,6 +251,7 @@ public class ExchangeColliImportService {
" data_ora_lordo AS dataOraLordo,\n" +
" CONVERT(NUMERIC(15, 3), sconto8) AS sconto8,\n" +
" cod_vettore AS cod_vvet,\n" +
" cod_vzon AS cod_vzon,\n" +
" vettore AS vettore,\n" +
" CONVERT(NUMERIC(15, 3), PMB_SCARTO_CQ) AS scartoCq\n " +
"FROM s1_Certificati\n" +

View File

@@ -82,23 +82,12 @@ public class ExchangeDocumentImportService {
List<EquatableEntityInterface> allRigheData = exchangeImportDataManagerService
.runSync(DtbDocr.class, exchangeImportedRigheData, exchangeUpdatedRigheData);
allTestateData.parallelStream().forEach(x -> ((DtbDoct) x).setUpdProgMaga(false));
allTestateData.parallelStream().forEach(x -> {
((DtbDoct) x).setUpdProgMaga(false);
// .setOperation(x.getOperation() == OperationType.INSERT ? OperationType.INSERT_OR_UPDATE : x.getOperation());
// ((DtbDoct) x).getDtbDocr().parallelStream().forEach(y -> y.setOperation(y.getOperation() == OperationType.INSERT ? OperationType.INSERT_OR_UPDATE : y.getOperation()));
allTestateData.parallelStream()
.map(x -> (DtbDoct) x)
.forEach(x ->
x.setDtbDocr(allRigheData.stream()
.map(y -> (DtbDocr) y)
.filter(y ->
Objects.hash(x.getDataDoc(), x.getNumDoc(), x.getSerDoc(), x.getCodAnag(), x.getCodDtip()) ==
Objects.hash(y.getDataDoc(), y.getNumDoc(), y.getSerDoc(), y.getCodAnag(), y.getCodDtip()) &&
(Objects.equals(x.getCodAnag(), y.getCodAnag()) &&
Objects.equals(x.getCodDtip(), y.getCodDtip()) &&
Objects.equals(x.getDataDoc(), y.getDataDoc()) &&
Objects.equals(x.getNumDoc(), y.getNumDoc()) &&
Objects.equals(x.getSerDoc(), y.getSerDoc())))
.collect(Collectors.toList())));
});
allRigheData.stream()
.map(x -> (DtbDocr) x)
@@ -118,12 +107,29 @@ public class ExchangeDocumentImportService {
.setDataDoc(x.getDataDoc())
.setNumDoc(x.getNumDoc())
.setCodDtip(x.getCodDtip())
.setCodAnag(x.getCodAnag());
.setCodAnag(x.getCodAnag())
.setUpdProgMaga(false);
testata.setOperation(OperationType.UPDATE);
allTestateData.add(testata);
});
allTestateData.parallelStream()
.map(x -> (DtbDoct) x)
.forEach(x ->
x.setDtbDocr(allRigheData.stream()
.map(y -> (DtbDocr) y)
.filter(y ->
Objects.hash(x.getDataDoc(), x.getNumDoc(), x.getSerDoc(), x.getCodAnag(), x.getCodDtip()) ==
Objects.hash(y.getDataDoc(), y.getNumDoc(), y.getSerDoc(), y.getCodAnag(), y.getCodDtip()) &&
(Objects.equals(x.getCodAnag(), y.getCodAnag()) &&
Objects.equals(x.getCodDtip(), y.getCodDtip()) &&
Objects.equals(x.getDataDoc(), y.getDataDoc()) &&
Objects.equals(x.getNumDoc(), y.getNumDoc()) &&
Objects.equals(x.getSerDoc(), y.getSerDoc())))
.collect(Collectors.toList())));
List<EquatableEntityInterface> allData = allTestateData;
final Exception[] firstExceptionToThrow = {null};

View File

@@ -182,7 +182,7 @@ public class ExchangeOrdiniImportService {
x.setDtbOrdr(finalDtbOrdrLav.stream()
.filter(y ->
Objects.hash(x.getDataOrd(), x.getGestione(), x.getNumOrd()) ==
Objects.hash(y.getDataOrd(), y.getGestione(), y.getNumOrd()) &&
Objects.hash(y.getDataOrd(), y.getGestione(), y.getNumOrd()) &&
(Objects.equals(x.getDataOrd(), y.getDataOrd()) && Objects.equals(x.getNumOrd(), y.getNumOrd()) &&
Objects.equals(x.getGestione(), y.getGestione())))
.collect(Collectors.toList()));
@@ -220,7 +220,7 @@ public class ExchangeOrdiniImportService {
final List<ExchangeCampiRaccoltaDTO> exchangeCampiRaccOld = retrieveCampiDiRaccolta(
exchangeMultiDb.getPrimaryConnection(),
UtilityLocalDate.getNow().minusMonths(1),
true,false);
true, false);
final List<ExchangeCampiRaccoltaDTO> exchangeCampiRaccNew = retrieveCampiDiRaccolta(
exchangeMultiDb.getPrimaryConnection(),
@@ -234,28 +234,28 @@ public class ExchangeOrdiniImportService {
final AtomicInteger[] importedCounter = {new AtomicInteger()};
for (EquatableEntityInterface dataToSave : allData) {
ExchangeCampiRaccoltaDTO field = (ExchangeCampiRaccoltaDTO)dataToSave;
try {
importField(internalMultiDb,field);
for (EquatableEntityInterface dataToSave : allData) {
ExchangeCampiRaccoltaDTO field = (ExchangeCampiRaccoltaDTO) dataToSave;
try {
importField(internalMultiDb, field);
singleFieldUpdateImported(exchangeMultiDb.getPrimaryConnection(), field, true);
internalMultiDb.commitAll();
exchangeMultiDb.commitAll();
logger.debug("Importati {} campi di {}", importedCounter[0].incrementAndGet(), allData.size());
} catch (Exception ex) {
if (firstExceptionToThrow[0] == null) firstExceptionToThrow[0] = ex;
singleFieldUpdateImported(exchangeMultiDb.getPrimaryConnection(), field, true);
internalMultiDb.commitAll();
exchangeMultiDb.commitAll();
logger.debug("Importati {} campi di {}", importedCounter[0].incrementAndGet(), allData.size());
} catch (Exception ex) {
if (firstExceptionToThrow[0] == null) firstExceptionToThrow[0] = ex;
logger.error("Errore durante l'importazione dell'campo [fornitore: " + field.getCodAnag() + " - "+field.getCodVdes()+"," +
"articolo: " + field.getCodMartMp() + "," +
"partita: " + field.getLottoFornitore() + "]", ex);
internalMultiDb.rollbackAll();
}
logger.error("Errore durante l'importazione dell'campo [fornitore: " + field.getCodAnag() + " - " + field.getCodVdes() + "," +
"articolo: " + field.getCodMartMp() + "," +
"partita: " + field.getLottoFornitore() + "]", ex);
internalMultiDb.rollbackAll();
}
}
if (firstExceptionToThrow[0] != null) throw firstExceptionToThrow[0];
} finally {
@@ -264,41 +264,50 @@ public class ExchangeOrdiniImportService {
}
private void importField(MultiDBTransactionManager multiDb,ExchangeCampiRaccoltaDTO field) throws Exception{
if (UtilityString.isNullOrEmpty(field.getCodAnag())){
private void importField(MultiDBTransactionManager multiDb, ExchangeCampiRaccoltaDTO field) throws Exception {
if (UtilityString.isNullOrEmpty(field.getCodAnag())) {
return;
}
if (field.isNewPartita()){
AgribookNewFieldRequestDTO dto = new AgribookNewFieldRequestDTO();
dto.setCodAnag(field.getCodAnag())
.setCodVdes(field.getCodVdes())
.setNewDes(field.isNewDest())
.setCodMart(field.getCodMartMp())
.setPartitaMag(field.getPartitaMag())
.setQtaAttesa(field.getQtaAttesa())
.setValUnt(field.getValUnt())
.setUntMis(field.getUntMis())
.setDestinatario(field.getProduttore())
.setIndirizzo(field.getIndirizzoProd())
.setCap(field.getCapProd())
.setCitta(field.getCittaProd())
.setProv(field.getProvProd())
.setLat(null)
.setLng(null)
.setRagSocLegale(field.getCooperativa())
.setPartIvaLegale(field.getPartIvaCoop())
.setCodFiscLegale(field.getPartIvaCoop())
.setIndirizzoLegale(field.getIndirizzoCoop())
.setCapLegale(field.getCapCoop())
.setCittaLegale(field.getCittaCoop())
.setProvLegale(field.getProvCoop())
.setPartIva(field.getPartIvaProd())
.setDatiCatastali(null)
.setNote(field.getNote())
.setVarieta(field.getVarieta())
.setDataInizProd(field.getDataInizProd())
.setDataOrd(field.getDataInizProd());
agribookFieldService.createField(multiDb,dto, ROSSOGARGANO_EXCHANGE_USER,new RequestDataDTO());
switch (field.getOperation()) {
case INSERT:
AgribookNewFieldRequestDTO dto = new AgribookNewFieldRequestDTO();
dto.setCodAnag(field.getCodAnag())
.setCodVdes(field.getCodVdes())
.setNewDes(field.isNewDest())
.setCodMart(field.getCodMartMp())
.setPartitaMag(field.getPartitaMag())
.setQtaAttesa(field.getQtaAttesa())
.setValUnt(field.getValUnt())
.setUntMis(field.getUntMis())
.setDestinatario(field.getProduttore())
.setIndirizzo(field.getIndirizzoProd())
.setCap(field.getCapProd())
.setCitta(field.getCittaProd())
.setProv(field.getProvProd())
.setLat(null)
.setLng(null)
.setRagSocLegale(field.getCooperativa())
.setPartIvaLegale(field.getPartIvaCoop())
.setCodFiscLegale(field.getPartIvaCoop())
.setIndirizzoLegale(field.getIndirizzoCoop())
.setCapLegale(field.getCapCoop())
.setCittaLegale(field.getCittaCoop())
.setProvLegale(field.getProvCoop())
.setPartIva(field.getPartIvaProd())
.setDatiCatastali(null)
.setNote(field.getNote())
.setVarieta(field.getVarieta())
.setDataInizProd(field.getDataInizProd())
.setCodVzon(field.getCodVzon())
.setDataOrd(field.getDataInizProd());
agribookFieldService.createField(multiDb, dto, ROSSOGARGANO_EXCHANGE_USER, new RequestDataDTO());
break;
case UPDATE:
break;
case DELETE:
break;
}
}

View File

@@ -200,6 +200,7 @@ public class SystemService {
" stb_user.password_endtime," +
" stb_user.e_mail," +
" stb_user.Last_access_datetime," +
" stb_user.cod_lang," +
" stb_user.flag_password_expiring," +
" CASE WHEN stb_user.key_group = '3' AND stb_user.user_code IS NULL THEN wtb_clie.cod_anag ELSE stb_user.user_code END AS user_code," +
" wtb_depo.cod_mdep," +
@@ -944,26 +945,7 @@ public class SystemService {
}
}
boolean bulkDelete = setupGest.getSetupBoolean("DATI_AZIENDA", "MINIO", "ENABLE_BULK_DELETE");
if (bulkDelete)
minIOService.bulkDelete(multiDBTransactionManager, toDelete);
else {
for (int i = 0; i < toDelete.size(); i++) {
if (executor.getQueue().size() > (cores * 4)) {
Thread.sleep(500);
i--;
continue;
}
MinioOrphanTaskDeleter task = new MinioOrphanTaskDeleter(toDelete.get(i), minIOService, multiDBTransactionManager);
executor.execute(task);
}
executor.shutdown();
executor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
}
this.minIOService.deleteObjects(toDelete, multiDBTransactionManager);
}
public Object implodeWordDoc() throws Docx4JException {