- Aggiornamento dal DB di GM al DB Locale

This commit is contained in:
Surya Paolo
2025-04-16 23:28:29 +02:00
parent 8e8a3204a7
commit fba2ebd710
9 changed files with 1409 additions and 743 deletions

View File

@@ -1,11 +1,11 @@
const axios = require('axios');
const server_constants = require('../tools/server_constants');
const shared_consts = require('../tools/shared_nodejs');
const tools = require('../tools/general');
const axios = require('axios');
const SERVER_A_URL = process.env.SERVER_A_URL || "http://IP_DI_SERVER_A:3000";
const API_KEY = process.env.API_KEY_MSSQL;
@@ -21,7 +21,7 @@ const getArticlesSales = async () => {
COALESCE(p.rank3M, 0) as rank3M, COALESCE(t.fatrank3M, 0) as fatrank3M,
COALESCE(q.rank6M, 0) as rank6M, COALESCE(r.rank1Y, 0) as rank1Y,
COALESCE(t.fat3mesi, 0) as fatLast3M,
COALESCE(t.fat6mesi, 0) as fatLast6M,
COALESCE(t2.fat6mesi, 0) as fatLast6M,
COALESCE(p.venduti3mesi, 0) as vLast3M,
COALESCE(q.venduti6mesi, 0) as vLast6M, COALESCE(r.venduti1anno, 0) as vLastY,
s.ultimoOrdine as dataUltimoOrdine
@@ -71,6 +71,24 @@ exports.exportArticlesSalesByJSON = async (req, res) => {
}
};
exports.getTableContent = async (options) => {
try {
// Chiama getTableContent, se ritorna errore hangup, allora attendi 2 secondi e poi richiamala.
const tableContent = await getTableContentBase(options);
return tableContent;
} catch (error) {
console.error('Error: ', error);
if (error.message === 'socket hang up') {
console.log('Error: hangup, waiting 2 seconds and retrying...');
await new Promise(resolve => setTimeout(resolve, 2000));
return await this.getTableContent(options);
} else {
throw error;
}
}
};
const formatDate = (dateValue) => {
const date = new Date(dateValue);
const day = String(date.getDate()).padStart(2, '0');
@@ -79,7 +97,7 @@ const formatDate = (dateValue) => {
return `${day}/${month}/${year}`;
};
const getTableContent = async (options) => {
const getTableContentBase = async (options) => {
try {
// Verifica se la tabella esiste
const checkTableQuery = `SELECT COUNT(*) as tableExists FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '${options.nameTable}'`;
@@ -351,9 +369,26 @@ const getTableContent = async (options) => {
records.forEach(record => {
let myrec = {}
displayColumns.forEach(column => {
myrec[column] = `${getDisplayValue(record, column)} `;
});
if (options.recordraw) {
myrec = record;
} else {
displayColumns.forEach(column => {
const value = record[column];
if (value !== undefined && value !== null) {
const type = typeof value;
if (type === 'number' && !mergedMapping[column]) {
myrec[column] = value;
} else if (type === 'boolean') {
myrec[column] = value;
} else if (value instanceof Date) {
myrec[column] = formatDate(value);
} else {
myrec[column] = `${getDisplayValue(record, column)}`.trim();
}
}
});
}
output.push(myrec)
});
}
@@ -614,7 +649,7 @@ const checkPermissions = async (options) => {
exports.viewTable = async (req, res) => {
try {
const options = req.body.options;
const tableContent = await getTableContent(options);
const tableContent = await this.getTableContent(options);
let out = {};
@@ -665,7 +700,7 @@ exports.updateLocalDb = async (tableContent, options) => {
.trim() // Rimuove gli spazi all'inizio e alla fine
.replace(/[\(\)]/g, '') // Rimuove le parentesi tonde
.split(','); // Divide la stringa in un array usando la virgola come separatore
if (arrayPulito && arrayPulito.length > 0) {
let aggiornacat = false;
const precCatProds = recfound.idCatProds;
@@ -703,7 +738,7 @@ exports.updateLocalDb = async (tableContent, options) => {
if (tableContent.DataPubblicazione.trim()) {
recproductInfo.date_pub = new Date(tools.convertiDataItaliana(tableContent.DataPubblicazione.trim()).date);
// convert data to timestamp
recproductInfo.date_pub_ts = recproductInfo.date_pub.getTime();
recproductInfo.date_pub_ts = recproductInfo.date_pub.getTime();
aggiorna = true;
}
@@ -724,7 +759,7 @@ exports.updateLocalDb = async (tableContent, options) => {
exports.queryTable = async (req, res) => {
try {
const options = req.body.options;
const tableContent = await getTableContent(options);
const tableContent = await this.getTableContent(options);
let out = {};
@@ -772,3 +807,21 @@ exports.saveTable = async (req, res) => {
return res.send({ code: server_constants.RIS_CODE_ERR, error });
}
};
exports.updateAllBook = async (req, res) => {
const Macro = require('../modules/Macro'); // Importa la classe Macro
try {
const idapp = req.body.idapp;
const options = req.body.options;
const macro = new Macro(idapp); // Crea un'istanza della classe Macro
const result = await macro.updateLocalDbFromGM_T_Web_Articoli(options);
return res.status(200).send({ data: result });
} catch (e) {
console.error(e.message);
return res.status(400).send(e);
}
}