Compare commits

...

20 Commits

Author SHA1 Message Date
5fbf7975d2 Migliorata gestione profile di default in RequestDataDTO
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-17 18:32:02 +01:00
a75b66bd53 Fix su Hibernte che non funzionava correttamente con profileDb maiuscolo/minuscolo
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-17 18:21:09 +01:00
13439c236d Creato repository per StbEmail
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-17 16:34:21 +01:00
77d5a9cb9e aggiunta Roberta nelle notifiche
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-17 12:56:06 +01:00
d4cfada677 Merge remote-tracking branch 'origin/develop' into develop 2025-12-17 12:52:25 +01:00
27c6795b9f Merge remote-tracking branch 'origin/develop' into develop 2025-12-17 12:52:07 +01:00
dd9ff5c111 prova 2025-12-17 12:52:06 +01:00
1a4773659a Nella procedura di importazione CRONOTIME Geestito invio mail di errore quando un badge non esiste 2025-12-17 12:52:03 +01:00
0d2da1a92c prova
Some checks are pending
IntegryManagementSystem_Multi/pipeline/head Build queued...
2025-12-17 12:51:46 +01:00
b203e94836 gestita equivalenza su dati di magazzino dell'articolo
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-17 12:50:44 +01:00
b3c99f7937 Modificato formato data
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-17 12:40:34 +01:00
6257fd540d Migliorie email interna di errore di sistema
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-17 10:23:08 +01:00
635ac0a1c7 Merge remote-tracking branch 'origin/develop' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-12-16 18:27:36 +01:00
8abf441a8a [carelli - ordini a]
- aggiunto controllo su qta_ord vs qta_cnf
- unificati tutti controlli di esportazione nei servizi
2025-12-16 18:27:29 +01:00
8781b406ff Rimossa cache su MtbAart, completata prima implementazione funzionante di MtbAartRepository e MtbUntMisRepository
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-16 18:21:17 +01:00
c9325674d9 Merge branch 'develop' into JpaTest 2025-12-16 12:26:54 +01:00
99ca1731b1 Aggiunta share samba su immagine docker. Cambiata immagine base da alpine e ubuntu noble (24)
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-16 12:26:16 +01:00
af6f465c0e modifiche per steup
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-16 11:34:12 +01:00
d981e59a7d Rimosso Containerfile
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-15 18:27:09 +01:00
6d7212ce97 Prima versione funzionante di Hybernate 2025-12-15 10:42:51 +01:00
79 changed files with 1386 additions and 482 deletions

18
.idea/copilotDiffState.xml generated Normal file

File diff suppressed because one or more lines are too long

33
.idea/dataSources.xml generated
View File

@@ -1,11 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
<data-source source="LOCAL" name="@SERVERDB2019" uuid="ff4f0bad-7271-429e-a4e1-bae28629efc8">
<data-source source="LOCAL" name="Biolevante@SERVERDB2019" uuid="ff4f0bad-7271-429e-a4e1-bae28629efc8">
<driver-ref>sqlserver.ms</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</jdbc-driver>
<jdbc-url>jdbc:sqlserver://SERVERDB2019</jdbc-url>
<jdbc-url>jdbc:sqlserver://SERVERDB2019\MSSQLSERVER;database=Biolevante</jdbc-url>
<jdbc-additional-properties>
<property name="com.intellij.clouds.kubernetes.db.host.port" />
<property name="com.intellij.clouds.kubernetes.db.enabled" value="false" />
<property name="com.intellij.clouds.kubernetes.db.container.port" />
</jdbc-additional-properties>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
<data-source source="LOCAL" name="Gramm@SERVERDB2019" uuid="02282d62-6d2a-4b83-bdcf-b558fa6db140">
<driver-ref>sqlserver.ms</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</jdbc-driver>
<jdbc-url>jdbc:sqlserver://SERVERDB2019\MSSQLSERVER;database=Gramm</jdbc-url>
<jdbc-additional-properties>
<property name="com.intellij.clouds.kubernetes.db.host.port" />
<property name="com.intellij.clouds.kubernetes.db.enabled" value="false" />
<property name="com.intellij.clouds.kubernetes.db.container.port" />
</jdbc-additional-properties>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
<data-source source="LOCAL" name="vgalimenti@SERVERDB" uuid="eaf0bcaf-4620-478b-b63c-42e77902813f">
<driver-ref>sqlserver.ms</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</jdbc-driver>
<jdbc-url>jdbc:sqlserver://SERVERDB\MSSQLSERVER;database=vgalimenti</jdbc-url>
<jdbc-additional-properties>
<property name="com.intellij.clouds.kubernetes.db.host.port" />
<property name="com.intellij.clouds.kubernetes.db.enabled" value="false" />
<property name="com.intellij.clouds.kubernetes.db.container.port" />
</jdbc-additional-properties>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
</component>

8
.idea/data_source_mapping.xml generated Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourcePerFileMappings">
<file url="file://$PROJECT_DIR$/.idea/queries/Query.sql" value="ff4f0bad-7271-429e-a4e1-bae28629efc8" />
<file url="file://$PROJECT_DIR$/.idea/queries/Query_1.sql" value="02282d62-6d2a-4b83-bdcf-b558fa6db140" />
<file url="file://$PROJECT_DIR$/.idea/queries/Query_2.sql" value="eaf0bcaf-4620-478b-b63c-42e77902813f" />
</component>
</project>

6
.idea/db-forest-config.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="db-tree-configuration">
<option name="data" value="----------------------------------------&#10;1:0:ff4f0bad-7271-429e-a4e1-bae28629efc8&#10;2:0:02282d62-6d2a-4b83-bdcf-b558fa6db140&#10;3:0:eaf0bcaf-4620-478b-b63c-42e77902813f&#10;" />
</component>
</project>

View File

@@ -1,6 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="central" />
<option name="name" value="central" />
<option name="url" value="https://repo.maven.apache.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Central Repository" />

6
.idea/sqldialects.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="SqlDialectMappings">
<file url="file://$PROJECT_DIR$/.idea/queries/Query_2.sql" dialect="TSQL" />
</component>
</project>

View File

@@ -1,18 +0,0 @@
FROM tomcat:9-jre8-alpine
RUN apk add --no-cache fontconfig ttf-dejavu
ENV TZ="Europe/Rome"
ENV JAVA_OPTS="-DDISABLE_DROOLS_COMPILE=TRUE -Xms512M -Xmx1G -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
ENV USERDOMAIN="STUDIO-ML"
COPY docker/tomcat/conf/integry/ems.properties /usr/local/tomcat/conf/integry/
COPY docker/tomcat/conf/integry/ems_automated_operations.json /usr/local/tomcat/conf/integry/
COPY docker/tomcat/conf/integry/ems_settings.json /usr/local/tomcat/conf/integry/
COPY ems-engine/target/ems-api.war /usr/local/tomcat/webapps/
#COPY docker/FontTest.class .
#ENTRYPOINT ["java","FontTest"]
EXPOSE 8080
EXPOSE 5005

View File

