Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
This commit is contained in:
@@ -0,0 +1,153 @@
|
||||
package it.integry.ems.migration.model;
|
||||
|
||||
import it.integry.ems.migration._base.BaseMigration;
|
||||
import it.integry.ems.migration._base.MigrationModelInterface;
|
||||
|
||||
public class Migration_20250107154747 extends BaseMigration implements MigrationModelInterface {
|
||||
|
||||
@Override
|
||||
public void up() throws Exception {
|
||||
if (isHistoryDB())
|
||||
return;
|
||||
|
||||
|
||||
createOrUpdateView("gvw_situaz_ordini", "CREATE VIEW [dbo].[gvw_situaz_ordini] AS SELECT\n" +
|
||||
" '1' AS sezione,\n" +
|
||||
" dtb_ordt.gestione,\n" +
|
||||
" dtb_ordt.data_ord,\n" +
|
||||
" dtb_ordt.num_ord,\n" +
|
||||
" dtb_ordt.rif_ord,\n" +
|
||||
" dtb_ordt.persona_rif,\n" +
|
||||
" dtb_ordr.riga_ord,\n" +
|
||||
" 'ORDINE' AS cod_dtip,\n" +
|
||||
" dtb_ordt.data_ord AS data_doc,\n" +
|
||||
" CONVERT(varchar(1), NULL) AS ser_doc,\n" +
|
||||
" dtb_ordt.num_ord AS num_doc,\n" +
|
||||
" dtb_ordr.partita_mag,\n" +
|
||||
" dtb_ordt.cod_anag,\n" +
|
||||
" dtb_ordr.cod_mart,\n" +
|
||||
" dtb_ordr.cod_mart AS cod_mart_ord,\n" +
|
||||
" dtb_ordr.descrizione,\n" +
|
||||
" dtb_ordr.data_cons,\n" +
|
||||
" dtb_ordr.unt_ord,\n" +
|
||||
" dtb_ordr.cod_col,\n" +
|
||||
" dtb_ordr.cod_tagl,\n" +
|
||||
" dtb_ordr.qta_ord,\n" +
|
||||
" dtb_ordr.qta_evasa,\n" +
|
||||
" dtb_ordr.flag_evaso,\n" +
|
||||
" dtb_ordr.val_unt * (1 - sconto1 / 100) * (1 - sconto2 / 100) * (1 - sconto3 / 100) * (1 - sconto4 / 100) * (1 - sconto5 / 100) * (1 - sconto6 / 100) * (1 - sconto7 / 100) * (1 - sconto8 / 100) AS val_unt,\n" +
|
||||
" CAST(CASE\n" +
|
||||
" WHEN dtb_ordt.listino IS NOT NULL THEN\n" +
|
||||
" dbo.f_calcprznettoacq(\n" +
|
||||
" dtb_ordt.listino\n" +
|
||||
" , dbo.getGestSetup('ATB_LIST','SETUP','FORMULA_PREZZO_NETTO')\n" +
|
||||
" , dtb_ordr.sconto5\n" +
|
||||
" , dtb_ordr.sconto6\n" +
|
||||
" , dtb_ordr.sconto7\n" +
|
||||
" , dtb_ordr.sconto8\n" +
|
||||
" , 0\n" +
|
||||
" , 0\n" +
|
||||
" , 0\n" +
|
||||
" , 0\n" +
|
||||
" , dtb_ordr.perc_promo\n" +
|
||||
" , dtb_ordr.val_promo\n" +
|
||||
" , dtb_ordr.perc_oneri\n" +
|
||||
" , dtb_ordr.val_oneri\n" +
|
||||
" , dtb_ordr.val_unt)\n" +
|
||||
" ELSE 0 END AS NUMERIC(20, 5)) AS prezzo_netto_premi,\n" +
|
||||
" dtb_ordt.cod_divi,\n" +
|
||||
" gtb_divi.formato,\n" +
|
||||
" mtb_aart.peso_kg,\n" +
|
||||
" CONVERT(DATETIME, NULL) AS data_reg,\n" +
|
||||
" CONVERT(varchar(40), NULL) AS desc_col,\n" +
|
||||
" dtb_ordt.compilato_da,\n" +
|
||||
" dtb_ordt.controllato_da,\n" +
|
||||
" dtb_ordt.cod_jfas,\n" +
|
||||
" dtb_ordt.flag_evaso_prod,\n" +
|
||||
" dtb_ordt.qta_prod,\n" +
|
||||
" dtb_ordt.cod_mdep,\n" +
|
||||
" dtb_ordt.gestione_rif,\n" +
|
||||
" dtb_ordt.cod_vdes\n" +
|
||||
"FROM\n" +
|
||||
" dtb_ordr\n" +
|
||||
" INNER JOIN dtb_ordt 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" +
|
||||
" LEFT OUTER JOIN mtb_aart ON dtb_ordr.cod_mart = mtb_aart.cod_mart,\n" +
|
||||
" gtb_divi\n" +
|
||||
"WHERE\n" +
|
||||
" (dtb_ordt.cod_divi = gtb_divi.cod_divi)\n" +
|
||||
" AND (dtb_ordt.flag_annulla = 'N')\n" +
|
||||
" AND (dtb_ordr.flag_evaso <> 'A')\n" +
|
||||
"UNION ALL\n" +
|
||||
"SELECT\n" +
|
||||
" '2',\n" +
|
||||
" dtb_doct.gestione,\n" +
|
||||
" dtb_docr.data_ord,\n" +
|
||||
" dtb_docr.num_ord,\n" +
|
||||
" CONVERT(varchar(40), NULL),\n" +
|
||||
" CONVERT(varchar(40), NULL),\n" +
|
||||
" dtb_docr.riga_ord,\n" +
|
||||
" dtb_docr.cod_dtip,\n" +
|
||||
" dtb_docr.data_doc,\n" +
|
||||
" dtb_docr.ser_doc,\n" +
|
||||
" dtb_docr.num_doc,\n" +
|
||||
" dtb_docr.partita_mag,\n" +
|
||||
" dtb_doct.cod_anag,\n" +
|
||||
" dtb_docr.cod_mart,\n" +
|
||||
" dtb_ordr.cod_mart AS cod_mart_ord,\n" +
|
||||
" dtb_docr.descrizione,\n" +
|
||||
" dtb_ordr.data_cons,\n" +
|
||||
" dtb_docr.unt_doc,\n" +
|
||||
" dtb_docr.cod_col,\n" +
|
||||
" dtb_docr.cod_tagl,\n" +
|
||||
" 0 AS qta_ord,\n" +
|
||||
" dtb_docr.qta_doc,\n" +
|
||||
" CONVERT(varchar(1), NULL),\n" +
|
||||
" dtb_docr.val_unt * (1 - dtb_doct.sconto1 / 100) * (1 - dtb_doct.sconto2 / 100) * (1 - dtb_doct.sconto3 / 100) * (1 - dtb_doct.sconto4 / 100) * (1 - dtb_docr.sconto5 / 100) * (1 - dtb_docr.sconto6 / 100) * (1 - dtb_docr.sconto7 / 100) * (1 - dtb_docr.sconto8 / 100),\n" +
|
||||
" 0,\n" +
|
||||
" dtb_doct.cod_divi,\n" +
|
||||
" gtb_divi.formato,\n" +
|
||||
" mtb_aart.peso_kg,\n" +
|
||||
" dtb_doct.data_reg,\n" +
|
||||
" CONVERT(varchar(40), NULL) AS desc_col,\n" +
|
||||
" dtb_ordt.compilato_da,\n" +
|
||||
" dtb_ordt.controllato_da,\n" +
|
||||
" dtb_ordt.cod_jfas,\n" +
|
||||
" dtb_ordt.flag_evaso_prod,\n" +
|
||||
" dtb_ordt.qta_prod,\n" +
|
||||
" dtb_ordt.cod_mdep,\n" +
|
||||
" dtb_ordt.gestione_rif,\n" +
|
||||
" dtb_ordt.cod_vdes\n" +
|
||||
"FROM\n" +
|
||||
" dtb_docr\n" +
|
||||
" INNER JOIN dtb_doct ON (dtb_doct.cod_anag = dtb_docr.cod_anag)\n" +
|
||||
" AND (dtb_doct.cod_dtip = dtb_docr.cod_dtip)\n" +
|
||||
" AND (dtb_doct.data_doc = dtb_docr.data_doc)\n" +
|
||||
" AND (dtb_doct.ser_doc = dtb_docr.ser_doc)\n" +
|
||||
" AND (dtb_doct.num_doc = dtb_docr.num_doc)\n" +
|
||||
" LEFT OUTER JOIN dtb_ordr ON dtb_ordr.data_ord = dtb_docr.data_ord\n" +
|
||||
" AND dtb_ordr.num_ord = dtb_docr.num_ord\n" +
|
||||
" AND dtb_ordr.riga_ord = dtb_docr.riga_ord\n" +
|
||||
" LEFT OUTER JOIN mtb_aart ON dtb_docr.cod_mart = mtb_aart.cod_mart\n" +
|
||||
" LEFT OUTER JOIN dtb_ordt ON dtb_ordr.gestione = dtb_ordt.gestione\n" +
|
||||
" AND dtb_ordr.data_ord = dtb_ordt.data_ord\n" +
|
||||
" AND dtb_ordr.num_ord = dtb_ordt.num_ord,\n" +
|
||||
" gtb_divi,\n" +
|
||||
" dtb_tipi\n" +
|
||||
"WHERE\n" +
|
||||
" (dtb_doct.cod_divi = gtb_divi.cod_divi)\n" +
|
||||
" AND (dtb_doct.cod_dtip = dtb_tipi.cod_dtip)\n" +
|
||||
" AND (\n" +
|
||||
" dtb_tipi.segno_qta_car <> 0\n" +
|
||||
" OR dtb_tipi.segno_qta_scar <> 0\n" +
|
||||
" )\n" +
|
||||
" AND (dtb_tipi.tipo_emissione = 'DIRETTA')");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void down() throws Exception {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -24,91 +24,7 @@ public class LocalFolderDirectoryWatcher extends DirectoryWatcher {
|
||||
|
||||
private FileAlterationObserver observer;
|
||||
private FileAlterationMonitor monitor;
|
||||
private FileAlterationListener listener;
|
||||
|
||||
public LocalFolderDirectoryWatcher(ImportDirectoryOperationDTO operationDTO) {
|
||||
super(operationDTO);
|
||||
}
|
||||
|
||||
|
||||
public void setDirectoryWatcherEvents(final IDirectoryWatcherEvents directoryWatcherEvents) {
|
||||
this.directoryWatcherEvents = directoryWatcherEvents;
|
||||
|
||||
listener = new FileAlterationListener() {
|
||||
|
||||
@Override
|
||||
public void onStart(FileAlterationObserver observer) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDirectoryCreate(File directory) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDirectoryChange(File directory) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDirectoryDelete(File directory) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFileCreate(File file) {
|
||||
if (!isASubDirectory(file)) {
|
||||
if (getMatcher(fileFilter, file.getName()).matches()) {
|
||||
executor.execute(() -> {
|
||||
try {
|
||||
directoryWatcherEvents.onFileCreate(file);
|
||||
} catch (Exception ex) {
|
||||
logger.error(ex);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFileChange(File file) {
|
||||
if (!isASubDirectory(file)) {
|
||||
if (getMatcher(fileFilter, file.getName()).matches()) {
|
||||
executor.execute(() -> {
|
||||
directoryWatcherEvents.onFileChange(file);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFileDelete(File file) {
|
||||
if (!isASubDirectory(file)) {
|
||||
if (getMatcher(fileFilter, file.getName()).matches()) {
|
||||
executor.execute(() -> {
|
||||
directoryWatcherEvents.onFileDelete(file);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop(FileAlterationObserver observer) {
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
observer.addListener(listener);
|
||||
monitor.addObserver(observer);
|
||||
}
|
||||
|
||||
protected void start() throws Exception {
|
||||
observer = new FileAlterationObserver(path);
|
||||
monitor = new FileAlterationMonitor(10000);
|
||||
|
||||
listener = new FileAlterationListener() {
|
||||
private FileAlterationListener listener = new FileAlterationListener() {
|
||||
|
||||
@Override
|
||||
public void onStart(FileAlterationObserver observer) {
|
||||
@@ -179,6 +95,24 @@ public class LocalFolderDirectoryWatcher extends DirectoryWatcher {
|
||||
}
|
||||
};
|
||||
|
||||
public LocalFolderDirectoryWatcher(ImportDirectoryOperationDTO operationDTO) {
|
||||
super(operationDTO);
|
||||
}
|
||||
|
||||
|
||||
public void setDirectoryWatcherEvents(final IDirectoryWatcherEvents directoryWatcherEvents) {
|
||||
this.directoryWatcherEvents = directoryWatcherEvents;
|
||||
|
||||
// observer = new FileAlterationObserver(path);
|
||||
// monitor = new FileAlterationMonitor(10000);
|
||||
//
|
||||
// observer.addListener(listener);
|
||||
// monitor.addObserver(observer);
|
||||
}
|
||||
|
||||
protected void start() throws Exception {
|
||||
observer = new FileAlterationObserver(path);
|
||||
monitor = new FileAlterationMonitor(10000);
|
||||
|
||||
observer.addListener(listener);
|
||||
monitor.addObserver(observer);
|
||||
|
||||
@@ -78,6 +78,7 @@ import java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@RestController
|
||||
@Scope("request")
|
||||
@@ -200,7 +201,8 @@ public class SystemController {
|
||||
Date dataFine = UtilityDate.RecognizeDate(dataFineString);
|
||||
|
||||
String query =
|
||||
"SELECT log.activity_id "
|
||||
"SELECT log.activity_id, " +
|
||||
"' - ' + log.attivita + '( https://task.studioml.it/ViewTicket/' + log.activity_id + ' )'as activity_description "
|
||||
+ " FROM dbo.integry_changeLog( " + UtilityDB.valueToString(partIva) + ", " +
|
||||
UtilityDB.valueDateToString(dataInizio, CommonConstants.DATE_FORMAT_YMD) + ", " +
|
||||
UtilityDB.valueDateToString(dataFine, CommonConstants.DATE_FORMAT_YMD) + ") log "
|
||||
@@ -208,23 +210,19 @@ public class SystemController {
|
||||
+ " WHERE log.activity_id is not null"
|
||||
+ " AND activity_result_id = 'DA INSTALLARE'";
|
||||
|
||||
List<String> activityIdsToClose = UtilityDB.executeSimpleQueryOnlyFirstColumn(multiDBTransactionManager.getPrimaryConnection(), query);
|
||||
List<StbActivity> stbActivitiesToUpdate = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), query, StbActivity.class);
|
||||
|
||||
List<StbActivity> stbActivitiesToUpdate = Stream.of(activityIdsToClose)
|
||||
.map(x -> {
|
||||
stbActivitiesToUpdate.stream().forEach
|
||||
(x -> {
|
||||
StbActivity stbActivity = new StbActivity()
|
||||
.setActivityId(x)
|
||||
.setActivityResultId(activityResultId);
|
||||
stbActivity
|
||||
.setOperation(OperationType.UPDATE);
|
||||
return stbActivity;
|
||||
})
|
||||
.toList();
|
||||
|
||||
});
|
||||
|
||||
String activityTypeId = "AGGIORNAMENTI SOFTWARE";
|
||||
|
||||
String sql = "SELECT TOP 1 gtb_anag.cod_anag, jc.cod_jcom " +
|
||||
String sql = "SELECT TOP 1 gtb_anag.cod_anag, jc.cod_jcom, jc.cod_jflav_tec " +
|
||||
"FROM wtb_clie " +
|
||||
" INNER JOIN gtb_anag ON wtb_clie.cod_anag = gtb_anag.cod_anag " +
|
||||
" INNER JOIN wtb_clie wc on wtb_clie.user_name = wc.user_name " +
|
||||
@@ -237,6 +235,7 @@ public class SystemController {
|
||||
|
||||
String codAnag = UtilityHashMap.getValueIfExists(result, "cod_anag");
|
||||
String codJcom = UtilityHashMap.getValueIfExists(result, "cod_jcom");
|
||||
String respComm = UtilityHashMap.getValueIfExists(result, "cod_jflav_tec");
|
||||
|
||||
if (codJcom == null) {
|
||||
throw new Exception("Codice commessa non trovata per il cliente " + partIva);
|
||||
@@ -294,7 +293,32 @@ public class SystemController {
|
||||
|
||||
entityProcessor.processEntityList(stbActivitiesToUpdate, false);
|
||||
|
||||
return ServiceRestResponse.createPositiveResponse(activityIdsToClose);
|
||||
|
||||
if (!UtilityString.isNullOrEmpty(respComm) && !stbActivitiesToUpdate.isEmpty()) {
|
||||
sql =
|
||||
Query.format(
|
||||
"SELECT stb_user.e_mail\n" +
|
||||
" FROM stb_user inner join jrl_flav_users on stb_user.user_name = jrl_flav_users.user_name\n" +
|
||||
" WHERE jrl_flav_users.cod_jflav = %s AND " +
|
||||
"jrl_flav_users.flag_jflav_default = 'S'", respComm);
|
||||
String emailTo = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
|
||||
|
||||
List<String> elencoAttivita =
|
||||
stbActivitiesToUpdate.stream()
|
||||
.map(x->x.getActivityDescription()).collect(Collectors.toList());
|
||||
|
||||
String emailMessage =
|
||||
String.format("Sono stati installati i seguenti aggiornamenti sull'azienda %s: <br>%s. <br>Verificare le attività con il cliente.",
|
||||
codJcom,
|
||||
StringUtils.join(elencoAttivita,"<br>"));
|
||||
|
||||
mailService.sendMailPrimary(multiDBTransactionManager, "noreply@integry.it", "Integry Ticketing", emailTo, null, null,
|
||||
String.format("Installazione aggiornamenti %s", codJcom),
|
||||
emailMessage, true, false, null, null,
|
||||
null, false, null);
|
||||
}
|
||||
|
||||
return ServiceRestResponse.createPositiveResponse(stbActivitiesToUpdate);
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user