Update gestione setup parametri a scadenza

This commit is contained in:
Samuele Locatelli
2021-10-27 17:47:56 +02:00
parent 26bf1c3017
commit c3da657b26
14 changed files with 389 additions and 134 deletions
+2 -2
View File
@@ -158,14 +158,14 @@ namespace GWMS.Data.Controllers
return dbResult;
}
public List<ParamSetModel> GetParamSet(int PlantId)
public List<ParamSetModel> GetParamSet(int PlantId, string ParamUid)
{
List<ParamSetModel> dbResult = new List<ParamSetModel>();
using (GWMSContext localDbCtx = new GWMSContext(_configuration))
{
dbResult = localDbCtx
.DbSetParamSet
.Where(x => (x.PlantId == PlantId || PlantId == 0))
.Where(x => (x.PlantId == PlantId || PlantId == 0) && (x.ParamUid == ParamUid || ParamUid == ""))
.OrderBy(x => x.Scadenza)
.ToList();
}
+10 -9
View File
@@ -12,12 +12,15 @@
<EditForm Model="@_currItem">
<DataAnnotationsValidator />
<div class="row">
<div class="col-12 col-lg-10 align-items-center">
<div class="row">
<div class="col-6">
<div class="col-12 col-lg-5">
<ParamSet PlantIdSel="@PlantId" ParamUidSel="@ParamUid"></ParamSet>
</div>
<div class="col-12 col-lg-5 align-items-center">
<div class="d-flex">
<div class="p-2">
<b>@_currItem.uid</b>
</div>
<div class="col-6 text-right">
<div class="p-2 text-right">
@_currItem.name
</div>
</div>
@@ -25,13 +28,11 @@
<div class="col">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">
Valore rilevato: <b>@_currItem.value</b>
</span>
<button @onclick="() => setCalc()" class="btn btn-primary">@CalcVal.ToString("N3") <i class="fas fa-arrow-alt-circle-right"></i></button>
</div>
<InputNumber @bind-Value="@_currItem.reqValInt" class="form-control text-right"></InputNumber>
<InputNumber @bind-Value="@_currItem.reqValDec" class="form-control text-right"></InputNumber>
<div class="input-group-append">
<span class="input-group-text" title="Valore Richiesto"><i class="fas fa-wrench"></i></span>
<span class="input-group-text" title="Valore Richiesto">Act: <b>@_currItem.value</b></span>
</div>
</div>
</div>
+89
View File
@@ -1,9 +1,11 @@
using AutoMapper.Configuration;
using GWMS.Data.DatabaseModels;
using GWMS.Data.DTO;
using GWMS.UI.Data;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Identity;
using Microsoft.JSInterop;
using NLog;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -14,9 +16,18 @@ namespace GWMS.UI.Components
{
public partial class ParamEditor
{
#region Private Fields
private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
private List<ParamSetModel> ListRecords;
#endregion Private Fields
#region Protected Fields
protected objItem _currItem = new objItem();
protected int _plantId = 0;
protected string ParamUid = "";
#endregion Protected Fields
@@ -29,9 +40,46 @@ namespace GWMS.UI.Components
#region Protected Properties
protected decimal CalcVal
{
get
{
decimal answ = currItem.reqValDec;
if (totalCount > 0)
{
// prendo i 2 valori precedente e successivo
DateTime oggi = DateTime.Today;
var prevPar = ListRecords.Where(x => x.Scadenza <= oggi).OrderByDescending(x => x.Scadenza).FirstOrDefault();
var nextPar = ListRecords.Where(x => x.Scadenza >= oggi).OrderBy(x => x.Scadenza).FirstOrDefault();
// se ho valori
if (prevPar != null && nextPar != null)
{
double num = oggi.Subtract(prevPar.Scadenza).TotalDays;
double den = nextPar.Scadenza.Subtract(prevPar.Scadenza).TotalDays;
den = den != 0 ? den : 1;
answ = prevPar.TargetVal + (nextPar.TargetVal - prevPar.TargetVal) * (decimal)(num / den);
}
}
return answ;
}
}
[Inject]
protected GWMSDataService DataService { get; set; }
protected int totalCount
{
get
{
int answ = 0;
if (ListRecords != null)
{
answ = ListRecords.Count;
}
return answ;
}
}
#endregion Protected Properties
#region Public Properties
@@ -46,6 +94,7 @@ namespace GWMS.UI.Components
set
{
_currItem = value;
ParamUid = _currItem.uid;
}
}
@@ -58,6 +107,19 @@ namespace GWMS.UI.Components
[Parameter]
public string IdxMacchina { get; set; } = "";
[Parameter]
public int PlantId
{
get
{
return _plantId;
}
set
{
_plantId = value;
}
}
#endregion Public Properties
#region Private Methods
@@ -67,6 +129,19 @@ namespace GWMS.UI.Components
await DataReset.InvokeAsync(0);
}
private async Task ReloadData()
{
ListRecords = null;
try
{
ListRecords = await DataService.ParamSetGetFilt(PlantId, ParamUid);
}
catch (Exception exc)
{
Log.Error($"Eccezione in ReloadData:{Environment.NewLine}{exc}");
}
}
private async Task saveUpdate()
{
if (!await JSRuntime.InvokeAsync<bool>("confirm", "Sicuro di voler inviare il valore per parametro richiesto?"))
@@ -84,5 +159,19 @@ namespace GWMS.UI.Components
}
#endregion Private Methods
#region Protected Methods
protected override async Task OnInitializedAsync()
{
await ReloadData();
}
protected void setCalc()
{
currItem.reqValDec = Math.Round(CalcVal * 1000) / 1000;
}
#endregion Protected Methods
}
}
+69 -112
View File
@@ -1,117 +1,74 @@
@using GWMS.UI.Components
<div class="card">
<div class="card-header table-primary h3">
<div class="row">
<div class="col-6 col-lg-3 h3">
Programmazione Parametri
</div>
<div class="col-6 col-lg-9 text-right">
@*<div class="d-flex justify-content-end">
<div class="p-2">
<div class="form-group mb-0">
<Button id="btnReload" class="btn btn-info btn-sm btn-block" Clicked="() => ForceReload()" title="Reset Filter"><span class="oi oi-loop-circular"></span></Button>
</div>
</div>
<div class="p-2">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">
<span class="fas fa-gas-pump" aria-hidden="true"></span>
</span>
@if (currRecord != null)
{
<ParamSetEditor currItem="@currRecord" DataReset="ResetData" DataUpdated="UpdateData"></ParamSetEditor>
}
@if (ListRecords == null)
{
<LoadingData></LoadingData>
}
else if (totalCount == 0)
{
<div class="alert alert-warning text-center display-5">Nessun record trovato</div>
<button class="btn btn-success" @onclick="() => AddNew()"><i class="fas fa-plus"></i> Aggiungi Nuovo</button>
}
else
{
<div class="row">
<div class="col-12">
<table class="table table-sm table-striped table-responsive-lg">
<thead>
<tr>
<th><button class="btn btn-success" @onclick="() => AddNew()"><i class="fas fa-plus"></i></button></th>
<th>Parametro</th>
<th class="text-right">Scadenza</th>
<th class="text-right">Valore</th>
<th class="text-right">Note</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var record in ListRecords)
{
<tr class="@checkSelect(@record.ParamSetId)">
<td class="text-nowrap">
@if (currRecord == null)
{
<button class="btn btn-sm btn-info" @onclick="() => Edit(record)">
<span class="oi oi-pencil"></span>
</button>
}
else
{
<button class="btn btn-sm btn-secondary disabled">
<i class="oi oi-pencil"></i>
</button>
}
</td>
<td>
<div class="small">@record.ParamUid</div>
</td>
<td class="text-right">
<div class="small">@record.Scadenza.ToString("yyyy.MM.dd")</div>
</td>
<td class="text-right">
<div>@record.TargetVal.ToString("N2")</div>
</td>
<td class="text-right">
<div>
<i>@record.Note</i>
</div>
<select @bind="@SelPlantId" class="form-control form-control-sm">
<option value="0">--- Tutti ---</option>
@if (PlantsList != null)
{
foreach (var item in PlantsList)
{
<option value="@item.PlantId">@item.PlantCode | @item.PlantDesc</option>
}
}
</select>
</div>
</div>
</div>*@
</div>
</td>
<td class="text-right">
<button class="btn btn-sm btn-danger" title="Elimina Set" @onclick="() => RemoveItem(record)">
<i class="fas fa-trash"></i>
</button>
</td>
</tr>
}
</tbody>
</table>
</div>
</div>
<div class="card-body p-1">
@if (currRecord != null)
{
<i>Editor singoloparametro</i>
@*<ParamEditor currItem="@currRecord" DataReset="ResetData" DataUpdated="UpdateData" IdxMacchina="@SelPlantCode"></ParamEditor>*@
}
@if (ListRecords == null)
{
<LoadingData></LoadingData>
}
else if (totalCount == 0)
{
<div class="alert alert-warning text-center display-4">Nessun record trovato</div>
}
else
{
<div class="row">
<div class="col-12">
<table class="table table-sm table-striped table-responsive-lg">
<thead>
<tr>
<th></th>
<th>Parametro</th>
<th class="text-right">Scadenza</th>
<th class="text-right">Valore Programmato</th>
<th class="text-right">Note</th>
<th></th>
@*<th class="text-right">Carico <i class="fas fa-truck-moving"></i></th>
<th class="text-right">Ordine <i class="fas fa-file"></i></th>*@
</tr>
</thead>
<tbody>
@foreach (var record in ListRecords)
{
<tr class="@checkSelect(@record.ParamSetId)">
<td class="text-nowrap">
@if (currRecord == null)
{
<button class="btn btn-sm btn-info" @onclick="() => Edit(record)">
<span class="oi oi-pencil"></span>
</button>
}
else
{
<button class="btn btn-sm btn-secondary disabled">
<i class="oi oi-pencil"></i>
</button>
}
</td>
<td>
<div class="small">@record.ParamUid</div>
</td>
<td class="text-right">
<div class="small">@record.Scadenza.ToString("yyyy.MM.dd HH:mm:ss")</div>
</td>
<td>
<div>@record.TargetVal</div>
</td>
<td class="text-right">
<div>
<i>@record.Note</i>
</div>
</td>
<td class="text-right">
<button class="btn btn-sm btn-danger" title="Elimina Set" @onclick="() => RemoveItem(record)">
<i class="fas fa-trash"></i>
</button>
</td>
</tr>
}
</tbody>
</table>
</div>
</div>
}
</div>
<div class="card-footer p-1">
</div>
</div>
}
+49 -3
View File
@@ -23,6 +23,7 @@ namespace GWMS.UI.Components
#region Protected Fields
protected string _paramUid = "";
protected int _plantId = 0;
#endregion Protected Fields
@@ -59,7 +60,22 @@ namespace GWMS.UI.Components
#region Public Properties
[Parameter]
public int PlantId
public string ParamUidSel
{
get
{
return _paramUid;
}
set
{
_paramUid = value;
var pUpd = Task.Run(async () => await ReloadData());
pUpd.Wait();
}
}
[Parameter]
public int PlantIdSel
{
get
{
@@ -68,7 +84,6 @@ namespace GWMS.UI.Components
set
{
_plantId = value;
var pUpd = Task.Run(async () => await ReloadData());
pUpd.Wait();
}
@@ -78,13 +93,31 @@ namespace GWMS.UI.Components
#region Private Methods
/// <summary>
/// Aggiunta nuovo record
/// </summary>
private async void AddNew()
{
// creo un nuovo evento su oggi...
var newRecord = new ParamSetModel()
{
ParamUid = ParamUidSel,
PlantId = PlantIdSel,
Scadenza = DateTime.Today.AddDays(1),
TargetVal = 0,
Note = "Nuovo record"
};
await DataService.ParamSetUpdate(newRecord);
await ReloadData();
}
private async Task ReloadData()
{
isLoading = true;
ListRecords = null;
try
{
ListRecords = await DataService.ParamSetGetByPlant(PlantId);
ListRecords = await DataService.ParamSetGetFilt(PlantIdSel, ParamUidSel);
}
catch (Exception exc)
{
@@ -119,6 +152,19 @@ namespace GWMS.UI.Components
await ReloadData();
}
protected void ResetData()
{
DataService.rollBackEdit(currRecord);
currRecord = null;
}
protected async Task UpdateData()
{
currRecord = null;
await DataService.ParamSetUpdate(currRecord);
await ReloadData();
}
#endregion Protected Methods
#region Public Methods
+55
View File
@@ -0,0 +1,55 @@
@using Blazorise
@using GWMS.UI.Components
@using Microsoft.AspNetCore.Components.Authorization
@using GWMS.UI.Data
@using Microsoft.Extensions.Configuration
<div class="card">
<div class="card-header bg-info text-light">
<b>Modifica</b>
</div>
<div class="card-body p-1">
<EditForm Model="@_currItem">
<DataAnnotationsValidator />
<div class="form-row">
<div class="col-4">
<b>@_currItem.ParamUid</b>
</div>
<div class="col-8 text-right">
<div class="input-group input-group-sm">
<div class="input-group-prepend">
<span class="input-group-text">Note:</span>
</div>
<InputText @bind-Value="@_currItem.Note" class="form-control text-right" title="Note" />
</div>
</div>
</div>
<div class="form-row mt-2">
<div class="col-6">
<div class="input-group input-group-sm">
<div class="input-group-prepend">
<span class="input-group-text">Scadenza</span>
</div>
<InputDate @bind-Value="@_currItem.Scadenza" class="form-control text-right" title="Data Parametro" />
</div>
</div>
<div class="col-6 text-right">
<div class="input-group input-group-sm">
<div class="input-group-prepend">
<span class="input-group-text">Valore</span>
</div>
<NumericEdit Decimals="2" @bind-Value="@_currItem.TargetVal" class="form-control text-right" title="Valore Richiesto" />
</div>
</div>
</div>
<div class="form-row mt-2">
<div class="col-6">
<button type="button" class="btn btn-warning btn-block" value="Cancel" @onclick="cancelUpdate">Cancel <i class="fas fa-ban"></i></button>
</div>
<div class="col-6">
<button type="button" class="btn btn-success btn-block" value="Save" @onclick="saveUpdate">Save <i class="far fa-save"></i></button>
</div>
</div>
</EditForm>
</div>
</div>
@@ -0,0 +1,98 @@
using AutoMapper.Configuration;
using GWMS.Data.DatabaseModels;
using GWMS.Data.DTO;
using GWMS.UI.Data;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Identity;
using Microsoft.JSInterop;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using static GWMS.Data.IobObjects;
namespace GWMS.UI.Components
{
public partial class ParamSetEditor
{
#region Protected Fields
protected ParamSetModel _currItem = new ParamSetModel();
#endregion Protected Fields
#region Private Properties
[Inject]
private IJSRuntime JSRuntime { get; set; }
#endregion Private Properties
#region Protected Properties
[Inject]
protected GWMSDataService DataService { get; set; }
#endregion Protected Properties
#region Public Properties
[Parameter]
public ParamSetModel currItem
{
get
{
return _currItem;
}
set
{
_currItem = value;
}
}
[Parameter]
public EventCallback<int> DataReset { get; set; }
[Parameter]
public EventCallback<int> DataUpdated { get; set; }
[Parameter]
public string IdxMacchina { get; set; } = "";
#endregion Public Properties
#region Private Methods
private async Task cancelUpdate()
{
await DataReset.InvokeAsync(0);
}
private async Task saveUpdate()
{
if (!await JSRuntime.InvokeAsync<bool>("confirm", "Sicuro di voler modificare la programmazione del parametro?"))
return;
if (_currItem != null)
{
await DataService.ParamSetUpdate(_currItem);
await DataUpdated.InvokeAsync(0);
}
else
{
Console.WriteLine("Record null!");
}
}
#endregion Private Methods
#region Protected Methods
protected string? FormatValueAsString(TValue? value)
{
return $"{value:N3}";
}
#endregion Protected Methods
}
}
+6
View File
@@ -0,0 +1,6 @@
namespace GWMS.UI.Components
{
public class TValue
{
}
}
+3 -3
View File
@@ -938,17 +938,17 @@ namespace GWMS.UI.Data
}
/// <summary>
/// Recupera ParamSet dato plant
/// Recupera ParamSet dato plant e UID parametro
/// </summary>
/// <param name="PlantId"></param>
/// <returns></returns>
public async Task<List<ParamSetModel>> ParamSetGetByPlant(int PlantId)
public async Task<List<ParamSetModel>> ParamSetGetFilt(int PlantId, string ParamUid)
{
List<ParamSetModel> dbResult = new List<ParamSetModel>();
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
dbResult = dbController.GetParamSet(PlantId);
dbResult = dbController.GetParamSet(PlantId, ParamUid);
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Trace($"Effettuata lettura da DB per ParamSetGetByPlant: {ts.TotalMilliseconds} ms");
+4 -1
View File
@@ -2,7 +2,7 @@
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<Version>1.0.2110.2711</Version>
<Version>1.0.2110.2717</Version>
<UserSecretsId>95c9f021-52d1-4390-a670-5810b7b777b0</UserSecretsId>
<EnableNETAnalyzers>true</EnableNETAnalyzers>
<RunAnalyzersDuringBuild>true</RunAnalyzersDuringBuild>
@@ -65,6 +65,9 @@
</ItemGroup>
<ItemGroup>
<Compile Update="Components\ParamEditor - Copy.razor.cs">
<DependentUpon>ParamEditor.razor.cs</DependentUpon>
</Compile>
<Compile Update="Pages\Transporters - Copy - Copy.razor.cs">
<DependentUpon>Transporters - Copy.razor.cs</DependentUpon>
</Compile>
+1 -1
View File
@@ -42,7 +42,7 @@
<div class="card-body p-1">
@if (currRecord != null)
{
<ParamEditor currItem="@currRecord" DataReset="ResetData" DataUpdated="UpdateData" IdxMacchina="@SelPlantCode"></ParamEditor>
<ParamEditor currItem="@currRecord" DataReset="ResetData" DataUpdated="UpdateData" IdxMacchina="@SelPlantCode" PlantId="@SelPlantId"></ParamEditor>
}
@if (ListRecords == null)
{
+1 -1
View File
@@ -1,6 +1,6 @@
<body>
<i>GWMS - Gas Warehouse Management System</i>
<h4>Versione: 1.0.2110.2711</h4>
<h4>Versione: 1.0.2110.2717</h4>
<br /> Note di rilascio:
<ul>
<li>
+1 -1
View File
@@ -1 +1 @@
1.0.2110.2711
1.0.2110.2717
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<item>
<version>1.0.2110.2711</version>
<version>1.0.2110.2717</version>
<url>http://nexus.steamware.net/repository/SWS/GWMS/stable/0/GWMS.UI.zip</url>
<changelog>http://nexus.steamware.net/repository/SWS/GWMS/stable/0/ChangeLog.html</changelog>
<mandatory>false</mandatory>