Compare commits

...

8 Commits

Author SHA1 Message Date
Samuele Locatelli ba01a4851d Merge branch 'release/FixInsert' 2021-08-06 12:33:22 +02:00
Samuele Locatelli f7ed3c8b59 Modifica x gestione errore in caricamento doppio se cache inganna il check orario 2021-08-06 12:32:55 +02:00
Samuele Locatelli c56cd613d9 Fix visualizzaizone plant detail 2021-08-06 12:32:42 +02:00
Samuele Locatelli f221b3ea19 Update errore weekplan 2021-08-06 12:32:29 +02:00
Samuele Locatelli 575af20c54 Fix display riduzione dati se > 50 in grafici 2021-08-05 18:13:04 +02:00
Samuele Locatelli f2a91e09c0 Update chiamate async x insert data 2021-08-05 17:18:46 +02:00
Samuele Locatelli 15c3bf012f tolto await x evitare perdita dati 2021-08-05 17:09:22 +02:00
Samuele Locatelli d3e4c65b1c Merge tag 'FixDecoupledInsert' into develop
Sistemato inserimento filtrato
2021-08-05 15:54:55 +02:00
14 changed files with 147 additions and 151 deletions
+72 -83
View File
@@ -227,13 +227,17 @@ namespace GWMS.Data.Controllers
public List<PlantDTO> GetPlantsDTO(int maxRecords)
{
var plantList = dbCtx
.DbSetPlant
.ToList();
List<PlantDTO> dbResult = new List<PlantDTO>();
using (GWMSContext dbCtxMult = new GWMSContext(_configuration))
{
var plantList = dbCtxMult
.DbSetPlant
.ToList();
var dbResult = plantList
dbResult = plantList
.Select(x => PlantDTO(x.PlantId, maxRecords))
.ToList();
}
return dbResult;
}
@@ -353,7 +357,7 @@ namespace GWMS.Data.Controllers
public PlantDTO PlantDTO(int PlantId, int maxRecords)
{
var currPlant = GetPlant(PlantId);
PlantDTO answ = new PlantDTO();
List<TSData> LevelTS = new List<TSData>();
Dictionary<string, double> PressAct = new Dictionary<string, double>();
Dictionary<string, List<TSData>> PressTS = new Dictionary<string, List<TSData>>();
@@ -361,82 +365,87 @@ namespace GWMS.Data.Controllers
List<TSData> PressBHTS = new List<TSData>();
List<TSData> PressBLTS = new List<TSData>();
List<TSData> OrderTS = new List<TSData>();
// recupero dal DB
var rawLevelData = dbCtx
using (GWMSContext dbCtxMult = new GWMSContext(_configuration))
{
// recupero dal DB
var rawLevelData = dbCtxMult
.DbSetPlantLog
.Where(x => x.FluxType == "Level" && x.PlantId == PlantId)
.OrderBy(x => x.DtEvent)
.Take(maxRecords)
.ToList();
var rawMainPressData = dbCtx
.DbSetPlantLog
.Where(x => x.FluxType == "MainPress" && x.PlantId == PlantId)
.OrderBy(x => x.DtEvent)
.Take(maxRecords)
.ToList();
var rawMainPressData = dbCtxMult
.DbSetPlantLog
.Where(x => x.FluxType == "MainPress" && x.PlantId == PlantId)
.OrderBy(x => x.DtEvent)
.Take(maxRecords)
.ToList();
var rawBHPressData = dbCtx
.DbSetPlantLog
.Where(x => x.FluxType == "PressBH" && x.PlantId == PlantId)
.OrderBy(x => x.DtEvent)
.Take(maxRecords)
.ToList();
var rawBHPressData = dbCtxMult
.DbSetPlantLog
.Where(x => x.FluxType == "PressBH" && x.PlantId == PlantId)
.OrderBy(x => x.DtEvent)
.Take(maxRecords)
.ToList();
var rawBLPressData = dbCtx
.DbSetPlantLog
.Where(x => x.FluxType == "PressBL" && x.PlantId == PlantId)
.OrderBy(x => x.DtEvent)
.Take(maxRecords)
.ToList();
var rawBLPressData = dbCtxMult
.DbSetPlantLog
.Where(x => x.FluxType == "PressBL" && x.PlantId == PlantId)
.OrderBy(x => x.DtEvent)
.Take(maxRecords)
.ToList();
var rawOrderData = dbCtx
.DbSetOrders
.Where(x => x.PlantId == PlantId)
.OrderBy(x => x.DtOrder)
.Take(maxRecords)
.ToList();
var rawOrderData = dbCtxMult
.DbSetOrders
.Where(x => x.PlantId == PlantId)
.OrderBy(x => x.DtOrder)
.Take(maxRecords)
.ToList();
LevelTS = rawLevelData
.Select(x => new TSData() { DtEvent = x.DtEvent, ValDouble = x.ValNumber }).ToList();
LevelTS = rawLevelData
.Select(x => new TSData() { DtEvent = x.DtEvent, ValDouble = x.ValNumber }).ToList();
OrderTS = rawOrderData
.Select(x => new TSData() { DtEvent = x.DtOrder, ValDouble = x.OrderQty }).ToList();
OrderTS = rawOrderData
.Select(x => new TSData() { DtEvent = x.DtOrder, ValDouble = x.OrderQty }).ToList();
PressMainTS = rawMainPressData
.Select(x => new TSData() { DtEvent = x.DtEvent, ValDouble = x.ValNumber }).ToList();
PressMainTS = rawMainPressData
.Select(x => new TSData() { DtEvent = x.DtEvent, ValDouble = x.ValNumber }).ToList();
PressBHTS = rawBHPressData
.Select(x => new TSData() { DtEvent = x.DtEvent, ValDouble = x.ValNumber }).ToList();
PressBHTS = rawBHPressData
.Select(x => new TSData() { DtEvent = x.DtEvent, ValDouble = x.ValNumber }).ToList();
PressBLTS = rawBLPressData
.Select(x => new TSData() { DtEvent = x.DtEvent, ValDouble = x.ValNumber }).ToList();
PressBLTS = rawBLPressData
.Select(x => new TSData() { DtEvent = x.DtEvent, ValDouble = x.ValNumber }).ToList();
PressTS.Add("Main", PressMainTS);
PressTS.Add("BH", PressBHTS);
PressTS.Add("BL", PressBLTS);
PressTS.Add("Main", PressMainTS);
PressTS.Add("BH", PressBHTS);
PressTS.Add("BL", PressBLTS);
double actLevel = LevelTS.Count > 0 ? LevelTS.OrderByDescending(x => x.DtEvent).Take(1).FirstOrDefault().ValDouble : 0;
double valMain = PressMainTS.Count > 0 ? PressMainTS.OrderByDescending(x => x.DtEvent).Take(1).FirstOrDefault().ValDouble : 0;
double valBH = PressBHTS.Count > 0 ? PressBHTS.OrderByDescending(x => x.DtEvent).Take(1).FirstOrDefault().ValDouble : 0;
double valBL = PressBLTS.Count > 0 ? PressBLTS.OrderByDescending(x => x.DtEvent).Take(1).FirstOrDefault().ValDouble : 0;
double actLevel = LevelTS.Count > 0 ? LevelTS.OrderByDescending(x => x.DtEvent).Take(1).FirstOrDefault().ValDouble : 0;
double valMain = PressMainTS.Count > 0 ? PressMainTS.OrderByDescending(x => x.DtEvent).Take(1).FirstOrDefault().ValDouble : 0;
double valBH = PressBHTS.Count > 0 ? PressBHTS.OrderByDescending(x => x.DtEvent).Take(1).FirstOrDefault().ValDouble : 0;
double valBL = PressBLTS.Count > 0 ? PressBLTS.OrderByDescending(x => x.DtEvent).Take(1).FirstOrDefault().ValDouble : 0;
PressAct.Add("Main", valMain);
PressAct.Add("BH", valBH);
PressAct.Add("BL", valBL);
PressAct.Add("Main", valMain);
PressAct.Add("BH", valBH);
PressAct.Add("BL", valBL);
PlantDTO answ = new PlantDTO()
{
PlantId = PlantId,
PlantCode = currPlant.PlantCode,
PlantDesc = currPlant.PlantDesc,
LevelAct = actLevel,
LevelMax = currPlant.LevelMax,
PressAct = PressAct,
LevelTS = LevelTS,
PressTS = PressTS,
OrderTS = OrderTS
};
// popolo valolri
answ = new PlantDTO()
{
PlantId = PlantId,
PlantCode = currPlant.PlantCode,
PlantDesc = currPlant.PlantDesc,
LevelAct = actLevel,
LevelMax = currPlant.LevelMax,
PressAct = PressAct,
LevelTS = LevelTS,
PressTS = PressTS,
OrderTS = OrderTS
};
}
return answ;
}
@@ -473,26 +482,6 @@ namespace GWMS.Data.Controllers
.AddRange(newItems);
dbCtx.SaveChanges();
fatto = true;
#if false
// ogni 10 insert faccio chiamata x pulizia per le ultime 3h... FARE!!!!
Dictionary<string, int> flux2prox = new Dictionary<string, int>();
foreach (var item in newItems)
{
if (!flux2prox.ContainsKey(item.FluxType))
{
flux2prox.Add(item.FluxType, item.PlantId);
}
}
// ciclo x ogni flusso
foreach (var item in flux2prox)
{
DateTime adesso = DateTime.Now;
DateTime startTime = DateTime.Today.AddHours(adesso.Hour - 2);
string sqlQuery = $"CALL DecimateLog('{startTime}', {item.Value}, 15, '{item.Key}')";
var table = dbCtx.DbSetPlantLog.FromSqlRaw(sqlQuery);
}
#endif
}
catch (Exception exc)
{
+2 -2
View File
@@ -37,10 +37,10 @@ namespace GWMS.Data
// inizializzazione dei valori di default x Plant
modelBuilder.Entity<PlantDetailModel>().HasData(
new PlantDetailModel { PlantId = 1, PlantCode = "PIZ03", PlantDesc = "Collecchio", LevelMax = 28000, PressMax = 19, PressBHMax = 270, PressBLMax = 270 },
new PlantDetailModel { PlantId = 1, PlantCode = "PIZ03", PlantDesc = "Collecchio", LevelMax = 26000, PressMax = 19, PressBHMax = 270, PressBLMax = 270 },
new PlantDetailModel { PlantId = 2, PlantCode = "PIZ04", PlantDesc = "Noceto", LevelMax = 28000, PressMax = 19, PressBHMax = 270, PressBLMax = 270 },
new PlantDetailModel { PlantId = 3, PlantCode = "PIZ05", PlantDesc = "Baganzola", LevelMax = 24000, PressMax = 19, PressBHMax = 270, PressBLMax = 270 },
new PlantDetailModel { PlantId = 4, PlantCode = "PIZ08", PlantDesc = "Pilastrello", LevelMax = 25500, PressMax = 19, PressBHMax = 270, PressBLMax = 270 }
new PlantDetailModel { PlantId = 4, PlantCode = "PIZ08", PlantDesc = "Pilastrello", LevelMax = 26000, PressMax = 19, PressBHMax = 270, PressBLMax = 270 }
);
// inizializzazione dei valori di default x Fornitori
+8 -8
View File
@@ -17,7 +17,7 @@
</div>
<div class="card-body p-1">
<div class="row">
<div class="col-5 pr-0">
<div class="col-4 pr-0">
<div class="row">
<div class="col-12">
<ul class="list-group">
@@ -26,23 +26,23 @@
</li>
<li class="list-group-item active d-flex justify-content-between align-items-center py-1">PB Alta</li>
<li class="list-group-item d-flex justify-content-between align-items-center small">
<span><i class="fas fa-compress-arrows-alt"></i> Stoccaggio</span> <span><b>@currItem.PressAct["BH"].ToString("N1")</b>bar</span>
<span><i class="fas fa-compress-arrows-alt"></i> Stoccaggio</span> <span><b>@getPressData("BH", "N1")</b> <sub>bar</sub></span>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center small">
<span><i class="fas fa-compress-arrows-alt"></i> Alimentazione</span> <span><b>@currItem.PressAct["BH"].ToString("N1")</b>bar</span>
<span><i class="fas fa-compress-arrows-alt"></i> Alimentazione</span> <span><b>@getPressData("BHA", "N1")</b> <sub>bar</sub></span>
</li>
<li class="list-group-item active d-flex justify-content-between align-items-center py-1">PB Bassa</li>
<li class="list-group-item d-flex justify-content-between align-items-center small">
<span><i class="fas fa-compress-arrows-alt"></i> Stoccaggio</span> <span><b>@currItem.PressAct["BL"].ToString("N1")</b>bar</span>
<span><i class="fas fa-compress-arrows-alt"></i> Stoccaggio</span> <span><b>@getPressData("BL", "N1")</b> <sub>bar</sub></span>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center small">
<span><i class="fas fa-compress-arrows-alt"></i> Alimentazione</span> <span><b>@currItem.PressAct["BL"].ToString("N1")</b>bar</span>
<span><i class="fas fa-compress-arrows-alt"></i> Alimentazione</span> <span><b>@getPressData("BLA", "N1")</b> <sub>bar</sub></span>
</li>
</ul>
</div>
</div>
</div>
<div class="col-7">
<div class="col-8">
<div class="row">
<div class="col-12">
<ul class="list-group">
@@ -66,10 +66,10 @@
</div>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center">
<span><i class="fas fa-database"></i> Livello</span> <span style="font-size:1.2em;"><b>@currItem.LevelRatio</b>%</span>
<span><i class="fas fa-database"></i> Livello</span> <span style="font-size:1.2em;"><b>@currItem.LevelRatio</b> <sub>%</sub></span>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center">
<span><i class="fas fa-compress-arrows-alt"></i> Pressione</span> <span style="font-size:1.2em;"><b>@currItem.PressAct["Main"].ToString("N1")</b> <span class="small">bar</span></span>
<span><i class="fas fa-compress-arrows-alt"></i> Pressione</span> <span style="font-size:1.2em;"><b>@currItem.PressAct["Main"].ToString("N1")</b> <span class="small"> <sub>bar</sub></span></span>
</li>
</ul>
</div>
+36 -2
View File
@@ -54,6 +54,11 @@ namespace GWMS.UI.Components
AspectRatio = 2
};
/// <summary>
/// fattore di riduzione x visualizzare meno punti (in base alla numerosità...
/// </summary>
protected int redFact = 1;
#endregion Protected Fields
#region Private Properties
@@ -121,12 +126,26 @@ namespace GWMS.UI.Components
#region Private Methods
private void fixRedFactor()
{
int answ = 1;
int numCount = _currItem.LevelTS.Count;
if (numCount > 200)
answ = 4;
else if (numCount > 150)
answ = 3;
else if (numCount >= 50)
answ = 2;
redFact = answ;
}
private LineChartDataset<double> GetLineChartDataset()
{
fixRedFactor();
var answ = new LineChartDataset<double>
{
//Label = "Livello",
Data = _currItem.LevelTS.Select(x => x.ValDouble).ToList(),
Data = _currItem.LevelTS.Where((cat, index) => index % redFact == 0).Select(x => x.ValDouble).ToList(),
BorderColor = getLineColors(1f),
Fill = true,
PointRadius = 3,
@@ -139,7 +158,8 @@ namespace GWMS.UI.Components
private List<string> GetLineChartLabels()
{
var answ = _currItem.LevelTS.Select(x => x.DtEvent.ToString("dd.MM HH")).ToList();
fixRedFactor();
var answ = _currItem.LevelTS.Where((cat, index) => index % redFact == 0).Select(x => x.DtEvent.ToString("dd.MM HH")).ToList();
return answ;
}
@@ -176,5 +196,19 @@ namespace GWMS.UI.Components
}
#endregion Protected Methods
#region Public Methods
public string getPressData(string valore, string formato)
{
string answ = "";
if (currItem.PressAct.ContainsKey(valore))
{
answ = currItem.PressAct[valore].ToString(formato);
}
return answ;
}
#endregion Public Methods
}
}
+4 -4
View File
@@ -179,7 +179,7 @@ namespace GWMS.UI.Controllers
/// <param name="cnt"></param>
/// <returns></returns>
[HttpGet("flog/{id}")]
public string flog(string id, string flux, string valore, string dtEve, string dtCurr, string cnt)
public async Task<string> flog(string id, string flux, string valore, string dtEve, string dtCurr, string cnt)
{
bool fatto = false;
// formato yyyymmddHHMMSSnnn ovvero da anno a millisecondi
@@ -247,7 +247,7 @@ namespace GWMS.UI.Controllers
List<PlantLogModel> newData = new List<PlantLogModel>();
newData.Add(newItem);
// insert!
fatto = _DataService.PlantLogInsert(newData).Result;
fatto = await _DataService.PlantLogInsert(newData);
}
}
catch (Exception exc)
@@ -272,7 +272,7 @@ namespace GWMS.UI.Controllers
/// <param name="id">ID dell'IOB</param>
/// <returns></returns>
[HttpPost("flogJson/{id}")]
public string flogJson(string id, [FromBody] flogJsonPayload rawData)
public async Task<string> flogJson(string id, [FromBody] flogJsonPayload rawData)
{
bool fatto = false;
// verifico ci sia valore
@@ -285,7 +285,7 @@ namespace GWMS.UI.Controllers
// conversione dati
List<PlantLogModel> plData = rawData.fluxData.Select(jpl => _DataService.convertFluxToPL(currPlant.PlantId, jpl)).ToList();
//insert!
fatto = _DataService.PlantLogInsert(plData).Result;
fatto = await _DataService.PlantLogInsert(plData);
}
}
if (fatto)
+2 -2
View File
@@ -70,13 +70,13 @@ namespace GWMS.UI.Controllers
// POST api/PlantLog
[HttpPost]
public ActionResult Post([FromBody] List<PlantLogModel> newItems)
public async Task<ActionResult> Post([FromBody] List<PlantLogModel> newItems)
{
bool fatto = false;
// verifico ci sia valore
if (newItems != null)
{
fatto = _DataService.PlantLogInsert(newItems).Result;
fatto = await _DataService.PlantLogInsert(newItems);
}
if (fatto)
{
+15 -3
View File
@@ -394,6 +394,7 @@ namespace GWMS.UI.Data
public async Task<bool> PlantLogInsert(List<PlantLogModel> newItems)
{
bool fatto = false;
// init valori
int IntervalMin = 60;
int.TryParse(_configuration["IntervalMin"], out IntervalMin);
@@ -403,7 +404,7 @@ namespace GWMS.UI.Data
await updateCurrDTO(newItems);
// recupero ultimi inseriti
List<PlantLogModel> lastValues = await PlantLogGetLastByFlux(PlantId);
List<PlantLogModel> lastValues = PlantLogGetLastByFlux(PlantId).Result;
// verifico i flussi presenti tra quelli ricevuti
List<string> fluxList = newItems
.GroupBy(g => g.FluxType)
@@ -435,8 +436,19 @@ namespace GWMS.UI.Data
}
}
// faccio vero insert
return await Task.FromResult(dbController.PlantLogInsertNew(item2insert));
// se ho record da inserire...
if (item2insert.Count > 0)
{
// faccio vero insert
fatto = dbController.PlantLogInsertNew(item2insert);
// invalido i vari valori in cache
await distributedCache.RemoveAsync($"DATA:PLANTS:LastFlux:{PlantId}");
await distributedCache.RemoveAsync($"DATA:PLANTS:ListDTO");
}
// restituisco
return await Task.FromResult(fatto);
}
public async Task<List<PlantDTO>> PlantsGetAll()
+2 -7
View File
@@ -9,7 +9,7 @@ namespace GWMS.UI.Data
{
#region Private Fields
private SelectData _detailFilter = SelectData.Init(5, 7);
private SelectData _detailFilter = SelectData.Init(5, 15);
private string _pageIcon;
private string _pageName;
private string _searchVal;
@@ -33,8 +33,6 @@ namespace GWMS.UI.Data
#region Public Properties
public SelectData DDB_Filter { get; set; } = SelectData.Init(5, 3);
public SelectData DetailFilter
{
get => _detailFilter;
@@ -52,10 +50,7 @@ namespace GWMS.UI.Data
}
}
public SelectData KRE_Filter { get; set; } = SelectData.Init(5, 7);
public SelectData ODL_Filter { get; set; } = SelectData.Init(5, 7);
public SelectData OEE_Filter { get; set; } = SelectData.Init(5, 7);
public SelectOrderData Order_Filter { get; set; } = SelectOrderData.Init(5, 7);
public SelectOrderData Order_Filter { get; set; } = SelectOrderData.Init(5, 30);
public string PageIcon
{
+1 -1
View File
@@ -2,7 +2,7 @@
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<Version>1.0.2108.0515</Version>
<Version>1.0.2108.0612</Version>
<UserSecretsId>95c9f021-52d1-4390-a670-5810b7b777b0</UserSecretsId>
</PropertyGroup>
+1 -35
View File
@@ -20,41 +20,7 @@
}
</div>
<div class="col-12">
@*<div class="d-flex justify-content-between">
<div class="p-2">
<h4>Simulazione</h4>
</div>
<div class="p-2">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">giorni</span>
</div>
<input @bind-value="@numDays" @bind-value:event="oninput" type="number" class="form-control" title="Giorni" />
</div>
</div>
<div class="p-2">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">step</span>
</div>
<input @bind-value="@stepMin" @bind-value:event="oninput" type="number" class="form-control" title="Step sim (minuti)" />
</div>
</div>
<div class="p-2">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">cons orario max</span>
</div>
<input @bind-value="@maxHourRate" @bind-value:event="oninput" type="number" class="form-control" title="Consumo massimo orario" />
</div>
</div>
<div class="p-2">
<Button id="btnReset" class="btn btn-danger btn-block" Clicked="resetDB">
<span class="oi oi-reload"></span> Regen DB Data
</Button>
</div>
</div>*@
<SetupSim />
@*<SetupSim />*@
</div>
</div>
</div>
+1 -1
View File
@@ -268,7 +268,7 @@ namespace GWMS.UI.Pages
protected List<WeekPlanModel> SlotList(DayOfWeek Giorno, int Ora)
{
List<WeekPlanModel> result = new();
List<WeekPlanModel> result = new List<WeekPlanModel>();
if (ListRecords != null && ListRecords.Count > 0)
{
+1 -1
View File
@@ -1,6 +1,6 @@
<body>
<i>GWMS - Gas Warehouse Management System</i>
<h4>Versione: 1.0.2108.0515</h4>
<h4>Versione: 1.0.2108.0612</h4>
<br /> Note di rilascio:
<ul>
<li>
+1 -1
View File
@@ -1 +1 @@
1.0.2108.0515
1.0.2108.0612
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<item>
<version>1.0.2108.0515</version>
<version>1.0.2108.0612</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>