@@ -1,11 +1,45 @@
FROM tomcat:9-jre8-alpine
RUN apk add --no-cache fontconfig ttf-dejavu
FROM tomcat:9-jre8
ENV TZ="Europe/Rome"
ENV JAVA_OPTS="-DDISABLE_DROOLS_COMPILE=TRUE -Xms512M -Xmx2G -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
ENV USERDOMAIN="STUDIO-ML"
# Install Samba
RUN apt-get update && \
apt-get install -y samba samba-common-bin && \
rm -rf /var/lib/apt/lists/*
# Ensure log directory exists and is readable
RUN mkdir -p /usr/local/tomcat/logs && \
chmod -R 755 /usr/local/tomcat/logs
# Create samba user (no login) and add to root group
RUN useradd -M -s /usr/sbin/nologin sambauser && \
printf "sambapass\nsambapass\n" | smbpasswd -a -s sambauser && \
usermod -aG root sambauser
# Samba configuration
RUN printf "\
[global]\n\
workgroup = STUDIO-ML\n\
security = user\n\
map to guest = never\n\
server role = standalone server\n\
unix extensions = no\n\
client min protocol = NT1\n\
\n\
[tomcat-logs]\n\
comment = Tomcat logs (read-only)\n\
path = /usr/local/tomcat/logs\n\
browseable = yes\n\
read only = yes\n\
guest ok = no\n\
valid users = sambauser\n\
force user = root\n\
create mask = 0644\n\
directory mask = 0755\n\
" > /etc/samba/smb.conf
COPY docker/tomcat/conf/integry/ems.properties /usr/local/tomcat/conf/integry/
COPY docker/tomcat/conf/integry/ems_automated_operations.json /usr/local/tomcat/conf/integry/
COPY docker/tomcat/conf/integry/ems_settings.json /usr/local/tomcat/conf/integry/

View File

@@ -42,7 +42,7 @@ pipeline {
bat(script: 'mvn clean install -t toolchains-jenkins.xml', returnStdout: true)
archiveArtifacts(artifacts: 'ems-engine/target/ems-api.war', onlyIfSuccessful: true)
}
stash includes: 'ems-engine/target/ems-api.war,docker/**,Containerfile', name: 'container-files'
stash includes: 'ems-engine/target/ems-api.war,docker/**,Dockerfile', name: 'container-files'
}
}
@@ -128,7 +128,7 @@ sleep 10''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaul
}
// bat "docker buildx build --platform linux/amd64,linux/arm64 --push -t \"git.studioml.it/integry/ems-api${branchVersion}:latest\" ."
bat "podman build -f .\\Containerfile -t \"git.studioml.it/integry/ems-api${branchVersion}:latest\" ."
bat "podman build -t \"git.studioml.it/integry/ems-api${branchVersion}:latest\" ."
bat "podman push \"git.studioml.it/integry/ems-api${branchVersion}:latest\""
//containerImageLink "git.studioml.it/integry/ems-api-${env.GIT_BRANCH.toLowerCase().replace('/', '-')}:latest}"

View File

@@ -404,6 +404,17 @@
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>2.7.18</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.6.15.Final</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>

View File

@@ -28,9 +28,6 @@ public class DbmsChangeTrackerComponent {
private final HashMap<IntegryCustomerDB, DbmsChangeTracker> activeChangeTrackers = new HashMap<>();
private final ArrayList<String> trackedTables = new ArrayList<String>() {{
add(MtbAart.ENTITY);
add(MtbAartBarCode.ENTITY);
add(MtbUntMis.ENTITY);
add(MtbDepo.ENTITY);
add(MtbDepoPosizioni.ENTITY);
add(StbEditLimit.ENTITY);

View File

@@ -53,9 +53,6 @@ public class EntityCacheComponent implements ApplicationListener {
}
private final HashMap<String, Class<? extends EntityBase>> enabledEntities = new HashMap<String, Class<? extends EntityBase>>() {{
put(MtbAart.ENTITY, MtbAart.class);
put(MtbAartBarCode.ENTITY, MtbAartBarCode.class);
put(MtbUntMis.ENTITY, MtbUntMis.class);
put(MtbDepo.ENTITY, MtbDepo.class);
put(MtbDepoPosizioni.ENTITY, MtbDepoPosizioni.class);
put(StbEditLimit.ENTITY, StbEditLimit.class);

View File

@@ -357,8 +357,8 @@ public abstract class BaseEntityExporter implements IEntityExporter {
case EMAIL:
if (UtilityString.isNullOrEmpty(wtbUserInfo.getEmail()) &&
UtilityString.isNullOrEmpty(wtbUserInfo.getEmailCc()) &&
UtilityString.isNullOrEmpty(wtbUserInfo.getEmailCcn())) {
UtilityString.isNullOrEmpty(wtbUserInfo.getEmailCc()) &&
UtilityString.isNullOrEmpty(wtbUserInfo.getEmailCcn())) {
break;
}
@@ -369,7 +369,8 @@ public abstract class BaseEntityExporter implements IEntityExporter {
entityExportResponse.setMessageContent("Messaggio creato automaticamente: " + "INVIO " + type + " formato " + format);
}
fileSharerSettings = MailService.readParameter(multiDBTransactionManager.getPrimaryConnection(), null);
fileSharerSettings = ApplicationContextProvider.getApplicationContext().getBean(MailService.class)
.readParameter(multiDBTransactionManager.getPrimaryConnection(), null);
((EmailFileSharerSettings) fileSharerSettings)
.withSubject(entityExportResponse.getMessageSubject())
.withTextMessage(entityExportResponse.getMessageContent())
@@ -403,7 +404,7 @@ public abstract class BaseEntityExporter implements IEntityExporter {
}
}
if (counterTotalSend > 0 && counterFailedSend == counterTotalSend && retException != null) {
if (counterTotalSend > 0 && counterFailedSend == counterTotalSend && retException != null) {
//Se gli invii precedenti sono andati bene usciamo
throw retException;
}

View File

@@ -3,6 +3,7 @@ package it.integry.ems.javabeans;
import com.fasterxml.jackson.annotation.JsonInclude;
import it.integry.common.var.CommonConstants;
import it.integry.ems._context.ApplicationContextProvider;
import it.integry.ems.jpa.TenantContext;
import it.integry.ems.json.ResponseJSONObjectMapper;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.model.IntegryApplicationEnum;
@@ -19,13 +20,15 @@ import org.springframework.security.authentication.AnonymousAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component;
import org.springframework.web.context.WebApplicationContext;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
@Component
@Scope("request")
@Scope(WebApplicationContext.SCOPE_REQUEST)
public class RequestDataDTO {
private final Logger logger = LogManager.getLogger();
@@ -36,6 +39,9 @@ public class RequestDataDTO {
@Autowired
private ResponseJSONObjectMapper jsonObjectMapper;
@Autowired
private SettingsModel settingsModel;
private String requestURI;
private String requestClientIP;
@@ -100,6 +106,21 @@ public class RequestDataDTO {
} else {
jsonObjectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
}
// Logica di fallback o recupero tenant da sessione/utente
if (profileDB == null || profileDB.isEmpty()) {
profileDB = settingsModel.getDefaultProfile();
}
if (profileDB != null) {
TenantContext.setCurrentTenant(profileDB);
}
}
@PreDestroy
public void destroy() throws Exception {
TenantContext.clear();
}
@@ -109,10 +130,10 @@ public class RequestDataDTO {
.setPassword("sql");
}
public static RequestDataDTO scheduledOperationsMockupData() {
return new RequestDataDTO()
.setUsername("INTEGRY")
.setPassword("INTEGRY");
public static RequestDataDTO systemMockupData(String profileDb) {
final RequestDataDTO requestDataDTO = systemMockupData();
requestDataDTO.profileDB = profileDb;
return requestDataDTO;
}
public boolean isValidProfileDB() {

View File

@@ -0,0 +1,56 @@
package it.integry.ems.jpa;
import it.integry.ems.settings.Model.AvailableConnectionModel;
import it.integry.ems.settings.Model.SettingsModel;
import it.integry.ems.sync.MultiDBTransaction.BasicConnectionPool;
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
import javax.sql.DataSource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MultiTenantDataSource extends AbstractRoutingDataSource {
private final BasicConnectionPool basicConnectionPool;
private final SettingsModel settingsModel;
public MultiTenantDataSource(BasicConnectionPool basicConnectionPool, SettingsModel settingsModel) {
this.basicConnectionPool = basicConnectionPool;
this.settingsModel = settingsModel;
}
@Override
protected Object determineCurrentLookupKey() {
return TenantContext.getCurrentTenant();
}
@Override
public void afterPropertiesSet() {
Map<Object, Object> targetDataSources = new HashMap<>();
List<AvailableConnectionModel> connections = settingsModel.getAvailableConnections(false);
// Imposta il primo come default se necessario, o gestisci il caso null
// DataSource defaultDataSource = null;
for (AvailableConnectionModel model : connections) {
DataSource ds = basicConnectionPool.getDataSource(model.getProfileName());
if (ds != null) {
targetDataSources.put(model.getProfileName().toLowerCase(), ds);
// if (defaultDataSource == null) {
// defaultDataSource = ds;
// }
}
}
this.setTargetDataSources(targetDataSources);
//this.setDefaultTargetDataSource(defaultDataSource);
super.afterPropertiesSet();
}
// Metodo per ricaricare i datasource se vengono aggiunti nuovi tenant a runtime
public void refreshDataSources() {
this.afterPropertiesSet();
}
}

View File

@@ -0,0 +1,21 @@
package it.integry.ems.jpa;
public class TenantContext {
private static final ThreadLocal<String> currentTenant = new ThreadLocal<>();
public static void setCurrentTenant(String tenant) {
if (tenant == null)
throw new IllegalArgumentException("Tenant identifier cannot be null");
currentTenant.set(tenant.toLowerCase());
}
public static String getCurrentTenant() {
return currentTenant.get();
}
public static void clear() {
currentTenant.remove();
}
}

View File

@@ -0,0 +1,10 @@
package it.integry.ems.jpa.entity;
import javax.persistence.MappedSuperclass;
import java.io.Serializable;
@MappedSuperclass
public abstract class BaseEntity implements Serializable {
// Classe base per le entity JPA
}

View File

@@ -0,0 +1,10 @@
package it.integry.ems.jpa.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.NoRepositoryBean;
@NoRepositoryBean
public interface BaseRepository<T, ID> extends JpaRepository<T, ID> {
// Interfaccia base per i repository
}

View File

@@ -0,0 +1,36 @@
package it.integry.ems.jpa.repository;
import it.integry.ems_model.entity.MtbAart;
import org.springframework.data.jpa.repository.EntityGraph;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Optional;
@Repository
public interface MtbAartRepository extends BaseRepository<MtbAart, String> {
Optional<MtbAart> findByCodMart(String codMart);
@EntityGraph(attributePaths = {"mtbUntMis"})
Optional<MtbAart> findWithUntMisByCodMart(String codMart);
List<MtbAart> findByCodMartIn(List<String> codMarts);
@EntityGraph(attributePaths = {"mtbUntMis"})
List<MtbAart> findWithUntMisByCodMartIn(List<String> codMarts);
@EntityGraph(attributePaths = {"mtbUntMis", "mtbAartBarCode"})
List<MtbAart> findWithBarcodeWithUntMisByCodMartIn(List<String> codMarts);
@EntityGraph(attributePaths = {"mtbAartBarCode"})
Optional<MtbAart> findWithBarcodeByCodMart(String codMart);
@Query("SELECT m FROM MtbAart m WHERE m.untMis = 'KG'")
List<MtbAart> findByUntMisKG();
@Query("SELECT m.flagQtaCnfFissa FROM MtbAart m WHERE m.codMart = :codMart")
Optional<String> findFlagQtaCnfFissaByCodMart(@Param("codMart") String codMart);
}

View File

@@ -0,0 +1,24 @@
package it.integry.ems.jpa.repository;
import it.integry.ems_model.entity.MtbUntMis;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.math.BigDecimal;
import java.util.List;
import java.util.Optional;
public interface MtbUntMisRepository extends BaseRepository<MtbUntMis, String> {
Optional<MtbUntMis> findByUntMis(String untMis);
List<MtbUntMis> findByUntMisIn(List<String> untMis);
@Query("SELECT a.mtbUntMis FROM MtbAart a WHERE a.codMart = :codMart")
Optional<MtbUntMis> findByCodMart(@Param("codMart") String codMart);
int countByUntMis(String untMis);
@Query("SELECT u.cifreDec FROM MtbUntMis u WHERE u.flagUnitaKg = :flagUnitaKg")
List<BigDecimal> findCifreDecByFlagUnitaKg(@Param("flagUnitaKg") String flagUnitaKg);
}

View File

@@ -0,0 +1,15 @@
package it.integry.ems.jpa.repository;
import it.integry.ems_model.entity.StbEmail;
import org.springframework.data.jpa.repository.Query;
import java.util.Optional;
public interface StbEmailRepository extends BaseRepository<StbEmail, Integer> {
@Query("SELECT e FROM StbEmail e WHERE e.flagDefault = 'S'")
Optional<StbEmail> findByFlagDefaultTrue();
@Query("SELECT e FROM StbEmail e WHERE UPPER(e.eMail) = UPPER(?1)")
Optional<StbEmail> findByEmailIgnoreCase(String email);
}

View File

@@ -0,0 +1,44 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251216103055 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("PVM", "RILEVAZIONI_STEUP", "FORN_INEVASI", null, "Inserire un json [\n" +
"\t{\n" +
"\t\t\"partitaIva\": \"\",\n" +
"\t\t\"ggCons\": 7\n" +
"\t}]", false,
null,
true, false, false, true, false, null, false, null);
if (!isCustomerDb(IntegryCustomerDB.Carelli_Winact)) return;
String json = "[\n" +
"\t{\n" +
"\t\t\"partitaIva\": \"05848860721\",\n" +
"\t\t\"ggCons\": 7\n" +
"\t},\n" +
"\t{\n" +
"\t\t\"partitaIva\": \"05754810728\",\n" +
"\t\t\"ggCons\": 7\n" +
"\t},\n" +
"\t{\n" +
"\t\t\"partitaIva\": \"07716650721\",\n" +
"\t\t\"ggCons\": 1\n" +
"\t}\n" +
"]";
updateSetupValue("PVM", "RILEVAZIONI_STEUP", "FORN_INEVASI", json);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,23 @@
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_20251217111203 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
enableSaveToRest("maart_equi");
if ( !isCustomer(IntegryCustomer.Smetar)) return;
executeStatement("update mtb_aart_equi set flag_equi_anag = 1");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -4,7 +4,8 @@ import com.annimon.stream.ComparatorCompat;
import com.annimon.stream.Stream;
import it.integry.common.var.CommonConstants;
import it.integry.ems._context.ApplicationContextProvider;
import it.integry.ems.dynamic_cache.EntityCacheComponent;
import it.integry.ems.jpa.repository.MtbAartRepository;
import it.integry.ems.jpa.repository.MtbUntMisRepository;
import it.integry.ems.json.ResponseJSONObjectMapper;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.sync.MultiDBTransaction.Connection;
@@ -21,6 +22,7 @@ import it.integry.ems_model.rulescompleting.DroolsDataCompleting;
import it.integry.ems_model.types.ApplicationName;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.*;
import org.apache.commons.lang3.StringUtils;
import org.springframework.expression.Expression;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
@@ -674,41 +676,46 @@ public class CommonRules extends QueryRules {
public static String completeCodBarre(IntegryCustomerDB customerDB, Connection connection, String codMart)
throws SQLException {
final EntityCacheComponent entityCacheComponent = ApplicationContextProvider.getApplicationContext().getBean(EntityCacheComponent.class);
final MtbAartRepository mtbAartRepository = ApplicationContextProvider.getApplicationContext().getBean(MtbAartRepository.class);
List<HashMap<String, Object>> result = new ArrayList<>();
entityCacheComponent.<MtbAart>getCachedEntitiesStream(customerDB, MtbAart.ENTITY,
x -> x.getCodMart().equalsIgnoreCase(codMart) && !UtilityString.isNullOrEmpty(x.getBarCode()))
.forEach(x -> result.add(new HashMap<String, Object>() {{
put("cod_mart", x.getCodMart());
put("cod_barre", x.getBarCode());
Optional<MtbAart> optMtbAart = mtbAartRepository.findWithBarcodeByCodMart(codMart);
if (optMtbAart.isPresent()) {
MtbAart mtbAart = optMtbAart.get();
if (!UtilityString.isNullOrEmpty(mtbAart.getBarCode())) {
result.add(new HashMap<String, Object>() {{
put("cod_mart", mtbAart.getCodMart());
put("cod_barre", mtbAart.getBarCode());
put("cod_col", null);
put("cod_tagl", null);
put("qta_cnf", BigDecimal.ONE);
}}));
}});
}
entityCacheComponent.<MtbAart>getCachedEntitiesStream(customerDB, MtbAart.ENTITY,
x -> x.getCodMart().equalsIgnoreCase(codMart) && !UtilityString.isNullOrEmpty(x.getCodBarreImb()))
.forEach(x -> result.add(new HashMap<String, Object>() {{
put("cod_mart", x.getCodMart());
put("cod_barre", x.getCodBarreImb());
if (!UtilityString.isNullOrEmpty(mtbAart.getCodBarreImb())) {
result.add(new HashMap<String, Object>() {{
put("cod_mart", mtbAart.getCodMart());
put("cod_barre", mtbAart.getCodBarreImb());
put("cod_col", null);
put("cod_tagl", null);
put("qta_cnf", x.getQtaCnf());
}}));
entityCacheComponent.<MtbAartBarCode>getCachedEntitiesStream(customerDB, MtbAartBarCode.ENTITY,
x -> x.getCodMart().equalsIgnoreCase(codMart))
.forEach(x -> result.add(new HashMap<String, Object>() {{
put("cod_mart", x.getCodMart());
put("cod_barre", x.getCodBarre());
put("cod_col", null);
put("cod_tagl", null);
put("qta_cnf", x.getQtaCnf());
}}));
put("qta_cnf", mtbAart.getQtaCnf());
}});
}
if (mtbAart.getMtbAartBarCode() != null) {
mtbAart.getMtbAartBarCode()
.forEach(x -> result.add(new HashMap<String, Object>() {{
put("cod_mart", x.getCodMart());
put("cod_barre", x.getCodBarre());
put("cod_col", null);
put("cod_tagl", null);
put("qta_cnf", x.getQtaCnf());
}}));
}
}
String barcode = null;
@@ -728,14 +735,12 @@ public class CommonRules extends QueryRules {
}
public static String completeFlagQtaCnfFissa(Connection connection, IntegryCustomerDB customerDB, String codMart) {
final EntityCacheComponent entityCacheComponent = ApplicationContextProvider.getApplicationContext().getBean(EntityCacheComponent.class);
final MtbAartRepository mtbAartRepository = ApplicationContextProvider.getApplicationContext().getBean(MtbAartRepository.class);
final List<MtbAart> cachedMtbAarts = entityCacheComponent.getCachedEntitiesList(customerDB, MtbAart.ENTITY, x -> x.getCodMart().equalsIgnoreCase(codMart));
final String flagQtaCnfFissaArt = mtbAartRepository.findFlagQtaCnfFissaByCodMart(codMart)
.orElse(null);
if (cachedMtbAarts == null || cachedMtbAarts.isEmpty())
return null;
return cachedMtbAarts.get(0).getFlagQtaCnfFissa();
return flagQtaCnfFissaArt;
}
public static String getApplicationName(Connection connection) throws Exception {
@@ -1092,6 +1097,8 @@ public class CommonRules extends QueryRules {
}
public static List<MtbUntMis> insUntMis(Connection conn, MtbAart mtbAart) throws Exception {
MtbUntMisRepository mtbUntMisRepository = ApplicationContextProvider.getApplicationContext().getBean(MtbUntMisRepository.class);
List<MtbUntMis> mtbUntMisList = new ArrayList<>();
List<String> untMisList = new ArrayList<>();
@@ -1106,8 +1113,7 @@ public class CommonRules extends QueryRules {
}
for (String untMis : untMisList) {
String sql = "SELECT count(*) FROM mtb_unt_mis WHERE unt_mis = " + UtilityDB.valueToString(untMis);
Integer countUM = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql);
Integer countUM = mtbUntMisRepository.countByUntMis(untMis);
if (countUM == null || countUM == 0) {
MtbUntMis mtbUntMis = new MtbUntMis();
mtbUntMis.setUntMis(untMis);
@@ -1378,16 +1384,73 @@ public class CommonRules extends QueryRules {
public static boolean getChkCompatibilitaCarat(Connection connection, String codMart, String carat) throws SQLException {
String sql =
Query.format("SELECT chk_compatibilita\n" +
"FROM mtb_aart\n" +
" INNER JOIN mtb_tipi_carat ON mtb_aart.cod_mtip = mtb_tipi_carat.cod_mtip AND\n" +
" mtb_aart.cod_mstp = mtb_tipi_carat.cod_mstp\n" +
"WHERE mtb_aart.cod_mart = %s\n" +
" AND mtb_tipi_carat.carat = %s\n" ,
codMart, carat);
"FROM mtb_aart\n" +
" INNER JOIN mtb_tipi_carat ON mtb_aart.cod_mtip = mtb_tipi_carat.cod_mtip AND\n" +
" mtb_aart.cod_mstp = mtb_tipi_carat.cod_mstp\n" +
"WHERE mtb_aart.cod_mart = %s\n" +
" AND mtb_tipi_carat.carat = %s\n",
codMart, carat);
Boolean chkCompatibilita = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(connection, sql);
if (chkCompatibilita == null) chkCompatibilita = false;
return chkCompatibilita;
}
public static void updArtEqui(Connection conn, MtbAart mtbAart) throws Exception {
if (UtilityString.isNullOrEmpty(mtbAart.getIdArtEqui())) return;
if (!mtbAart.isUpdArtEqui()) return;
boolean equiAnag = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn,
Query.format("select flag_equi_anag \n" +
"FROM mtb_aart_equi \n" +
"WHERE id_art_equi = {} ",
mtbAart.getIdArtEqui()));
if (!equiAnag) return;
boolean modify = true;
if (mtbAart.getOriginalEntity() != null) {
MtbAart originalMtbAart = (MtbAart) mtbAart.getOriginalEntity();
modify = (!UtilityString.isNullOrEmpty(originalMtbAart.getUntMis()) ||
!UtilityString.isNullOrEmpty(originalMtbAart.getUntMis2()) ||
!UtilityString.isNullOrEmpty(originalMtbAart.getUntMis3()) ||
!UtilityBigDecimal.isNullOrZero(originalMtbAart.getRapConv2()) ||
!UtilityBigDecimal.isNullOrZero(originalMtbAart.getRapConv3()) ||
!UtilityBigDecimal.isNullOrZero(originalMtbAart.getPesoKg()) ||
!UtilityBigDecimal.isNullOrZero(originalMtbAart.getQtaCnf()) ||
!UtilityBigDecimal.isNullOrZero(originalMtbAart.getColliPedana()) ||
!UtilityBigDecimal.isNullOrZero(originalMtbAart.getColliStrato()) ||
!UtilityBigDecimal.isNullOrZero(originalMtbAart.getTaraKg()));
}
if (!modify) return;
List<MtbAart> mtbAarts = UtilityDB.executeSimpleQueryDTO(conn,
Query.format("SELECT * \n" +
"FROM mtb_aart \n" +
"WHERE id_art_equi is not null AND \n" +
"id_art_equi = {} AND \n " +
"cod_mart <> {}",
mtbAart.getIdArtEqui(),
mtbAart.getCodMart()), MtbAart.class);
if ( mtbAarts == null || mtbAarts.isEmpty()) return;
for (MtbAart m : mtbAarts) {
m.setUntMis(mtbAart.getUntMis())
.setUntMis2(mtbAart.getUntMis2())
.setUntMis3(mtbAart.getUntMis3())
.setRapConv2(mtbAart.getRapConv2())
.setRapConv3(mtbAart.getRapConv3())
.setPesoKg(mtbAart.getPesoKg())
.setQtaCnf(mtbAart.getQtaCnf())
.setColliPedana(mtbAart.getColliPedana())
.setColliStrato(mtbAart.getColliStrato())
.setTaraKg(mtbAart.getTaraKg())
.setUpdArtEqui(false)
.setOperation(OperationType.UPDATE);
}
mtbAart.setArticoliEquivalenti(mtbAarts);
}
}

View File

@@ -27,7 +27,7 @@ public class DocumentRules extends QueryRules {
public static Date getDataRicezioneAllegati(Connection conn, List<DrlDocAttached> drlDocAttached) throws Exception {
String minDataRic = setupGest.getSetup(conn, "CTB_MOVI", "SETUP", "SET_DATA_RICEZIONE");
LocalDateTime dataRicMin = LocalDateTime.parse(minDataRic, CommonConstants.DATETIME_YMD_DASHED_FORMATTER);
LocalDateTime dataRicMin = UtilityString.parseLocalDateTime(minDataRic);
String idAttach = drlDocAttached.get(0).getIdAttach();
String sqlAttach =

View File

@@ -2,7 +2,8 @@ package it.integry.ems.rules.completing;
import com.annimon.stream.Stream;
import it.integry.ems._context.ApplicationContextProvider;
import it.integry.ems.dynamic_cache.EntityCacheComponent;
import it.integry.ems.jpa.repository.MtbAartRepository;
import it.integry.ems.jpa.repository.MtbUntMisRepository;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.rules.completing.dto.DatiPartitaMagDTO;
import it.integry.ems.sync.MultiDBTransaction.Connection;
@@ -333,16 +334,14 @@ public class PackagesRules extends QueryRules {
public static HashMap<String, Object> calcPeso(IntegryCustomerDB customerDB, Connection conn, MtbColr entity) throws Exception {
final EntityCacheComponent entityCacheComponent = ApplicationContextProvider.getApplicationContext().getBean(EntityCacheComponent.class);
final MtbAartRepository mtbAartRepository = ApplicationContextProvider.getApplicationContext().getBean(MtbAartRepository.class);
final MtbUntMisRepository mtbUntMisRepository = ApplicationContextProvider.getApplicationContext().getBean(MtbUntMisRepository.class);
BigDecimal cifreDec = entityCacheComponent.<MtbUntMis>getCachedEntitiesStream(customerDB, MtbUntMis.ENTITY,
x -> x.getFlagUnitaKg().equalsIgnoreCase("S"))
.map(MtbUntMis::getCifreDec)
BigDecimal cifreDec = mtbUntMisRepository.findCifreDecByFlagUnitaKg("S").stream()
.findFirst()
.orElse(BigDecimal.valueOf(5));
HashMap<String, Object> anagArt = entityCacheComponent.<MtbAart>getCachedEntitiesStream(customerDB, MtbAart.ENTITY,
x -> x.getCodMart().equalsIgnoreCase(entity.getCodMart()))
HashMap<String, Object> anagArt = mtbAartRepository.findByCodMart(entity.getCodMart())
.map(x -> new HashMap<String, Object>() {{
put("unt_mis", x.getUntMis());
put("tara_kg", x.getTaraKg());
@@ -350,7 +349,6 @@ public class PackagesRules extends QueryRules {
put("flag_peso_egalizzato", x.getFlagPesoEgalizzato());
put("peso_egalizzato", x.getFlagPesoEgalizzato() ? x.getQtaCnf().multiply(x.getPesoKg()) : null);
}})
.findFirst()
.orElse(null);
@@ -365,10 +363,8 @@ public class PackagesRules extends QueryRules {
BigDecimal pesoNetto = BigDecimal.ZERO, pesoLordo = BigDecimal.ZERO;
if (anagArt != null) {
String flagUnitaKg = entityCacheComponent.<MtbUntMis>getCachedEntitiesStream(customerDB, MtbUntMis.ENTITY,
x -> x.getUntMis().equalsIgnoreCase(String.valueOf(anagArt.get("unt_mis"))))
String flagUnitaKg = mtbUntMisRepository.findByUntMis((String) anagArt.get("unt_mis"))
.map(MtbUntMis::getFlagUnitaKg)
.findFirst()
.orElse(null);
BigDecimal taraKg = (BigDecimal) anagArt.get("tara_kg");

View File

@@ -9,6 +9,7 @@ import it.integry.ems.file_sharer.IFileSharerAttachment;
import it.integry.ems.file_sharer.sharers.email.EmailFileAttachment;
import it.integry.ems.file_sharer.sharers.email.EmailFileSharer;
import it.integry.ems.file_sharer.sharers.email.EmailFileSharerSettings;
import it.integry.ems.jpa.repository.StbEmailRepository;
import it.integry.ems.json.ResponseJSONObjectMapper;
import it.integry.ems.media.MimeTypesHandler;
import it.integry.ems.response.FileItem;
@@ -24,7 +25,6 @@ import it.integry.ems.utility.UtilityDebug;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.entity.StbEmail;
import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityList;
import it.integry.ems_model.utility.UtilityLocalDate;
import it.integry.ems_model.utility.UtilityString;
@@ -78,6 +78,9 @@ public class MailService {
@Autowired
private EmsDBConst emsDBConst;
@Autowired
private StbEmailRepository stbEmailRepository;
private final Logger logger = LogManager.getLogger();
public enum Level {
@@ -87,7 +90,7 @@ public class MailService {
ERROR
}
public static EmailFileSharerSettings readParameter(@NotNull Connection connection, String fromEmail) throws Exception {
public EmailFileSharerSettings readParameter(@NotNull Connection connection, String fromEmail) throws Exception {
if (UtilityDebug.isIntegryServerDev()) {
return useSystemParams();
}
@@ -95,15 +98,16 @@ public class MailService {
EmailFileSharerSettings emailSettings = new EmailFileSharerSettings();
String sql;
StbEmail stbEmail = null;
if (!UtilityString.isNullOrEmpty(fromEmail)) {
sql = "SELECT * from stb_email WHERE e_mail = " + UtilityDB.valueToString(fromEmail);
stbEmail = stbEmailRepository.findByEmailIgnoreCase(fromEmail)
.orElse(null);
} else {
sql = "SELECT * from stb_email WHERE flag_default = 'S'";
stbEmail = stbEmailRepository.findByFlagDefaultTrue()
.orElse(null);
}
List<StbEmail> listEmail = UtilityDB.executeSimpleQueryDTO(connection, sql, StbEmail.class);
StbEmail stbEmail = listEmail != null && !listEmail.isEmpty() ? listEmail.get(0) : null;
if (stbEmail != null && stbEmail.getIdRiga() != null) {
EmailFileSharerSettings.ENCRYPTION encryption = EmailFileSharerSettings.ENCRYPTION.NONE;
@@ -204,7 +208,7 @@ public class MailService {
}
public Message sendMailPrimary(Connection connection, String from, String
fromName, String to, String cc, String ccn,
fromName, String to, String cc, String ccn,
String subject, String msgText, Boolean isHtml, Boolean isDebug, String replyTo, String
replyToName, List<IFileSharerAttachment> emailFileAttachmentList, boolean requestDeliveryNotification,
String deliveryNotificationTo) throws
@@ -231,7 +235,7 @@ public class MailService {
}
public Message sendMailPrimary(Connection connection, String from, String
fromName, List<String> listTo, List<String> listCc, List<String> ListCcn,
fromName, List<String> listTo, List<String> listCc, List<String> ListCcn,
String subject, String msgText, Boolean isHtml, Boolean isDebug, String replyTo, String
replyToName, List<IFileSharerAttachment> emailFileAttachmentList, boolean requestDeliveryNotification,
String deliveryNotificationTo) throws
@@ -300,7 +304,7 @@ public class MailService {
}
public EmailFileSharerSettings internalReadParameter(Connection connection, String fromEmail) throws Exception {
return MailService.readParameter(connection, fromEmail);
return readParameter(connection, fromEmail);
}
public Message sendMail(String from, String fromName, String to, String cc, String subject, String msg) throws Exception {
@@ -492,56 +496,29 @@ public class MailService {
internalSendSystemMail(Level.SUCCESS, mailSubject, mailTitle, mailContent, footerDate);
}
public void sendSystemWarningLog(String mailSubject, String mailTitle, String mailContent, String exceptionMessage, Date footerDate) throws Exception {
mailContent += "<br /><br /><br />\n" +
"<hr noshade size=\"1\"><br />" +
"<p style=\"text-align: left; font-weight: bold;font-size: 12px;\">ERROR LOG</p>" +
"<p style=\"text-align: left; font-size: 12px; color: gray; font-family: consolas;\">" + exceptionMessage + "</p>";
internalSendSystemMail(Level.WARNING, mailSubject, mailTitle, mailContent, footerDate);
}
public void sendSystemWarningLog(String mailSubject, String mailTitle, String mailContent, Exception ex, Date footerDate) throws Exception {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
ex.printStackTrace(pw);
mailContent += "<br /><br /><br />\n" +
"<hr noshade size=\"1\"><br />" +
"<p style=\"text-align: left; font-weight: bold;font-size: 12px;\">ERROR LOG</p>" +
"<p style=\"text-align: left; font-size: 12px; color: gray; font-family: consolas;\">" + sw + "</p>";
pw.close();
sw.close();
internalSendSystemMail(Level.WARNING, mailSubject, mailTitle, mailContent, footerDate);
}
public void sendSystemErrorLog(String mailSubject, String mailTitle, String mailContent, String exceptionMessage, Date footerDate) throws Exception {
mailContent += "<br /><br /><br />\n" +
"<hr noshade size=\"1\"><br />" +
"<p style=\"text-align: left; font-weight: bold;font-size: 12px;\">ERROR LOG</p>" +
"<p style=\"text-align: left; font-size: 12px; color: gray; font-family: consolas;\">" + exceptionMessage + "</p>";
internalSendSystemMail(Level.ERROR, mailSubject, mailTitle, mailContent, footerDate);
internalSendSystemLogMail(Level.WARNING, mailSubject, mailTitle, mailContent, ex, footerDate);
}
public void sendSystemErrorLog(String mailSubject, String mailTitle, String mailContent, Exception ex, Date footerDate) throws Exception {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
ex.printStackTrace(pw);
internalSendSystemLogMail(Level.ERROR, mailSubject, mailTitle, mailContent, ex, footerDate);
}
private void internalSendSystemLogMail(Level mailLevel, String mailSubject, String mailTitle, String mailContent, Exception ex, Date footerDate) throws Exception {
if (ex != null) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
ex.printStackTrace(pw);
mailContent += "<br /><br /><br />\n" +
"<hr noshade size=\"1\"><br />" +
"<p style=\"text-align: left; font-weight: bold;font-size: 12px;\">ERROR LOG</p>" +
"<p style=\"text-align: left; font-size: 12px; color: gray; font-family: consolas;\">" + sw + "</p>";
pw.close();
sw.close();
mailContent += "<br /><br /><br />\n" +
"<p style=\"text-align: left; font-weight: bold;font-size: 12px;\">Stacktrace</p>" +
"<pre>" + sw + "</pre>";
pw.close();
sw.close();
}
internalSendSystemMail(Level.ERROR, mailSubject, mailTitle, mailContent, footerDate);
internalSendSystemMail(mailLevel, mailSubject, mailTitle, mailContent, footerDate);
}
private void internalSendSystemMail(Level mailLevel, String mailSubject, String mailTitle, String mailContent, Date footerDate) throws Exception {

View File

@@ -25,7 +25,7 @@ public class MailTemplateService {
URL url = new URL(baseUrl + fileName);
InputStream inputStream = url.openStream();
String htmlMailBody = IOUtils.toString(inputStream, StandardCharsets.ISO_8859_1);
String htmlMailBody = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
inputStream.close();
return htmlMailBody;

View File

@@ -109,6 +109,20 @@ public class BasicConnectionPool {
}
}
public javax.sql.DataSource getDataSource(String profileName) {
AvailableConnectionModel model = settingsModel.findConnectionModel(profileName);
if (model == null) {
return null;
}
try {
registerDataSourceIfNotExists(model);
return registeredDatasources.get(model);
} catch (Exception e) {
logger.error("Error retrieving DataSource for profile: " + profileName, e);
return null;
}
}
private void registerDataSourceIfNotExists(AvailableConnectionModel connectionModel) throws Exception {
if (!registeredDatasources.containsKey(connectionModel)) {

View File

@@ -101,7 +101,7 @@ public class MultiDBTransactionManager implements AutoCloseable {
return;
}
try {
String profileDb = settingsModel.getDefaultProfile();
String profileDb = null;
if (requestData != null && requestData.isValidProfileDB()) {
profileDb = requestData.getProfileDB();
}

View File

@@ -1,30 +0,0 @@
package it.integry.ems.utility.entity;
import it.integry.ems._context.ApplicationContextProvider;
import it.integry.ems.dynamic_cache.EntityCacheComponent;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems_model.entity.MtbAartBarCode;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class MtbAartBarcodeUtils {
public static final List<MtbAartBarCode> getAlternativeMtbAartBarCodes(List<String> codMarts, Connection conn) {
codMarts = codMarts.stream()
.distinct().collect(Collectors.toList());
final EntityCacheComponent entityCacheComponent = ApplicationContextProvider.getApplicationContext().getBean(EntityCacheComponent.class);
List<String> finalCodMarts = codMarts;
List<MtbAartBarCode> barCodeList = entityCacheComponent.getCachedEntitiesList(
conn.getIntegryCustomerDB(),
MtbAartBarCode.ENTITY,
x -> finalCodMarts.stream().anyMatch(y -> y.equalsIgnoreCase(x.getCodMart())));
return barCodeList != null ? barCodeList : new ArrayList<>();
}
}

View File

@@ -1,82 +0,0 @@
package it.integry.ems.utility.entity;
import com.annimon.stream.Optional;
import com.annimon.stream.Stream;
import it.integry.ems._context.ApplicationContextProvider;
import it.integry.ems.dynamic_cache.EntityCacheComponent;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems_model.entity.MtbAart;
import it.integry.ems_model.entity.MtbAartBarCode;
import it.integry.ems_model.entity.MtbUntMis;
import it.integry.ems_model.utility.UtilityString;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
public class MtbAartUtils {
public static MtbAart getArticoloByCodMart(String codMart, Connection connection) throws Exception {
if (UtilityString.isNullOrEmpty(codMart))
return null;
List<MtbAart> mtbAarts = getArticoliByCodMarts(new ArrayList<>(Collections.singleton(codMart)), connection);
if (mtbAarts == null || mtbAarts.isEmpty())
return null;
return mtbAarts.get(0);
}
public static List<MtbAart> getArticoliByCodMarts(List<String> codMarts, Connection connection) throws Exception {
if (codMarts == null || codMarts.isEmpty()) return null;
codMarts.replaceAll(String::toUpperCase);
final EntityCacheComponent entityCacheComponent = ApplicationContextProvider.getApplicationContext().getBean(EntityCacheComponent.class);
List<MtbAart> listMtbAart = entityCacheComponent.getCachedEntitiesList(
connection.getIntegryCustomerDB(), MtbAart.ENTITY, x -> codMarts.contains(x.getCodMart().toUpperCase()));
List<MtbAartBarCode> barCodeFromCod = MtbAartBarcodeUtils.getAlternativeMtbAartBarCodes(codMarts, connection);
if (listMtbAart != null && !listMtbAart.isEmpty()) {
List<String> untMisStrings = listMtbAart.stream()
.map(MtbAart::getUntMis)
.collect(Collectors.toList());
List<MtbUntMis> listUntMis = MtbUntMisUtils.getFromCods(untMisStrings, connection);
for (final MtbAart mtbAart : listMtbAart) {
Optional<MtbUntMis> mtbUntMis = Stream.of(listUntMis)
.filter(mtbUntMis1 -> mtbUntMis1.getUntMis().equalsIgnoreCase(mtbAart.getUntMis()))
.findFirst();
List<MtbAartBarCode> barcodeList = Stream.of(barCodeFromCod)
.filter(x -> x.getCodMart().equalsIgnoreCase(mtbAart.getCodMart()))
.toList();
if (!barcodeList.isEmpty()) {
mtbAart.getMtbAartBarCode().addAll(barcodeList);
}
if (mtbUntMis.isPresent()) {
mtbAart.setMtbUntMis(new ArrayList<>());
mtbAart.getMtbUntMis().add(mtbUntMis.get());
}
}
}
return listMtbAart;
}
public static final HashMap<String, MtbAart> getArticoliByCodMartsAsMap(List<String> codMarts, Connection connection) throws Exception {
List<MtbAart> mtbAarts = getArticoliByCodMarts(codMarts, connection);
if (mtbAarts == null || mtbAarts.isEmpty()) return new HashMap<>();
return mtbAarts.stream()
.collect(Collectors.toMap(MtbAart::getCodMart, a -> a, (a, b) -> a, HashMap::new));
}
}

View File

@@ -1,56 +0,0 @@
package it.integry.ems.utility.entity;
import it.integry.ems._context.ApplicationContextProvider;
import it.integry.ems.dynamic_cache.EntityCacheComponent;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems_model.entity.MtbAart;
import it.integry.ems_model.entity.MtbUntMis;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
public class MtbUntMisUtils {
public static final MtbUntMis getMtbUntMisFromCodMart(IntegryCustomerDB customerDB, String codMart) throws SQLException {
final EntityCacheComponent entityCacheComponent = ApplicationContextProvider.getApplicationContext().getBean(EntityCacheComponent.class);
MtbAart mtbAart = entityCacheComponent.<MtbAart>getCachedEntitiesStream(customerDB, MtbAart.ENTITY,
x -> x.getCodMart().equalsIgnoreCase(codMart))
.findFirst()
.orElse(null);
if (mtbAart != null) {
return null;
}
final MtbUntMis mtbUntMis = entityCacheComponent.<MtbUntMis>getCachedEntitiesStream(customerDB, MtbUntMis.ENTITY,
x -> x.getUntMis().equalsIgnoreCase(mtbAart.getUntMis()))
.findFirst()
.orElse(null);
return mtbUntMis;
}
public static List<MtbUntMis> getFromCods(List<String> untMisCods, Connection connection) {
List<String> untMisStrings = untMisCods.stream()
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList());
final EntityCacheComponent entityCacheComponent = ApplicationContextProvider.getApplicationContext().getBean(EntityCacheComponent.class);
List<MtbUntMis> mtbUntMis = entityCacheComponent.getCachedEntitiesList(
connection.getIntegryCustomerDB(),
MtbUntMis.ENTITY,
x -> untMisCods.contains(x.getUntMis()));
return mtbUntMis != null ? mtbUntMis : new ArrayList<>();
}
}

View File

@@ -12,14 +12,16 @@ import it.integry.ems_model.utility.UtilityDB;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.kie.api.definition.type.PropertyReactive;
import org.springframework.beans.factory.annotation.Autowired;
import javax.persistence.Transient;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@javax.persistence.Entity
@javax.persistence.Table(name = MtbAart.ENTITY)
@Master
@PropertyReactive
@Table(MtbAart.ENTITY)
@@ -32,344 +34,469 @@ public class MtbAart extends EntityBase implements EquatableEntityInterface<MtbA
private static final long serialVersionUID = 1L;
@javax.persistence.Id
@javax.persistence.Column(name = "cod_mart")
@PK
@SqlField(value = "cod_mart", maxLength = 15, nullable = false)
private String codMart;
@javax.persistence.Column(name = "descrizione")
@SqlField(value = "descrizione", maxLength = 40, nullable = false)
private String descrizione;
@javax.persistence.Column(name = "unt_mis")
@FK(tableName = "mtb_unt_mis", columnName = "unt_mis")
@SqlField(value = "unt_mis", maxLength = 3, nullable = false)
private String untMis;
@javax.persistence.Column(name = "bar_code")
@SqlField(value = "bar_code", maxLength = 40)
private String barCode;
@javax.persistence.Column(name = "peso_kg")
@SqlField(value = "peso_kg", nullable = false, defaultObjectValue = "0")
private BigDecimal pesoKg;
@javax.persistence.Column(name = "qta_cnf")
@SqlField(value = "qta_cnf", nullable = false, defaultObjectValue = "1")
private BigDecimal qtaCnf;
@javax.persistence.Column(name = "cod_aliq")
@SqlField(value = "cod_aliq", maxLength = 5)
private String codAliq;
@javax.persistence.Column(name = "cod_sco_art")
@SqlField(value = "cod_sco_art", maxLength = 5)
private String codScoArt;
@javax.persistence.Column(name = "cod_tcol_ui")
@SqlField(value = "cod_tcol_ui")
private String codTcolUi;
@javax.persistence.Column(name = "cod_tcol_ul")
@SqlField(value = "cod_tcol_ul")
private String codTcolUl;
@javax.persistence.Column(name = "articolo_composto")
@SqlField(value = "articolo_composto", maxLength = 1, nullable = false, defaultObjectValue = "N")
private String articoloComposto;
@javax.persistence.Column(name = "esposizione_comp")
@SqlField(value = "esposizione_comp", maxLength = 1, nullable = false, defaultObjectValue = "N")
private String esposizioneComp;
@javax.persistence.Column(name = "descrizione_estesa")
@SqlField(value = "descrizione_estesa", maxLength = 4096)
private String descrizioneEstesa;
@javax.persistence.Column(name = "cod_ult_forn")
@SqlField(value = "cod_ult_forn", maxLength = 5)
private String codUltForn;
@javax.persistence.Column(name = "data_ult_car")
@SqlField(value = "data_ult_car")
private Date dataUltCar;
@javax.persistence.Column(name = "val_ult_car")
@SqlField(value = "val_ult_car")
private BigDecimal valUltCar;
@javax.persistence.Column(name = "cod_ult_clie")
@SqlField(value = "cod_ult_clie", maxLength = 5)
private String codUltClie;
@javax.persistence.Column(name = "data_ult_scar")
@SqlField(value = "data_ult_scar")
private Date dataUltScar;
@javax.persistence.Column(name = "val_ult_scar")
@SqlField(value = "val_ult_scar")
private BigDecimal valUltScar;
@javax.persistence.Column(name = "tipo_codice")
@SqlField(value = "tipo_codice", maxLength = 10)
private String tipoCodice;
@javax.persistence.Column(name = "note")
@SqlField(value = "note", maxLength = 255)
private String note;
@javax.persistence.Column(name = "posizione")
@SqlField(value = "posizione", maxLength = 15)
private String posizione;
@javax.persistence.Column(name = "colli_pedana")
@SqlField(value = "colli_pedana", defaultObjectValue = "1")
private BigDecimal colliPedana;
@javax.persistence.Column(name = "unt_mis2")
@FK(tableName = "mtb_unt_mis", columnName = "unt_mis")
@SqlField(value = "unt_mis2", maxLength = 3)
private String untMis2;
@javax.persistence.Column(name = "rap_conv2")
@SqlField(value = "rap_conv2", defaultObjectValue = "1")
private BigDecimal rapConv2;
@javax.persistence.Column(name = "flag_incl_listino")
@SqlField(value = "flag_incl_listino", maxLength = 1, nullable = false, defaultObjectValue = "S")
private String flagInclListino;
@javax.persistence.Column(name = "unt_mis3")
@FK(tableName = "mtb_unt_mis", columnName = "unt_mis")
@SqlField(value = "unt_mis3", maxLength = 3)
private String untMis3;
@javax.persistence.Column(name = "rap_conv3")
@SqlField(value = "rap_conv3", defaultObjectValue = "1")
private BigDecimal rapConv3;
@javax.persistence.Column(name = "cod_mart_stat")
@SqlField(value = "cod_mart_stat", maxLength = 15)
private String codMartStat;
@javax.persistence.Column(name = "cod_mcon")
@SqlField(value = "cod_mcon", maxLength = 5)
private String codMcon;
@javax.persistence.Column(name = "cod_mgrp")
@SqlField(value = "cod_mgrp", maxLength = 5, nullable = false)
private String codMgrp;
@javax.persistence.Column(name = "cod_msfa")
@SqlField(value = "cod_msfa", maxLength = 6)
private String codMsfa;
@javax.persistence.Column(name = "cod_msgr")
@SqlField(value = "cod_msgr", maxLength = 5, nullable = false)
private String codMsgr;
@javax.persistence.Column(name = "cod_mstp")
@SqlField(value = "cod_mstp", maxLength = 5)
private String codMstp;
@javax.persistence.Column(name = "cod_mtip")
@SqlField(value = "cod_mtip", maxLength = 5)
private String codMtip;
@javax.persistence.Column(name = "descrizione_stat")
@SqlField(value = "descrizione_stat", maxLength = 40)
private String descrizioneStat;
@javax.persistence.Column(name = "flag_stato")
@SqlField(value = "flag_stato", maxLength = 1, nullable = false, defaultObjectValue = "A")
private String flagStato;
@javax.persistence.Column(name = "cambio_divi_car")
@SqlField(value = "cambio_divi_car", nullable = false)
private BigDecimal cambioDiviCar;
@javax.persistence.Column(name = "cambio_divi_scar")
@SqlField(value = "cambio_divi_scar", nullable = false)
private BigDecimal cambioDiviScar;
@javax.persistence.Column(name = "gg_scad_partita")
@SqlField(value = "gg_scad_partita", nullable = false, defaultObjectValue = "0")
private Integer ggScadPartita;
@javax.persistence.Column(name = "volume_mc")
@SqlField(value = "volume_mc", defaultObjectValue = "0")
private BigDecimal volumeMc;
@javax.persistence.Column(name = "flag_esponi_prz")
@SqlField(value = "flag_esponi_prz", maxLength = 1, nullable = false, defaultObjectValue = "N")
private String flagEsponiPrz;
@javax.persistence.Column(name = "data_ult_var")
@SqlField(value = "data_ult_var", format = CommonConstants.SYSDATE)
private Date dataUltVar;
@javax.persistence.Column(name = "perc_sfrido")
@SqlField(value = "perc_sfrido", nullable = false, defaultObjectValue = "0")
private BigDecimal percSfrido;
@javax.persistence.Column(name = "cod_barre_imb")
@SqlField(value = "cod_barre_imb", maxLength = 40)
private String codBarreImb;
@javax.persistence.Column(name = "flag_calc_prz")
@SqlField(value = "flag_calc_prz", maxLength = 1, nullable = false, defaultObjectValue = "K")
private String flagCalcPrz;
@javax.persistence.Column(name = "esposizione_comp_acq")
@SqlField(value = "esposizione_comp_acq", maxLength = 1, nullable = false, defaultObjectValue = "N")
private String esposizioneCompAcq;
@javax.persistence.Column(name = "flag_calc_prz_acq")
@SqlField(value = "flag_calc_prz_acq", maxLength = 1, nullable = false, defaultObjectValue = "K")
private String flagCalcPrzAcq;
@javax.persistence.Column(name = "diacod")
@SqlField(value = "diacod", maxLength = 40)
private String diacod;
@javax.persistence.Column(name = "plu")
@SqlField(value = "plu", maxLength = 6)
private String plu;
@javax.persistence.Column(name = "part_iva_prod")
@SqlField(value = "part_iva_prod", maxLength = 20)
private String partIvaProd;
@javax.persistence.Column(name = "rag_soc_prod")
@SqlField(value = "rag_soc_prod", maxLength = 40)
private String ragSocProd;
@javax.persistence.Column(name = "flag_rap_conv_variabile")
@SqlField(value = "flag_rap_conv_variabile", maxLength = 1, nullable = false, defaultObjectValue = "N")
private String flagRapConvVariabile;
@javax.persistence.Column(name = "flag_mov_art_mag")
@SqlField(value = "flag_mov_art_mag", maxLength = 1, nullable = false, defaultObjectValue = "S")
private String flagMovArtMag;
@javax.persistence.Column(name = "flag_tracciabilita")
@SqlField(value = "flag_tracciabilita", maxLength = 1, nullable = false, defaultObjectValue = "N")
private String flagTracciabilita;
@javax.persistence.Column(name = "tara_kg")
@SqlField(value = "tara_kg", defaultObjectValue = "0")
private BigDecimal taraKg;
@javax.persistence.Column(name = "colli_strato")
@SqlField(value = "colli_strato", nullable = false, defaultObjectValue = "1")
private BigDecimal colliStrato;
@javax.persistence.Column(name = "flag_qta_cnf_fissa")
@SqlField(value = "flag_qta_cnf_fissa", maxLength = 1, nullable = false, defaultObjectValue = "S")
private String flagQtaCnfFissa;
@javax.persistence.Column(name = "flag_colli_pedana_fisso")
@SqlField(value = "flag_colli_pedana_fisso", maxLength = 1, nullable = false, defaultObjectValue = "S")
private String flagColliPedanaFisso;
@javax.persistence.Column(name = "cod_ccon_costi")
@SqlField(value = "cod_ccon_costi", maxLength = 6)
private String codCconCosti;
@javax.persistence.Column(name = "cod_ccon_ricavi")
@SqlField(value = "cod_ccon_ricavi", maxLength = 6)
private String codCconRicavi;
@javax.persistence.Column(name = "cod_dgrp_art")
@SqlField(value = "cod_dgrp_art", maxLength = 5)
private String codDgrpArt;
@javax.persistence.Column(name = "cod_divi_car")
@SqlField(value = "cod_divi_car", maxLength = 5, nullable = false)
private String codDiviCar;
@javax.persistence.Column(name = "cod_divi_scar")
@SqlField(value = "cod_divi_scar", maxLength = 5, nullable = false)
private String codDiviScar;
@javax.persistence.Column(name = "cod_ecr_cat")
@SqlField(value = "cod_ecr_cat", maxLength = 10)
private String codEcrCat;
@javax.persistence.Column(name = "cod_ecr_mcat")
@SqlField(value = "cod_ecr_mcat", maxLength = 10)
private String codEcrMcat;
@javax.persistence.Column(name = "cod_ecr_rep")
@SqlField(value = "cod_ecr_rep", maxLength = 10)
private String codEcrRep;
@javax.persistence.Column(name = "cod_ecr_stipo")
@SqlField(value = "cod_ecr_stipo", maxLength = 10)
private String codEcrStipo;
@javax.persistence.Column(name = "cod_ecr_tipo")
@SqlField(value = "cod_ecr_tipo", maxLength = 10)
private String codEcrTipo;
@javax.persistence.Column(name = "cod_grp_bolla")
@SqlField(value = "cod_grp_bolla", maxLength = 5)
private String codGrpBolla;
@javax.persistence.Column(name = "ingredienti")
@SqlField(value = "ingredienti", maxLength = 8000)
private String ingredienti;
@javax.persistence.Column(name = "id_art_equi")
@SqlField(value = "id_art_equi", maxLength = 25)
private String idArtEqui;
@javax.persistence.Column(name = "descr_cassa")
@SqlField(value = "descr_cassa", maxLength = 40)
private String descrCassa;
@javax.persistence.Column(name = "cod_nc_intracee")
@SqlField(value = "cod_nc_intracee", maxLength = 20)
private String codNcIntracee;
@javax.persistence.Column(name = "marchio")
@SqlField(value = "marchio", maxLength = 255)
private String marchio;
@javax.persistence.Column(name = "sezione")
@SqlField(value = "sezione")
private Integer sezione;
@javax.persistence.Column(name = "tipo_reg")
@SqlField(value = "tipo_reg", maxLength = 1)
private String tipoReg;
@javax.persistence.Column(name = "tipo_stock")
@SqlField(value = "tipo_stock", maxLength = 1)
private String tipoStock;
@javax.persistence.Column(name = "qta_multipla_ord")
@SqlField(value = "qta_multipla_ord")
private BigDecimal qtaMultiplaOrd;
@MapToTable(value = "flag_kit")
@Transient
private String flagKit;
@javax.persistence.Column(name = "cod_forn_cv")
@SqlField(value = "cod_forn_cv", maxLength = 5)
private String codFornCv;
@javax.persistence.Column(name = "cpa")
@SqlField(value = "cpa", maxLength = 5)
private String cpa;
@javax.persistence.Column(name = "taric")
@SqlField(value = "taric", maxLength = 5)
private String taric;
@javax.persistence.Column(name = "sezione_dogana")
@SqlField(value = "sezione_dogana", maxLength = 6)
private String sezioneDogana;
@javax.persistence.Column(name = "flag_peso_egalizzato")
@SqlField(value = "flag_peso_egalizzato", nullable = false, defaultObjectValue = "0")
private Boolean flagPesoEgalizzato;
@javax.persistence.Column(name = "cod_jfas_costi")
@SqlField(value = "cod_jfas_costi", maxLength = 5)
private String codJfasCosti;
@javax.persistence.Column(name = "cod_jfas_ricavi")
@SqlField(value = "cod_jfas_ricavi", maxLength = 5)
private String codJfasRicavi;
@Transient
private String mtbAartEqui_descrizione;
@javax.persistence.Column(name = "flag_arr_prz_vend_iva")
@SqlField(value = "flag_arr_prz_vend_iva", nullable = false, defaultObjectValue = "1")
private Boolean flagArrPrzVendIva;
@javax.persistence.Column(name = "classificazione_abc")
@SqlField(value = "classificazione_abc", maxLength = 1)
private String classificazioneAbc;
@javax.persistence.Column(name = "tipo_codice_imballo")
@SqlField(value = "tipo_codice_imballo", maxLength = 10)
private String tipoCodiceImballo;
@javax.persistence.Column(name = "flag_stampa_docu_vend")
@SqlField(value = "flag_stampa_docu_vend", nullable = false, defaultObjectValue = "1")
private Boolean flagStampaDocuVend;
@javax.persistence.Column(name = "flag_reso_tec")
@SqlField(value = "flag_reso_tec", nullable = false, defaultObjectValue = "0")
private Boolean flagResoTec;
@javax.persistence.Column(name = "cod_mssfa")
@SqlField(value = "cod_mssfa", maxLength = 6)
private String codMssfa;
@javax.persistence.Column(name = "cod_linea")
@SqlField(value = "cod_linea", maxLength = 6)
private String codLinea;
@javax.persistence.Column(name = "cod_slinea")
@SqlField(value = "cod_slinea", maxLength = 6)
private String codSlinea;
@javax.persistence.Column(name = "cod_sslinea")
@SqlField(value = "cod_sslinea", maxLength = 6)
private String codSslinea;
@javax.persistence.ManyToOne(fetch = javax.persistence.FetchType.LAZY)
@javax.persistence.JoinColumn(name = "unt_mis", insertable = false, updatable = false)
private MtbUntMis mtbUntMis;
@Transient
private boolean updArtEqui = true;
@Priority(1)
@Transient
//Compatible with EntityBase
private List<MtbUntMis> mtbUntMisList;
@Priority(1)
@Transient
private MtbAartMarchio mtbAartMarchio;
@Priority(1)
@Transient
private MtbAartEqui mtbAartEqui;
@Priority(1)
private List<MtbUntMis> mtbUntMis;
@Priority(value = 101, copyPk = false)
@Transient
private List<MtbAart> articoliEquivalenti;
@EntityChild
@javax.persistence.OneToMany(fetch = javax.persistence.FetchType.LAZY, mappedBy = "mtbAart")
private List<MtbAartBarCode> mtbAartBarCode = new ArrayList<>();
/*@EntityChild
private List<MtbPart> mtbPart;*/
@EntityChild
@Transient
private List<MtbAartCarat> mtbAartCarat = new ArrayList<>();
@EntityChild
@Transient
private List<MtbAartAnag> mtbAartAnag = new ArrayList<>();
@EntityChild
@Transient
private List<MtbSpes> mtbSpes = new ArrayList<>();
@EntityChild
@Transient
private List<MtbComp> mtbComp = new ArrayList<>();
@EntityChild
@Transient
private List<MtbAartDesc> mtbAartDesc = new ArrayList<>();
@EntityChild
@Transient
private List<MtbAartLink> mtbAartLink = new ArrayList<>();
@EntityChild
@Transient
private List<MtbPartitaMag> mtbPartitaMag = new ArrayList<>();
@EntityChild
@Transient
private List<MrlAartSchTecSet> mrlAartSchTecSet = new ArrayList<>();
@EntityChild
@Transient
private List<MtbAartColori> mtbAartColori = new ArrayList<>();
@Priority(101)
@Transient
List<JtbCicl> jtbCicl;
@Transient
private List<MtbLisa> mtbLisa;
public MtbAart() {
@@ -1182,15 +1309,24 @@ public class MtbAart extends EntityBase implements EquatableEntityInterface<MtbA
return this;
}
public List<MtbUntMis> getMtbUntMis() {
public MtbUntMis getMtbUntMis() {
return mtbUntMis;
}
public MtbAart setMtbUntMis(List<MtbUntMis> mtbUntMis) {
public MtbAart setMtbUntMis(MtbUntMis mtbUntMis) {
this.mtbUntMis = mtbUntMis;
return this;
}
public List<MtbUntMis> getMtbUntMisList() {
return mtbUntMisList;
}
public MtbAart setMtbUntMisList(List<MtbUntMis> mtbUntMisList) {
this.mtbUntMisList = mtbUntMisList;
return this;
}
public String getClassificazioneAbc() {
return classificazioneAbc;
}
@@ -1326,6 +1462,24 @@ public class MtbAart extends EntityBase implements EquatableEntityInterface<MtbA
this.mtbAartEqui = mtbAartEqui;
}
public boolean isUpdArtEqui() {
return updArtEqui;
}
public MtbAart setUpdArtEqui(boolean updArtEqui) {
this.updArtEqui = updArtEqui;
return this;
}
public List<MtbAart> getArticoliEquivalenti() {
return articoliEquivalenti;
}
public MtbAart setArticoliEquivalenti(List<MtbAart> articoliEquivalenti) {
this.articoliEquivalenti = articoliEquivalenti;
return this;
}
public List<JtbCicl> getJtbCicl() {
return jtbCicl;
}

View File

@@ -13,6 +13,8 @@ import org.kie.api.definition.type.PropertyReactive;
import java.math.BigDecimal;
import java.util.Objects;
@javax.persistence.Entity
@javax.persistence.Table(name = MtbAartBarCode.ENTITY)
@PropertyReactive
@Table(MtbAartBarCode.ENTITY)
@JsonTypeName(MtbAartBarCode.ENTITY)
@@ -26,18 +28,28 @@ public class MtbAartBarCode extends EntityBase implements EquatableEntityInterfa
@PK
@SqlField(value = "cod_barre", maxLength = 40, nullable = false)
@javax.persistence.Id
@javax.persistence.Column(name = "cod_barre")
private String codBarre;
@SqlField(value = "cod_mart", maxLength = 15)
@javax.persistence.Column(name = "cod_mart")
private String codMart;
@javax.persistence.ManyToOne(fetch = javax.persistence.FetchType.LAZY)
@javax.persistence.JoinColumn(name = "cod_mart", insertable = false, updatable = false)
private MtbAart mtbAart;
@SqlField(value = "qta_cnf", nullable = false, defaultObjectValue = "1")
@javax.persistence.Column(name = "qta_cnf")
private BigDecimal qtaCnf;
@SqlField(value = "flag_primario", maxLength = 1, nullable = false, defaultObjectValue = "N")
@javax.persistence.Column(name = "flag_primario")
private String flagPrimario;
@SqlField(value = "tipo_cod_barre", maxLength = 10)
@javax.persistence.Column(name = "tipo_cod_barre")
private String tipoCodBarre;
public MtbAartBarCode() {
@@ -62,6 +74,14 @@ public class MtbAartBarCode extends EntityBase implements EquatableEntityInterfa
return this;
}
public MtbAart getMtbAart() {
return mtbAart;
}
public void setMtbAart(MtbAart mtbAart) {
this.mtbAart = mtbAart;
}
public BigDecimal getQtaCnf() {
return qtaCnf;
}

View File

@@ -9,12 +9,15 @@ import it.integry.ems_model.annotation.SqlField;
import it.integry.ems_model.annotation.Table;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.entity._enum.IBaseEnum;
import org.kie.api.definition.type.PropertyReactive;
import java.math.BigDecimal;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.kie.api.definition.type.PropertyReactive;
import javax.persistence.Transient;
import java.math.BigDecimal;
@javax.persistence.Entity
@javax.persistence.Table(name = MtbUntMis.ENTITY)
@Master
@PropertyReactive
@Table(MtbUntMis.ENTITY)
@@ -27,29 +30,40 @@ public class MtbUntMis extends EntityBase {
private static final long serialVersionUID = 1L;
@javax.persistence.Id
@javax.persistence.Column(name = "unt_mis")
@PK
@SqlField(value = "unt_mis", maxLength = 3, nullable = false)
private String untMis;
@javax.persistence.Column(name = "flag_dig")
@SqlField(value = "flag_dig", maxLength = 1, nullable = false, defaultObjectValue = "N")
private String flagDig;
@javax.persistence.Column(name = "cifre_dec")
@SqlField(value = "cifre_dec", nullable = false, defaultObjectValue = "0")
private BigDecimal cifreDec;
@javax.persistence.Column(name = "tipo_um")
@javax.persistence.Enumerated(javax.persistence.EnumType.STRING)
@SqlField(value = "tipo_um", maxLength = 2)
private TipoUM tipoUm;
@javax.persistence.Column(name = "flag_unita_kg")
@SqlField(value = "flag_unita_kg", maxLength = 1, nullable = false)
private String flagUnitaKg;
@javax.persistence.Column(name = "flag_attivo")
@SqlField(value = "flag_attivo", maxLength = 1, nullable = false)
private String flagAttivo;
@javax.persistence.Column(name = "grandezza")
@javax.persistence.Enumerated(javax.persistence.EnumType.STRING)
@SqlField(value = "grandezza")
private Grandezza grandezza;
@JsonProperty(value = "ordinamento")
@Transient
private Integer ordinamento;
public MtbUntMis() {

View File

@@ -3,10 +3,12 @@ package it.integry.ems_model.entity;
import com.fasterxml.jackson.annotation.JsonTypeName;
import it.integry.ems_model.annotation.*;
import it.integry.ems_model.base.EntityBase;
import org.kie.api.definition.type.PropertyReactive;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.kie.api.definition.type.PropertyReactive;
@javax.persistence.Entity
@javax.persistence.Table(name = StbEmail.ENTITY)
@Master
@PropertyReactive
@Table(StbEmail.ENTITY)
@@ -19,44 +21,58 @@ public class StbEmail extends EntityBase {
private static final long serialVersionUID = 1L;
@javax.persistence.Id
@javax.persistence.Column(name = "id_riga")
@PK
@SqlDetailId
@SqlField(value = "id_riga", nullable = false)
private Integer idRiga;
@javax.persistence.Column(name = "e_mail")
@SqlField(value = "e_mail", maxLength = 255, nullable = false)
private String eMail;
@javax.persistence.Column(name = "smtp")
@SqlField(value = "smtp", maxLength = 255)
private String smtp;
@javax.persistence.Column(name = "authentication")
@SqlField(value = "authentication", maxLength = 1, nullable = false, defaultObjectValue = "S")
private String authentication;
@javax.persistence.Column(name = "user_name")
@SqlField(value = "user_name", maxLength = 255)
private String userName;
@javax.persistence.Column(name = "password")
@SqlField(value = "password", maxLength = 255)
private String password;
@javax.persistence.Column(name = "port")
@SqlField(value = "port", maxLength = 255)
private String port;
@javax.persistence.Column(name = "SSL")
@SqlField(value = "SSL", maxLength = 1, nullable = false, defaultObjectValue = "N")
private String ssl;
@javax.persistence.Column(name = "crypt_password")
@SqlField(value = "crypt_password", maxLength = 1, nullable = false, defaultObjectValue = "S")
private String cryptPassword;
@javax.persistence.Column(name = "flag_default")
@SqlField(value = "flag_default", maxLength = 1, nullable = false, defaultObjectValue = "N")
private String flagDefault;
@javax.persistence.Column(name = "flag_default_contabilita")
@SqlField(value = "flag_default_contabilita", maxLength = 1, nullable = false, defaultObjectValue = "N")
private String flagDefaultContabilita;
@javax.persistence.Column(name = "imap")
@SqlField(value = "imap", maxLength = 255)
private String imap;
@javax.persistence.Column(name = "imap_port")
@SqlField(value = "imap_port", maxLength = 255)
private String imapPort;

View File

@@ -5,9 +5,11 @@ import java.util.Objects;
public class DtbOrdtKey {
private final String gestione;
private final Date dataOrd;
private final Integer numOrd;
private String gestione;
private Date dataOrd;
private Integer numOrd;
public DtbOrdtKey() {}
public DtbOrdtKey(String gestione, Date dataOrd, Integer numOrd) {
this.gestione = gestione;

View File

@@ -155,7 +155,7 @@ when
$entity : MtbAart((untMis != null || untMis2 != null || untMis3 != null ) && operation != OperationType.DELETE)
then
List<MtbUntMis> mtbUntMis = CommonRules.insUntMis(conn, $entity);
modify($entity){setMtbUntMis(mtbUntMis)}
modify($entity){setMtbUntMisList(mtbUntMis)}
end

View File

@@ -18,7 +18,8 @@ import java.time.LocalDate
import it.integry.ems_model.utility.UtilityLocalDate;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.migration._base.IntegryCustomer
import it.integry.ems.utility.entity.MtbUntMisUtils
import it.integry.ems.jpa.repository.MtbUntMisRepository
import it.integry.ems._context.ApplicationContextProvider
global Connection conn
global String username
@@ -226,7 +227,10 @@ when
eval(completeRulesEnabled)
$entity : MtbColr(artAPeso == null && codMart != null )
then
MtbUntMis mtbUntMis = MtbUntMisUtils.getMtbUntMisFromCodMart(customerDb, $entity.getCodMart());
MtbUntMisRepository mtbUntMisRepository = ApplicationContextProvider.getApplicationContext().getBean(MtbUntMisRepository.class);
MtbUntMis mtbUntMis = mtbUntMisRepository.findByCodMart($entity.getCodMart())
.orElse(null);
String artAPeso = "N";

View File

@@ -123,6 +123,7 @@ when
then
CommonRules.setIdArtEqui(conn, $mtbAart);
CommonRules.updateDescrDistintaBase(conn, $mtbAart);
CommonRules.updArtEqui(conn, $mtbAart);
end
rule "completeIdRigaCtbScad"

View File

@@ -0,0 +1,24 @@
package it.integry.ems.activity.dto;
public class SteUpFornitoriDTO {
private String partitaIva;
private Integer ggCons;
public String getPartitaIva() {
return partitaIva;
}
public SteUpFornitoriDTO setPartitaIva(String partitaIva) {
this.partitaIva = partitaIva;
return this;
}
public Integer getGgCons() {
return ggCons;
}
public SteUpFornitoriDTO setGgCons(Integer ggCons) {
this.ggCons = ggCons;
return this;
}
}

View File

@@ -687,6 +687,7 @@ public class ActivityService {
utenti.add("F0003");
utenti.add("F0237");
utenti.add("F0060");
utenti.add("L0019");
} else
utenti.add(user.getUsername());
@@ -1377,6 +1378,7 @@ public class ActivityService {
utenti.add("F0003");
utenti.add("F0237");
utenti.add("F0060");
utenti.add("L0019");
} else if (!activity.getEsito().equalsIgnoreCase(EmsRestConstants.NULL)) {
sql = Query.format(
"SELECT CAST(IIF(flag_invio_notifica = 'N', 0, 1) AS BIT)\n" +

View File

@@ -2,20 +2,20 @@ package it.integry.ems.activity.service;
import com.annimon.stream.Optional;
import com.annimon.stream.Stream;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import it.integry.common.var.CommonConstants;
import it.integry.ems.activity.dto.DescrizioneTipiAttivitaDTO;
import it.integry.ems.activity.dto.ModellinoDTO;
import it.integry.ems.activity.dto.SteUPEntryDTO;
import it.integry.ems.activity.dto.SteUpScoreDTO;
import it.integry.ems.activity.dto.*;
import it.integry.ems.entity_logger.db_schema_manager.component.SQLServerDBSchemaManager;
import it.integry.ems.entity_logger.db_schema_manager.dto.DatabaseTable;
import it.integry.ems.entity_logger.db_schema_manager.dto.DatabaseTableColumn;
import it.integry.ems.entity_logger.db_schema_manager.dto.DatabaseTableView;
import it.integry.ems.javabeans.RequestDataDTO;
import it.integry.ems.json.ResponseJSONObjectMapper;
import it.integry.ems.order.dto.UserGroupENUM;
import it.integry.ems.report.dto.JasperDTO;
import it.integry.ems.report.dto.PairsDTO;
import it.integry.ems.retail.pvmRetail.dto.FiltroArtDTO;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.service.MailService;
import it.integry.ems.service.ReportProcessor;
@@ -43,6 +43,7 @@ import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import org.springframework.web.context.ContextLoader;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
@@ -61,6 +62,7 @@ import static it.integry.ems.order.dto.UserGroupENUM.RILEVATORE;
import static it.integry.ems.order.dto.UserGroupENUM.TECNICO;
import static java.util.stream.Collectors.groupingBy;
import static org.codehaus.groovy.runtime.DefaultGroovyMethods.collect;
import static org.json.XMLTokener.entity;
@Service
@Scope("request")
@@ -738,7 +740,7 @@ public class SteUPService {
if (barcodes != null && !barcodes.isEmpty()) {
for (String barcode : barcodes) {
StbActivity art = getArticoli(barcode, null, activityTypeId, codJfas, userNamePv);
if( art != null)
if (art != null)
stbActivityList.add(art);
}
}
@@ -1481,8 +1483,13 @@ public class SteUPService {
String tipoAttivitaRotturaStock = setup.get("TIPO_ATTIVITA_ROTTURA_STOCK");
List<String> repartiFreschi = Arrays.asList(StringUtils.split(UtilityString.isNull(setup.get("REPARTI_FRESCHI"), ""), "|"));
List<String> tipiEsclusi = Arrays.asList(StringUtils.split(UtilityString.isNull(setup.get("EXCLUDE_COD_MTIP"), ""), "|"));
List<String> fornitori = Arrays.asList(StringUtils.split(UtilityString.isNull(setup.get("ELENCO_FORN_INEVASI"), ""), "|"));
String jsonFornitori = setup.get("FORN_INEVASI");
List<SteUpFornitoriDTO> fornitori = new ArrayList<>();
if (!UtilityString.isNullOrEmpty(jsonFornitori)) {
TypeReference<List<SteUpFornitoriDTO>> mapType = new TypeReference<List<SteUpFornitoriDTO>>() {
};
fornitori = new ResponseJSONObjectMapper().readValue(jsonFornitori, mapType);
}
String sql =
Query.format(
"select i.cod_mdep, stb_activity.cod_jfas, stb_activity.activity_id, stb_activity.user_name\n" +
@@ -1506,7 +1513,7 @@ public class SteUPService {
List<String> barcodes = new ArrayList<>();
List<String> idAttivita = new ArrayList<>();
for ( HashMap<String, Object> r: reparto.getValue() ) {
for (HashMap<String, Object> r : reparto.getValue()) {
String activityId = (String) r.get("activity_id");
idAttivita.add(activityId);
StbActivityFile stbActivityFile = new StbActivityFile()
@@ -1617,11 +1624,11 @@ public class SteUPService {
}
public List<String> verificaRottura(String codMdep, String codJfas,
LocalDate dataCreation,
List<String> repartiFreschi,
List<String> tipiEsclusi,
List<String> fornitori,
List<String> barcode) throws Exception {
LocalDate dataCreation,
List<String> repartiFreschi,
List<String> tipiEsclusi,
List<SteUpFornitoriDTO> fornitori,
List<String> barcode) throws Exception {
String tipoGriglia = setupGest.getSetupDet(multiDBTransactionManager.getPrimaryConnection(), "PVM", "RILEVAZIONI_STEUP", "TIPO_GRIGLIA", codJfas);
@@ -1636,7 +1643,7 @@ public class SteUPService {
case "A":
queryAssortimento =
"SELECT DISTINCT mtb_aart.cod_mart\n" +
" FROM mvw_barcode INNER JOIN mtb_aart ON mtb_aart.cod_mart = mvw_barcode.cod_mart \n";
" FROM mvw_barcode INNER JOIN mtb_aart ON mtb_aart.cod_mart = mvw_barcode.cod_mart \n";
break;
case "V":
queryAssortimento =
@@ -1696,7 +1703,7 @@ public class SteUPService {
//Eliminazione nuovi inserimenti in griglia
String sqlGriglia =
"WITH articoli AS ( \n" + queryKit + " ) \n" +
"SELECT g.cod_mart\n" +
"SELECT g.cod_mart\n" +
"FROM dbo.getgrigliaacquisto([DATA_CREAZIONE], NULL, [COD_MDEP], NULL, NULL) g\n" +
" INNER JOIN mtb_aart ON g.cod_mart = mtb_aart.cod_mart AND mtb_aart.cod_mgrp IN ([GRUPPI_MERC])\n" +
" INNER JOIN articoli ON g.cod_mart = articoli.cod_mart_griglia\n" +
@@ -1719,42 +1726,57 @@ public class SteUPService {
.filter(x -> !nuoviInserimenti.contains(x))
.collect(Collectors.toList());
//Verifica Inevasi
String sqlInevasi =
"WITH articoli AS (" + queryKit + ")\n" +
"SELECT DISTINCT articoli.cod_mart\n" +
"FROM dtb_ordt\n" +
" INNER JOIN dtb_ordr ON dtb_ordt.gestione = dtb_ordr.gestione\n" +
" AND dtb_ordt.data_ord = dtb_ordr.data_ord\n" +
" AND dtb_ordt.num_ord = dtb_ordr.num_ord\n" +
" INNER JOIN gtb_anag ON dtb_ordt.cod_anag = gtb_anag.cod_anag\n" +
" INNER JOIN mtb_aart ON dtb_ordr.cod_mart = mtb_aart.cod_mart\n" +
" INNER JOIN articoli ON mtb_aart.cod_mart = articoli.cod_mart_griglia\n" +
"WHERE dtb_ordt.gestione = 'A'\n" +
" AND dtb_ordt.flag_annulla = 'N'\n" +
" AND gtb_anag.part_iva IN ([ELENCO_FORNITORI])\n" +
" AND dtb_ordt.cod_mdep = [COD_MDEP]\n" +
" AND dtb_ordt.data_esportazione IS NOT NULL\n" +
" AND mtb_aart.cod_mgrp IN ( [GRUPPI_MERC] ) \n" +
" AND dtb_ordr.qta_evasa = 0\n" +
" AND dtb_ordr.data_cons BETWEEN DATEADD(DAY, -7, [DATA_ISPEZIONE]) AND [DATA_ISPEZIONE]\n";
if (fornitori.size() > 0) {
String whereCondFornitori = fornitori.stream().map(
x -> {
return "(gtb_anag.part_iva = " + UtilityDB.valueToString(x.getPartitaIva()) + " AND \n" +
" dtb_ordr.data_cons BETWEEN DATEADD(DAY, - (" + x.getGgCons() + "-1), " + UtilityDB.valueToString(dataCreation) + ") AND " + UtilityDB.valueToString(dataCreation) + ")\n";
}
).collect(Collectors.joining(" OR \n", " AND ( \n", " ) \n"));
sqlInevasi =
sqlInevasi
.replace("[DATA_ISPEZIONE]", UtilityDB.valueToString(dataCreation))
.replace("[COD_MDEP]", UtilityDB.valueToString(codMdep))
.replace("[GRUPPI_MERC]", UtilityDB.listValueToString(gruppiMerc))
.replace("[ELENCO_FORNITORI]", UtilityDB.listValueToString(fornitori));
//Verifica Inevasi
String sqlInevasi =
"WITH articoli AS (" + queryKit + "), \n" +
" ordini AS (SELECT articoli.cod_mart,\n" +
" dtb_ordt.data_ord,\n" +
" dtb_ordt.num_ord,\n" +
" dtb_ordr.qta_evasa,\n" +
" DENSE_RANK() OVER (PARTITION BY dtb_ordt.cod_anag, dtb_ordt.cod_mdep ORDER BY dtb_ordr.data_cons DESC) id_ord\n" +
" FROM dtb_ordt\n" +
" INNER JOIN dtb_ordr ON dtb_ordt.gestione = dtb_ordr.gestione\n" +
" AND dtb_ordt.data_ord = dtb_ordr.data_ord\n" +
" AND dtb_ordt.num_ord = dtb_ordr.num_ord\n" +
" INNER JOIN gtb_anag ON dtb_ordt.cod_anag = gtb_anag.cod_anag\n" +
" INNER JOIN mtb_aart ON dtb_ordr.cod_mart = mtb_aart.cod_mart\n" +
" INNER JOIN articoli ON mtb_aart.cod_mart = articoli.cod_mart_griglia\n" +
" WHERE dtb_ordt.gestione = 'A'\n" +
" AND dtb_ordt.flag_annulla = 'N'\n" +
" AND dtb_ordt.cod_mdep = [COD_MDEP]\n" +
" [WHERE_COND_FORN]\n" +
(!tipiEsclusi.isEmpty()?
" AND (mtb_aart.cod_mtip IS NULL OR mtb_aart.cod_mtip not in (" + UtilityDB.listValueToString(tipiEsclusi) + "))\n":""
) +
" AND dtb_ordt.data_esportazione IS NOT NULL\n" +
" AND mtb_aart.cod_mgrp IN ( [GRUPPI_MERC] ) \n)\n"+
"SELECT DISTINCT cod_mart\n" +
"FROM ordini\n" +
"WHERE id_ord <= 2\n" +
" AND qta_evasa = 0 ";
;
if (!tipiEsclusi.isEmpty()) {
sqlInevasi = UtilityDB.addwhereCond(sqlInevasi, "(mtb_aart.cod_mtip IS NULL OR mtb_aart.cod_mtip not in (" + UtilityDB.listValueToString(tipiEsclusi) + "))", true);
sqlInevasi =
sqlInevasi
.replace("[DATA_ISPEZIONE]", UtilityDB.valueToString(dataCreation))
.replace("[COD_MDEP]", UtilityDB.valueToString(codMdep))
.replace("[GRUPPI_MERC]", UtilityDB.listValueToString(gruppiMerc))
.replace("[WHERE_COND_FORN]", whereCondFornitori);
List<String> inevasi = UtilityDB.executeSimpleQueryOnlyFirstColumn(mdb.getPrimaryConnection(), sqlInevasi);
articoli = articoli.stream()
.filter(x -> !inevasi.contains(x))
.collect(Collectors.toList());
}
List<String> inevasi = UtilityDB.executeSimpleQueryOnlyFirstColumn(mdb.getPrimaryConnection(), sqlInevasi);
articoli = articoli.stream()
.filter(x -> !inevasi.contains(x))
.collect(Collectors.toList());
}
return articoli;

View File

@@ -469,7 +469,7 @@ public class AutofatturaService {
mailService.sendSystemErrorLog("[" + model.getProfileName() + " - " + azienda.getNomeDitta() + "][" + UtilityServer.getHostName() + "] Verifica autofatture ",
"Verifica autofatture",
"Sull'azienda " + azienda.getNomeDitta() + " non è presente nessuna email con flag default contabilità, non sarà possibile inviare la mail di verifica.",
(String) null, new Date());
(Exception) null, new Date());
} else {
String elencoMovimenti = String.join(CommonConstants.A_CAPO, listMov);
String elencoEmail = String.join(",", email);

View File

@@ -3,6 +3,7 @@ package it.integry.ems.contabil.service;
import it.integry.common.var.CommonConstants;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.service.MailService;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityDebug;
import it.integry.ems.utility.UtilityEntity;
@@ -18,9 +19,6 @@ import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import java.sql.SQLException;
import java.time.LocalDate;
import java.time.ZoneId;
@@ -279,7 +277,7 @@ public class PassaggioAnno {
private void sendMail(String message, List<String> email) throws Exception {
if (email == null || email.isEmpty()) {
mailService.sendSystemErrorLog("ATTENZIONE", "ATTENZIONE", message, (String) null, new Date());
mailService.sendSystemErrorLog("ATTENZIONE", "ATTENZIONE", message, (Exception) null, new Date());
} else {
String elencoEmail = String.join(",", email);
mailService.sendMail(elencoEmail, null, "ATTENZIONE", message);

View File

@@ -46,7 +46,7 @@ public class ScadenzeService {
mailService.sendSystemErrorLog("[" + multiDBTransactionManager.getPrimaryConnection().getProfileName() + "][" + UtilityServer.getHostName() + "] Verifica scadenze ",
"Verifica scadenze",
"Sull'azienda " + multiDBTransactionManager.getPrimaryConnection().getProfileName() + " ci sono scadenze con data documenti disallineata: " + CommonConstants.A_CAPO + elencoScadenze,
(String) null, new Date());
(Exception) null, new Date());
}
}

View File

@@ -74,6 +74,16 @@ public class DocumentiDirettiService {
throw new Exception("Tipo documento obbligatorio");
}
if ( dtbDoct.getDtbDocCarat() != null && !dtbDoct.getDtbDocCarat().isEmpty() ) {
dtbDoct.getDtbDocCarat().stream()
.filter(dc -> dc.getOperation().equals(OperationType.UPDATE))
.forEach(dc -> {
if ( UtilityString.isNullOrEmpty( dc.getValoreCarat() ) ) {
dc.setOperation( OperationType.DELETE );
}
} );
}
if ( dtbDoct.getMtbColt() != null ) {
dtbDoct.getMtbColt().stream().forEach(ul -> {
ul.getMtbColr().stream()

View File

@@ -0,0 +1,40 @@
package it.integry.ems.jpa;
import it.integry.ems.javabeans.RequestDataDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TenantInterceptor extends HandlerInterceptorAdapter {
@Autowired
private RequestDataDTO requestDataDTO;
// private static final String TENANT_HEADER = "X-Tenant-ID";
// private static final String DEFAULT_TENANT = "default"; // O recuperalo da configurazione
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String profileDb = requestDataDTO.getProfileDB();
// String tenantId = request.getHeader(TENANT_HEADER);
// Logica di fallback o recupero tenant da sessione/utente
if (profileDb == null || profileDb.isEmpty()) {
// Esempio: recupero da sessione se presente
// tenantId = (String) request.getSession().getAttribute("TENANT_ID");
// Fallback temporaneo per test
// tenantId = DEFAULT_TENANT;
}
if (profileDb != null) {
TenantContext.setCurrentTenant(profileDb);
}
return true;
}
}

View File

@@ -5,11 +5,11 @@ import com.annimon.stream.function.Predicate;
import com.fasterxml.jackson.databind.JsonNode;
import it.integry.common.var.CommonConstants;
import it.integry.ems._context.ApplicationContextProvider;
import it.integry.ems.jpa.repository.MtbAartRepository;
import it.integry.ems.logistic.dto.sm2.FiltroDistribuzioneColloDTO;
import it.integry.ems.product.importaz.service.ProductServices;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.entity.MtbAartUtils;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.base.EntityNotFound;
import it.integry.ems_model.entity.*;
@@ -31,12 +31,13 @@ import static java.util.stream.Collectors.groupingBy;
@Component
public class DistribuzioneColliService {
private final List<MtbColt> mCurrentlyDistributingMtbColt = new ArrayList<>();
public List<MtbColt> distribuzioneRigheColloNew(final FiltroDistribuzioneColloDTO filtroDistribuzioneColloDTO, boolean skipCommit) throws Exception {
MtbAartRepository mtbAartRepository = ContextLoader.getCurrentWebApplicationContext().getBean(MtbAartRepository.class);
MultiDBTransactionManager multiDBTransactionManager = ContextLoader.getCurrentWebApplicationContext().getBean(MultiDBTransactionManager.class);
EntityProcessor entityProcessor = ApplicationContextProvider.getApplicationContext().getBean(EntityProcessor.class);
ProductServices productServices = ContextLoader.getCurrentWebApplicationContext().getBean(ProductServices.class);
@@ -116,8 +117,7 @@ public class DistribuzioneColliService {
.map(MtbColr::getCodMart)
.collect(Collectors.toList());
List<MtbAart> mtbAarts = MtbAartUtils.getArticoliByCodMarts(codMarts, multiDBTransactionManager.getPrimaryConnection());
List<MtbAart> mtbAarts = mtbAartRepository.findByCodMartIn(codMarts);
//Lettura del filtro ordini
String filtroOrdini = sourceMtbColt.getFiltroOrdini();

View File

@@ -3,11 +3,11 @@ package it.integry.ems.order.Import.service;
import it.integry.common.var.CommonConstants;
import it.integry.ems._context.ApplicationContextProvider;
import it.integry.ems.exception.PrimaryDatabaseNotPresentException;
import it.integry.ems.jpa.repository.MtbAartRepository;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityEntity;
import it.integry.ems.utility.entity.MtbAartUtils;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.config.EmsRestConstants;
import it.integry.ems_model.entity.*;
@@ -44,6 +44,8 @@ public class OrdiniMaxiDataImportService {
private EntityProcessor entityProcessor;
private MaxiDataApiService maxiDataApiService;
@Autowired
private MtbAartRepository mtbAartRepository;
@PostConstruct
private void init() throws PrimaryDatabaseNotPresentException {
@@ -132,12 +134,11 @@ public class OrdiniMaxiDataImportService {
if (schedeProduzione == null || schedeProduzione.isEmpty())
return new ArrayList<>();
List<MtbAart> anafraficheArticoli = MtbAartUtils.getArticoliByCodMarts(
List<MtbAart> anafraficheArticoli = mtbAartRepository.findByCodMartIn(
schedeProduzione.stream()
.map(MaxidataUveBII40V2BLLUVE2kSchedeProd::getIdProdotto)
.distinct()
.collect(Collectors.toList()),
conn);
.collect(Collectors.toList()));
List<DtbOrdt> generatedOrders = new ArrayList<>();

View File

@@ -64,6 +64,9 @@ public class ProductController {
@Autowired
private MultiDBTransactionManager multiDBTransactionManager;
@Autowired
private it.integry.ems.jpa.repository.MtbAartRepository mtbAartRepository;
@Autowired
private ServiceChecker serviceChecker;
@@ -282,7 +285,20 @@ public class ProductController {
@RequestParam("codMart") String codMartString) throws Exception {
List<String> codMarts = Arrays.asList(codMartString.split(","));
List<MtbAart> mtbAartList = productServices.getArticoliByCodMarts(codMarts);
List<MtbAart> mtbAartList = mtbAartRepository.findWithBarcodeWithUntMisByCodMartIn(codMarts);
return new ServiceRestResponse(EsitoType.OK, null, mtbAartList);
}
@RequestMapping(value = EmsRestConstants.PATH_SMART_ENTERPRISE_GET_ART_BY_CODMART + "/jpa", method = RequestMethod.GET)
public @ResponseBody
ServiceRestResponse getArticoloByCodMartJpa(HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
@RequestParam("codMart") String codMartString) throws Exception {
List<String> codMarts = Arrays.asList(codMartString.split(","));
List<MtbAart> mtbAartList = mtbAartRepository.findByCodMartIn(codMarts);
return new ServiceRestResponse(EsitoType.OK, null, mtbAartList);
}

View File

@@ -16,7 +16,6 @@ import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityEntity;
import it.integry.ems.utility.entity.MtbAartUtils;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.db.ResultSetMapper;
import it.integry.ems_model.entity.*;
@@ -234,10 +233,6 @@ public class ProductServices {
return results;
}
public List<MtbAart> getArticoliByCodMarts(List<String> codMarts) throws Exception {
return MtbAartUtils.getArticoliByCodMarts(codMarts, multiDBTransactionManager.getPrimaryConnection());
}
public List<EntityBase> importArticoliBiolevante() throws Exception {
List<EntityBase> toBeProcessed = new ArrayList<EntityBase>();
List<EntityBase> entitiesReturn = new ArrayList<EntityBase>();

View File

@@ -148,7 +148,7 @@ public class ContrattiDiAcquistoHandlerService {
.setAtbOffr(value));
});
List<EntityBase> ret = entityProcessor.processEntityList(atbOfftsToSave, mdb, false, RequestDataDTO.systemMockupData());
List<EntityBase> ret = entityProcessor.processEntityList(atbOfftsToSave, mdb, false, RequestDataDTO.systemMockupData(mdb.getPrimaryConnection().getProfileName()));
UtilityEntity.throwEntitiesException(ret);
return ret;

View File

@@ -167,7 +167,10 @@ public class ContrattiDiVenditaHandlerService {
.setVtbOffr(value));
});
List<EntityBase> ret = entityProcessor.processEntityList(vtbOfftsToSave, multiDBTransactionManager, false, RequestDataDTO.systemMockupData());
List<EntityBase> ret = entityProcessor.processEntityList(vtbOfftsToSave,
multiDBTransactionManager,
false,
RequestDataDTO.systemMockupData(multiDBTransactionManager.getPrimaryConnection().getProfileName()));
UtilityEntity.throwEntitiesException(ret);
return ret;

View File

@@ -39,7 +39,6 @@ import org.springframework.context.annotation.Scope;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
@@ -214,7 +213,7 @@ public class ListiniVenditaServices {
"Allineamento prezzi articoli equivalenti ",
"Sull'azienda " + multiDBTransactionManager.getPrimaryConnection().getDbName() +
" errore nella procedura di allineamento prezzi articoli equivalenti " + vtbListData.getCodVlis(),
vtbListData.getException().getMessage(), new Date());
vtbListData.getException(), new Date());
}
}
}
@@ -443,7 +442,7 @@ public class ListiniVenditaServices {
mailService.sendSystemErrorLog("Consolida listini di vendita ",
"Consolida listini di vendita ",
"Sull'azienda " + multiDBTransactionManager.getPrimaryConnection().getDbName() + " errore nella procedura di cosolidamento listini sul listino " + vtbListData.getCodVlis(),
vtbListData.getException().getMessage(), new Date());
vtbListData.getException(), new Date());
}
}

View File

@@ -235,7 +235,7 @@ public class ImportRapportiniCronotime {
anomalie.add(AnomalieDTO.warning("Dispositivo : " + disp + " non codificato"));
}
for (String badge : badgeSet) {
anomalie.add(AnomalieDTO.warning("Badge num: " + badge + " non codificato"));
anomalie.add(AnomalieDTO.error("Badge num: " + badge + " non codificato"));
}
List<EntityBase> entities = entityProcessor.processEntityList(rapportini, true);

View File

@@ -14,6 +14,7 @@ import it.integry.ems.document.dto.ScaricoLavorazioneDTO;
import it.integry.ems.document.service.DocumentProdService;
import it.integry.ems.exception.MissingDataException;
import it.integry.ems.exception.PrimaryDatabaseNotPresentException;
import it.integry.ems.jpa.repository.MtbAartRepository;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.production.dto.*;
import it.integry.ems.production.event.ProductionOrderPausedEvent;
@@ -41,7 +42,6 @@ import it.integry.ems.service.production.ProductionOrderDataHandlerService;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityDebug;
import it.integry.ems.utility.UtilityEntity;
import it.integry.ems.utility.entity.MtbAartUtils;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.business_logic.dto.DatiMaterialiDTO;
import it.integry.ems_model.config.EmsRestConstants;
@@ -129,6 +129,8 @@ public class MesProductionServiceV2 {
@Autowired
private ApplicationEventPublisher applicationEventPublisher;
@Autowired
private MtbAartRepository mtbAartRepository;
public BasePanelAnswerDTO callSupervisorServiceGET(String serviceIp, int servicePort, String serviceName, HashMap<String, String> queryParams) throws Exception {
Integer timeout = setupGest.getSetupInteger(multiDBTransactionManager.getPrimaryConnection(), "MES", "HMI", "TIMEOUT_MACHINE_CONNECTION", 5);
@@ -1126,7 +1128,8 @@ public class MesProductionServiceV2 {
entityProcessor.processEntity(ordineLav, true, multiDBTransactionManager);
MtbAart mtbAart =
MtbAartUtils.getArticoloByCodMart(ordineLav.getCodProd(), multiDBTransactionManager.getPrimaryConnection());
mtbAartRepository.findByCodMart(ordineLav.getCodProd())
.orElse(null);
if (UtilityBigDecimal.isNullOrZero(dto.getQtaCollo())) {
if (UtilityBigDecimal.isNullOrZero(dto.getColliPedana())) {

View File

@@ -0,0 +1,34 @@
package it.integry.ems.retail.pvmRetail.controller;
import it.integry.ems.javabeans.RequestDataDTO;
import it.integry.ems.response.ServiceRestResponse;
import it.integry.ems.retail.pvmRetail.service.OrdiniAService;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.entity.key.DtbOrdtKey;
import org.springframework.context.annotation.Scope;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@Scope("request")
@RequestMapping("pvm/ordini_a")
public class OrdiniAController {
private final RequestDataDTO requestDataDTO;
private final MultiDBTransactionManager multiDBTransactionManager;
private final OrdiniAService ordiniAService;
public OrdiniAController(RequestDataDTO requestDataDTO, MultiDBTransactionManager multiDBTransactionManager, OrdiniAService ordiniAService) {
this.requestDataDTO = requestDataDTO;
this.multiDBTransactionManager = multiDBTransactionManager;
this.ordiniAService = ordiniAService;
}
@PostMapping("/checkOrder")
public ServiceRestResponse checkOrder(@RequestBody DtbOrdtKey orderKey) throws Exception{
return ServiceRestResponse.createPositiveResponse(ordiniAService.checkOrder(multiDBTransactionManager.getPrimaryConnection(),orderKey));
}
}

View File

@@ -0,0 +1,110 @@
package it.integry.ems.retail.pvmRetail.dto;
import it.integry.ems_model.annotation.SqlField;
import it.integry.ems_model.entity.DtbOrdr;
import it.integry.ems_model.entity.key.DtbOrdtKey;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class CheckOrderResponseDTO {
@SqlField("gestione")
private String gestione;
@SqlField("data_ord")
private Date dataOrd;
@SqlField("num_ord")
private Integer numOrd;
@SqlField("tot_merce")
private BigDecimal totMerce;
@SqlField("valore_min_ord")
private BigDecimal valoreMinOrd;
@SqlField("valore_minimo_superato")
private boolean valoreMinimoSuperato = true;
private Integer articoliInPromo = 0;
private List<DtbOrdr> articoliFuoriGriglia = new ArrayList<>();
private List<DtbOrdr> articoliQtaInvalida = new ArrayList<>();
public BigDecimal getTotMerce() {
return totMerce;
}
public CheckOrderResponseDTO setTotMerce(BigDecimal totMerce) {
this.totMerce = totMerce;
return this;
}
public BigDecimal getValoreMinOrd() {
return valoreMinOrd;
}
public CheckOrderResponseDTO setValoreMinOrd(BigDecimal valoreMinOrd) {
this.valoreMinOrd = valoreMinOrd;
return this;
}
public boolean isValoreMinimoSuperato() {
return valoreMinimoSuperato;
}
public CheckOrderResponseDTO setValoreMinimoSuperato(boolean valoreMinimoSuperato) {
this.valoreMinimoSuperato = valoreMinimoSuperato;
return this;
}
public Integer getArticoliInPromo() {
return articoliInPromo;
}
public CheckOrderResponseDTO setArticoliInPromo(Integer articoliInPromo) {
this.articoliInPromo = articoliInPromo;
return this;
}
public List<DtbOrdr> getArticoliFuoriGriglia() {
return articoliFuoriGriglia;
}
public CheckOrderResponseDTO setArticoliFuoriGriglia(List<DtbOrdr> articoliFuoriGriglia) {
this.articoliFuoriGriglia = articoliFuoriGriglia;
return this;
}
public List<DtbOrdr> getArticoliQtaInvalida() {
return articoliQtaInvalida;
}
public CheckOrderResponseDTO setArticoliQtaInvalida(List<DtbOrdr> articoliQtaInvalida) {
this.articoliQtaInvalida = articoliQtaInvalida;
return this;
}
public String getGestione() {
return gestione;
}
public CheckOrderResponseDTO setGestione(String gestione) {
this.gestione = gestione;
return this;
}
public Date getDataOrd() {
return dataOrd;
}
public CheckOrderResponseDTO setDataOrd(Date dataOrd) {
this.dataOrd = dataOrd;
return this;
}
public Integer getNumOrd() {
return numOrd;
}
public CheckOrderResponseDTO setNumOrd(Integer numOrd) {
this.numOrd = numOrd;
return this;
}
}

View File

@@ -0,0 +1,99 @@
package it.integry.ems.retail.pvmRetail.service;
import it.integry.ems.retail.pvmRetail.dto.CheckOrderResponseDTO;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems_model.entity.DtbOrdr;
import it.integry.ems_model.entity.key.DtbOrdtKey;
import it.integry.ems_model.utility.Query;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityList;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class OrdiniAService {
public CheckOrderResponseDTO checkOrder(Connection connection, DtbOrdtKey orderKey) throws Exception {
CheckOrderResponseDTO response = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(connection, Query.format(
"select gestione,\n" +
"data_ord,\n" +
"num_ord,\n" +
"tot_merce,\n" +
" valore_min_ord,\n" +
" cast(case\n" +
" when valore_min_ord is not null then\n" +
" case when tot_merce > valore_min_ord then 1 else 0 end\n" +
" else 1 end as bit) as valore_minimo_superato\n" +
"from dtb_ordt\n" +
" inner join atb_list al on al.cod_alis = dtb_ordt.listino\n" +
"where dtb_ordt.gestione = {}\n" +
" and dtb_ordt.data_ord = {}\n" +
" and dtb_ordt.num_ord = {}"
, orderKey.getGestione(), orderKey.getDataOrd(), orderKey.getNumOrd()), CheckOrderResponseDTO.class);
Integer articoliInPromo = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(connection,
Query.format("select count(*)\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" +
" inner join mtb_depo on dtb_ordt.cod_mdep = mtb_depo.cod_mdep\n" +
"where dtb_ordt.gestione = {}\n" +
" AND dtb_ordt.data_ord = {}\n" +
" AND dtb_ordt.num_ord = {}\n" +
" and dtb_ordr.cod_mart in (\n" +
" select distinct griglia.cod_mart\n" +
" from dbo.getGrigliaAcquisto({}, dtb_ordt.listino, mtb_depo.cod_mdep, null, null) griglia\n" +
" inner join\n" +
" dbo.getPromozioneVendita({}, {}, mtb_depo.cod_vlis, null, null) promo_vend\n" +
" on griglia.cod_mart = promo_vend.cod_mart\n" +
")\n", orderKey.getGestione(), orderKey.getDataOrd(), orderKey.getNumOrd(), orderKey.getDataOrd(), orderKey.getDataOrd(), orderKey.getDataOrd())
);
response.setArticoliInPromo(articoliInPromo);
List<DtbOrdr> righeFuoriGriglia = UtilityDB.executeSimpleQueryDTO(connection, Query.format(
"SELECT dtb_ordr.cod_mart, dtb_ordr.descrizione, dtb_ordr.qta_ord, dtb_ordr.unt_ord\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" +
"\n" +
"WHERE dtb_ordt.gestione = {}\n" +
" AND dtb_ordt.data_ord = {}\n" +
" AND dtb_ordt.num_ord = {}\n" +
" AND NOT EXISTS (SELECT *\n" +
" FROM dbo.getgrigliaacquisto({}, NULL, NULL, NULL, NULL) griglia\n" +
" WHERE tipo_variazione <> 'D'\n" +
" AND dtb_ordt.listino = griglia.cod_alis\n" +
" AND dtb_ordt.cod_mdep = griglia.cod_mdep\n" +
" AND dtb_ordr.cod_mart = griglia.cod_mart\n" +
" AND (dtb_ordr.cod_art_for IS NULL OR dtb_ordr.cod_art_for = griglia.cod_art_for))\n",
orderKey.getGestione(), orderKey.getDataOrd(), orderKey.getNumOrd(), orderKey.getDataOrd()
), DtbOrdr.class);
if (!UtilityList.isNullOrEmpty(righeFuoriGriglia)) {
response.setArticoliFuoriGriglia(righeFuoriGriglia);
}
List<DtbOrdr> articoliQtaOrdInvalida = UtilityDB.executeSimpleQueryDTO(connection, Query.format(
"select gestione,data_ord,num_ord, riga_ord, cod_mart, descrizione, unt_ord , qta_ord, qta_cnf\n" +
"from dtb_ordr\n" +
"where gestione = {}\n" +
" and data_ord = {}\n" +
" and num_ord = {}\n" +
" and unt_ord = 'pz'\n" +
"and not qta_ord %% qta_cnf = 0",
orderKey.getGestione(), orderKey.getDataOrd(), orderKey.getNumOrd()
), DtbOrdr.class);
if (!UtilityList.isNullOrEmpty(articoliQtaOrdInvalida)) {
response.setArticoliQtaInvalida(articoliQtaOrdInvalida);
}
return response;
}
}

View File

@@ -1,45 +1,48 @@
package it.integry.ems.retail.service;
import it.integry.ems.dynamic_cache.EntityCacheComponent;
import it.integry.ems.production.agribook.model.AgribookOrderDTO;
import it.integry.ems.jpa.repository.MtbAartRepository;
import it.integry.ems.retail.dto.AnomalieMerceDTO;
import it.integry.ems.retail.dto.DettaglioULDTO;
import it.integry.ems.retail.dto.SaveAnomaliaRequestDTO;
import it.integry.ems.retail.dto.SaveLivelloAnomaliaRequestDTO;
import it.integry.ems.retail.utility.AnomalieUlUtility;
import it.integry.ems.retail.wms.Utility.WMSUtility;
import it.integry.ems.retail.wms.generic.dto.MvwSitArtUdcDetInventarioDTO;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityEntity;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.config.EmsRestConstants;
import it.integry.ems_model.entity.MtbAart;
import it.integry.ems_model.entity.MtbAnomalieUl;
import it.integry.ems_model.entity.MtbColt;
import it.integry.ems_model.entity.MtbLivelliAnomalie;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.*;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityList;
import it.integry.ems_model.utility.UtilityLong;
import it.integry.ems_model.utility.UtilityString;
import it.integry.ems_model.utility.dto.PageableRequestDTO;
import it.integry.ems_model.utility.dto.PaginatedDTO;
import org.jfree.util.ObjectList;
import org.springframework.stereotype.Service;
import javax.validation.constraints.NotNull;
import java.util.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Service
public class AnomalieUlService {
private final EntityCacheComponent entityCacheComponent;
private final EntityProcessor entityProcessor;
private final MtbAartRepository mtbAartRepository;
public AnomalieUlService(EntityCacheComponent entityCacheComponent, EntityProcessor entityProcessor) {
public AnomalieUlService(EntityCacheComponent entityCacheComponent, EntityProcessor entityProcessor, MtbAartRepository mtbAartRepository) {
this.entityCacheComponent = entityCacheComponent;
this.entityProcessor = entityProcessor;
this.mtbAartRepository = mtbAartRepository;
}
public PaginatedDTO<AnomalieMerceDTO> getAnomalieProd(PageableRequestDTO requestDTO, Connection connection) throws Exception {
@@ -78,14 +81,13 @@ public class AnomalieUlService {
if (UtilityList.isNullOrEmpty(ulDetails))
return new ArrayList<>();
List<String> codMarts = ulDetails.stream().map(DettaglioULDTO::getCodMart).distinct().collect(Collectors.toList());
Map<String, MtbAart> artMap = entityCacheComponent.<MtbAart>getCachedEntitiesStream(connection.getIntegryCustomerDB(), MtbAart.ENTITY, art -> codMarts.contains(art.getCodMart())).collect(Collectors.toMap(MtbAart::getCodMart, x -> x));
ulDetails.forEach(ul -> {
MtbAart art = artMap.get(ul.getCodMart());
ul.setDescrizione(art.getDescrizione())
.setDescrizioneEstesa(art.getDescrizioneEstesa())
.setUntMis(art.getUntMis());
});
for (DettaglioULDTO ulDetail : ulDetails) {
final MtbAart mtbAart = mtbAartRepository.findByCodMart(ulDetail.getCodMart()).get();
ulDetail.setDescrizione(mtbAart.getDescrizione())
.setDescrizioneEstesa(mtbAart.getDescrizioneEstesa())
.setUntMis(mtbAart.getUntMis());
}
return ulDetails;
}

View File

@@ -1,20 +1,16 @@
package it.integry.ems.retail.service;
import com.annimon.stream.Stream;
import com.fasterxml.jackson.databind.ObjectMapper;
import it.integry.ems.exception.PrimaryDatabaseNotPresentException;
import it.integry.ems.expansion.RunnableThrowable;
import it.integry.ems.javabeans.RequestDataDTO;
import it.integry.ems.json.ResponseJSONObjectMapper;
import it.integry.ems.retail.dto.GiacenzaDTO;
import it.integry.ems.retail.pvmRetail.service.PvmService;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.service.MailService;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityDebug;
import it.integry.ems.utility.UtilityDirs;
import it.integry.ems.utility.UtilityEntity;
import it.integry.ems.utility.UtilityFile;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.db.ResultSetMapper;
import it.integry.ems_model.entity.CarelliGiacenzaProg;
@@ -31,12 +27,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.math.BigDecimal;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
@@ -209,7 +202,7 @@ public class GiacenzaService {
List<CarelliGiacenzaProg> carelliGiacenzaProgs = new ResultSetMapper().mapQuerySetToList(multiDBTransactionManager.getPrimaryConnection(), sql, CarelliGiacenzaProg.class, OperationType.INSERT);
List<EntityBase> entityRet = entityProcessor.processEntityList(carelliGiacenzaProgs, null, false, true, false, multiDBTransactionManager, false, false,
RequestDataDTO.systemMockupData());
RequestDataDTO.systemMockupData(multiDBTransactionManager.getPrimaryConnection().getProfileName()));
UtilityEntity.throwEntitiesException(entityRet);
}
@@ -224,7 +217,7 @@ public class GiacenzaService {
List<CarelliGiacenzaProg> carelliGiacenzaProgs = new ResultSetMapper().mapQuerySetToList(multiDBTransactionManager.getPrimaryConnection(), sql, CarelliGiacenzaProg.class, OperationType.DELETE);
List<EntityBase> entityRet = entityProcessor.processEntityList(carelliGiacenzaProgs, null, false, true, false, multiDBTransactionManager, false, false,
RequestDataDTO.systemMockupData());
RequestDataDTO.systemMockupData(multiDBTransactionManager.getPrimaryConnection().getProfileName()));
UtilityEntity.throwEntitiesException(entityRet);
}
@@ -489,7 +482,9 @@ public class GiacenzaService {
.setDataDoc(UtilityLocalDate.localDateToDate(collo.getDataCollo()))
.setDataDistribuzione(new Date());
collo.setOperation(OperationType.UPDATE);
entityProcessor.processEntity(collo, false, false, "", multiDBTransactionManager, RequestDataDTO.systemMockupData(), false, false);
entityProcessor.processEntity(collo, false, false, "",
multiDBTransactionManager,
RequestDataDTO.systemMockupData(multiDBTransactionManager.getPrimaryConnection().getProfileName()), false, false);
UtilityEntity.throwEntityException(collo);
}
}
@@ -510,7 +505,8 @@ public class GiacenzaService {
calls.add(() -> {
try {
for (EntityBase entityBase : entityList) {
entityProcessor.processEntity(entityBase, false, true, "", multiDBTransactionManager, RequestDataDTO.systemMockupData(), false, false);
entityProcessor.processEntity(entityBase, false, true, "", multiDBTransactionManager,
RequestDataDTO.systemMockupData(multiDBTransactionManager.getPrimaryConnection().getProfileName()), false, false);
}
} catch (Exception ex) {
@@ -522,7 +518,8 @@ public class GiacenzaService {
UtilityThread.executeParallel(calls);
} else {
for (EntityBase entityBase : entityBases) {
entityProcessor.processEntity(entityBase, false, true, "", multiDBTransactionManager, RequestDataDTO.systemMockupData(), false, false);
entityProcessor.processEntity(entityBase, false, true, "", multiDBTransactionManager,
RequestDataDTO.systemMockupData(multiDBTransactionManager.getPrimaryConnection().getProfileName()), false, false);
}
}
multiDBTransactionManager.commitAll();

View File

@@ -5,6 +5,7 @@ import it.integry.ems._context.ApplicationContextProvider;
import it.integry.ems.exception.MissingDataException;
import it.integry.ems.exception.PrimaryDatabaseNotPresentException;
import it.integry.ems.javabeans.RequestDataDTO;
import it.integry.ems.jpa.repository.MtbAartRepository;
import it.integry.ems.retail.wms.dto.*;
import it.integry.ems.retail.wms.exceptions.InvalidArticoloException;
import it.integry.ems.retail.wms.generic.dto.MvwSitArtUdcDetInventarioDTO;
@@ -17,7 +18,6 @@ import it.integry.ems.service.production.ProductionOrderDataHandlerService;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityEntity;
import it.integry.ems.utility.entity.MtbAartUtils;
import it.integry.ems_model.entity.*;
import it.integry.ems_model.entity._enum.GestioneEnum;
import it.integry.ems_model.rulescompleting.DroolsDataCompleting;
@@ -248,15 +248,16 @@ public class WMSUtility {
public static InsertUDSRowResponseDTO insertUDSLavorazioneRowMovement(Connection connection, InsertUDSRowRequestDTO insertUDSRowRequestDTO, String username) throws Exception {
DroolsDataCompleting droolsDataCompleting = ApplicationContextProvider.getApplicationContext().getBean(DroolsDataCompleting.class);
MtbAartRepository mtbAartRepository = ApplicationContextProvider.getApplicationContext().getBean(MtbAartRepository.class);
//Prendo solo la chiave
MtbColt targetMtbColt = insertUDSRowRequestDTO.getTargetMtbColt();
if (targetMtbColt == null)
throw new Exception("Nessun collo di destinazione specificato durante l'inserimento di una riga in una UDS (targetMtbColt null)");
MtbAart mtbAart = MtbAartUtils.getArticoloByCodMart(insertUDSRowRequestDTO.getCodMart(), connection);
if (mtbAart == null)
throw new InvalidArticoloException(insertUDSRowRequestDTO.getCodMart());
MtbAart mtbAart = mtbAartRepository.findByCodMart(insertUDSRowRequestDTO.getCodMart())
.orElseThrow(() -> new InvalidArticoloException(insertUDSRowRequestDTO.getCodMart()));
MtbColrInfoProd mtbColrInfoProd = null;
@@ -505,6 +506,8 @@ public class WMSUtility {
public static InsertUDCRowResponseDTO insertUDCRow(InsertUDCRowRequestDTO insertUDCRowRequestDTO, EntityProcessor entityProcessor, MultiDBTransactionManager multiDBTransactionManager) throws Exception {
MtbAartRepository mtbAartRepository = ApplicationContextProvider.getApplicationContext().getBean(MtbAartRepository.class);
MtbColt targetMtbColt = insertUDCRowRequestDTO.getTargetMtbColt();
if (targetMtbColt == null)
@@ -540,9 +543,8 @@ public class WMSUtility {
if (insertUDCRowRequestDTO.getCodMart() != null) {
MtbAart mtbAart = MtbAartUtils.getArticoloByCodMart(insertUDCRowRequestDTO.getCodMart(), multiDBTransactionManager.getPrimaryConnection());
if (mtbAart == null)
throw new InvalidArticoloException(insertUDCRowRequestDTO.getCodMart());
MtbAart mtbAart = mtbAartRepository.findByCodMart(insertUDCRowRequestDTO.getCodMart())
.orElseThrow(() -> new InvalidArticoloException(insertUDCRowRequestDTO.getCodMart()));
targetMtbColr
.setCodMart(mtbAart.getCodMart())

View File

@@ -1,6 +1,7 @@
package it.integry.ems.retail.wms.accettazione.service;
import it.integry.ems.javabeans.RequestDataDTO;
import it.integry.ems.jpa.repository.MtbAartRepository;
import it.integry.ems.product.importaz.service.ProductServices;
import it.integry.ems.retail.wms.accettazione.dto.AlreadyRegisteredUlDTO;
import it.integry.ems.retail.wms.accettazione.dto.BollaAccettazioneDTO;
@@ -8,7 +9,6 @@ import it.integry.ems.retail.wms.accettazione.dto.SitBollaAccettazioneDTO;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.user.UserSession;
import it.integry.ems.utility.entity.MtbAartUtils;
import it.integry.ems_model.entity.MtbAart;
import it.integry.ems_model.entity.WdtbDoct;
import it.integry.ems_model.types.OperationType;
@@ -43,6 +43,8 @@ public class WMSAccettazioneBollaService {
@Autowired
private UserSession userSession;
@Autowired
private MtbAartRepository mtbAartRepository;
public List<BollaAccettazioneDTO> retrieveBolleDaAccettare() throws Exception {
@@ -166,11 +168,11 @@ public class WMSAccettazioneBollaService {
if (sitBollaAccettazioneDTOS == null || sitBollaAccettazioneDTOS.isEmpty()) return null;
final List<MtbAart> articoliByCodMarts = MtbAartUtils.getArticoliByCodMarts(sitBollaAccettazioneDTOS.stream()
final List<MtbAart> articoliByCodMarts = mtbAartRepository.findByCodMartIn(sitBollaAccettazioneDTOS.stream()
.map(SitBollaAccettazioneDTO::getCodMart)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList()), multiDBTransactionManager.getPrimaryConnection());
.collect(Collectors.toList()));
final Map<String, BigDecimal> qtaCnfsByArt = articoliByCodMarts.stream()
.collect(Collectors.toMap(MtbAart::getCodMart, MtbAart::getQtaCnf));

View File

@@ -2,6 +2,7 @@ package it.integry.ems.retail.wms.accettazione.service;
import it.integry.ems.exception.PrimaryDatabaseNotPresentException;
import it.integry.ems.javabeans.RequestDataDTO;
import it.integry.ems.jpa.repository.MtbAartRepository;
import it.integry.ems.product.importaz.service.ProductServices;
import it.integry.ems.retail.pvmRetail.dto.OrdineInevasoDTO;
import it.integry.ems.retail.wms.Utility.WMSUtility;
@@ -69,6 +70,9 @@ public class WMSAccettazioneService {
@Autowired
private AziendaService aziendaService;
@Autowired
private MtbAartRepository mtbAartRepository;
public MtbColt createUDC(CreateUDCRequestDTO createUDCRequestDTO) throws Exception {
if (!userSession.isAttivo()) {
throw new UsernameNotFoundException("Utente " + userSession.getUsername() + " non riconoscuto!");
@@ -291,7 +295,7 @@ public class WMSAccettazioneService {
.distinct()
.collect(Collectors.toList());
List<MtbAart> mtbAarts = productServices.getArticoliByCodMarts(codMarts);
List<MtbAart> mtbAarts = mtbAartRepository.findByCodMartIn(codMarts);
MtbColt targetMtbColt = inputData.getTargetMtbColt();
targetMtbColt.setOperation(OperationType.SELECT_OBJECT);

View File

@@ -1,5 +1,6 @@
package it.integry.ems.retail.wms.documenti.service;
import it.integry.ems.jpa.repository.MtbUntMisRepository;
import it.integry.ems.product.importaz.service.ProductServices;
import it.integry.ems.retail.pvmRetail.dto.PvmArticoliChildDTO;
import it.integry.ems.retail.pvmRetail.dto.PvmArticoliDTO;
@@ -8,7 +9,6 @@ import it.integry.ems.retail.wms.documenti.dto.DocumentArtDTO;
import it.integry.ems.retail.wms.documenti.dto.RetrieveLottiDTO;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.entity.MtbUntMisUtils;
import it.integry.ems_model.entity.MtbUntMis;
import it.integry.ems_model.entity._enum.GestioneEnum;
import it.integry.ems_model.service.SetupGest;
@@ -38,6 +38,8 @@ public class WMSDocumentService {
@Autowired
private SetupGest setupGest;
@Autowired
private MtbUntMisRepository mtbUntMisRepository;
public Boolean checkDoc(String fornitore, String numDoc, Date dataDoc, String tipoDoc) throws Exception {
Connection conn = multiDBTransactionManager.getPrimaryConnection();
@@ -114,7 +116,8 @@ public class WMSDocumentService {
.distinct()
.collect(Collectors.toList());
final List<MtbUntMis> untMisFromCod = MtbUntMisUtils.getFromCods(untMiss, multiDBTransactionManager.getPrimaryConnection());
final List<MtbUntMis> untMisFromCod = mtbUntMisRepository.findByUntMisIn(untMiss);
for (DocumentArtDTO art : arts) {
final MtbUntMis mtbUntMis = untMisFromCod.stream().filter(x -> x.getUntMis().equalsIgnoreCase(art.getUntMis()))

View File

@@ -1,6 +1,7 @@
package it.integry.ems.retail.wms.generic.controller;
import it.integry.common.var.CommonConstants;
import it.integry.ems.jpa.repository.MtbAartRepository;
import it.integry.ems.product.importaz.service.ProductServices;
import it.integry.ems.response.ServiceRestResponse;
import it.integry.ems.retail.wms.generic.dto.*;
@@ -37,6 +38,8 @@ public class WMSArticoloController {
@Autowired
private UserSession userSession;
@Autowired
private MtbAartRepository mtbAartRepository;
@RequestMapping(value = "", method = RequestMethod.GET)
@@ -93,8 +96,7 @@ public class WMSArticoloController {
ServiceRestResponse searchByCodMartOrBarcode(@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
@RequestBody RetrieveArticoloByCodMartRequestDTO retrieveArticoloByCodMartRequest) throws Exception {
return ServiceRestResponse.createPositiveResponse(
productServices.getArticoliByCodMarts(retrieveArticoloByCodMartRequest.getCodMarts()));
return ServiceRestResponse.createPositiveResponse(mtbAartRepository.findByCodMartIn(retrieveArticoloByCodMartRequest.getCodMarts()));
}

View File

@@ -8,6 +8,7 @@ import it.integry.common.var.CommonConstants;
import it.integry.ems.Import.dto.AnomalieDTO;
import it.integry.ems.exception.MissingDataException;
import it.integry.ems.javabeans.RequestDataDTO;
import it.integry.ems.jpa.repository.MtbAartRepository;
import it.integry.ems.product.importaz.service.ProductServices;
import it.integry.ems.report.dto.PairsDTO;
import it.integry.ems.report.dto.ReportTypeDTO;
@@ -36,7 +37,6 @@ import it.integry.ems.service.dto.production.OrdineInevasoGroupMercDTO;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.user.UserSession;
import it.integry.ems.utility.UtilityEntity;
import it.integry.ems.utility.entity.MtbAartUtils;
import it.integry.ems.utility.entity.MtbDepoPosizioniUtils;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.config.EmsRestConstants;
@@ -106,6 +106,8 @@ public class WMSGenericService {
private WMSAccettazioneService wmsAccettazioneService;
@Autowired
private WMSGiacenzaULService wmsGiacenzaULService;
@Autowired
private MtbAartRepository mtbAartRepository;
public List<AvailableCodMdepDTO> getAvailableCodMdepsForUser() throws Exception {
@@ -787,7 +789,7 @@ public class WMSGenericService {
.distinct()
.toList();
final List<MtbAart> mtbAarts = MtbAartUtils.getArticoliByCodMarts(codMarts, multiDBTransactionManager.getPrimaryConnection());
final List<MtbAart> mtbAarts = mtbAartRepository.findByCodMartIn(codMarts);
//Carico la giacenza degli articoli
@@ -2530,17 +2532,17 @@ public class WMSGenericService {
.distinct()
.toList();
List<MtbAart> mtbAarts = MtbAartUtils.getArticoliByCodMarts(codMarts, multiDBTransactionManager.getPrimaryConnection());
List<MtbAart> mtbAarts = mtbAartRepository.findByCodMartIn(codMarts);
List<MtbColt> mtbColtToSave = new ArrayList<>();
List<MtbColr> successMtbColr = new ArrayList<>();
List<MtbColr> failedMtbColr = new ArrayList<>();
for (MtbColr inputMtbColr : resultRows) {
MtbAart mtbAart = Stream.of(mtbAarts)
MtbAart mtbAart = mtbAarts.stream()
.filter(x -> x.getCodMart().equals(inputMtbColr.getCodMart()))
.findFirst()
.get();
.orElse(null);
inputMtbColr
.setOnlyPkMaster(false);
@@ -3142,7 +3144,7 @@ public class WMSGenericService {
oldUdc.setMtbColr(WMSUtility.convertMvwItemsToMtbColrs(giacenzaItems));
WMSUtility.spostaArtsTraUL(multiDBTransactionManager.getPrimaryConnection(),
oldUdc, newUdc, false, entityProcessor, RequestDataDTO.systemMockupData());
oldUdc, newUdc, false, entityProcessor, RequestDataDTO.systemMockupData(multiDBTransactionManager.getPrimaryConnection().getProfileName()));
}

View File

@@ -1,6 +1,7 @@
package it.integry.ems.retail.wms.inventario.service;
import it.integry.common.var.CommonConstants;
import it.integry.ems.jpa.repository.MtbUntMisRepository;
import it.integry.ems.json.ResponseJSONObjectMapper;
import it.integry.ems.product.importaz.service.ProductServices;
import it.integry.ems.retail.pvmRetail.dto.PvmArticoliChildDTO;
@@ -11,7 +12,6 @@ import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityDirs;
import it.integry.ems.utility.UtilityFile;
import it.integry.ems.utility.entity.MtbUntMisUtils;
import it.integry.ems_model.entity.MtbInvenr;
import it.integry.ems_model.entity.MtbInvent;
import it.integry.ems_model.entity.MtbUntMis;
@@ -58,6 +58,8 @@ public class WMSInventarioService {
@Autowired
private ResponseJSONObjectMapper jsonObjectMapper;
@Autowired
private MtbUntMisRepository mtbUntMisRepository;
public MtbInvent loadInventarioIfExists(int inventoryId, String codMdep) throws Exception {
@@ -136,7 +138,7 @@ public class WMSInventarioService {
.distinct()
.collect(Collectors.toList());
final List<MtbUntMis> untMisFromCod = MtbUntMisUtils.getFromCods(untMiss, multiDBTransactionManager.getPrimaryConnection());
final List<MtbUntMis> untMisFromCod = mtbUntMisRepository.findByUntMisIn(untMiss);
for (InventarioArtDTO art : arts) {
final MtbUntMis mtbUntMis = untMisFromCod.stream().filter(x -> x.getUntMis().equalsIgnoreCase(art.getUntMis()))

View File

@@ -4,6 +4,7 @@ import com.annimon.stream.Stream;
import it.integry.ems.document.dto.ProduzioneOrdineDTO;
import it.integry.ems.document.dto.ScarichiArticoloDTO;
import it.integry.ems.javabeans.RequestDataDTO;
import it.integry.ems.jpa.repository.MtbAartRepository;
import it.integry.ems.logistic.dto.sm2.FiltroDistribuzioneColloDTO;
import it.integry.ems.product.importaz.service.ProductServices;
import it.integry.ems.retail.wms.Utility.WMSUtility;
@@ -23,7 +24,6 @@ import it.integry.ems.service.production.ProductionOrderDataHandlerService;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.user.UserSession;
import it.integry.ems.utility.UtilityEntity;
import it.integry.ems.utility.entity.MtbAartUtils;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.entity.*;
import it.integry.ems_model.entity._enum.GestioneEnum;
@@ -75,6 +75,8 @@ public class WMSLavorazioneService {
@Autowired
private AziendaService aziendaService;
@Autowired
private MtbAartRepository mtbAartRepository;
public MtbColt createUDS(CreateUDSRequestDTO createUDSRequestDTO) throws Exception {
@@ -265,9 +267,9 @@ public class WMSLavorazioneService {
entityProcessor.processEntity(targetMtbColt, true, multiDBTransactionManager);
MtbAart mtbAart = MtbAartUtils.getArticoloByCodMart(insertUDSRowRequestDTO.getCodMart(), multiDBTransactionManager.getPrimaryConnection());
if (mtbAart == null)
throw new InvalidArticoloException(insertUDSRowRequestDTO.getCodMart());
MtbAart mtbAart = mtbAartRepository.findByCodMart(insertUDSRowRequestDTO.getCodMart())
.orElseThrow(() -> new InvalidArticoloException(insertUDSRowRequestDTO.getCodMart()));
MtbColrInfoProd mtbColrInfoProd = null;
@@ -351,7 +353,8 @@ public class WMSLavorazioneService {
.distinct()
.collect(Collectors.toList());
List<MtbAart> mtbAarts = productServices.getArticoliByCodMarts(codMarts);
List<MtbAart> mtbAarts = mtbAartRepository.findByCodMartIn(codMarts);
//Prendo solo la chiave
MtbColt targetMtbColt = new MtbColt()
@@ -606,7 +609,7 @@ public class WMSLavorazioneService {
.setCodMdep(createUDCRequestDTO.getCodMdep())
.setCodVdes(createUDCRequestDTO.getCodVdes())
.setOraInizPrep(new Date())
.setPreparatoDa(UtilityString.isNull(createUDCRequestDTO.getPreparatoDa(),requestDataDTO.getUsername()))
.setPreparatoDa(UtilityString.isNull(createUDCRequestDTO.getPreparatoDa(), requestDataDTO.getUsername()))
.setPosizione(UtilityString.isNull(createUDCRequestDTO.getPosizione(), defaultPosizioneColliAccettazione))
.setCodTcol(createUDCRequestDTO.getCodTcol())
.setCodJfas(createUDCRequestDTO.getCodJfas())
@@ -859,7 +862,7 @@ public class WMSLavorazioneService {
public String getEtichettaSSCCOrdine(DtbOrdt ordine) throws Exception {
ordine.setOperation(OperationType.SELECT_OBJECT);
entityProcessor.processEntity(ordine,true,multiDBTransactionManager);
entityProcessor.processEntity(ordine, true, multiDBTransactionManager);
if (UtilityString.isNullOrEmpty(ordine.getCodProd())) {
return null;
}

View File

@@ -1,5 +1,6 @@
package it.integry.ems.retail.wms.lavorazione.service;
import it.integry.ems.jpa.repository.MtbAartRepository;
import it.integry.ems.production.service.MesProductionServiceV2;
import it.integry.ems.retail.wms.Utility.WMSUtility;
import it.integry.ems.retail.wms.exceptions.InvalidArticoloException;
@@ -11,7 +12,6 @@ import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.user.UserSession;
import it.integry.ems.utility.UtilityEntity;
import it.integry.ems.utility.entity.MtbAartUtils;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.entity.*;
import it.integry.ems_model.service.SetupGest;
@@ -52,6 +52,8 @@ public class WMSMaterialiService {
private UserSession userSession;
private final Logger logger = LogManager.getLogger();
@Autowired
private MtbAartRepository mtbAartRepository;
public VersaMaterialiResponseDTO versa(VersaMaterialiRequestDTO request) throws Exception {
final boolean versamentoDirettoEnabled = setupGest.getSetupBoolean(multiDBTransactionManager.getPrimaryConnection(), "PICKING", "PRODUZIONE", "FLAG_VERSAMENTO_DIRETTO");
@@ -94,9 +96,8 @@ public class WMSMaterialiService {
if (!versamentoDirettoEnabled) {
MvwSitArtUdcDetInventarioDTO itemDaVersare = artsInGiacenza.get(0);
MtbAart mtbAart = MtbAartUtils.getArticoloByCodMart(itemDaVersare.getCodMart(), multiDBTransactionManager.getPrimaryConnection());
if (mtbAart == null)
throw new InvalidArticoloException(request.getCodMart());
MtbAart mtbAart = mtbAartRepository.findByCodMart(itemDaVersare.getCodMart())
.orElseThrow(() -> new InvalidArticoloException(request.getCodMart()));
if (posizioneVersamento == null)
throw new Exception("Posizione di versamento non trovata (" + request.getPosizioneVersamento() + ")");
@@ -276,9 +277,8 @@ public class WMSMaterialiService {
final boolean versamentoDirettoEnabled = setupGest.getSetupBoolean(multiDBTransactionManager.getPrimaryConnection(), "PICKING", "PRODUZIONE", "FLAG_VERSAMENTO_DIRETTO");
final boolean forceAllToColli = setupGest.getSetupBoolean(multiDBTransactionManager.getPrimaryConnection(), "PICKING", "SETUP", "FLAG_FORCE_ALL_TO_COLLI");
MtbAart mtbAart = MtbAartUtils.getArticoloByCodMart(request.getCodMart(), multiDBTransactionManager.getPrimaryConnection());
if (mtbAart == null)
throw new InvalidArticoloException(request.getCodMart());
MtbAart mtbAart = mtbAartRepository.findByCodMart(request.getCodMart())
.orElseThrow(() -> new InvalidArticoloException(request.getCodMart()));
if (request.getMtbColtCarico() == null)
throw new Exception("Indicare una UL in cui effettuare il carico del materiale");

View File

@@ -1,6 +1,7 @@
package it.integry.ems.retail.wms.vendita.service;
import it.integry.ems.javabeans.RequestDataDTO;
import it.integry.ems.jpa.repository.MtbAartRepository;
import it.integry.ems.logistic.dto.sm2.FiltroDistribuzioneColloDTO;
import it.integry.ems.product.importaz.service.ProductServices;
import it.integry.ems.retail.pvmRetail.dto.OrdineInevasoDTO;
@@ -19,7 +20,6 @@ import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.user.UserSession;
import it.integry.ems.utility.UtilityEntity;
import it.integry.ems.utility.entity.MtbAartUtils;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.entity.DtbOrdt;
import it.integry.ems_model.entity.MtbAart;
@@ -71,6 +71,8 @@ public class WMSSpedizioneService {
@Autowired
private PvmServiceSave pvmServiceSave;
@Autowired
private MtbAartRepository mtbAartRepository;
public MtbColt createUDS(CreateUDSRequestDTO createUDSRequestDTO) throws Exception {
@@ -245,10 +247,8 @@ public class WMSSpedizioneService {
entityProcessor.processEntity(targetMtbColt, multiDBTransactionManager);
MtbAart mtbAart = MtbAartUtils.getArticoloByCodMart(insertUDSRowRequestDTO.getCodMart(), multiDBTransactionManager.getPrimaryConnection());
if (mtbAart == null)
throw new InvalidArticoloException(insertUDSRowRequestDTO.getCodMart());
MtbAart mtbAart = mtbAartRepository.findByCodMart(insertUDSRowRequestDTO.getCodMart())
.orElseThrow(() -> new InvalidArticoloException(insertUDSRowRequestDTO.getCodMart()));
final MtbColr targetMtbColr = new MtbColr()
.setCausale(MtbColr.Causale.DEFAULT)

View File

@@ -12,6 +12,7 @@ import it.integry.ems.dto.ExtendedStbActivity;
import it.integry.ems.file_sharer.IFileSharerAttachment;
import it.integry.ems.file_sharer.sharers.email.EmailFileAttachment;
import it.integry.ems.javabeans.RequestDataDTO;
import it.integry.ems.jpa.repository.MtbAartRepository;
import it.integry.ems.json.ResponseJSONObjectMapper;
import it.integry.ems.license.LicenseStatusDTO;
import it.integry.ems.report.dto.JasperDTO;
@@ -25,7 +26,6 @@ import it.integry.ems.service.exception.EmptyReportException;
import it.integry.ems.settings.Model.AvailableConnectionModel;
import it.integry.ems.settings.Model.SettingsModel;
import it.integry.ems.status.ServiceChecker;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.system.dto.ChangeLogDTO;
import it.integry.ems.system.dto.GestNameDTO;
@@ -70,8 +70,6 @@ import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
@@ -114,6 +112,8 @@ public class SystemController {
private NotificationService notificationService;
@Autowired
private CleanDirectoryComponent cleanDirectoryComponent;
@Autowired
private MtbAartRepository mtbAartRepository;
@GetMapping(value = "/system/ok")
@@ -834,6 +834,7 @@ public class SystemController {
utenti.add("F0003");
utenti.add("F0237");
utenti.add("F0060");
utenti.add("L0019");
} else {
utenti.add(stbActivity.getUserName());
}
@@ -1471,8 +1472,11 @@ public class SystemController {
public ServiceRestResponse test(HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String configuration) throws Exception {
final MtbAart byCodMart = mtbAartRepository.findWithBarcodeWithUntMisByCodMartIn(Collections.singletonList("000018"))
.stream().findFirst()
.orElse(null);
return ServiceRestResponse.createNegativeResponse("Errore super graveeeee");
return ServiceRestResponse.createPositiveResponse(byCodMart);
}
@RequestMapping(value = EmsRestConstants.PATH_STB_EMAIL_CONTENT_FATTURE_PASSIVE_DELETER, method = RequestMethod.POST)

View File

@@ -351,7 +351,7 @@ public class ExchangeOrdiniImportService {
.setDataInizProd(field.getDataInizProd())
.setCodVzon(field.getCodVzon())
.setDataOrd(field.getDataInizProd());
agribookFieldService.createField(multiDb, dto, EXCHANGE_USER, RequestDataDTO.systemMockupData());
agribookFieldService.createField(multiDb, dto, EXCHANGE_USER, RequestDataDTO.systemMockupData(multiDb.getPrimaryConnection().getProfileName()));
break;
case UPDATE:

View File

@@ -0,0 +1,5 @@
hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect
hibernate.show_sql=false
hibernate.format_sql=false
hibernate.hbm2ddl.auto=none

View File

@@ -84,6 +84,15 @@
<!-- &lt;!&ndash; JBoss RESTEasy Loggers &ndash;&gt;-->
<!-- <AsyncLogger name="org.jboss.resteasy" level="INFO" additivity="false"/>-->
<!-- <AsyncLogger name="org.hibernate.cache" level="DEBUG" additivity="false" includeLocation="true">-->
<!-- <AppenderRef ref="console" />-->
<!-- </AsyncLogger>-->
<!-- &lt;!&ndash; Hibernate Statistics Logger &ndash;&gt;-->
<!-- <AsyncLogger name="org.hibernate.stat" level="DEBUG" additivity="false" includeLocation="true">-->
<!-- <AppenderRef ref="console" />-->
<!-- </AsyncLogger>-->
<!-- Application Logger -->
<AsyncLogger name="it.integry" level="DEBUG" additivity="false" includeLocation="true">
<AppenderRef ref="console" />

View File

@@ -11,6 +11,8 @@
http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">
<context:component-scan base-package="it.integry"/>
<import resource="hibernate-context.xml"/>
<bean id="ppConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="ignoreUnresolvablePlaceholders" value="false"/>
<property name="locations">

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/data/jpa
http://www.springframework.org/schema/data/jpa/spring-jpa.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- MultiTenant DataSource -->
<bean id="multiTenantDataSource" class="it.integry.ems.jpa.MultiTenantDataSource">
<constructor-arg ref="basicConnectionPool"/>
<constructor-arg ref="settingsModel"/>
</bean>
<!-- JPA EntityManagerFactory -->
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="multiTenantDataSource"/>
<property name="packagesToScan">
<list>
<value>it.integry.ems_model.entity</value>
</list>
</property>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="false"/>
<property name="generateDdl" value="false"/> <!-- Disabilitato per sicurezza su DB esistenti -->
</bean>
</property>
<property name="jpaProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.temp.use_jdbc_metadata_defaults">false</prop> <!-- Per startup più veloce -->
<prop key="hibernate.jdbc.lob.non_contextual_creation">true</prop>
<!-- Cache Configuration -->
<!-- La cache di livello 1 (Session Cache) è sempre abilitata in Hibernate e non può essere disattivata. -->
<!-- Disabilitiamo esplicitamente la cache di livello 2 per evitare confusioni. -->
<prop key="hibernate.cache.use_second_level_cache">false</prop>
<!-- Abilita le statistiche di Hibernate per monitorare la cache di livello 1 -->
<prop key="hibernate.generate_statistics">true</prop>
</props>
</property>
</bean>
<!-- Transaction Manager -->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
<!-- Abilita i repository JPA -->
<jpa:repositories base-package="it.integry.ems.jpa.repository"/>
<!-- Abilita la gestione delle transazioni tramite annotazioni -->
<tx:annotation-driven transaction-manager="transactionManager"/>
</beans>