Stats: update displays cadenza dati energy
This commit is contained in:
+2
-2
@@ -1,7 +1,7 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.0.32126.317
|
||||
# Visual Studio Version 18
|
||||
VisualStudioVersion = 18.5.11723.231 stable
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MP.Stats", "MP.Stats\MP.Stats.csproj", "{D9901B50-E61C-400C-B62C-FA060CF72C29}"
|
||||
EndProject
|
||||
|
||||
@@ -1,16 +1,14 @@
|
||||
using DnsClient.Protocol;
|
||||
using Microsoft.Data.SqlClient;
|
||||
using Microsoft.Data.SqlClient;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using MP.Data.DbModels;
|
||||
using MP.Data.DbModels.Energy;
|
||||
using NLog;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Linq;
|
||||
using ZXing;
|
||||
using static MP.Core.Objects.Enums;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace MP.Data.Controllers
|
||||
{
|
||||
@@ -199,6 +197,22 @@ namespace MP.Data.Controllers
|
||||
}
|
||||
return dbResult;
|
||||
}
|
||||
/// <summary>
|
||||
/// Elenco controllo stato Macchine Energy x check
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task<List<MacchineEnergyCheckModel>> MacchineEnergyCheckGetAllAsync()
|
||||
{
|
||||
List<MacchineEnergyCheckModel> dbResult = new List<MacchineEnergyCheckModel>();
|
||||
using (var dbCtx = new MoonPro_STATSContext(_configuration))
|
||||
{
|
||||
dbResult = await dbCtx
|
||||
.DbSetMacchineCheck
|
||||
.OrderBy(x => x.IdxMacchina)
|
||||
.ToListAsync();
|
||||
}
|
||||
return dbResult;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Annulla modifiche su una specifica entity (cancel update)
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace MP.Data.DbModels.Energy
|
||||
{
|
||||
public class MacchineEnergyCheckModel
|
||||
{
|
||||
|
||||
public string IdxMacchina { get; set; } = "";
|
||||
/// <summary>
|
||||
/// Nome macchina
|
||||
/// </summary>
|
||||
[MaxLength(50)]
|
||||
public string Nome { get; set; } = "";
|
||||
/// <summary>
|
||||
/// Descrizione macchina
|
||||
/// </summary>
|
||||
public string Descrizione { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// DataOra ultimo evento
|
||||
/// </summary>
|
||||
public DateTime dtEvento { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Flusso registrato
|
||||
/// </summary>
|
||||
public string CodFlux { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Valore registrato
|
||||
/// </summary>
|
||||
public string Valore { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,7 @@
|
||||
using System;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Metadata;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using MP.Data.DbModels;
|
||||
using MP.Data.DbModels.Energy;
|
||||
using NLog;
|
||||
|
||||
#nullable disable
|
||||
@@ -45,6 +44,8 @@ namespace MP.Data
|
||||
public virtual DbSet<DdbTurni> DbSetDdbTurni { get; set; }
|
||||
public virtual DbSet<FLModel> DbSetFL { get; set; }
|
||||
public virtual DbSet<MacchineModel> DbSetMacchine { get; set; }
|
||||
public virtual DbSet<MacchineEnergyCheckModel> DbSetMacchineCheck { get; set; }
|
||||
|
||||
public virtual DbSet<StatsODL> DbSetODL { get; set; }
|
||||
public virtual DbSet<OdlEnergyModel> DbSetOdlEnergy { get; set; }
|
||||
public virtual DbSet<ResScarti> DbSetScarti { get; set; }
|
||||
@@ -138,6 +139,13 @@ namespace MP.Data
|
||||
.HasMaxLength(5);
|
||||
});
|
||||
|
||||
modelBuilder.Entity<MacchineEnergyCheckModel>(entity =>
|
||||
{
|
||||
entity.HasNoKey();
|
||||
|
||||
entity.ToView("v_UI_MacchineEnergyCheck");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<StatsAnagArticoli>(entity =>
|
||||
{
|
||||
entity.HasNoKey();
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using MP.Data.DbModels;
|
||||
using MP.Data.DbModels.Energy;
|
||||
using MP.Data.Services;
|
||||
using Newtonsoft.Json;
|
||||
using NLog;
|
||||
@@ -359,7 +360,7 @@ namespace MP.Stats.Data
|
||||
}
|
||||
else
|
||||
{
|
||||
result = dbController.MacchineGetAll().ToList();
|
||||
result = dbController.MacchineGetAll();
|
||||
// serializzp e salvo...
|
||||
rawData = JsonConvert.SerializeObject(result);
|
||||
_redisDb.StringSet(currKey, rawData, FastCache);
|
||||
@@ -373,6 +374,42 @@ namespace MP.Stats.Data
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Elenco check stato Macchine Energy
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task<List<MacchineEnergyCheckModel>> MacchineEnergyCheckGetAll()
|
||||
{
|
||||
// setup parametri costanti
|
||||
string source = "DB";
|
||||
Stopwatch sw = new Stopwatch();
|
||||
sw.Start();
|
||||
List<MacchineEnergyCheckModel> result = new List<MacchineEnergyCheckModel>();
|
||||
// cerco in redis...
|
||||
DateTime adesso = DateTime.Now;
|
||||
string currKey = $"{redisBaseKey}:Cache:MacchineEnegyCheck";
|
||||
RedisValue rawData = await _redisDb.StringGetAsync(currKey);
|
||||
if (rawData.HasValue)
|
||||
{
|
||||
result = JsonConvert.DeserializeObject<List<MacchineEnergyCheckModel>>($"{rawData}");
|
||||
source = "REDIS";
|
||||
}
|
||||
else
|
||||
{
|
||||
result = await dbController.MacchineEnergyCheckGetAllAsync();
|
||||
// serializzp e salvo...
|
||||
rawData = JsonConvert.SerializeObject(result);
|
||||
await _redisDb.StringSetAsync(currKey, rawData, FastCache);
|
||||
}
|
||||
if (result == null)
|
||||
{
|
||||
result = new List<MacchineEnergyCheckModel>();
|
||||
}
|
||||
sw.Stop();
|
||||
Log.Debug($"MacchineEnergyCheckGetAllAsync | {source} | {sw.Elapsed.TotalMilliseconds}ms");
|
||||
return result;
|
||||
}
|
||||
|
||||
public Task<List<AutocompleteModel>> MachineList(bool onlyEnergy = false)
|
||||
{
|
||||
List<AutocompleteModel> answ = new List<AutocompleteModel>();
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<RootNamespace>MP.Stats</RootNamespace>
|
||||
<UserSecretsId>826e877c-ba70-4253-84cb-d0b1cafd4440</UserSecretsId>
|
||||
<Version>8.16.2604.2718</Version>
|
||||
<Version>8.16.2605.0409</Version>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
<SatelliteResourceLanguages>en</SatelliteResourceLanguages>
|
||||
</PropertyGroup>
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
@page "/StatusChecks"
|
||||
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header table-primary p-1 d-flex justify-content-between">
|
||||
<div class="px-0">
|
||||
<b class="fs-4">Status Checks</b>
|
||||
</div>
|
||||
<div class="px-0">
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">Scdenza (minuti)</span>
|
||||
<input type="number" class="form-control" @bind="@timeoutMin">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body py-0 px-1">
|
||||
<table class="table table-sm table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="text-start">Idx</th>
|
||||
<th class="text-start">Macchina</th>
|
||||
<th class="text-start">descr</th>
|
||||
<th class="text-start">Flux</th>
|
||||
<th class="text-end">Last Event</th>
|
||||
<th class="text-end">Valore</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (var record in ListPaged)
|
||||
{
|
||||
<tr class="@CheckScadute(record)">
|
||||
<td>@record.IdxMacchina</td>
|
||||
<td>@record.Nome</td>
|
||||
<td>@record.Descrizione</td>
|
||||
<td>@record.CodFlux</td>
|
||||
<td class="text-end">@record.dtEvento</td>
|
||||
<td class="text-end">@record.Valore</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="card-footer py-0 px-1 small">
|
||||
<EgwCoreLib.Razor.DataPager currPage="@pageNum" PageSize="@numRecPage" totalCount="@totalCount" numPageChanged="SavePage" numRecordChanged="SaveNumRec" DisplSize="DataPager.ObjSize.small"></EgwCoreLib.Razor.DataPager>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,108 @@
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using MP.Data.DbModels.Energy;
|
||||
using MP.Stats.Data;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace MP.Stats.Pages
|
||||
{
|
||||
public partial class StatusChecks
|
||||
{
|
||||
#region Protected Properties
|
||||
|
||||
[Inject]
|
||||
protected IConfiguration ConfMan { get; set; } = null!;
|
||||
|
||||
[Inject]
|
||||
protected MpStatsService StatService { get; set; } = null!;
|
||||
|
||||
#endregion Protected Properties
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
timeoutMin = ConfMan.GetValue<int>("SpecialConf:TimeoutEnergyFlux");
|
||||
}
|
||||
|
||||
protected override async Task OnParametersSetAsync()
|
||||
{
|
||||
await ReloadDataAsync();
|
||||
UpdateTable();
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Fields
|
||||
|
||||
private List<MacchineEnergyCheckModel> AllRecord = new();
|
||||
|
||||
private List<MacchineEnergyCheckModel> ListPaged = new();
|
||||
|
||||
private int numRecPage = 10;
|
||||
|
||||
private int pageNum = 1;
|
||||
|
||||
private int timeoutMin = 30;
|
||||
private int totalCount = 0;
|
||||
|
||||
#endregion Private Fields
|
||||
|
||||
#region Private Methods
|
||||
|
||||
/// <summary>
|
||||
/// Scadute se evento > 5 minuti
|
||||
/// </summary>
|
||||
/// <param name="item"></param>
|
||||
/// <returns></returns>
|
||||
private string CheckScadute(MacchineEnergyCheckModel item)
|
||||
{
|
||||
DateTime adesso = DateTime.Now;
|
||||
var dataAge = adesso.Subtract(item.dtEvento).TotalMinutes;
|
||||
string status = "";
|
||||
// se supero limite
|
||||
if (dataAge >= timeoutMin)
|
||||
{
|
||||
// se doppio del limite danger sennò warning...
|
||||
status = dataAge <= 2 * timeoutMin ? "table-warning" : "table-danger";
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
private async Task ReloadDataAsync()
|
||||
{
|
||||
AllRecord = await StatService.MacchineEnergyCheckGetAll();
|
||||
totalCount = AllRecord.Count;
|
||||
}
|
||||
|
||||
private void SaveNumRec(int newNum)
|
||||
{
|
||||
numRecPage = newNum;
|
||||
UpdateTable();
|
||||
}
|
||||
|
||||
private void SavePage(int newNum)
|
||||
{
|
||||
pageNum = newNum;
|
||||
UpdateTable();
|
||||
}
|
||||
|
||||
private void UpdateTable()
|
||||
{
|
||||
// esegue paginazione
|
||||
if (totalCount > numRecPage)
|
||||
{
|
||||
ListPaged = AllRecord.Skip((pageNum - 1) * numRecPage).Take(numRecPage).ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
ListPaged = AllRecord;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
<body>
|
||||
<i>Modulo statistiche MAPO</i>
|
||||
<h4>Versione: 8.16.2604.2718</h4>
|
||||
<h4>Versione: 8.16.2605.0409</h4>
|
||||
<br />
|
||||
Note di rilascio:
|
||||
<ul>
|
||||
|
||||
@@ -1 +1 @@
|
||||
8.16.2604.2718
|
||||
8.16.2605.0409
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<item>
|
||||
<version>8.16.2604.2718</version>
|
||||
<version>8.16.2605.0409</version>
|
||||
<url>https://nexus.steamware.net/repository/SWS/MP-STATS/stable/LAST/MP.Stats.zip</url>
|
||||
<changelog>https://nexus.steamware.net/repository/SWS/MP-STATS/stable/LAST/ChangeLog.html</changelog>
|
||||
<mandatory>false</mandatory>
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item px-2">
|
||||
<NavLink class="nav-link" href="" Match="NavLinkMatch.All">
|
||||
<span class="oi oi-home" aria-hidden="true"></span>
|
||||
<span class="fa fa-home pe-2" aria-hidden="true"></span>
|
||||
@if (showText)
|
||||
{
|
||||
<span class="@hideText">Home</span>
|
||||
@@ -25,7 +25,7 @@
|
||||
</li>
|
||||
<li class="nav-item px-2">
|
||||
<NavLink class="nav-link" href="Oee">
|
||||
<span class="oi oi-monitor" aria-hidden="true"></span>
|
||||
<span class="fa fa-display pe-2" aria-hidden="true"></span>
|
||||
@if (showText)
|
||||
{
|
||||
<span class="@hideText">TRS/OEE %</span>
|
||||
@@ -34,7 +34,7 @@
|
||||
</li>
|
||||
<li class="nav-item px-2">
|
||||
<NavLink class="nav-link" href="Energy">
|
||||
<span class="oi oi-bar-chart" aria-hidden="true"></span>
|
||||
<span class="fa fa-chart-column pe-2" aria-hidden="true"></span>
|
||||
@if (showText)
|
||||
{
|
||||
<span class="@hideText">ENERGY</span>
|
||||
@@ -43,7 +43,7 @@
|
||||
</li>
|
||||
<li class="nav-item px-2">
|
||||
<NavLink class="nav-link" href="trend-analysis">
|
||||
<i class="fa-solid fa-arrow-trend-up pe-3"></i>
|
||||
<i class="fa fa-arrow-trend-up pe-2"></i>
|
||||
@if (showText)
|
||||
{
|
||||
<span class="@hideText">TREND Analisys</span>
|
||||
@@ -52,7 +52,7 @@
|
||||
</li>
|
||||
<li class="nav-item px-2">
|
||||
<NavLink class="nav-link" href="ReportODL">
|
||||
<span class="oi oi-book" aria-hidden="true" title="Dati di Produzione (P)ODL/Commesse"></span>
|
||||
<span class="fa fa-bookmark pe-2" aria-hidden="true" title="Dati di Produzione (P)ODL/Commesse"></span>
|
||||
@if (showText)
|
||||
{
|
||||
<span class="@hideText">Rep. ODL/Comm</span>
|
||||
@@ -61,7 +61,7 @@
|
||||
</li>
|
||||
<li class="nav-item px-2">
|
||||
<NavLink class="nav-link" href="Diario">
|
||||
<span class="oi oi-clipboard" aria-hidden="true" title="Dettaglio dati di Produzione"></span>
|
||||
<span class="fa fa-clipboard pe-2" aria-hidden="true" title="Dettaglio dati di Produzione"></span>
|
||||
@if (showText)
|
||||
{
|
||||
<span class="@hideText">Diario Produzione</span>
|
||||
@@ -70,7 +70,7 @@
|
||||
</li>
|
||||
<li class="nav-item px-2">
|
||||
<NavLink class="nav-link" href="UserLog">
|
||||
<span class="oi oi-document" aria-hidden="true" title="Statistiche Controlli"></span>
|
||||
<span class="fa fa-document pe-2" aria-hidden="true" title="Statistiche Controlli"></span>
|
||||
@if (showText)
|
||||
{
|
||||
<span class="@hideText">User ActionLog</span>
|
||||
@@ -79,7 +79,7 @@
|
||||
</li>
|
||||
<li class="nav-item px-2">
|
||||
<NavLink class="nav-link" href="Controlli">
|
||||
<span class="oi oi-beaker" aria-hidden="true" title="Registro Controlli"></span>
|
||||
<span class="fa fa-flask pe-2" aria-hidden="true" title="Registro Controlli"></span>
|
||||
@if (showText)
|
||||
{
|
||||
<span class="@hideText">Registro Controlli</span>
|
||||
@@ -88,7 +88,7 @@
|
||||
</li>
|
||||
<li class="nav-item px-2">
|
||||
<NavLink class="nav-link" href="Scarti">
|
||||
<span class="oi oi-warning" aria-hidden="true" title="Registro Scarti"></span>
|
||||
<span class="fa fa-warning pe-2" aria-hidden="true" title="Registro Scarti"></span>
|
||||
@if (showText)
|
||||
{
|
||||
<span class="@hideText">Registro Scarti</span>
|
||||
@@ -97,22 +97,31 @@
|
||||
</li>
|
||||
<li class="nav-item px-2">
|
||||
<NavLink class="nav-link" href="TaskScheduler">
|
||||
<span class="oi oi-clock" aria-hidden="true"></span>
|
||||
<span class="fa fa-clock pe-2" aria-hidden="true"></span>
|
||||
@if (showText)
|
||||
{
|
||||
<span class="@hideText">Task Scheduler</span>
|
||||
}
|
||||
</NavLink>
|
||||
</li>
|
||||
<li class="nav-item px-2">
|
||||
<NavLink class="nav-link" href="StatusChecks">
|
||||
<span class="fa fa-solid fa-list-check pe-2" aria-hidden="true"></span>
|
||||
@if (showText)
|
||||
{
|
||||
<span class="@hideText">Status Check</span>
|
||||
}
|
||||
</NavLink>
|
||||
</li>
|
||||
<li class="nav-item px-2">
|
||||
<NavLink class="nav-link" href="ForceReset">
|
||||
<span class="oi oi-reload" aria-hidden="true"></span>
|
||||
<span class="fa fa-rotate pe-2" aria-hidden="true"></span>
|
||||
@if (showText)
|
||||
{
|
||||
<span class="@hideText">Force Reset</span>
|
||||
}
|
||||
</NavLink>
|
||||
</li>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -61,6 +61,7 @@
|
||||
"FormatDur": "HH:mm.ss.ff",
|
||||
"SpecialConf": {
|
||||
"AppUrl": "/MP/STATS",
|
||||
"TimeoutEnergyFlux": 60,
|
||||
"TaskEnableRedis": false,
|
||||
"TaskManConn": "MP.Stats",
|
||||
"RedisBaseConf": "MP:TASK:STATS"
|
||||
|
||||
Reference in New Issue
Block a user