- correzioni calcolo periodo
- impedito insert se pezzi /articoli 0/vuoti x work o senza durata x fermata
This commit is contained in:
Samuele Locatelli
2025-04-08 16:07:58 +02:00
parent a88a6db9d9
commit 928e724f5d
8 changed files with 70 additions and 43 deletions
+16 -2
View File
@@ -62,7 +62,14 @@
@foreach (var item in SeqStatus)
{
<div class="progress-bar @item.CssBlock" style="width: @PercWidth(item.ValuePerc);">
<div>@item.Title</div>
@if (item.HasError)
{
<div class="bg-danger text-warning" title="Error!!!">@item.Title</div>
}
else
{
<div>@item.Title</div>
}
<small>@($"{item.Value:N0}min")</small>
</div>
}
@@ -78,7 +85,14 @@
<button class="btn btn-warning w-100" @onclick="() => DoCancel()"><i class="fa-solid fa-ban"></i> Cancel</button>
</div>
<div class="col-6 mt-2">
<button class="btn btn-success w-100" @onclick="() => DoSave()"><i class="fa-solid fa-floppy-disk"></i> Save</button>
@if (EditRecord.IsWork && (!string.IsNullOrEmpty(EditRecord.CodArticolo) && EditRecord.PzBuoni > 0) || (!EditRecord.IsWork && EditRecord.MinProd > 0))
{
<button class="btn btn-success w-100" @onclick="() => DoSave()"><i class="fa-solid fa-floppy-disk"></i> Save</button>
}
else
{
<button class="btn btn-secondary disabled w-100"><i class="fa-solid fa-floppy-disk"></i> Save</button>
}
</div>
<div class="col-12 my-2">
@if (EditRecord.IsWork)
+3 -2
View File
@@ -359,6 +359,7 @@ namespace MP_TAB3.Components
{
EditRecord = null;
ReloadData();
RecalcDayData(dtCurr);
}
}
return;
@@ -428,7 +429,7 @@ namespace MP_TAB3.Components
.ToList();
// ora calcolo il sequencer x mostrare dettaglio orario...
SeqStatus = TabDServ.InsManSeqDayStatus(ListDay);
SeqStatus = TabDServ.InsManSeqDayStatus(dtCurr, ListDay);
// calcolo min lavorati odierni
DayMinLav = 0;
@@ -496,7 +497,7 @@ namespace MP_TAB3.Components
string currCss = "";
foreach (var item in ListDTO)
{
currCss = "";// item.MinProdTot == 0 ? "" : cssHasData;
currCss = "";
// controllo minuti dichiarati...
if (item.RatioImport == 1)
{
+1 -1
View File
@@ -3,7 +3,7 @@
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>
<Version>6.16.2504.813</Version>
<Version>6.16.2504.815</Version>
<ImplicitUsings>enable</ImplicitUsings>
<RootNamespace>MP_TAB3</RootNamespace>
</PropertyGroup>
+1 -1
View File
@@ -1,6 +1,6 @@
<body>
<i>Modulo MAPOSPEC </i>
<h4>Versione: 6.16.2504.813</h4>
<h4>Versione: 6.16.2504.815</h4>
<br /> Note di rilascio:
<ul>
<li>
+1 -1
View File
@@ -1 +1 @@
6.16.2504.813
6.16.2504.815
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<item>
<version>6.16.2504.813</version>
<version>6.16.2504.815</version>
<url>https://nexus.steamware.net/repository/SWS/MP-TAB3/stable/LAST/MP-TAB3.zip</url>
<changelog>https://nexus.steamware.net/repository/SWS/MP-TAB3/stable/LAST/ChangeLog.html</changelog>
<mandatory>false</mandatory>
+1
View File
@@ -18,5 +18,6 @@ namespace MP.Core.DTO
}
public string Title { get; set; } = "";
public string CssBlock { get; set; } = "";
public bool HasError { get; set; } = false;
}
}
+46 -35
View File
@@ -1013,29 +1013,28 @@ namespace MP.Data.Services
periodStart = currRec.InizioStato;
periodEnd = currRec.FineStato.Value;
// se andassi a domani lo "accorcio"...
if (periodEnd > dtRif.Date.AddDays(1))
if (periodEnd < dtRif.Date.AddDays(1).AddSeconds(-1))
{
periodEnd = dtRif.Date.AddDays(1);
}
// se non arrivo a mezzanotte aggiungo "pad finale"
var lastPeriod = TimeSpan.FromHours(24).Subtract(periodEnd.TimeOfDay).TotalMinutes;
if (lastPeriod > 1)
{
// creo record x la durata necessaria
newRec = new InsManualiModel()
// se non arrivo a mezzanotte aggiungo "pad finale"
var lastPeriod = TimeSpan.FromHours(24).Subtract(periodEnd.TimeOfDay).TotalMinutes;
if (lastPeriod > 1)
{
CodArticolo = "ND",
KeyRichiesta = "",
IdxMacchina = idxMacc,
InizioStato = periodEnd,
FineStato = periodEnd.Date.AddDays(1).AddSeconds(-1),
IdxTipoEv = idxTipoEv,
MatrOpr = matrOpr,
PzBuoni = 0,
TCiclo = 0,
MinProd = (decimal)lastPeriod
};
rec2add.Add(newRec);
// creo record x la durata necessaria
newRec = new InsManualiModel()
{
CodArticolo = "ND",
KeyRichiesta = "",
IdxMacchina = idxMacc,
InizioStato = periodEnd,
FineStato = periodEnd.Date.AddDays(1).AddSeconds(-1),
IdxTipoEv = idxTipoEv,
MatrOpr = matrOpr,
PzBuoni = 0,
TCiclo = 0,
MinProd = (decimal)lastPeriod
};
rec2add.Add(newRec);
}
}
// eseguo upsert massivo
await InsManUpsert(rec2add);
@@ -1083,13 +1082,15 @@ namespace MP.Data.Services
/// <summary>
/// Elenco DTO x plotting seq stati giornaliero
/// </summary>
/// <param name="dtRif">Data per cui effettuare ricalcolo giornata</param>
/// <param name="listDetail">Record dettaglio giornata</param>
/// <returns></returns>
public List<ManualStatusDTO> InsManSeqDayStatus(List<InsManualiModel> listDetail)
public List<ManualStatusDTO> InsManSeqDayStatus(DateTime dtRif, List<InsManualiModel> listDetail)
{
List<ManualStatusDTO>? result = new List<ManualStatusDTO>();
// per sicurezza RIORDINO!
listDetail = listDetail
.Where(x => x.InizioStato.Date == dtRif.Date)
.OrderBy(x => x.InizioStato)
.ToList();
if (listDetail.Count > 0)
@@ -1125,6 +1126,8 @@ namespace MP.Data.Services
lastIdxTipo = item.IdxTipoEv;
periodStart = item.InizioStato;
periodEnd = item.FineStato.Value;
//calcolo errore se supero giorno...
bool hasError = periodEnd > dtRif.Date.AddDays(1);
duration = (double)item.MinProd;
currRec = new ManualStatusDTO
{
@@ -1133,13 +1136,16 @@ namespace MP.Data.Services
CssBlock = item.IdxTipoEv == 1 ? "bg-success text-light" : "bg-secondary text-light",
Title = $"{periodStart:HH:mm}-{periodEnd:HH:mm}",
Value = duration,
ValueMax = 1440
ValueMax = 1440,
HasError = hasError
};
}
else
{
duration += (double)item.MinProd;
periodEnd = item.FineStato.Value;
//calcolo errore se supero giorno...
bool hasError = periodEnd > dtRif.Date.AddDays(1);
currRec = new ManualStatusDTO
{
IdxTipo = lastIdxTipo,
@@ -1147,7 +1153,8 @@ namespace MP.Data.Services
CssBlock = item.IdxTipoEv == 1 ? "bg-success text-light" : "bg-secondary text-light",
Title = $"{periodStart:HH:mm}-{periodEnd:HH:mm}",
Value = duration,
ValueMax = 1440
ValueMax = 1440,
HasError = hasError
};
}
}
@@ -1157,19 +1164,23 @@ namespace MP.Data.Services
result.Add(currRec);
}
// se non arrivo a mezzanotte aggiungo "pad finale"
var deltaFin = TimeSpan.FromHours(24).Subtract(periodEnd.TimeOfDay);
if (deltaFin.TotalMinutes > 0.01)
if (periodEnd <= dtRif.Date.AddDays(1).AddSeconds(-1))
{
lastIdxTipo = 0;
currRec = new ManualStatusDTO
var deltaFin = TimeSpan.FromHours(24).Subtract(periodEnd.TimeOfDay);
if (deltaFin.TotalMinutes > 0.01)
{
IdxTipo = lastIdxTipo,
CssBlock = "bg-light text-dark",
Title = "missing",
Value = deltaFin.TotalMinutes,
ValueMax = 1440
};
result.Add(currRec);
lastIdxTipo = 0;
currRec = new ManualStatusDTO
{
IdxTipo = lastIdxTipo,
CssBlock = "bg-light text-dark",
Title = "missing",
Value = deltaFin.TotalMinutes,
ValueMax = 1440
};
result.Add(currRec);
}
}
}
return result;