loading data
diff --git a/GPW.CORE.UI/Components/Test.razor b/GPW.CORE.UI/Components/Test.razor
deleted file mode 100644
index 3b24623..0000000
--- a/GPW.CORE.UI/Components/Test.razor
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
-
-
- Danger
-
-
- pausa
-
-
- Free Space
-
-
-
-
-
-@code {
-
-}
diff --git a/GPW.CORE.UI/Components/WeekSelector.razor b/GPW.CORE.UI/Components/WeekSelector.razor
index 3b3de52..98a1902 100644
--- a/GPW.CORE.UI/Components/WeekSelector.razor
+++ b/GPW.CORE.UI/Components/WeekSelector.razor
@@ -42,9 +42,6 @@
[Parameter]
public EventCallback
WeekSelected { get; set; }
- //private int Anno = DateTime.Today.Year;
- //private int Week = 1;
-
///
/// Indico item selezionato
///
diff --git a/GPW.CORE.UI/Data/GpwDataService.cs b/GPW.CORE.UI/Data/GpwDataService.cs
index 6e98472..fff38c7 100644
--- a/GPW.CORE.UI/Data/GpwDataService.cs
+++ b/GPW.CORE.UI/Data/GpwDataService.cs
@@ -48,6 +48,8 @@ namespace GPW.CORE.UI.Data
protected const string rKeyGrpAll = "Cache:GrpAll";
protected const string rKeyParetoRegAtt = "Cache:ParetoRegAtt";
protected const string rKeyProjAll = "Cache:ProjAll";
+ protected const string rKeyRilTemp = "Cache:RilTemp";
+ protected const string rKeyVC19 = "Cache:VC19";
protected const string rKeyWeekStats = "Cache:WeekStats";
protected static string connStringBBM = "";
@@ -101,6 +103,22 @@ namespace GPW.CORE.UI.Data
#endregion Private Methods
+ #region Protected Methods
+
+ ///
+ /// Registra in cache chiave se non fosse già in elenco
+ ///
+ ///
+ protected void trackCache(string newKey)
+ {
+ if (!cachedDataList.Contains(newKey))
+ {
+ cachedDataList.Add(newKey);
+ }
+ }
+
+ #endregion Protected Methods
+
#region Public Methods
///
@@ -268,6 +286,7 @@ namespace GPW.CORE.UI.Data
{
CalcOreProgettiModel? dbResult = new CalcOreProgettiModel();
string currKey = $"{rKeyCalcOreProj}:{idxProj}";
+ trackCache(currKey);
string rawData;
var redisDataList = await distributedCache.GetAsync(currKey);
@@ -295,6 +314,45 @@ namespace GPW.CORE.UI.Data
return await Task.FromResult(dbResult);
}
+ ///
+ /// Recupera l'elenco dei controlli VC19 nel periodo indicato x dipendente
+ ///
+ /// Dipendente interessato
+ /// Data di riferimento (ultima/corrente)
+ /// NUm settimane precedenti da recuperare
+ ///
+ public async Task> CheckVC19List(int idxDipendente, DateTime dtInizio, DateTime dtFine)
+ {
+ List? dbResult = new List();
+ string currKey = $"{rKeyVC19}:{dtInizio:yyyyMMdd}:{dtFine:yyyMMdd}";
+ trackCache(currKey);
+
+ string rawData;
+ var redisDataList = await distributedCache.GetAsync(currKey);
+ if (redisDataList != null)
+ {
+ rawData = Encoding.UTF8.GetString(redisDataList);
+ dbResult = JsonConvert.DeserializeObject>(rawData);
+ }
+ else
+ {
+ Stopwatch stopWatch = new Stopwatch();
+ stopWatch.Start();
+ dbResult = dbController.CheckVC19List(idxDipendente, dtInizio, dtFine);
+ rawData = JsonConvert.SerializeObject(dbResult, JSSettings);
+ redisDataList = Encoding.UTF8.GetBytes(rawData);
+ await distributedCache.SetAsync(currKey, redisDataList, cacheOpt(true));
+ stopWatch.Stop();
+ TimeSpan ts = stopWatch.Elapsed;
+ Log.Trace($"Effettuata lettura da DB + caching per CheckVC19List: {ts.TotalMilliseconds} ms");
+ }
+ if (dbResult == null)
+ {
+ dbResult = new List();
+ }
+ return await Task.FromResult(dbResult);
+ }
+
///
/// Recupera l'elenco dei dettagli giornalieri attività di un dipendente, dato periodo riferimento
///
@@ -306,10 +364,7 @@ namespace GPW.CORE.UI.Data
{
List? dbResult = new List();
string currKey = $"{rKeyDailyData}:{idxDipendente}:{dtInizio.ToString("yyyy-MM-dd")}:{dtFine.ToString("yyyy-MM-dd")}";
- if (!cachedDataList.Contains(currKey))
- {
- cachedDataList.Add(currKey);
- }
+ trackCache(currKey);
string rawData;
var redisDataList = await distributedCache.GetAsync(currKey);
if (redisDataList != null)
@@ -386,6 +441,21 @@ namespace GPW.CORE.UI.Data
cachedDataList = new List();
}
+ ///
+ /// Invalida la cache corrispondente al apttern fornito
+ ///
+ ///
+ public async Task InvalidateCache(string cachePattern)
+ {
+ foreach (var item in cachedDataList)
+ {
+ if (item.Contains(cachePattern))
+ {
+ await distributedCache.RemoveAsync(item);
+ }
+ }
+ }
+
///
/// Statistiche ultime settimane
///
@@ -397,10 +467,7 @@ namespace GPW.CORE.UI.Data
{
List? dbResult = new List();
string currKey = $"{rKeyWeekStats}:{idxDipendente}:{dtRif.ToString("yyyy-MM-dd")}:{numWeek}";
- if (!cachedDataList.Contains(currKey))
- {
- cachedDataList.Add(currKey);
- }
+ trackCache(currKey);
string rawData;
var redisDataList = await distributedCache.GetAsync(currKey);
if (redisDataList != null)
@@ -504,185 +571,67 @@ namespace GPW.CORE.UI.Data
return answ;
}
-#if false
- public async Task> MaterialsGetAll()
+ ///
+ /// Recupera l'elenco dei Rilievi temperatura nel periodo indicato x dipendente
+ ///
+ /// Dipendente interessato
+ /// Data di riferimento (ultima/corrente)
+ /// NUm settimane precedenti da recuperare
+ ///
+ public async Task> RilTempList(int idxDipendente, DateTime dtInizio, DateTime dtFine)
{
- List? dbResult = new List();
+ List? dbResult = new List();
+ string currKey = $"{rKeyRilTemp}:{dtInizio:yyyyMMdd}:{dtFine:yyyMMdd}";
+ trackCache(currKey);
+
string rawData;
- var redisDataList = await distributedCache.GetAsync(rKeyDipendenti);
+ var redisDataList = await distributedCache.GetAsync(currKey);
if (redisDataList != null)
{
rawData = Encoding.UTF8.GetString(redisDataList);
- dbResult = JsonConvert.DeserializeObject>(rawData);
+ dbResult = JsonConvert.DeserializeObject>(rawData);
}
else
{
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
- dbResult = dbController.MaterialsGetAll();
+ dbResult = dbController.RilTempList(idxDipendente, dtInizio, dtFine);
rawData = JsonConvert.SerializeObject(dbResult, JSSettings);
redisDataList = Encoding.UTF8.GetBytes(rawData);
- await distributedCache.SetAsync(rKeyDipendenti, redisDataList, cacheOpt(false));
+ await distributedCache.SetAsync(currKey, redisDataList, cacheOpt(true));
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
- Log.Trace($"Effettuata lettura da DB + caching per GetMaterials: {ts.TotalMilliseconds} ms");
+ Log.Trace($"Effettuata lettura da DB + caching per RilTempList: {ts.TotalMilliseconds} ms");
}
if (dbResult == null)
{
- dbResult = new List();
+ dbResult = new List();
}
return await Task.FromResult(dbResult);
}
- public async Task> MovMagGetFilt(int RemnId, int numShow)
- {
- List dbResult = new List();
- Stopwatch stopWatch = new Stopwatch();
- stopWatch.Start();
- dbResult = dbController.MovMagGetFilt(RemnId, numShow);
- stopWatch.Stop();
- TimeSpan ts = stopWatch.Elapsed;
- Log.Trace($"Effettuata lettura da DB + caching per MovMagGetFilt: {ts.TotalMilliseconds} ms");
- return await Task.FromResult(dbResult);
- }
-
- public async Task AddPrintJob(int RemnId)
- {
- bool answ = dbController.AddPrintJob("docRemnant", $"{RemnId}", "queueRemnants");
- return await Task.FromResult(answ);
- }
-
- public async Task> RemnantsGetFilt(int matId, int minQty)
- {
- List? dbResult = new List();
- string rawData;
- string cacheKey = $"{rKeyRemnants}:{matId}:{minQty}";
- if (!cachedDataList.Contains(cacheKey))
- {
- cachedDataList.Add(cacheKey);
- }
-
- var redisDataList = await distributedCache.GetAsync(cacheKey);
- if (redisDataList != null)
- {
- rawData = Encoding.UTF8.GetString(redisDataList);
- dbResult = JsonConvert.DeserializeObject>(rawData);
- }
- else
- {
- Stopwatch stopWatch = new Stopwatch();
- stopWatch.Start();
- var rawList = dbController.RemnantsGetFilt(matId, minQty);
- dbResult = rawList.OrderBy(o => o.Area).ToList();
- rawData = JsonConvert.SerializeObject(dbResult, JSSettings);
- redisDataList = Encoding.UTF8.GetBytes(rawData);
- await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt(false));
- stopWatch.Stop();
- TimeSpan ts = stopWatch.Elapsed;
- Log.Trace($"Effettuata lettura da DB + caching per RemnantsGetAll: {ts.TotalMilliseconds} ms");
- }
- if (dbResult == null)
- {
- dbResult = new List();
- }
- return await Task.FromResult(dbResult);
- }
-
- public async Task RemnantsIsDupl(RemnantsModel currItem)
+ public async Task RilTempUpdate(RilievoTempModel currItem)
{
bool answ = false;
- var rawList = dbController.RemnantsGetFilt(currItem.MatID, 0);
- var duplicati = rawList
- .Where(x => x.RemnID != currItem.RemnID && x.LMm == currItem.LMm && x.WMm == currItem.WMm && x.TMm == currItem.TMm)
- .ToList();
- answ = duplicati.Count > 0;
- return await Task.FromResult(answ);
- }
-
- public async Task RemnantsMovMag(RemnantsModel currItem, string userId, int deltaQty)
- {
- bool done = false;
try
{
- // recupero item da DB
- var currRecord = dbController.RemnantGetByid(currItem.RemnID);
- if (currRecord != null && currRecord.RemnID == currItem.RemnID)
- {
- // modifico qty entro limiti >=0..
- if (currRecord.QtyAvail + deltaQty >= 0)
- {
- currRecord.QtyAvail = currRecord.QtyAvail + deltaQty;
- done = dbController.RemnantsUpsert(currRecord, userId);
- await InvalidateAllCache();
- }
- }
+ dbController.RilTempUpdate(currItem);
+ // invalido la cache...
+ await InvalidateCache(rKeyRilTemp);
+ //await InvalidateCache($"{rKeyWeekStats}:{currItem.IdxDipendente}");
+ await InvalidateCache($"{rKeyDailyData}:{currItem.IdxDipendente}");
+ answ = true;
}
- catch (Exception exc)
- {
- Log.Error($"Eccezione in RemnantsMovMag:{Environment.NewLine}{exc}");
- }
- return await Task.FromResult(done);
+ catch
+ { }
+ return answ;
}
- public async Task RemnantsUpsert(RemnantsModel currItem, string userId)
- {
- bool done = false;
- try
- {
- done = dbController.RemnantsUpsert(currItem, userId);
- await InvalidateAllCache();
- }
- catch (Exception exc)
- {
- Log.Error($"Eccezione in RemnantsUpsert:{Environment.NewLine}{exc}");
- }
- return await Task.FromResult(done);
- }
-#endif
-
public void rollBackEdit(object item)
{
dbController.rollBackEntity(item);
}
-#if false
- public async Task SearchQrRemnant(string QrCode)
- {
- RemnantsModel? answ = new RemnantsModel();
- string rawData = "";
- string cacheKey = $"{rKeyQrRemnants}:{QrCode}";
- // cerco in redis
- var redisData = await distributedCache.GetAsync(cacheKey);
- if (redisData != null)
- {
- rawData = Encoding.UTF8.GetString(redisData);
- answ = JsonConvert.DeserializeObject(rawData);
- }
- // se non trovo cerco su DB
- else
- {
- Stopwatch stopWatch = new Stopwatch();
- stopWatch.Start();
- var foundItem = dbController.RemnantGetByQr(QrCode);
- if (foundItem != null && foundItem.RemDtmx == QrCode)
- {
- rawData = JsonConvert.SerializeObject(foundItem, JSSettings);
- redisData = Encoding.UTF8.GetBytes(rawData);
- await distributedCache.SetAsync(cacheKey, redisData, cacheOpt(false));
- answ = foundItem;
- }
- stopWatch.Stop();
- TimeSpan ts = stopWatch.Elapsed;
- Log.Trace($"Effettuata lettura da DB + caching per SearchQrRemnant: {ts.TotalMilliseconds} ms");
- }
- if (answ == null)
- {
- answ = new RemnantsModel();
- }
- return await Task.FromResult(answ);
- }
-#endif
-
public async Task TimbratureDelete(TimbratureModel currItem)
{
bool answ = false;
diff --git a/GPW.CORE.UI/GPW.CORE.UI.csproj b/GPW.CORE.UI/GPW.CORE.UI.csproj
index a3fc802..9f18ede 100644
--- a/GPW.CORE.UI/GPW.CORE.UI.csproj
+++ b/GPW.CORE.UI/GPW.CORE.UI.csproj
@@ -2,7 +2,7 @@
net6.0
- 3.0.2201.1315
+ 3.0.2201.1511
enable
enable
diff --git a/GPW.CORE.UI/Pages/Planner.razor b/GPW.CORE.UI/Pages/Planner.razor
index 959a2b5..9a214ad 100644
--- a/GPW.CORE.UI/Pages/Planner.razor
+++ b/GPW.CORE.UI/Pages/Planner.razor
@@ -11,6 +11,16 @@