Compare commits

...

74 Commits

Author SHA1 Message Date
Samuele Locatelli 45e2ff00f0 Merge branch 'release/FullOrderEditing' 2021-08-10 16:12:35 +02:00
Samuele Locatelli 2f27d2bd0b COmpletato editing e cambio codice ordine in caso di modifica totale 2021-08-10 13:02:53 +02:00
Samuele Locatelli 2ed39e6df0 Fix reset cache post update + fix filtro aperti 2021-08-10 10:31:39 +02:00
Samuele Locatelli 49687fda7e Completato editing esteso x ordini 2021-08-10 10:21:13 +02:00
Samuele Locatelli 3bb30bcbdd Bozza controllo show chiusi 2021-08-09 19:40:21 +02:00
Samuele Locatelli 6c7a1a5cfa Eggiunto editing quantità su ordini 2021-08-09 19:23:20 +02:00
Samuele Locatelli 52595458c5 Aggiunto in editing anche il trasportatore 2021-08-09 19:16:48 +02:00
Samuele Locatelli 2428daedb4 Aggiunta logica editing, delete, insert ordini! 2021-08-09 19:14:52 +02:00
Samuele Locatelli 7cd86f0036 aggiunta migrations 2021-08-09 16:39:56 +02:00
Samuele Locatelli 259cba1dc8 refresh modelli x ordini 2021-08-09 16:39:49 +02:00
Samuele Locatelli 08d0134f8c refresh metodi gestione ricalcolo ordini 2021-08-06 18:49:39 +02:00
Samuele Locatelli 24e76181e6 appuntata gestione verifica livelli su insert FLog 2021-08-06 18:49:26 +02:00
Samuele Locatelli 70ce9ee91c Aggiunto appunti x gestione riordino automatico (DA VALIDARE) 2021-08-06 18:43:18 +02:00
Samuele Locatelli f9a66b1371 Aggiunta bozza gestione creazione riordini automatici (da schedulare?) 2021-08-06 18:22:16 +02:00
Samuele Locatelli 570e6bda06 Aggiunta migrazione nuovi dati OrderQty x riordino 2021-08-06 18:22:03 +02:00
Samuele Locatelli 9150004850 Revisione fattore riduzione grafici (dimezza se > 1 week) 2021-08-06 17:40:34 +02:00
Samuele Locatelli 493407434e Merge tag 'FixMigrations' into develop
Fix e test migrazioni su HP test ufficio
2021-08-06 17:27:37 +02:00
Samuele Locatelli 86fab02ebf Merge branch 'release/FixMigrations' 2021-08-06 17:27:24 +02:00
Samuele Locatelli 591166189d UPdate modalità migrazione 2021-08-06 17:19:24 +02:00
Samuele Locatelli d5e6ff58b4 Update struttura DB con migration 2021-08-06 16:45:33 +02:00
Samuele Locatelli ead8c3c955 Merge tag 'FixInsert' into develop
Update x produzione
2021-08-06 12:33:34 +02:00
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
Samuele Locatelli 66d27fd95a Merge branch 'release/FixDecoupledInsert' 2021-08-05 15:54:26 +02:00
Samuele Locatelli e64051126f Fix e test inserimento corretto 2021-08-05 15:53:02 +02:00
Samuele Locatelli d75bdfb7c0 Aggiunta "decimazione variabili" in scrittura (da testare) 2021-08-05 15:26:31 +02:00
Samuele Locatelli ff2b83164d Implementato metodi x update DTO al ricevimento dati + riduzione inserimento 2021-08-05 13:59:25 +02:00
Samuele Locatelli 303d08a229 Aggiunta stored x decimazione dati 2021-08-05 12:46:34 +02:00
Samuele Locatelli 31097ccee0 Merge branch 'develop' 2021-08-04 13:19:38 +02:00
Samuele Locatelli e576f94348 refresh 2021-08-04 13:19:29 +02:00
Samuele Locatelli c13d2f135b Refresh 2021-08-04 13:19:04 +02:00
Samuele Locatelli 866319a311 cambio modalità init x valori VUOTI 2021-08-04 13:18:52 +02:00
Samuele Locatelli f93f18561f Fix calcolo PlantId (was hardCoded) 2021-08-03 17:38:08 +02:00
Samuele Locatelli ca7b26b9bc Merge tag 'JsonFix' into develop
Sistemazione fix x json parsato in modo erroneo x ENUM da classe Text.Json di dotNet 5
2021-08-03 12:11:14 +02:00
Samuele Locatelli aea30b6502 Merge branch 'release/JsonFix' 2021-08-03 12:10:48 +02:00
Samuele Locatelli 8b506c54e5 Merge branch 'feature/IobCtrlIntegration' into develop 2021-08-03 12:09:58 +02:00
Samuele Locatelli cae04d8851 Fix parsing json con ENUM in 2 step (text.json --> newtonsoft) 2021-08-03 12:09:46 +02:00
Samuele Locatelli 8b84fa0016 NOn ancora OK decodifica plcMemMap, da indagare 2021-08-02 19:52:16 +02:00
Samuele Locatelli 5381f8a175 Prova modifica x validità ODL 2021-08-02 18:35:09 +02:00
Samuele Locatelli bd5d48587d Merge branch 'develop' 2021-08-02 18:09:49 +02:00
Samuele Locatelli 53cb7e8a4c refresh 2021-08-02 18:09:45 +02:00
Samuele Locatelli 12f553d703 refresh versione 2021-08-02 18:09:37 +02:00
Samuele Locatelli f5c4503fc2 Aggiunta metodo getTask2Exe in uscita GWMS 2021-08-02 18:09:01 +02:00
Samuele Locatelli 4ada317928 Fix acquisizione flog x flux singoli 2021-08-02 17:37:58 +02:00
Samuele Locatelli 5e17621470 Fix sendreboot (--> OK) 2021-08-02 16:31:54 +02:00
Samuele Locatelli af2713be14 Fix ricezione dati conf (fake) 2021-08-02 16:18:50 +02:00
Samuele Locatelli 6f0b6e4f8c aggiunta fake x metodo input 2021-08-02 15:55:09 +02:00
Samuele Locatelli de5bbe0e53 Merge branch 'feature/IobCtrlIntegration' 2021-08-02 15:22:50 +02:00
Samuele Locatelli 26b01d5f9b Merge branch 'master' into feature/IobCtrlIntegration 2021-08-02 15:22:45 +02:00
Samuele Locatelli 667747e4a2 Ancora update x gestione REST calls 2021-08-02 15:22:26 +02:00
Samuele Locatelli 179d19cd94 RImossa migrazione DB 2021-08-02 12:02:17 +02:00
Samuele Locatelli 1d9ed73677 Rimossa migrazione auth 2021-08-02 11:55:37 +02:00
Samuele Locatelli aa8e52c32d Test cambio sintassi init 2021-08-02 11:47:14 +02:00
Samuele Locatelli b5050ab449 Merge branch 'feature/IobCtrlIntegration' into develop 2021-08-02 11:39:06 +02:00
Samuele Locatelli 571b40f058 Fix gestione vers number 2021-08-02 11:37:52 +02:00
Samuele Locatelli 46a8c8bee9 Update fix release version 2021-08-02 11:31:49 +02:00
Samuele Locatelli d8919ccda6 Merge branch 'feature/IobCtrlIntegration' into develop 2021-08-02 11:18:55 +02:00
Samuele Locatelli 28c7e51d64 COmpletato controllers x gestione rebootLog 2021-08-02 11:18:44 +02:00
Samuele Locatelli 7e9b264284 Aggiunta model DB x rebootLog 2021-08-02 10:52:17 +02:00
Samuele Locatelli e23cbbb36d Merge branch 'master' into develop 2021-08-02 10:04:54 +02:00
Samuele Locatelli 499c91a57a Aggiunta metodo alive 2021-08-02 10:04:46 +02:00
Samuele Locatelli de2cd9279c Ancora update metodi IOB x evitare errori preliminari 2021-07-30 18:34:46 +02:00
Samuele Locatelli 513fa6cd91 Merge branch 'feature/IobCtrlIntegration' into develop 2021-07-30 11:35:24 +02:00
Samuele Locatelli 887c7747a0 Update altri metodi IOB 2021-07-24 12:23:45 +02:00
Samuele Locatelli f018c0474d Fix correzione delta temporale x dati da IOB-WIN 2021-07-23 18:14:55 +02:00
Samuele Locatelli 5c1d4776ca Fix metodi fake iniziali + write fluxLog vero 2021-07-23 17:56:59 +02:00
Samuele Locatelli fa77860a50 Inizio integrazione metodi in API 2021-07-23 11:56:34 +02:00
Samuele Locatelli 8f88c42a71 Merge tag 'V_0.8' into develop
COmpletata prima release master di test
2021-06-30 10:20:29 +02:00
47 changed files with 6674 additions and 319 deletions
+219 -78
View File
@@ -35,6 +35,8 @@ namespace GWMS.Data.Controllers
private void CreateSimData(int numDays, int stepMin, int maxHourRate) private void CreateSimData(int numDays, int stepMin, int maxHourRate)
{ {
// disattivazione per sicurezza
#if false
ResetController(); ResetController();
// generazione dati casuale // generazione dati casuale
Random rnd = new Random(); Random rnd = new Random();
@@ -130,12 +132,26 @@ namespace GWMS.Data.Controllers
Log.Error($"Eccezione in salvataggio Orders{Environment.NewLine}{exc}"); Log.Error($"Eccezione in salvataggio Orders{Environment.NewLine}{exc}");
} }
} }
#endif
} }
#endregion Private Methods #endregion Private Methods
#region Public Methods #region Public Methods
/// <summary>
/// Calcola DataOra arrotondata per eccesso secondo intervallo minuti indicato
/// </summary>
/// <param name="dateOrig"></param>
/// <param name="minInt"></param>
/// <returns></returns>
public DateTime DateRoundEnd(DateTime dateOrig, int minInt)
{
int minRound = (int)Math.Ceiling((double)dateOrig.Minute / minInt) * minInt;
DateTime roundDate = dateOrig.Date.AddHours(dateOrig.Hour).AddMinutes(minRound);
return roundDate;
}
public void Dispose() public void Dispose()
{ {
// Clear database context // Clear database context
@@ -160,11 +176,25 @@ namespace GWMS.Data.Controllers
return dbResult; return dbResult;
} }
public List<OrderModel> GetOrdersFilt(int PlantId, int SupplierId, int TransporterId, DateTime DtStart, DateTime DtEnd) public List<OrderModel> GetOrdersFilt(int PlantId, int SupplierId, int TransporterId, DateTime DtStart, DateTime DtEnd, bool ShowClosed)
{ {
var dbResult = dbCtx var dbResult = dbCtx
.DbSetOrders .DbSetOrders
.Where(x => (x.PlantId == PlantId || PlantId == 0) && (x.SupplierId == SupplierId || SupplierId == 0) && (x.TransporterId == TransporterId || TransporterId == 0) && (x.DtOrder >= DtStart && x.DtOrder <= DtEnd)) .Where(x => (x.PlantId == PlantId || PlantId == 0) && (x.SupplierId == SupplierId || SupplierId == 0) && (x.TransporterId == TransporterId || TransporterId == 0) && (x.DtOrder >= DtStart && x.DtOrder <= DtEnd) && (x.ExecutionQty == 0 || ShowClosed))
.Include(p => p.Plant)
.Include(s => s.Supplier)
.Include(t => t.Transporter)
.OrderByDescending(x => x.DtOrder)
.ToList();
return dbResult;
}
public List<OrderModel> GetOrdersOpen(int PlantId)
{
var dbResult = dbCtx
.DbSetOrders
.Where(x => (x.PlantId == PlantId || PlantId == 0) && (x.DtExecStart < x.DtOrder))
.Include(p => p.Plant) .Include(p => p.Plant)
.Include(s => s.Supplier) .Include(s => s.Supplier)
.Include(t => t.Transporter) .Include(t => t.Transporter)
@@ -212,14 +242,38 @@ namespace GWMS.Data.Controllers
return dbResult; return dbResult;
} }
public List<PlantDTO> GetPlantsDTO() public List<PlantDTO> GetPlantsDTO(int maxRecords)
{ {
var plantList = dbCtx List<PlantDTO> dbResult = new List<PlantDTO>();
.DbSetPlant using (GWMSContext dbCtxMult = new GWMSContext(_configuration))
.ToList(); {
var plantList = dbCtxMult
.DbSetPlant
.ToList();
var dbResult = plantList dbResult = plantList
.Select(x => PlantDTO(x.PlantId)) .Select(x => PlantDTO(x.PlantId, maxRecords))
.ToList();
}
return dbResult;
}
/// <summary>
/// Restituisce ultimi eventi rebootlog
/// </summary>
/// <param name="maxNum">num eventi, se 0 = tutti</param>
/// <returns></returns>
public List<RebootLogModel> GetRebootLog(int maxNum = 100)
{
if (maxNum == 0)
{
maxNum = dbCtx.DbRebootLog.Count();
}
var dbResult = dbCtx
.DbRebootLog
.OrderByDescending(x => x.DtEvent)
.Take(maxNum)
.ToList(); .ToList();
return dbResult; return dbResult;
@@ -279,6 +333,51 @@ namespace GWMS.Data.Controllers
return answ; return answ;
} }
/// <summary>
/// Eliminazione di un ordine
/// </summary>
/// <param name="Item2Del"></param>
/// <returns></returns>
public bool OrderDelete(OrderModel Item2Del)
{
bool done = false;
try
{
if (Item2Del != null)
{
dbCtx
.DbSetOrders
.Remove(Item2Del);
dbCtx.SaveChanges();
done = true;
}
}
catch (Exception exc)
{ }
return done;
}
/// <summary>
/// Aggiunta in blocco di Ordini
/// </summary>
/// <param name="newItems"></param>
/// <returns></returns>
public bool OrderInsert(List<OrderModel> newItems)
{
bool done = false;
try
{
dbCtx
.DbSetOrders
.AddRange(newItems);
dbCtx.SaveChanges();
done = true;
}
catch (Exception exc)
{ }
return done;
}
/// <summary> /// <summary>
/// Aggiorna un Ordine /// Aggiorna un Ordine
/// </summary> /// </summary>
@@ -295,6 +394,12 @@ namespace GWMS.Data.Controllers
.FirstOrDefault(); .FirstOrDefault();
if (currData != null) if (currData != null)
{ {
// se ho modificato data --> cambio codice ordine!
if (!dbCtx.Entry(updItem).OriginalValues["DtOrder"].Equals(dbCtx.Entry(updItem).CurrentValues["DtOrder"]))
{
updItem.OrderCode = $"O{updItem.Plant.PlantCode}{updItem.DtOrder:yyMMddHHmm}";
updItem.OrderDesc = $"Ordine {updItem.Plant.PlantDesc} - {updItem.DtOrder}";
}
dbCtx.Entry(updItem).State = EntityState.Modified; dbCtx.Entry(updItem).State = EntityState.Modified;
} }
else else
@@ -314,12 +419,13 @@ namespace GWMS.Data.Controllers
/// <summary> /// <summary>
/// Recupero info PLANT modalità DTO /// Recupero info PLANT modalità DTO
/// </summary> /// </summary>
/// <param name="PlantId"></param> /// <param name="PlantId">Impianto</param>
/// <param name="PlantId">Max numero di record da recuperare</param>
/// <returns></returns> /// <returns></returns>
public PlantDTO PlantDTO(int PlantId) public PlantDTO PlantDTO(int PlantId, int maxRecords)
{ {
var currPlant = GetPlant(PlantId); var currPlant = GetPlant(PlantId);
PlantDTO answ = new PlantDTO();
List<TSData> LevelTS = new List<TSData>(); List<TSData> LevelTS = new List<TSData>();
Dictionary<string, double> PressAct = new Dictionary<string, double>(); Dictionary<string, double> PressAct = new Dictionary<string, double>();
Dictionary<string, List<TSData>> PressTS = new Dictionary<string, List<TSData>>(); Dictionary<string, List<TSData>> PressTS = new Dictionary<string, List<TSData>>();
@@ -327,104 +433,123 @@ namespace GWMS.Data.Controllers
List<TSData> PressBHTS = new List<TSData>(); List<TSData> PressBHTS = new List<TSData>();
List<TSData> PressBLTS = new List<TSData>(); List<TSData> PressBLTS = new List<TSData>();
List<TSData> OrderTS = 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 .DbSetPlantLog
.Where(x => x.FluxType == "Level" && x.PlantId == PlantId) .Where(x => x.FluxType == "Level" && x.PlantId == PlantId)
.OrderBy(x => x.DtEvent) .OrderBy(x => x.DtEvent)
.Take(maxRecords)
.ToList(); .ToList();
var rawMainPressData = dbCtx var rawMainPressData = dbCtxMult
.DbSetPlantLog .DbSetPlantLog
.Where(x => x.FluxType == "MainPress" && x.PlantId == PlantId) .Where(x => x.FluxType == "MainPress" && x.PlantId == PlantId)
.OrderBy(x => x.DtEvent) .OrderBy(x => x.DtEvent)
.ToList(); .Take(maxRecords)
.ToList();
var rawBHPressData = dbCtx var rawBHPressData = dbCtxMult
.DbSetPlantLog .DbSetPlantLog
.Where(x => x.FluxType == "PressBH" && x.PlantId == PlantId) .Where(x => x.FluxType == "PressBH" && x.PlantId == PlantId)
.OrderBy(x => x.DtEvent) .OrderBy(x => x.DtEvent)
.ToList(); .Take(maxRecords)
.ToList();
var rawBLPressData = dbCtx var rawBLPressData = dbCtxMult
.DbSetPlantLog .DbSetPlantLog
.Where(x => x.FluxType == "PressBL" && x.PlantId == PlantId) .Where(x => x.FluxType == "PressBL" && x.PlantId == PlantId)
.OrderBy(x => x.DtEvent) .OrderBy(x => x.DtEvent)
.ToList(); .Take(maxRecords)
.ToList();
var rawOrderData = dbCtx var rawOrderData = dbCtxMult
.DbSetOrders .DbSetOrders
.Where(x => x.PlantId == PlantId) .Where(x => x.PlantId == PlantId && x.ExecutionQty == 0)
.OrderBy(x => x.DtOrder) .OrderBy(x => x.DtOrder)
.ToList(); .Take(maxRecords)
.ToList();
LevelTS = rawLevelData LevelTS = rawLevelData
.Select(x => new TSData() { DtEvent = x.DtEvent, ValDouble = x.ValNumber }).ToList(); .Select(x => new TSData() { DtEvent = x.DtEvent, ValDouble = x.ValNumber }).ToList();
OrderTS = rawOrderData OrderTS = rawOrderData
.Select(x => new TSData() { DtEvent = x.DtOrder, ValDouble = x.OrderQty }).ToList(); .Select(x => new TSData() { DtEvent = x.DtOrder, ValDouble = x.OrderQty }).ToList();
PressMainTS = rawMainPressData PressMainTS = rawMainPressData
.Select(x => new TSData() { DtEvent = x.DtEvent, ValDouble = x.ValNumber }).ToList(); .Select(x => new TSData() { DtEvent = x.DtEvent, ValDouble = x.ValNumber }).ToList();
PressBHTS = rawBHPressData PressBHTS = rawBHPressData
.Select(x => new TSData() { DtEvent = x.DtEvent, ValDouble = x.ValNumber }).ToList(); .Select(x => new TSData() { DtEvent = x.DtEvent, ValDouble = x.ValNumber }).ToList();
PressBLTS = rawBLPressData PressBLTS = rawBLPressData
.Select(x => new TSData() { DtEvent = x.DtEvent, ValDouble = x.ValNumber }).ToList(); .Select(x => new TSData() { DtEvent = x.DtEvent, ValDouble = x.ValNumber }).ToList();
PressTS.Add("Main", PressMainTS); PressTS.Add("Main", PressMainTS);
PressTS.Add("BH", PressBHTS); PressTS.Add("BH", PressBHTS);
PressTS.Add("BL", PressBLTS); PressTS.Add("BL", PressBLTS);
PressAct.Add("Main", PressMainTS.OrderByDescending(x => x.DtEvent).Take(1).FirstOrDefault().ValDouble); double actLevel = LevelTS.Count > 0 ? LevelTS.OrderByDescending(x => x.DtEvent).Take(1).FirstOrDefault().ValDouble : 0;
PressAct.Add("BH", PressBHTS.OrderByDescending(x => x.DtEvent).Take(1).FirstOrDefault().ValDouble); double valMain = PressMainTS.Count > 0 ? PressMainTS.OrderByDescending(x => x.DtEvent).Take(1).FirstOrDefault().ValDouble : 0;
PressAct.Add("BL", PressBLTS.OrderByDescending(x => x.DtEvent).Take(1).FirstOrDefault().ValDouble); 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;
PlantDTO answ = new PlantDTO() PressAct.Add("Main", valMain);
{ PressAct.Add("BH", valBH);
PlantId = PlantId, PressAct.Add("BL", valBL);
PlantCode = currPlant.PlantCode,
PlantDesc = currPlant.PlantDesc, // popolo valolri
LevelAct = currPlant.LevelAct, answ = new PlantDTO()
LevelMax = currPlant.LevelMax, {
PressAct = PressAct, PlantId = PlantId,
LevelTS = LevelTS, PlantCode = currPlant.PlantCode,
PressTS = PressTS, PlantDesc = currPlant.PlantDesc,
OrderTS = OrderTS LevelAct = actLevel,
}; LevelMax = currPlant.LevelMax,
LevelReorder = currPlant.LevelReorder,
OrderQtyStd = currPlant.OrderQtyStd,
PressAct = PressAct,
LevelTS = LevelTS,
PressTS = PressTS,
OrderTS = OrderTS
};
}
return answ; return answ;
} }
/// <summary> /// <summary>
/// Inserimento di un novo record x plant log /// Recupero da DB l'ultimo record per ogni flusso
/// </summary>
/// <returns></returns>
public List<PlantLogModel> PlantLogGetLastByFlux(int PlantId)
{
List<PlantLogModel> lastRec = dbCtx
.DbSetPlantLog
.Where(x => x.PlantId == PlantId)
.OrderByDescending(o => o.DtEvent)
.Take(1000)
.AsEnumerable()
.GroupBy(g => g.FluxType)
.Select(s => s.First())
.ToList();
return lastRec;
}
/// <summary>
/// Inserimento di un set di record x plant log
/// </summary> /// </summary>
/// <param name="PlantLogModel">Record da inserire (senza ID...)</param> /// <param name="PlantLogModel">Record da inserire (senza ID...)</param>
/// <returns></returns> /// <returns></returns>
public bool PlantLogInsertNew(List<PlantLogModel> newItems) public bool PlantLogInsertNew(List<PlantLogModel> newItems)
{ {
bool fatto = false; bool fatto = false;
//List<PlantLogModel> newList = new List<PlantLogModel>();
//foreach (var item in newItems)
//{
// newList.Add(new PlantLogModel()
// {
// DtEvent = item.DtEvent,
// FluxType = item.FluxType,
// PlantId = item.PlantId,
// ValNumber = item.ValNumber,
// ValString = item.ValString
// });
//}
try try
{ {
dbCtx dbCtx
.DbSetPlantLog .DbSetPlantLog
.AddRange(newItems); .AddRange(newItems);
//.AddRange(newList);
dbCtx.SaveChanges(); dbCtx.SaveChanges();
fatto = true; fatto = true;
} }
@@ -436,6 +561,22 @@ namespace GWMS.Data.Controllers
return fatto; return fatto;
} }
public bool RecordRebootLog(RebootLogModel newItem)
{
bool done = false;
try
{
dbCtx
.DbRebootLog
.Add(newItem);
dbCtx.SaveChanges();
done = true;
}
catch (Exception exc)
{ }
return done;
}
/// <summary> /// <summary>
/// Rigenera intero DB se riceve ID di un plant SIM... /// Rigenera intero DB se riceve ID di un plant SIM...
/// </summary> /// </summary>
+5 -2
View File
@@ -18,9 +18,12 @@ namespace GWMS.Data.DTO
public string PlantCode { get; set; } = ""; public string PlantCode { get; set; } = "";
public string PlantDesc { get; set; } = ""; public string PlantDesc { get; set; } = "";
public double LevelMax { get; set; } = 9999; public double LevelMax { get; set; } = 99999;
public double LevelAct { get; set; } = 0; public double LevelAct { get; set; } = 0;
public double LevelReorder { get; set; } = 0;
public double OrderQtyStd { get; set; } = 0;
public int LevelRatio public int LevelRatio
{ {
@@ -28,7 +31,7 @@ namespace GWMS.Data.DTO
{ {
int answ = 0; int answ = 0;
double denom = LevelMax == 0 ? 1 : LevelMax; double denom = LevelMax == 0 ? 1 : LevelMax;
answ = (int)(LevelAct *100/ denom); answ = (int)(LevelAct * 100 / denom);
return answ; return answ;
} }
} }
+4
View File
@@ -44,6 +44,10 @@ namespace GWMS.Data.DatabaseModels
public double ExecutionQty { get; set; } = 0; public double ExecutionQty { get; set; } = 0;
public double LevelStart { get; set; } = 0;
public double LevelEnd { get; set; } = 1;
[ForeignKey("PlantId")] [ForeignKey("PlantId")]
public virtual PlantDetailModel Plant { get; set; } public virtual PlantDetailModel Plant { get; set; }
+11 -8
View File
@@ -26,20 +26,23 @@ namespace GWMS.Data.DatabaseModels
[MaxLength(250)] [MaxLength(250)]
public string PlantDesc { get; set; } = ""; public string PlantDesc { get; set; } = "";
public double LevelMax { get; set; } = 9999; public double LevelMax { get; set; } = 29999;
public double LevelAct { get; set; } = 0; public double LevelReorder { get; set; } = 0;
public double PressMax { get; set; } = 9999;
public double PressAct { get; set; } = 0; public double OrderQtyStd { get; set; } = 1000;
public double PressBHMax { get; set; } = 9999; //public double LastLevelMax { get; set; } = 0;
public double PressBHAct { get; set; } = 0; //public double PressAct { get; set; } = 0;
public double PressBLMax { get; set; } = 9999; //public double PressBHMax { get; set; } = 9999;
public double PressBLAct { get; set; } = 0; //public double PressBHAct { get; set; } = 0;
//public double PressBLMax { get; set; } = 9999;
//public double PressBLAct { get; set; } = 0;
#endregion Public Properties #endregion Public Properties
} }
@@ -0,0 +1,40 @@
using System;
using System.Linq;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace GWMS.Data.DatabaseModels
{
/// <summary>
/// Tabella dati Plant (log storico)
/// </summary>
[Table("RebootLog")]
public class RebootLogModel
{
#region Public Properties
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int RecordId { get; set; }
public DateTime DtEvent { get; set; } = DateTime.Now;
/// <summary>
/// Oggetto di cui si registra il reboot log
/// </summary>
[MaxLength(250)]
public string Item { get; set; } = "ND";
/// <summary>
/// Payload associato (IP/Mac address)
/// </summary>
[MaxLength(250)]
public string Payload { get; set; } = "";
#endregion Public Properties
}
}
-15
View File
@@ -10,31 +10,16 @@ namespace GWMS.Data
{ {
public class DbAdmin : IDisposable public class DbAdmin : IDisposable
{ {
#if false
private AdminContext adbCtx;
#endif
#region Private Fields #region Private Fields
private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
#endregion Private Fields #endregion Private Fields
#if false
/// <summary>
/// Singleton gestione
/// </summary>
public static DbAdmin man = new DbAdmin();
#endif
#region Public Constructors #region Public Constructors
public DbAdmin() public DbAdmin()
{ {
#if false
// Initialize database context for ADMIN
adbCtx = new AdminContext();
#endif
} }
#endregion Public Constructors #endregion Public Constructors
+8 -4
View File
@@ -46,16 +46,20 @@ namespace GWMS.Data
return DbAdmin.checkCreateUser(DATABASE_USER, DATABASE_PWD); return DbAdmin.checkCreateUser(DATABASE_USER, DATABASE_PWD);
} }
public static async Task<bool> ExecMigrationIdentity() public static bool ExecMigrationIdentity()
{ {
// esecuzione migrazione // esecuzione migrazione
return await DbAdmin.migrateDbIdentity(); var migrateTask = Task.Run(async () => await DbAdmin.migrateDbIdentity());
migrateTask.Wait();
return migrateTask.Result;
} }
public static async Task<bool> ExecMigrationMain() public static bool ExecMigrationMain()
{ {
// esecuzione migrazione // esecuzione migrazione
return await DbAdmin.migrateDbMain(); var migrateTask = Task.Run(async () => await DbAdmin.migrateDbMain());
migrateTask.Wait();
return migrateTask.Result;
} }
public static void InitDb(string server, string nKey, string sKey) public static void InitDb(string server, string nKey, string sKey)
+67
View File
@@ -2,6 +2,47 @@
namespace GWMS.Data namespace GWMS.Data
{ {
/// <summary>
/// Elenco dei tipi di valore gestiti da PLC (inizialmente SIEMENS)
/// </summary>
public enum plcDataType
{
/// <summary>
/// Tipo boolean
/// </summary>
Boolean,
/// <summary>
/// Tipo Int16 intero 16bit
/// </summary>
Int,
/// <summary>
/// Tipo Int32 intero 32bit
/// </summary>
DInt,
/// <summary>
/// Tipo UInt16, intero 16bit
/// </summary>
Word,
/// <summary>
/// Tipo UInt32, intero Unsigned 32bit
/// </summary>
DWord,
/// <summary>
/// Tipo REAL 32 bit
/// </summary>
Real,
/// <summary>
/// Tipo stringa
/// </summary>
String
}
public enum UserLevel public enum UserLevel
{ {
ND = 0, ND = 0,
@@ -10,4 +51,30 @@ namespace GWMS.Data
User = 3, User = 3,
UserExt = 4 UserExt = 4
} }
/// <summary>
/// Tipologia di elaborazione/funzione da applicare a VC
/// </summary>
public enum VC_func
{
/// <summary>
/// Valore puntuale
/// </summary>
POINT = 0,
/// <summary>
/// Valore medio del periodo
/// </summary>
AVG,
/// <summary>
/// Valore massimo del periodo
/// </summary>
MAX,
/// <summary>
/// Valore minimo del periodo
/// </summary>
MIN
}
} }
-4
View File
@@ -26,8 +26,4 @@
<PackageReference Include="NLog" Version="4.7.10" /> <PackageReference Include="NLog" Version="4.7.10" />
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="5.0.0" /> <PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="5.0.0" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Folder Include="Resources\" />
</ItemGroup>
</Project> </Project>
+15 -4
View File
@@ -28,20 +28,31 @@ namespace GWMS.Data
public GWMSContext(IConfiguration configuration) public GWMSContext(IConfiguration configuration)
{ {
_configuration = configuration; _configuration = configuration;
// se non ci fosse... crea! try
Database.EnsureCreated(); {
// se non ci fosse... crea o migra!
Database.Migrate();
}
catch (Exception exc)
{ }
} }
public GWMSContext(DbContextOptions<GWMSContext> options) : base(options) public GWMSContext(DbContextOptions<GWMSContext> options) : base(options)
{ {
// se non ci fosse... crea! try
Database.EnsureCreated(); {
// se non ci fosse... crea o migra!
Database.Migrate();
}
catch (Exception exc)
{ }
} }
#endregion Public Constructors #endregion Public Constructors
#region Public Properties #region Public Properties
public virtual DbSet<RebootLogModel> DbRebootLog { get; set; }
public virtual DbSet<ConfigModel> DbSetConfig { get; set; } public virtual DbSet<ConfigModel> DbSetConfig { get; set; }
public virtual DbSet<ItemModel> DbSetItems { get; set; } public virtual DbSet<ItemModel> DbSetItems { get; set; }
+241
View File
@@ -0,0 +1,241 @@
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GWMS.Data
{
public class IobObjects
{
#region Public Classes
/// <summary>
/// Struttura conf tipo dati
/// </summary>
public class dataConf
{
#region Public Properties
/// <summary>
/// DESCRIZIONE parametro
/// </summary>
public string description { get; set; } = "";
/// <summary>
/// Fattore per eventuale divisione (es leggo 1234 --> 12,34 con factor=100)
/// </summary>
public int factor { get; set; } = 1;
/// <summary>
/// Indice nell'area di memoria (da valore iniziale = 0)
/// </summary>
public int index { get; set; } = 0;
/// <summary>
/// Valore massimo ammesso (ove usato, es simulazione)
/// </summary>
public int maxVal { get; set; } = 9999;
/// <summary>
/// Nome "assoluto" della posizione nell'area di memoria (anche diverso da indice)
/// </summary>
public string memAddr { get; set; } = "";
/// <summary>
/// Valore minimo ammesso (ove usato, es simulazione)
/// </summary>
public int minVal { get; set; } = 0;
/// <summary>
/// NOME parametro
/// </summary>
public string name { get; set; } = "none";
/// <summary>
/// Size in byte
/// </summary>
public int size { get; set; } = 0;
/// <summary>
/// Tipo di dato
/// </summary>
[JsonConverter(typeof(StringEnumConverter))]
public plcDataType tipoMem { get; set; } = plcDataType.Int;
/// <summary>
/// Valore parametro (come stringa, decimali con ",", default VUOTO), poi LETTO da PLC (o appena scritto)
/// </summary>
public string value { get; set; } = "";
#endregion Public Properties
}
/// <summary>
/// Struttura conf tipo dati
/// </summary>
public class dataConfTSVC : dataConf
{
#region Public Properties
/// <summary>
/// Tipo di funzione da applicare al dato
/// </summary>
[JsonConverter(typeof(StringEnumConverter))]
public VC_func func { get; set; } = VC_func.MAX;
/// <summary>
/// Periodo campionamento
/// </summary>
public int period { get; set; } = 60;
#endregion Public Properties
}
/// <summary>
/// Tracciato InputEvents in formato JSON valido
/// Derivato da input realtime valore=3&dtEve=20181206180600000&dtCurr=20181206180600000&cnt=999
/// </summary>
public class evData
{
#region Public Properties
/// <summary>
/// Contatore incrementale x riordino invio (opzionale)
/// </summary>
public int cnt { get; set; } = 0;
/// <summary>
/// DataOra corrente della trasmissione
/// </summary>
public DateTime dtCurr { get; set; } = DateTime.Now;
/// <summary>
/// DataOra evento
/// </summary>
public DateTime dtEve { get; set; } = DateTime.Now;
/// <summary>
/// Valore del dato di flusso registrato
/// </summary>
public string valore { get; set; } = "-";
#endregion Public Properties
}
/// <summary>
/// Array valori tipo evData inviati come JSon
/// </summary>
public class evJsonPayload
{
#region Public Properties
public List<evData> eventList { get; set; }
#endregion Public Properties
}
/// <summary>
/// Tracciato FluxLog in formato JSON valido
/// </summary>
public class flogData : evData
{
#region Public Properties
/// <summary>
/// nome del flusso
/// </summary>
public string flux { get; set; } = "ND";
#endregion Public Properties
}
/// <summary>
/// Array valori tipo flogData inviati come JSon
/// </summary>
public class flogJsonPayload
{
#region Public Properties
public List<flogData> fluxData { get; set; }
#endregion Public Properties
}
/// <summary>
/// Classe gestione ITEM di un OBJ (machine) generico (read/write)
/// </summary>
public class objItem
{
#region Public Properties
/// <summary>
/// Ultimo messaggio associato (conferma scrittura, errore, ...)
/// </summary>
public string lastMessage { get; set; } = "";
/// <summary>
/// DataOra ultima lettura
/// </summary>
public DateTime lastRead { get; set; } = DateTime.Now.AddHours(-1);
/// <summary>
/// DataOra ultima richiesta scrittura
/// </summary>
public DateTime lastRequest { get; set; } = DateTime.Now.AddDays(-1);
/// <summary>
/// NOME item
/// </summary>
public string name { get; set; } = "";
/// <summary>
/// Indica il NUOVO valore richiesto x l'item
/// </summary>
public string reqValue { get; set; } = "";
/// <summary>
/// UID univoco
/// </summary>
public string uid { get; set; } = "";
/// <summary>
/// Valore parametro (come stringa, decimali con ",", default VUOTO), sul CNC/PLC
/// </summary>
public string value { get; set; } = "";
/// <summary>
/// Indica se sia abilitato in scrittura (WRITE)
/// </summary>
public bool writable { get; set; } = false;
#endregion Public Properties
}
/// <summary>
/// Struttura conf memorie PLC (inizialmente SIEMENS)
/// </summary>
public class plcMemMap
{
#region Public Properties
/// <summary>
/// Parametri ammessi per IOB x lettura
/// = new Dictionary<string, dataConfTSVC>();
/// </summary>
public Dictionary<string, dataConfTSVC> mMapRead { get; set; }
/// <summary>
/// Parametri ammessi per IOB x scrittura
/// = new Dictionary<string, dataConf>();
/// </summary>
public Dictionary<string, dataConf> mMapWrite { get; set; }
#endregion Public Properties
}
#endregion Public Classes
}
}
+910
View File
@@ -0,0 +1,910 @@
// <auto-generated />
using System;
using GWMS.Data;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace GWMS.Data.Migrations
{
[DbContext(typeof(GWMSContext))]
[Migration("20210802085127_RebootLog")]
partial class RebootLog
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("Relational:MaxIdentifierLength", 64)
.HasAnnotation("ProductVersion", "5.0.7");
modelBuilder.Entity("GWMS.Data.DatabaseModels.AnKeyValModel", b =>
{
b.Property<string>("KeyName")
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.Property<string>("Descript")
.HasMaxLength(250)
.HasColumnType("varchar(250)")
.HasComment("Descrizione dell'item");
b.Property<int>("ValFloat")
.HasColumnType("int");
b.Property<int>("ValInt")
.HasColumnType("int");
b.Property<string>("ValString")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.HasKey("KeyName");
b.ToTable("AnKeyVal");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.ConfigModel", b =>
{
b.Property<string>("KeyName")
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.Property<string>("Note")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<string>("Val")
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.Property<string>("ValStd")
.HasMaxLength(50)
.HasColumnType("varchar(50)")
.HasComment("Valore di default/riferimento per la variabile");
b.HasKey("KeyName");
b.ToTable("Config");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.ItemModel", b =>
{
b.Property<int>("ItemId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<string>("ItemCode")
.HasMaxLength(100)
.HasColumnType("varchar(100)");
b.Property<string>("ItemDesc")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<string>("ItemType")
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.Property<string>("UM")
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.HasKey("ItemId");
b.ToTable("Items");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.ListValModel", b =>
{
b.Property<string>("TabName")
.HasMaxLength(50)
.HasColumnType("varchar(50)")
.HasColumnName("TabName");
b.Property<string>("FieldName")
.HasMaxLength(50)
.HasColumnType("varchar(50)")
.HasColumnName("FieldName");
b.Property<string>("Val")
.HasMaxLength(50)
.HasColumnType("varchar(50)")
.HasColumnName("Val");
b.Property<string>("Descript")
.HasMaxLength(250)
.HasColumnType("varchar(250)")
.HasColumnName("Descript");
b.Property<int>("Ordinal")
.HasColumnType("int")
.HasColumnName("Ordinal");
b.HasKey("TabName", "FieldName", "Val");
b.ToTable("ListVal");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.OrderModel", b =>
{
b.Property<int>("OrderId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<DateTime>("DtETA")
.HasColumnType("datetime(6)");
b.Property<DateTime>("DtExecEnd")
.HasColumnType("datetime(6)");
b.Property<DateTime>("DtExecStart")
.HasColumnType("datetime(6)");
b.Property<DateTime>("DtOrder")
.HasColumnType("datetime(6)");
b.Property<double>("ExecutionQty")
.HasColumnType("double");
b.Property<string>("OrderCode")
.HasMaxLength(100)
.HasColumnType("varchar(100)");
b.Property<string>("OrderDesc")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<double>("OrderQty")
.HasColumnType("double");
b.Property<int>("PlantId")
.HasColumnType("int");
b.Property<int>("SupplierId")
.HasColumnType("int");
b.Property<int>("TransporterId")
.HasColumnType("int");
b.HasKey("OrderId");
b.HasIndex("PlantId");
b.HasIndex("SupplierId");
b.HasIndex("TransporterId");
b.ToTable("Order");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantDetailModel", b =>
{
b.Property<int>("PlantId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<double>("LevelAct")
.HasColumnType("double");
b.Property<double>("LevelMax")
.HasColumnType("double");
b.Property<string>("PlantCode")
.HasMaxLength(100)
.HasColumnType("varchar(100)");
b.Property<string>("PlantDesc")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<double>("PressAct")
.HasColumnType("double");
b.Property<double>("PressBHAct")
.HasColumnType("double");
b.Property<double>("PressBHMax")
.HasColumnType("double");
b.Property<double>("PressBLAct")
.HasColumnType("double");
b.Property<double>("PressBLMax")
.HasColumnType("double");
b.Property<double>("PressMax")
.HasColumnType("double");
b.HasKey("PlantId");
b.ToTable("PlantDetail");
b.HasData(
new
{
PlantId = 1,
LevelAct = 0.0,
LevelMax = 28000.0,
PlantCode = "PIZ03",
PlantDesc = "Collecchio",
PressAct = 0.0,
PressBHAct = 0.0,
PressBHMax = 270.0,
PressBLAct = 0.0,
PressBLMax = 270.0,
PressMax = 19.0
},
new
{
PlantId = 2,
LevelAct = 0.0,
LevelMax = 28000.0,
PlantCode = "PIZ04",
PlantDesc = "Noceto",
PressAct = 0.0,
PressBHAct = 0.0,
PressBHMax = 270.0,
PressBLAct = 0.0,
PressBLMax = 270.0,
PressMax = 19.0
},
new
{
PlantId = 3,
LevelAct = 0.0,
LevelMax = 24000.0,
PlantCode = "PIZ05",
PlantDesc = "Baganzola",
PressAct = 0.0,
PressBHAct = 0.0,
PressBHMax = 270.0,
PressBLAct = 0.0,
PressBLMax = 270.0,
PressMax = 19.0
},
new
{
PlantId = 4,
LevelAct = 0.0,
LevelMax = 24000.0,
PlantCode = "PIZ08",
PlantDesc = "Pilastrello",
PressAct = 0.0,
PressBHAct = 0.0,
PressBHMax = 270.0,
PressBLAct = 0.0,
PressBLMax = 270.0,
PressMax = 19.0
});
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantLogModel", b =>
{
b.Property<int>("PlantDataId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<DateTime>("DtEvent")
.HasColumnType("datetime(6)");
b.Property<string>("FluxType")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<int>("PlantId")
.HasColumnType("int");
b.Property<double>("ValNumber")
.HasColumnType("double");
b.Property<string>("ValString")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.HasKey("PlantDataId");
b.HasIndex("PlantId");
b.ToTable("PlantLog");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantStatusModel", b =>
{
b.Property<int>("PlantId")
.HasColumnType("int");
b.Property<string>("FluxType")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<DateTime>("DtEvent")
.HasColumnType("datetime(6)");
b.Property<double>("ValNumber")
.HasColumnType("double");
b.Property<string>("ValString")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.HasKey("PlantId", "FluxType");
b.ToTable("PlantStatus");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.RebootLogModel", b =>
{
b.Property<int>("RecordId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<DateTime>("DtEvent")
.HasColumnType("datetime(6)");
b.Property<string>("Item")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<string>("Payload")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.HasKey("RecordId");
b.ToTable("RebootLog");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.SupplierModel", b =>
{
b.Property<int>("SupplierId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<string>("SupplierCode")
.HasMaxLength(100)
.HasColumnType("varchar(100)");
b.Property<string>("SupplierDesc")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.HasKey("SupplierId");
b.ToTable("Supplier");
b.HasData(
new
{
SupplierId = 1,
SupplierCode = "LIQUIGAS",
SupplierDesc = "Liquigas"
},
new
{
SupplierId = 2,
SupplierCode = "VULKANGAS",
SupplierDesc = "Vulkangas"
});
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.TransporterModel", b =>
{
b.Property<int>("TransporterId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<double>("PositionLatitude")
.HasColumnType("double");
b.Property<double>("PositionLongitude")
.HasColumnType("double");
b.Property<DateTime>("PositionUpdated")
.HasColumnType("datetime(6)");
b.Property<string>("TransporterCode")
.HasMaxLength(100)
.HasColumnType("varchar(100)");
b.Property<string>("TransporterDesc")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.HasKey("TransporterId");
b.ToTable("Transporter");
b.HasData(
new
{
TransporterId = 1,
PositionLatitude = 0.0,
PositionLongitude = 0.0,
PositionUpdated = new DateTime(2021, 8, 2, 10, 51, 27, 549, DateTimeKind.Local).AddTicks(3264),
TransporterCode = "LEVO",
TransporterDesc = "Levorato"
},
new
{
TransporterId = 2,
PositionLatitude = 0.0,
PositionLongitude = 0.0,
PositionUpdated = new DateTime(2021, 8, 2, 10, 51, 27, 549, DateTimeKind.Local).AddTicks(3842),
TransporterCode = "TRAF",
TransporterDesc = "Traffik"
});
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.UserModel", b =>
{
b.Property<int>("UserId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<string>("AuthKey")
.HasMaxLength(100)
.HasColumnType("varchar(100)");
b.Property<string>("Email")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<string>("Firstname")
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.Property<bool>("IsActive")
.HasColumnType("tinyint(1)");
b.Property<string>("Lang")
.HasMaxLength(10)
.HasColumnType("varchar(10)");
b.Property<string>("Lastname")
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.Property<int>("Livello")
.HasColumnType("int");
b.Property<int>("MaskPlantId")
.HasColumnType("int");
b.Property<int>("MaskSupplierId")
.HasColumnType("int");
b.Property<int>("MaskTranspId")
.HasColumnType("int");
b.Property<string>("SaltPasswd")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<string>("UserName")
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.HasKey("UserId");
b.ToTable("Users");
b.HasData(
new
{
UserId = 1,
AuthKey = "th1sIsTh3R1vrOfThNgt98",
Email = "samuele@steamware.net",
Firstname = "Samuele",
IsActive = true,
Lang = "IT",
Lastname = "Locatelli",
Livello = 1,
MaskPlantId = 0,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "samuele.locatelli"
},
new
{
UserId = 2,
AuthKey = "th1sIsTh3R1vrOfThNgt91",
Email = "giancarlo@steamware.net",
Firstname = "Giancarlo",
IsActive = true,
Lang = "IT",
Lastname = "Rottoli",
Livello = 1,
MaskPlantId = 0,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "giancarlo.rottoli"
},
new
{
UserId = 3,
AuthKey = "th1sIsTh3R1vrOfThNgt93",
Email = "info@steamware.net",
Firstname = "Steamware",
IsActive = true,
Lang = "IT",
Lastname = "Admin",
Livello = 1,
MaskPlantId = 0,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "steamw.admin"
},
new
{
UserId = 4,
AuthKey = "th1sIsTh3R1vrOfThNgt97",
Email = "a.pizzaferri@pizzaferripetroli.it",
Firstname = "Angelo",
IsActive = true,
Lang = "IT",
Lastname = "Pizzaferri",
Livello = 2,
MaskPlantId = 0,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "angelo.pizzaferri"
},
new
{
UserId = 5,
AuthKey = "th1sIsTh3R1vrOfThNgt99",
Email = "andrei.valeanu@winnlab.it",
Firstname = "Andrei",
IsActive = true,
Lang = "IT",
Lastname = "Valeanu",
Livello = 2,
MaskPlantId = 0,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "andrei.valeanu"
},
new
{
UserId = 6,
AuthKey = "th1sIsTh3R1vrOfThNgt92",
Email = "info@steamware.net",
Firstname = "User",
IsActive = true,
Lang = "IT",
Lastname = "LIQUIGAS",
Livello = 4,
MaskPlantId = 0,
MaskSupplierId = 1,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "liquigas.user01"
},
new
{
UserId = 7,
AuthKey = "th1sIsTh3R1vrOfThNgt94",
Email = "info@steamware.net",
Firstname = "User",
IsActive = true,
Lang = "IT",
Lastname = "VULKANGAS",
Livello = 4,
MaskPlantId = 0,
MaskSupplierId = 2,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "vulkangas.user01"
},
new
{
UserId = 8,
AuthKey = "th1sIsTh3R1vrOfThNgt95",
Email = "info@steamware.net",
Firstname = "User",
IsActive = true,
Lang = "IT",
Lastname = "LEVORATO",
Livello = 4,
MaskPlantId = 0,
MaskSupplierId = 0,
MaskTranspId = 1,
SaltPasswd = "",
UserName = "levorato.user01"
},
new
{
UserId = 9,
AuthKey = "th1sIsTh3R1vrOfThNgt96",
Email = "info@steamware.net",
Firstname = "User",
IsActive = true,
Lang = "IT",
Lastname = "TRAFFIK",
Livello = 4,
MaskPlantId = 0,
MaskSupplierId = 0,
MaskTranspId = 2,
SaltPasswd = "",
UserName = "traffik.user01"
},
new
{
UserId = 10,
AuthKey = "th1sIsTh3R1vrOfThNgt96",
Email = "info@steamware.net",
Firstname = "Stazione",
IsActive = true,
Lang = "IT",
Lastname = "Collecchio",
Livello = 3,
MaskPlantId = 1,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "piz03.user01"
},
new
{
UserId = 11,
AuthKey = "th1sIsTh3R1vrOfThNgt96",
Email = "info@steamware.net",
Firstname = "Stazione",
IsActive = true,
Lang = "IT",
Lastname = "Noceto",
Livello = 3,
MaskPlantId = 2,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "piz04.user01"
},
new
{
UserId = 12,
AuthKey = "th1sIsTh3R1vrOfThNgt96",
Email = "info@steamware.net",
Firstname = "Stazione",
IsActive = true,
Lang = "IT",
Lastname = "Baganzola",
Livello = 3,
MaskPlantId = 3,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "piz05.user01"
},
new
{
UserId = 13,
AuthKey = "th1sIsTh3R1vrOfThNgt96",
Email = "info@steamware.net",
Firstname = "Stazione",
IsActive = true,
Lang = "IT",
Lastname = "Pilastrello",
Livello = 3,
MaskPlantId = 4,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "piz08.user01"
});
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.WeekPlanModel", b =>
{
b.Property<int>("WeekPlanId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<int>("DayNum")
.HasColumnType("int");
b.Property<int>("DeliveryHour")
.HasColumnType("int");
b.Property<string>("Note")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<int>("PlantId")
.HasColumnType("int");
b.Property<int>("SupplierId")
.HasColumnType("int");
b.Property<int>("TransporterId")
.HasColumnType("int");
b.HasKey("WeekPlanId");
b.HasIndex("PlantId");
b.HasIndex("SupplierId");
b.HasIndex("TransporterId");
b.ToTable("WeekPlan");
b.HasData(
new
{
WeekPlanId = 1,
DayNum = 1,
DeliveryHour = 20,
Note = "18K",
PlantId = 2,
SupplierId = 1,
TransporterId = 1
},
new
{
WeekPlanId = 2,
DayNum = 2,
DeliveryHour = 20,
Note = "18K",
PlantId = 2,
SupplierId = 1,
TransporterId = 1
},
new
{
WeekPlanId = 3,
DayNum = 3,
DeliveryHour = 20,
Note = "18K",
PlantId = 2,
SupplierId = 1,
TransporterId = 2
},
new
{
WeekPlanId = 4,
DayNum = 4,
DeliveryHour = 15,
Note = "9K",
PlantId = 2,
SupplierId = 1,
TransporterId = 1
},
new
{
WeekPlanId = 5,
DayNum = 4,
DeliveryHour = 20,
Note = "18K",
PlantId = 2,
SupplierId = 1,
TransporterId = 1
},
new
{
WeekPlanId = 6,
DayNum = 6,
DeliveryHour = 20,
Note = "18K",
PlantId = 2,
SupplierId = 1,
TransporterId = 1
},
new
{
WeekPlanId = 7,
DayNum = 2,
DeliveryHour = 14,
Note = "3K",
PlantId = 3,
SupplierId = 1,
TransporterId = 1
},
new
{
WeekPlanId = 8,
DayNum = 2,
DeliveryHour = 15,
Note = "15K",
PlantId = 4,
SupplierId = 1,
TransporterId = 1
},
new
{
WeekPlanId = 9,
DayNum = 2,
DeliveryHour = 17,
Note = "18K",
PlantId = 1,
SupplierId = 2,
TransporterId = 2
});
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.OrderModel", b =>
{
b.HasOne("GWMS.Data.DatabaseModels.PlantDetailModel", "Plant")
.WithMany()
.HasForeignKey("PlantId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("GWMS.Data.DatabaseModels.SupplierModel", "Supplier")
.WithMany()
.HasForeignKey("SupplierId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("GWMS.Data.DatabaseModels.TransporterModel", "Transporter")
.WithMany()
.HasForeignKey("TransporterId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Plant");
b.Navigation("Supplier");
b.Navigation("Transporter");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantLogModel", b =>
{
b.HasOne("GWMS.Data.DatabaseModels.PlantDetailModel", "Plant")
.WithMany()
.HasForeignKey("PlantId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Plant");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantStatusModel", b =>
{
b.HasOne("GWMS.Data.DatabaseModels.PlantDetailModel", "Plant")
.WithMany()
.HasForeignKey("PlantId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Plant");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.WeekPlanModel", b =>
{
b.HasOne("GWMS.Data.DatabaseModels.PlantDetailModel", "Plant")
.WithMany()
.HasForeignKey("PlantId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("GWMS.Data.DatabaseModels.SupplierModel", "Supplier")
.WithMany()
.HasForeignKey("SupplierId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("GWMS.Data.DatabaseModels.TransporterModel", "Transporter")
.WithMany()
.HasForeignKey("TransporterId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Plant");
b.Navigation("Supplier");
b.Navigation("Transporter");
});
#pragma warning restore 612, 618
}
}
}
@@ -0,0 +1,68 @@
using System;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
namespace GWMS.Data.Migrations
{
public partial class RebootLog : Migration
{
#region Protected Methods
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "RebootLog");
migrationBuilder.UpdateData(
table: "Transporter",
keyColumn: "TransporterId",
keyValue: 1,
column: "PositionUpdated",
value: new DateTime(2021, 6, 25, 16, 15, 35, 940, DateTimeKind.Local).AddTicks(7402));
migrationBuilder.UpdateData(
table: "Transporter",
keyColumn: "TransporterId",
keyValue: 2,
column: "PositionUpdated",
value: new DateTime(2021, 6, 25, 16, 15, 35, 940, DateTimeKind.Local).AddTicks(8022));
}
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "RebootLog",
columns: table => new
{
RecordId = table.Column<int>(type: "int", nullable: false)
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn),
DtEvent = table.Column<DateTime>(type: "datetime(6)", nullable: false),
Item = table.Column<string>(type: "varchar(250)", maxLength: 250, nullable: true)
.Annotation("MySql:CharSet", "utf8mb4"),
Payload = table.Column<string>(type: "varchar(250)", maxLength: 250, nullable: true)
.Annotation("MySql:CharSet", "utf8mb4")
},
constraints: table =>
{
table.PrimaryKey("PK_RebootLog", x => x.RecordId);
})
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.UpdateData(
table: "Transporter",
keyColumn: "TransporterId",
keyValue: 1,
column: "PositionUpdated",
value: new DateTime(2021, 8, 2, 10, 51, 27, 549, DateTimeKind.Local).AddTicks(3264));
migrationBuilder.UpdateData(
table: "Transporter",
keyColumn: "TransporterId",
keyValue: 2,
column: "PositionUpdated",
value: new DateTime(2021, 8, 2, 10, 51, 27, 549, DateTimeKind.Local).AddTicks(3842));
}
#endregion Protected Methods
}
}
@@ -0,0 +1,868 @@
// <auto-generated />
using System;
using GWMS.Data;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace GWMS.Data.Migrations
{
[DbContext(typeof(GWMSContext))]
[Migration("20210806134012_PlantData_AddLevelReoder")]
partial class PlantData_AddLevelReoder
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("Relational:MaxIdentifierLength", 64)
.HasAnnotation("ProductVersion", "5.0.7");
modelBuilder.Entity("GWMS.Data.DatabaseModels.AnKeyValModel", b =>
{
b.Property<string>("KeyName")
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.Property<string>("Descript")
.HasMaxLength(250)
.HasColumnType("varchar(250)")
.HasComment("Descrizione dell'item");
b.Property<int>("ValFloat")
.HasColumnType("int");
b.Property<int>("ValInt")
.HasColumnType("int");
b.Property<string>("ValString")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.HasKey("KeyName");
b.ToTable("AnKeyVal");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.ConfigModel", b =>
{
b.Property<string>("KeyName")
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.Property<string>("Note")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<string>("Val")
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.Property<string>("ValStd")
.HasMaxLength(50)
.HasColumnType("varchar(50)")
.HasComment("Valore di default/riferimento per la variabile");
b.HasKey("KeyName");
b.ToTable("Config");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.ItemModel", b =>
{
b.Property<int>("ItemId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<string>("ItemCode")
.HasMaxLength(100)
.HasColumnType("varchar(100)");
b.Property<string>("ItemDesc")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<string>("ItemType")
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.Property<string>("UM")
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.HasKey("ItemId");
b.ToTable("Items");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.ListValModel", b =>
{
b.Property<string>("TabName")
.HasMaxLength(50)
.HasColumnType("varchar(50)")
.HasColumnName("TabName");
b.Property<string>("FieldName")
.HasMaxLength(50)
.HasColumnType("varchar(50)")
.HasColumnName("FieldName");
b.Property<string>("Val")
.HasMaxLength(50)
.HasColumnType("varchar(50)")
.HasColumnName("Val");
b.Property<string>("Descript")
.HasMaxLength(250)
.HasColumnType("varchar(250)")
.HasColumnName("Descript");
b.Property<int>("Ordinal")
.HasColumnType("int")
.HasColumnName("Ordinal");
b.HasKey("TabName", "FieldName", "Val");
b.ToTable("ListVal");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.OrderModel", b =>
{
b.Property<int>("OrderId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<DateTime>("DtETA")
.HasColumnType("datetime(6)");
b.Property<DateTime>("DtExecEnd")
.HasColumnType("datetime(6)");
b.Property<DateTime>("DtExecStart")
.HasColumnType("datetime(6)");
b.Property<DateTime>("DtOrder")
.HasColumnType("datetime(6)");
b.Property<double>("ExecutionQty")
.HasColumnType("double");
b.Property<string>("OrderCode")
.HasMaxLength(100)
.HasColumnType("varchar(100)");
b.Property<string>("OrderDesc")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<double>("OrderQty")
.HasColumnType("double");
b.Property<int>("PlantId")
.HasColumnType("int");
b.Property<int>("SupplierId")
.HasColumnType("int");
b.Property<int>("TransporterId")
.HasColumnType("int");
b.HasKey("OrderId");
b.HasIndex("PlantId");
b.HasIndex("SupplierId");
b.HasIndex("TransporterId");
b.ToTable("Order");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantDetailModel", b =>
{
b.Property<int>("PlantId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<double>("LevelMax")
.HasColumnType("double");
b.Property<double>("LevelReorder")
.HasColumnType("double");
b.Property<string>("PlantCode")
.HasMaxLength(100)
.HasColumnType("varchar(100)");
b.Property<string>("PlantDesc")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.HasKey("PlantId");
b.ToTable("PlantDetail");
b.HasData(
new
{
PlantId = 1,
LevelMax = 26000.0,
LevelReorder = 15000.0,
PlantCode = "PIZ03",
PlantDesc = "Collecchio"
},
new
{
PlantId = 2,
LevelMax = 28000.0,
LevelReorder = 15000.0,
PlantCode = "PIZ04",
PlantDesc = "Noceto"
},
new
{
PlantId = 3,
LevelMax = 24000.0,
LevelReorder = 15000.0,
PlantCode = "PIZ05",
PlantDesc = "Baganzola"
},
new
{
PlantId = 4,
LevelMax = 26000.0,
LevelReorder = 15000.0,
PlantCode = "PIZ08",
PlantDesc = "Pilastrello"
});
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantLogModel", b =>
{
b.Property<int>("PlantDataId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<DateTime>("DtEvent")
.HasColumnType("datetime(6)");
b.Property<string>("FluxType")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<int>("PlantId")
.HasColumnType("int");
b.Property<double>("ValNumber")
.HasColumnType("double");
b.Property<string>("ValString")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.HasKey("PlantDataId");
b.HasIndex("PlantId");
b.ToTable("PlantLog");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantStatusModel", b =>
{
b.Property<int>("PlantId")
.HasColumnType("int");
b.Property<string>("FluxType")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<DateTime>("DtEvent")
.HasColumnType("datetime(6)");
b.Property<double>("ValNumber")
.HasColumnType("double");
b.Property<string>("ValString")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.HasKey("PlantId", "FluxType");
b.ToTable("PlantStatus");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.RebootLogModel", b =>
{
b.Property<int>("RecordId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<DateTime>("DtEvent")
.HasColumnType("datetime(6)");
b.Property<string>("Item")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<string>("Payload")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.HasKey("RecordId");
b.ToTable("RebootLog");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.SupplierModel", b =>
{
b.Property<int>("SupplierId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<string>("SupplierCode")
.HasMaxLength(100)
.HasColumnType("varchar(100)");
b.Property<string>("SupplierDesc")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.HasKey("SupplierId");
b.ToTable("Supplier");
b.HasData(
new
{
SupplierId = 1,
SupplierCode = "LIQUIGAS",
SupplierDesc = "Liquigas"
},
new
{
SupplierId = 2,
SupplierCode = "VULKANGAS",
SupplierDesc = "Vulkangas"
});
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.TransporterModel", b =>
{
b.Property<int>("TransporterId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<double>("PositionLatitude")
.HasColumnType("double");
b.Property<double>("PositionLongitude")
.HasColumnType("double");
b.Property<DateTime>("PositionUpdated")
.HasColumnType("datetime(6)");
b.Property<string>("TransporterCode")
.HasMaxLength(100)
.HasColumnType("varchar(100)");
b.Property<string>("TransporterDesc")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.HasKey("TransporterId");
b.ToTable("Transporter");
b.HasData(
new
{
TransporterId = 1,
PositionLatitude = 0.0,
PositionLongitude = 0.0,
PositionUpdated = new DateTime(2021, 8, 6, 15, 40, 12, 341, DateTimeKind.Local).AddTicks(9521),
TransporterCode = "LEVO",
TransporterDesc = "Levorato"
},
new
{
TransporterId = 2,
PositionLatitude = 0.0,
PositionLongitude = 0.0,
PositionUpdated = new DateTime(2021, 8, 6, 15, 40, 12, 341, DateTimeKind.Local).AddTicks(9901),
TransporterCode = "TRAF",
TransporterDesc = "Traffik"
});
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.UserModel", b =>
{
b.Property<int>("UserId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<string>("AuthKey")
.HasMaxLength(100)
.HasColumnType("varchar(100)");
b.Property<string>("Email")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<string>("Firstname")
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.Property<bool>("IsActive")
.HasColumnType("tinyint(1)");
b.Property<string>("Lang")
.HasMaxLength(10)
.HasColumnType("varchar(10)");
b.Property<string>("Lastname")
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.Property<int>("Livello")
.HasColumnType("int");
b.Property<int>("MaskPlantId")
.HasColumnType("int");
b.Property<int>("MaskSupplierId")
.HasColumnType("int");
b.Property<int>("MaskTranspId")
.HasColumnType("int");
b.Property<string>("SaltPasswd")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<string>("UserName")
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.HasKey("UserId");
b.ToTable("Users");
b.HasData(
new
{
UserId = 1,
AuthKey = "th1sIsTh3R1vrOfThNgt98",
Email = "samuele@steamware.net",
Firstname = "Samuele",
IsActive = true,
Lang = "IT",
Lastname = "Locatelli",
Livello = 1,
MaskPlantId = 0,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "samuele.locatelli"
},
new
{
UserId = 2,
AuthKey = "th1sIsTh3R1vrOfThNgt91",
Email = "giancarlo@steamware.net",
Firstname = "Giancarlo",
IsActive = true,
Lang = "IT",
Lastname = "Rottoli",
Livello = 1,
MaskPlantId = 0,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "giancarlo.rottoli"
},
new
{
UserId = 3,
AuthKey = "th1sIsTh3R1vrOfThNgt93",
Email = "info@steamware.net",
Firstname = "Steamware",
IsActive = true,
Lang = "IT",
Lastname = "Admin",
Livello = 1,
MaskPlantId = 0,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "steamw.admin"
},
new
{
UserId = 4,
AuthKey = "th1sIsTh3R1vrOfThNgt97",
Email = "a.pizzaferri@pizzaferripetroli.it",
Firstname = "Angelo",
IsActive = true,
Lang = "IT",
Lastname = "Pizzaferri",
Livello = 2,
MaskPlantId = 0,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "angelo.pizzaferri"
},
new
{
UserId = 5,
AuthKey = "th1sIsTh3R1vrOfThNgt99",
Email = "andrei.valeanu@winnlab.it",
Firstname = "Andrei",
IsActive = true,
Lang = "IT",
Lastname = "Valeanu",
Livello = 2,
MaskPlantId = 0,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "andrei.valeanu"
},
new
{
UserId = 6,
AuthKey = "th1sIsTh3R1vrOfThNgt92",
Email = "info@steamware.net",
Firstname = "User",
IsActive = true,
Lang = "IT",
Lastname = "LIQUIGAS",
Livello = 4,
MaskPlantId = 0,
MaskSupplierId = 1,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "liquigas.user01"
},
new
{
UserId = 7,
AuthKey = "th1sIsTh3R1vrOfThNgt94",
Email = "info@steamware.net",
Firstname = "User",
IsActive = true,
Lang = "IT",
Lastname = "VULKANGAS",
Livello = 4,
MaskPlantId = 0,
MaskSupplierId = 2,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "vulkangas.user01"
},
new
{
UserId = 8,
AuthKey = "th1sIsTh3R1vrOfThNgt95",
Email = "info@steamware.net",
Firstname = "User",
IsActive = true,
Lang = "IT",
Lastname = "LEVORATO",
Livello = 4,
MaskPlantId = 0,
MaskSupplierId = 0,
MaskTranspId = 1,
SaltPasswd = "",
UserName = "levorato.user01"
},
new
{
UserId = 9,
AuthKey = "th1sIsTh3R1vrOfThNgt96",
Email = "info@steamware.net",
Firstname = "User",
IsActive = true,
Lang = "IT",
Lastname = "TRAFFIK",
Livello = 4,
MaskPlantId = 0,
MaskSupplierId = 0,
MaskTranspId = 2,
SaltPasswd = "",
UserName = "traffik.user01"
},
new
{
UserId = 10,
AuthKey = "th1sIsTh3R1vrOfThNgt96",
Email = "info@steamware.net",
Firstname = "Stazione",
IsActive = true,
Lang = "IT",
Lastname = "Collecchio",
Livello = 3,
MaskPlantId = 1,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "piz03.user01"
},
new
{
UserId = 11,
AuthKey = "th1sIsTh3R1vrOfThNgt96",
Email = "info@steamware.net",
Firstname = "Stazione",
IsActive = true,
Lang = "IT",
Lastname = "Noceto",
Livello = 3,
MaskPlantId = 2,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "piz04.user01"
},
new
{
UserId = 12,
AuthKey = "th1sIsTh3R1vrOfThNgt96",
Email = "info@steamware.net",
Firstname = "Stazione",
IsActive = true,
Lang = "IT",
Lastname = "Baganzola",
Livello = 3,
MaskPlantId = 3,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "piz05.user01"
},
new
{
UserId = 13,
AuthKey = "th1sIsTh3R1vrOfThNgt96",
Email = "info@steamware.net",
Firstname = "Stazione",
IsActive = true,
Lang = "IT",
Lastname = "Pilastrello",
Livello = 3,
MaskPlantId = 4,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "piz08.user01"
});
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.WeekPlanModel", b =>
{
b.Property<int>("WeekPlanId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<int>("DayNum")
.HasColumnType("int");
b.Property<int>("DeliveryHour")
.HasColumnType("int");
b.Property<string>("Note")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<int>("PlantId")
.HasColumnType("int");
b.Property<int>("SupplierId")
.HasColumnType("int");
b.Property<int>("TransporterId")
.HasColumnType("int");
b.HasKey("WeekPlanId");
b.HasIndex("PlantId");
b.HasIndex("SupplierId");
b.HasIndex("TransporterId");
b.ToTable("WeekPlan");
b.HasData(
new
{
WeekPlanId = 1,
DayNum = 1,
DeliveryHour = 20,
Note = "18K",
PlantId = 2,
SupplierId = 1,
TransporterId = 1
},
new
{
WeekPlanId = 2,
DayNum = 2,
DeliveryHour = 20,
Note = "18K",
PlantId = 2,
SupplierId = 1,
TransporterId = 1
},
new
{
WeekPlanId = 3,
DayNum = 3,
DeliveryHour = 20,
Note = "18K",
PlantId = 2,
SupplierId = 1,
TransporterId = 2
},
new
{
WeekPlanId = 4,
DayNum = 4,
DeliveryHour = 15,
Note = "9K",
PlantId = 2,
SupplierId = 1,
TransporterId = 1
},
new
{
WeekPlanId = 5,
DayNum = 4,
DeliveryHour = 20,
Note = "18K",
PlantId = 2,
SupplierId = 1,
TransporterId = 1
},
new
{
WeekPlanId = 6,
DayNum = 6,
DeliveryHour = 20,
Note = "18K",
PlantId = 2,
SupplierId = 1,
TransporterId = 1
},
new
{
WeekPlanId = 7,
DayNum = 2,
DeliveryHour = 14,
Note = "3K",
PlantId = 3,
SupplierId = 1,
TransporterId = 1
},
new
{
WeekPlanId = 8,
DayNum = 2,
DeliveryHour = 15,
Note = "15K",
PlantId = 4,
SupplierId = 1,
TransporterId = 1
},
new
{
WeekPlanId = 9,
DayNum = 2,
DeliveryHour = 17,
Note = "18K",
PlantId = 1,
SupplierId = 2,
TransporterId = 2
});
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.OrderModel", b =>
{
b.HasOne("GWMS.Data.DatabaseModels.PlantDetailModel", "Plant")
.WithMany()
.HasForeignKey("PlantId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("GWMS.Data.DatabaseModels.SupplierModel", "Supplier")
.WithMany()
.HasForeignKey("SupplierId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("GWMS.Data.DatabaseModels.TransporterModel", "Transporter")
.WithMany()
.HasForeignKey("TransporterId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Plant");
b.Navigation("Supplier");
b.Navigation("Transporter");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantLogModel", b =>
{
b.HasOne("GWMS.Data.DatabaseModels.PlantDetailModel", "Plant")
.WithMany()
.HasForeignKey("PlantId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Plant");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantStatusModel", b =>
{
b.HasOne("GWMS.Data.DatabaseModels.PlantDetailModel", "Plant")
.WithMany()
.HasForeignKey("PlantId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Plant");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.WeekPlanModel", b =>
{
b.HasOne("GWMS.Data.DatabaseModels.PlantDetailModel", "Plant")
.WithMany()
.HasForeignKey("PlantId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("GWMS.Data.DatabaseModels.SupplierModel", "Supplier")
.WithMany()
.HasForeignKey("SupplierId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("GWMS.Data.DatabaseModels.TransporterModel", "Transporter")
.WithMany()
.HasForeignKey("TransporterId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Plant");
b.Navigation("Supplier");
b.Navigation("Transporter");
});
#pragma warning restore 612, 618
}
}
}
@@ -0,0 +1,174 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
namespace GWMS.Data.Migrations
{
public partial class PlantData_AddLevelReoder : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "LevelAct",
table: "PlantDetail");
migrationBuilder.DropColumn(
name: "PressAct",
table: "PlantDetail");
migrationBuilder.DropColumn(
name: "PressBHAct",
table: "PlantDetail");
migrationBuilder.DropColumn(
name: "PressBHMax",
table: "PlantDetail");
migrationBuilder.DropColumn(
name: "PressBLAct",
table: "PlantDetail");
migrationBuilder.DropColumn(
name: "PressBLMax",
table: "PlantDetail");
migrationBuilder.RenameColumn(
name: "PressMax",
table: "PlantDetail",
newName: "LevelReorder");
migrationBuilder.UpdateData(
table: "PlantDetail",
keyColumn: "PlantId",
keyValue: 1,
columns: new[] { "LevelMax", "LevelReorder" },
values: new object[] { 26000.0, 15000.0 });
migrationBuilder.UpdateData(
table: "PlantDetail",
keyColumn: "PlantId",
keyValue: 2,
column: "LevelReorder",
value: 15000.0);
migrationBuilder.UpdateData(
table: "PlantDetail",
keyColumn: "PlantId",
keyValue: 3,
column: "LevelReorder",
value: 15000.0);
migrationBuilder.UpdateData(
table: "PlantDetail",
keyColumn: "PlantId",
keyValue: 4,
columns: new[] { "LevelMax", "LevelReorder" },
values: new object[] { 26000.0, 15000.0 });
migrationBuilder.UpdateData(
table: "Transporter",
keyColumn: "TransporterId",
keyValue: 1,
column: "PositionUpdated",
value: new DateTime(2021, 8, 6, 15, 40, 12, 341, DateTimeKind.Local).AddTicks(9521));
migrationBuilder.UpdateData(
table: "Transporter",
keyColumn: "TransporterId",
keyValue: 2,
column: "PositionUpdated",
value: new DateTime(2021, 8, 6, 15, 40, 12, 341, DateTimeKind.Local).AddTicks(9901));
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.RenameColumn(
name: "LevelReorder",
table: "PlantDetail",
newName: "PressMax");
migrationBuilder.AddColumn<double>(
name: "LevelAct",
table: "PlantDetail",
type: "double",
nullable: false,
defaultValue: 0.0);
migrationBuilder.AddColumn<double>(
name: "PressAct",
table: "PlantDetail",
type: "double",
nullable: false,
defaultValue: 0.0);
migrationBuilder.AddColumn<double>(
name: "PressBHAct",
table: "PlantDetail",
type: "double",
nullable: false,
defaultValue: 0.0);
migrationBuilder.AddColumn<double>(
name: "PressBHMax",
table: "PlantDetail",
type: "double",
nullable: false,
defaultValue: 0.0);
migrationBuilder.AddColumn<double>(
name: "PressBLAct",
table: "PlantDetail",
type: "double",
nullable: false,
defaultValue: 0.0);
migrationBuilder.AddColumn<double>(
name: "PressBLMax",
table: "PlantDetail",
type: "double",
nullable: false,
defaultValue: 0.0);
migrationBuilder.UpdateData(
table: "PlantDetail",
keyColumn: "PlantId",
keyValue: 1,
columns: new[] { "LevelMax", "PressBHMax", "PressBLMax", "PressMax" },
values: new object[] { 28000.0, 270.0, 270.0, 19.0 });
migrationBuilder.UpdateData(
table: "PlantDetail",
keyColumn: "PlantId",
keyValue: 2,
columns: new[] { "PressBHMax", "PressBLMax", "PressMax" },
values: new object[] { 270.0, 270.0, 19.0 });
migrationBuilder.UpdateData(
table: "PlantDetail",
keyColumn: "PlantId",
keyValue: 3,
columns: new[] { "PressBHMax", "PressBLMax", "PressMax" },
values: new object[] { 270.0, 270.0, 19.0 });
migrationBuilder.UpdateData(
table: "PlantDetail",
keyColumn: "PlantId",
keyValue: 4,
columns: new[] { "LevelMax", "PressBHMax", "PressBLMax", "PressMax" },
values: new object[] { 24000.0, 270.0, 270.0, 19.0 });
migrationBuilder.UpdateData(
table: "Transporter",
keyColumn: "TransporterId",
keyValue: 1,
column: "PositionUpdated",
value: new DateTime(2021, 8, 2, 10, 51, 27, 549, DateTimeKind.Local).AddTicks(3264));
migrationBuilder.UpdateData(
table: "Transporter",
keyColumn: "TransporterId",
keyValue: 2,
column: "PositionUpdated",
value: new DateTime(2021, 8, 2, 10, 51, 27, 549, DateTimeKind.Local).AddTicks(3842));
}
}
}
@@ -0,0 +1,875 @@
// <auto-generated />
using System;
using GWMS.Data;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace GWMS.Data.Migrations
{
[DbContext(typeof(GWMSContext))]
[Migration("20210806162035_AddOrderDefQty")]
partial class AddOrderDefQty
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("Relational:MaxIdentifierLength", 64)
.HasAnnotation("ProductVersion", "5.0.7");
modelBuilder.Entity("GWMS.Data.DatabaseModels.AnKeyValModel", b =>
{
b.Property<string>("KeyName")
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.Property<string>("Descript")
.HasMaxLength(250)
.HasColumnType("varchar(250)")
.HasComment("Descrizione dell'item");
b.Property<int>("ValFloat")
.HasColumnType("int");
b.Property<int>("ValInt")
.HasColumnType("int");
b.Property<string>("ValString")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.HasKey("KeyName");
b.ToTable("AnKeyVal");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.ConfigModel", b =>
{
b.Property<string>("KeyName")
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.Property<string>("Note")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<string>("Val")
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.Property<string>("ValStd")
.HasMaxLength(50)
.HasColumnType("varchar(50)")
.HasComment("Valore di default/riferimento per la variabile");
b.HasKey("KeyName");
b.ToTable("Config");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.ItemModel", b =>
{
b.Property<int>("ItemId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<string>("ItemCode")
.HasMaxLength(100)
.HasColumnType("varchar(100)");
b.Property<string>("ItemDesc")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<string>("ItemType")
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.Property<string>("UM")
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.HasKey("ItemId");
b.ToTable("Items");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.ListValModel", b =>
{
b.Property<string>("TabName")
.HasMaxLength(50)
.HasColumnType("varchar(50)")
.HasColumnName("TabName");
b.Property<string>("FieldName")
.HasMaxLength(50)
.HasColumnType("varchar(50)")
.HasColumnName("FieldName");
b.Property<string>("Val")
.HasMaxLength(50)
.HasColumnType("varchar(50)")
.HasColumnName("Val");
b.Property<string>("Descript")
.HasMaxLength(250)
.HasColumnType("varchar(250)")
.HasColumnName("Descript");
b.Property<int>("Ordinal")
.HasColumnType("int")
.HasColumnName("Ordinal");
b.HasKey("TabName", "FieldName", "Val");
b.ToTable("ListVal");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.OrderModel", b =>
{
b.Property<int>("OrderId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<DateTime>("DtETA")
.HasColumnType("datetime(6)");
b.Property<DateTime>("DtExecEnd")
.HasColumnType("datetime(6)");
b.Property<DateTime>("DtExecStart")
.HasColumnType("datetime(6)");
b.Property<DateTime>("DtOrder")
.HasColumnType("datetime(6)");
b.Property<double>("ExecutionQty")
.HasColumnType("double");
b.Property<string>("OrderCode")
.HasMaxLength(100)
.HasColumnType("varchar(100)");
b.Property<string>("OrderDesc")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<double>("OrderQty")
.HasColumnType("double");
b.Property<int>("PlantId")
.HasColumnType("int");
b.Property<int>("SupplierId")
.HasColumnType("int");
b.Property<int>("TransporterId")
.HasColumnType("int");
b.HasKey("OrderId");
b.HasIndex("PlantId");
b.HasIndex("SupplierId");
b.HasIndex("TransporterId");
b.ToTable("Order");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantDetailModel", b =>
{
b.Property<int>("PlantId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<double>("LevelMax")
.HasColumnType("double");
b.Property<double>("LevelReorder")
.HasColumnType("double");
b.Property<double>("OrderQtyStd")
.HasColumnType("double");
b.Property<string>("PlantCode")
.HasMaxLength(100)
.HasColumnType("varchar(100)");
b.Property<string>("PlantDesc")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.HasKey("PlantId");
b.ToTable("PlantDetail");
b.HasData(
new
{
PlantId = 1,
LevelMax = 26000.0,
LevelReorder = 15000.0,
OrderQtyStd = 18000.0,
PlantCode = "PIZ03",
PlantDesc = "Collecchio"
},
new
{
PlantId = 2,
LevelMax = 28000.0,
LevelReorder = 15000.0,
OrderQtyStd = 18000.0,
PlantCode = "PIZ04",
PlantDesc = "Noceto"
},
new
{
PlantId = 3,
LevelMax = 24000.0,
LevelReorder = 15000.0,
OrderQtyStd = 18000.0,
PlantCode = "PIZ05",
PlantDesc = "Baganzola"
},
new
{
PlantId = 4,
LevelMax = 26000.0,
LevelReorder = 15000.0,
OrderQtyStd = 18000.0,
PlantCode = "PIZ08",
PlantDesc = "Pilastrello"
});
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantLogModel", b =>
{
b.Property<int>("PlantDataId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<DateTime>("DtEvent")
.HasColumnType("datetime(6)");
b.Property<string>("FluxType")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<int>("PlantId")
.HasColumnType("int");
b.Property<double>("ValNumber")
.HasColumnType("double");
b.Property<string>("ValString")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.HasKey("PlantDataId");
b.HasIndex("PlantId");
b.ToTable("PlantLog");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantStatusModel", b =>
{
b.Property<int>("PlantId")
.HasColumnType("int");
b.Property<string>("FluxType")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<DateTime>("DtEvent")
.HasColumnType("datetime(6)");
b.Property<double>("ValNumber")
.HasColumnType("double");
b.Property<string>("ValString")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.HasKey("PlantId", "FluxType");
b.ToTable("PlantStatus");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.RebootLogModel", b =>
{
b.Property<int>("RecordId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<DateTime>("DtEvent")
.HasColumnType("datetime(6)");
b.Property<string>("Item")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<string>("Payload")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.HasKey("RecordId");
b.ToTable("RebootLog");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.SupplierModel", b =>
{
b.Property<int>("SupplierId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<string>("SupplierCode")
.HasMaxLength(100)
.HasColumnType("varchar(100)");
b.Property<string>("SupplierDesc")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.HasKey("SupplierId");
b.ToTable("Supplier");
b.HasData(
new
{
SupplierId = 1,
SupplierCode = "LIQUIGAS",
SupplierDesc = "Liquigas"
},
new
{
SupplierId = 2,
SupplierCode = "VULKANGAS",
SupplierDesc = "Vulkangas"
});
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.TransporterModel", b =>
{
b.Property<int>("TransporterId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<double>("PositionLatitude")
.HasColumnType("double");
b.Property<double>("PositionLongitude")
.HasColumnType("double");
b.Property<DateTime>("PositionUpdated")
.HasColumnType("datetime(6)");
b.Property<string>("TransporterCode")
.HasMaxLength(100)
.HasColumnType("varchar(100)");
b.Property<string>("TransporterDesc")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.HasKey("TransporterId");
b.ToTable("Transporter");
b.HasData(
new
{
TransporterId = 1,
PositionLatitude = 0.0,
PositionLongitude = 0.0,
PositionUpdated = new DateTime(2021, 8, 6, 18, 20, 35, 347, DateTimeKind.Local).AddTicks(1664),
TransporterCode = "LEVO",
TransporterDesc = "Levorato"
},
new
{
TransporterId = 2,
PositionLatitude = 0.0,
PositionLongitude = 0.0,
PositionUpdated = new DateTime(2021, 8, 6, 18, 20, 35, 347, DateTimeKind.Local).AddTicks(2482),
TransporterCode = "TRAF",
TransporterDesc = "Traffik"
});
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.UserModel", b =>
{
b.Property<int>("UserId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<string>("AuthKey")
.HasMaxLength(100)
.HasColumnType("varchar(100)");
b.Property<string>("Email")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<string>("Firstname")
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.Property<bool>("IsActive")
.HasColumnType("tinyint(1)");
b.Property<string>("Lang")
.HasMaxLength(10)
.HasColumnType("varchar(10)");
b.Property<string>("Lastname")
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.Property<int>("Livello")
.HasColumnType("int");
b.Property<int>("MaskPlantId")
.HasColumnType("int");
b.Property<int>("MaskSupplierId")
.HasColumnType("int");
b.Property<int>("MaskTranspId")
.HasColumnType("int");
b.Property<string>("SaltPasswd")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<string>("UserName")
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.HasKey("UserId");
b.ToTable("Users");
b.HasData(
new
{
UserId = 1,
AuthKey = "th1sIsTh3R1vrOfThNgt98",
Email = "samuele@steamware.net",
Firstname = "Samuele",
IsActive = true,
Lang = "IT",
Lastname = "Locatelli",
Livello = 1,
MaskPlantId = 0,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "samuele.locatelli"
},
new
{
UserId = 2,
AuthKey = "th1sIsTh3R1vrOfThNgt91",
Email = "giancarlo@steamware.net",
Firstname = "Giancarlo",
IsActive = true,
Lang = "IT",
Lastname = "Rottoli",
Livello = 1,
MaskPlantId = 0,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "giancarlo.rottoli"
},
new
{
UserId = 3,
AuthKey = "th1sIsTh3R1vrOfThNgt93",
Email = "info@steamware.net",
Firstname = "Steamware",
IsActive = true,
Lang = "IT",
Lastname = "Admin",
Livello = 1,
MaskPlantId = 0,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "steamw.admin"
},
new
{
UserId = 4,
AuthKey = "th1sIsTh3R1vrOfThNgt97",
Email = "a.pizzaferri@pizzaferripetroli.it",
Firstname = "Angelo",
IsActive = true,
Lang = "IT",
Lastname = "Pizzaferri",
Livello = 2,
MaskPlantId = 0,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "angelo.pizzaferri"
},
new
{
UserId = 5,
AuthKey = "th1sIsTh3R1vrOfThNgt99",
Email = "andrei.valeanu@winnlab.it",
Firstname = "Andrei",
IsActive = true,
Lang = "IT",
Lastname = "Valeanu",
Livello = 2,
MaskPlantId = 0,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "andrei.valeanu"
},
new
{
UserId = 6,
AuthKey = "th1sIsTh3R1vrOfThNgt92",
Email = "info@steamware.net",
Firstname = "User",
IsActive = true,
Lang = "IT",
Lastname = "LIQUIGAS",
Livello = 4,
MaskPlantId = 0,
MaskSupplierId = 1,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "liquigas.user01"
},
new
{
UserId = 7,
AuthKey = "th1sIsTh3R1vrOfThNgt94",
Email = "info@steamware.net",
Firstname = "User",
IsActive = true,
Lang = "IT",
Lastname = "VULKANGAS",
Livello = 4,
MaskPlantId = 0,
MaskSupplierId = 2,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "vulkangas.user01"
},
new
{
UserId = 8,
AuthKey = "th1sIsTh3R1vrOfThNgt95",
Email = "info@steamware.net",
Firstname = "User",
IsActive = true,
Lang = "IT",
Lastname = "LEVORATO",
Livello = 4,
MaskPlantId = 0,
MaskSupplierId = 0,
MaskTranspId = 1,
SaltPasswd = "",
UserName = "levorato.user01"
},
new
{
UserId = 9,
AuthKey = "th1sIsTh3R1vrOfThNgt96",
Email = "info@steamware.net",
Firstname = "User",
IsActive = true,
Lang = "IT",
Lastname = "TRAFFIK",
Livello = 4,
MaskPlantId = 0,
MaskSupplierId = 0,
MaskTranspId = 2,
SaltPasswd = "",
UserName = "traffik.user01"
},
new
{
UserId = 10,
AuthKey = "th1sIsTh3R1vrOfThNgt96",
Email = "info@steamware.net",
Firstname = "Stazione",
IsActive = true,
Lang = "IT",
Lastname = "Collecchio",
Livello = 3,
MaskPlantId = 1,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "piz03.user01"
},
new
{
UserId = 11,
AuthKey = "th1sIsTh3R1vrOfThNgt96",
Email = "info@steamware.net",
Firstname = "Stazione",
IsActive = true,
Lang = "IT",
Lastname = "Noceto",
Livello = 3,
MaskPlantId = 2,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "piz04.user01"
},
new
{
UserId = 12,
AuthKey = "th1sIsTh3R1vrOfThNgt96",
Email = "info@steamware.net",
Firstname = "Stazione",
IsActive = true,
Lang = "IT",
Lastname = "Baganzola",
Livello = 3,
MaskPlantId = 3,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "piz05.user01"
},
new
{
UserId = 13,
AuthKey = "th1sIsTh3R1vrOfThNgt96",
Email = "info@steamware.net",
Firstname = "Stazione",
IsActive = true,
Lang = "IT",
Lastname = "Pilastrello",
Livello = 3,
MaskPlantId = 4,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "piz08.user01"
});
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.WeekPlanModel", b =>
{
b.Property<int>("WeekPlanId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<int>("DayNum")
.HasColumnType("int");
b.Property<int>("DeliveryHour")
.HasColumnType("int");
b.Property<string>("Note")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<int>("PlantId")
.HasColumnType("int");
b.Property<int>("SupplierId")
.HasColumnType("int");
b.Property<int>("TransporterId")
.HasColumnType("int");
b.HasKey("WeekPlanId");
b.HasIndex("PlantId");
b.HasIndex("SupplierId");
b.HasIndex("TransporterId");
b.ToTable("WeekPlan");
b.HasData(
new
{
WeekPlanId = 1,
DayNum = 1,
DeliveryHour = 20,
Note = "18K",
PlantId = 2,
SupplierId = 1,
TransporterId = 1
},
new
{
WeekPlanId = 2,
DayNum = 2,
DeliveryHour = 20,
Note = "18K",
PlantId = 2,
SupplierId = 1,
TransporterId = 1
},
new
{
WeekPlanId = 3,
DayNum = 3,
DeliveryHour = 20,
Note = "18K",
PlantId = 2,
SupplierId = 1,
TransporterId = 2
},
new
{
WeekPlanId = 4,
DayNum = 4,
DeliveryHour = 15,
Note = "9K",
PlantId = 2,
SupplierId = 1,
TransporterId = 1
},
new
{
WeekPlanId = 5,
DayNum = 4,
DeliveryHour = 20,
Note = "18K",
PlantId = 2,
SupplierId = 1,
TransporterId = 1
},
new
{
WeekPlanId = 6,
DayNum = 6,
DeliveryHour = 20,
Note = "18K",
PlantId = 2,
SupplierId = 1,
TransporterId = 1
},
new
{
WeekPlanId = 7,
DayNum = 2,
DeliveryHour = 14,
Note = "3K",
PlantId = 3,
SupplierId = 1,
TransporterId = 1
},
new
{
WeekPlanId = 8,
DayNum = 2,
DeliveryHour = 15,
Note = "15K",
PlantId = 4,
SupplierId = 1,
TransporterId = 1
},
new
{
WeekPlanId = 9,
DayNum = 2,
DeliveryHour = 17,
Note = "18K",
PlantId = 1,
SupplierId = 2,
TransporterId = 2
});
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.OrderModel", b =>
{
b.HasOne("GWMS.Data.DatabaseModels.PlantDetailModel", "Plant")
.WithMany()
.HasForeignKey("PlantId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("GWMS.Data.DatabaseModels.SupplierModel", "Supplier")
.WithMany()
.HasForeignKey("SupplierId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("GWMS.Data.DatabaseModels.TransporterModel", "Transporter")
.WithMany()
.HasForeignKey("TransporterId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Plant");
b.Navigation("Supplier");
b.Navigation("Transporter");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantLogModel", b =>
{
b.HasOne("GWMS.Data.DatabaseModels.PlantDetailModel", "Plant")
.WithMany()
.HasForeignKey("PlantId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Plant");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantStatusModel", b =>
{
b.HasOne("GWMS.Data.DatabaseModels.PlantDetailModel", "Plant")
.WithMany()
.HasForeignKey("PlantId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Plant");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.WeekPlanModel", b =>
{
b.HasOne("GWMS.Data.DatabaseModels.PlantDetailModel", "Plant")
.WithMany()
.HasForeignKey("PlantId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("GWMS.Data.DatabaseModels.SupplierModel", "Supplier")
.WithMany()
.HasForeignKey("SupplierId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("GWMS.Data.DatabaseModels.TransporterModel", "Transporter")
.WithMany()
.HasForeignKey("TransporterId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Plant");
b.Navigation("Supplier");
b.Navigation("Transporter");
});
#pragma warning restore 612, 618
}
}
}
@@ -0,0 +1,81 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
namespace GWMS.Data.Migrations
{
public partial class AddOrderDefQty : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<double>(
name: "OrderQtyStd",
table: "PlantDetail",
type: "double",
nullable: false,
defaultValue: 0.0);
migrationBuilder.UpdateData(
table: "PlantDetail",
keyColumn: "PlantId",
keyValue: 1,
column: "OrderQtyStd",
value: 18000.0);
migrationBuilder.UpdateData(
table: "PlantDetail",
keyColumn: "PlantId",
keyValue: 2,
column: "OrderQtyStd",
value: 18000.0);
migrationBuilder.UpdateData(
table: "PlantDetail",
keyColumn: "PlantId",
keyValue: 3,
column: "OrderQtyStd",
value: 18000.0);
migrationBuilder.UpdateData(
table: "PlantDetail",
keyColumn: "PlantId",
keyValue: 4,
column: "OrderQtyStd",
value: 18000.0);
migrationBuilder.UpdateData(
table: "Transporter",
keyColumn: "TransporterId",
keyValue: 1,
column: "PositionUpdated",
value: new DateTime(2021, 8, 6, 18, 20, 35, 347, DateTimeKind.Local).AddTicks(1664));
migrationBuilder.UpdateData(
table: "Transporter",
keyColumn: "TransporterId",
keyValue: 2,
column: "PositionUpdated",
value: new DateTime(2021, 8, 6, 18, 20, 35, 347, DateTimeKind.Local).AddTicks(2482));
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "OrderQtyStd",
table: "PlantDetail");
migrationBuilder.UpdateData(
table: "Transporter",
keyColumn: "TransporterId",
keyValue: 1,
column: "PositionUpdated",
value: new DateTime(2021, 8, 6, 15, 40, 12, 341, DateTimeKind.Local).AddTicks(9521));
migrationBuilder.UpdateData(
table: "Transporter",
keyColumn: "TransporterId",
keyValue: 2,
column: "PositionUpdated",
value: new DateTime(2021, 8, 6, 15, 40, 12, 341, DateTimeKind.Local).AddTicks(9901));
}
}
}
@@ -0,0 +1,881 @@
// <auto-generated />
using System;
using GWMS.Data;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace GWMS.Data.Migrations
{
[DbContext(typeof(GWMSContext))]
[Migration("20210809143652_OrderFillData")]
partial class OrderFillData
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("Relational:MaxIdentifierLength", 64)
.HasAnnotation("ProductVersion", "5.0.7");
modelBuilder.Entity("GWMS.Data.DatabaseModels.AnKeyValModel", b =>
{
b.Property<string>("KeyName")
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.Property<string>("Descript")
.HasMaxLength(250)
.HasColumnType("varchar(250)")
.HasComment("Descrizione dell'item");
b.Property<int>("ValFloat")
.HasColumnType("int");
b.Property<int>("ValInt")
.HasColumnType("int");
b.Property<string>("ValString")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.HasKey("KeyName");
b.ToTable("AnKeyVal");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.ConfigModel", b =>
{
b.Property<string>("KeyName")
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.Property<string>("Note")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<string>("Val")
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.Property<string>("ValStd")
.HasMaxLength(50)
.HasColumnType("varchar(50)")
.HasComment("Valore di default/riferimento per la variabile");
b.HasKey("KeyName");
b.ToTable("Config");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.ItemModel", b =>
{
b.Property<int>("ItemId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<string>("ItemCode")
.HasMaxLength(100)
.HasColumnType("varchar(100)");
b.Property<string>("ItemDesc")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<string>("ItemType")
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.Property<string>("UM")
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.HasKey("ItemId");
b.ToTable("Items");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.ListValModel", b =>
{
b.Property<string>("TabName")
.HasMaxLength(50)
.HasColumnType("varchar(50)")
.HasColumnName("TabName");
b.Property<string>("FieldName")
.HasMaxLength(50)
.HasColumnType("varchar(50)")
.HasColumnName("FieldName");
b.Property<string>("Val")
.HasMaxLength(50)
.HasColumnType("varchar(50)")
.HasColumnName("Val");
b.Property<string>("Descript")
.HasMaxLength(250)
.HasColumnType("varchar(250)")
.HasColumnName("Descript");
b.Property<int>("Ordinal")
.HasColumnType("int")
.HasColumnName("Ordinal");
b.HasKey("TabName", "FieldName", "Val");
b.ToTable("ListVal");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.OrderModel", b =>
{
b.Property<int>("OrderId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<DateTime>("DtETA")
.HasColumnType("datetime(6)");
b.Property<DateTime>("DtExecEnd")
.HasColumnType("datetime(6)");
b.Property<DateTime>("DtExecStart")
.HasColumnType("datetime(6)");
b.Property<DateTime>("DtOrder")
.HasColumnType("datetime(6)");
b.Property<double>("ExecutionQty")
.HasColumnType("double");
b.Property<double>("LevelEnd")
.HasColumnType("double");
b.Property<double>("LevelStart")
.HasColumnType("double");
b.Property<string>("OrderCode")
.HasMaxLength(100)
.HasColumnType("varchar(100)");
b.Property<string>("OrderDesc")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<double>("OrderQty")
.HasColumnType("double");
b.Property<int>("PlantId")
.HasColumnType("int");
b.Property<int>("SupplierId")
.HasColumnType("int");
b.Property<int>("TransporterId")
.HasColumnType("int");
b.HasKey("OrderId");
b.HasIndex("PlantId");
b.HasIndex("SupplierId");
b.HasIndex("TransporterId");
b.ToTable("Order");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantDetailModel", b =>
{
b.Property<int>("PlantId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<double>("LevelMax")
.HasColumnType("double");
b.Property<double>("LevelReorder")
.HasColumnType("double");
b.Property<double>("OrderQtyStd")
.HasColumnType("double");
b.Property<string>("PlantCode")
.HasMaxLength(100)
.HasColumnType("varchar(100)");
b.Property<string>("PlantDesc")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.HasKey("PlantId");
b.ToTable("PlantDetail");
b.HasData(
new
{
PlantId = 1,
LevelMax = 26000.0,
LevelReorder = 15000.0,
OrderQtyStd = 18000.0,
PlantCode = "PIZ03",
PlantDesc = "Collecchio"
},
new
{
PlantId = 2,
LevelMax = 28000.0,
LevelReorder = 15000.0,
OrderQtyStd = 18000.0,
PlantCode = "PIZ04",
PlantDesc = "Noceto"
},
new
{
PlantId = 3,
LevelMax = 24000.0,
LevelReorder = 15000.0,
OrderQtyStd = 18000.0,
PlantCode = "PIZ05",
PlantDesc = "Baganzola"
},
new
{
PlantId = 4,
LevelMax = 26000.0,
LevelReorder = 15000.0,
OrderQtyStd = 18000.0,
PlantCode = "PIZ08",
PlantDesc = "Pilastrello"
});
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantLogModel", b =>
{
b.Property<int>("PlantDataId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<DateTime>("DtEvent")
.HasColumnType("datetime(6)");
b.Property<string>("FluxType")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<int>("PlantId")
.HasColumnType("int");
b.Property<double>("ValNumber")
.HasColumnType("double");
b.Property<string>("ValString")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.HasKey("PlantDataId");
b.HasIndex("PlantId");
b.ToTable("PlantLog");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantStatusModel", b =>
{
b.Property<int>("PlantId")
.HasColumnType("int");
b.Property<string>("FluxType")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<DateTime>("DtEvent")
.HasColumnType("datetime(6)");
b.Property<double>("ValNumber")
.HasColumnType("double");
b.Property<string>("ValString")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.HasKey("PlantId", "FluxType");
b.ToTable("PlantStatus");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.RebootLogModel", b =>
{
b.Property<int>("RecordId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<DateTime>("DtEvent")
.HasColumnType("datetime(6)");
b.Property<string>("Item")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<string>("Payload")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.HasKey("RecordId");
b.ToTable("RebootLog");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.SupplierModel", b =>
{
b.Property<int>("SupplierId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<string>("SupplierCode")
.HasMaxLength(100)
.HasColumnType("varchar(100)");
b.Property<string>("SupplierDesc")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.HasKey("SupplierId");
b.ToTable("Supplier");
b.HasData(
new
{
SupplierId = 1,
SupplierCode = "LIQUIGAS",
SupplierDesc = "Liquigas"
},
new
{
SupplierId = 2,
SupplierCode = "VULKANGAS",
SupplierDesc = "Vulkangas"
});
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.TransporterModel", b =>
{
b.Property<int>("TransporterId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<double>("PositionLatitude")
.HasColumnType("double");
b.Property<double>("PositionLongitude")
.HasColumnType("double");
b.Property<DateTime>("PositionUpdated")
.HasColumnType("datetime(6)");
b.Property<string>("TransporterCode")
.HasMaxLength(100)
.HasColumnType("varchar(100)");
b.Property<string>("TransporterDesc")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.HasKey("TransporterId");
b.ToTable("Transporter");
b.HasData(
new
{
TransporterId = 1,
PositionLatitude = 0.0,
PositionLongitude = 0.0,
PositionUpdated = new DateTime(2021, 8, 9, 16, 36, 52, 691, DateTimeKind.Local).AddTicks(9092),
TransporterCode = "LEVO",
TransporterDesc = "Levorato"
},
new
{
TransporterId = 2,
PositionLatitude = 0.0,
PositionLongitude = 0.0,
PositionUpdated = new DateTime(2021, 8, 9, 16, 36, 52, 691, DateTimeKind.Local).AddTicks(9470),
TransporterCode = "TRAF",
TransporterDesc = "Traffik"
});
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.UserModel", b =>
{
b.Property<int>("UserId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<string>("AuthKey")
.HasMaxLength(100)
.HasColumnType("varchar(100)");
b.Property<string>("Email")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<string>("Firstname")
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.Property<bool>("IsActive")
.HasColumnType("tinyint(1)");
b.Property<string>("Lang")
.HasMaxLength(10)
.HasColumnType("varchar(10)");
b.Property<string>("Lastname")
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.Property<int>("Livello")
.HasColumnType("int");
b.Property<int>("MaskPlantId")
.HasColumnType("int");
b.Property<int>("MaskSupplierId")
.HasColumnType("int");
b.Property<int>("MaskTranspId")
.HasColumnType("int");
b.Property<string>("SaltPasswd")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<string>("UserName")
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.HasKey("UserId");
b.ToTable("Users");
b.HasData(
new
{
UserId = 1,
AuthKey = "th1sIsTh3R1vrOfThNgt98",
Email = "samuele@steamware.net",
Firstname = "Samuele",
IsActive = true,
Lang = "IT",
Lastname = "Locatelli",
Livello = 1,
MaskPlantId = 0,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "samuele.locatelli"
},
new
{
UserId = 2,
AuthKey = "th1sIsTh3R1vrOfThNgt91",
Email = "giancarlo@steamware.net",
Firstname = "Giancarlo",
IsActive = true,
Lang = "IT",
Lastname = "Rottoli",
Livello = 1,
MaskPlantId = 0,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "giancarlo.rottoli"
},
new
{
UserId = 3,
AuthKey = "th1sIsTh3R1vrOfThNgt93",
Email = "info@steamware.net",
Firstname = "Steamware",
IsActive = true,
Lang = "IT",
Lastname = "Admin",
Livello = 1,
MaskPlantId = 0,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "steamw.admin"
},
new
{
UserId = 4,
AuthKey = "th1sIsTh3R1vrOfThNgt97",
Email = "a.pizzaferri@pizzaferripetroli.it",
Firstname = "Angelo",
IsActive = true,
Lang = "IT",
Lastname = "Pizzaferri",
Livello = 2,
MaskPlantId = 0,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "angelo.pizzaferri"
},
new
{
UserId = 5,
AuthKey = "th1sIsTh3R1vrOfThNgt99",
Email = "andrei.valeanu@winnlab.it",
Firstname = "Andrei",
IsActive = true,
Lang = "IT",
Lastname = "Valeanu",
Livello = 2,
MaskPlantId = 0,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "andrei.valeanu"
},
new
{
UserId = 6,
AuthKey = "th1sIsTh3R1vrOfThNgt92",
Email = "info@steamware.net",
Firstname = "User",
IsActive = true,
Lang = "IT",
Lastname = "LIQUIGAS",
Livello = 4,
MaskPlantId = 0,
MaskSupplierId = 1,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "liquigas.user01"
},
new
{
UserId = 7,
AuthKey = "th1sIsTh3R1vrOfThNgt94",
Email = "info@steamware.net",
Firstname = "User",
IsActive = true,
Lang = "IT",
Lastname = "VULKANGAS",
Livello = 4,
MaskPlantId = 0,
MaskSupplierId = 2,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "vulkangas.user01"
},
new
{
UserId = 8,
AuthKey = "th1sIsTh3R1vrOfThNgt95",
Email = "info@steamware.net",
Firstname = "User",
IsActive = true,
Lang = "IT",
Lastname = "LEVORATO",
Livello = 4,
MaskPlantId = 0,
MaskSupplierId = 0,
MaskTranspId = 1,
SaltPasswd = "",
UserName = "levorato.user01"
},
new
{
UserId = 9,
AuthKey = "th1sIsTh3R1vrOfThNgt96",
Email = "info@steamware.net",
Firstname = "User",
IsActive = true,
Lang = "IT",
Lastname = "TRAFFIK",
Livello = 4,
MaskPlantId = 0,
MaskSupplierId = 0,
MaskTranspId = 2,
SaltPasswd = "",
UserName = "traffik.user01"
},
new
{
UserId = 10,
AuthKey = "th1sIsTh3R1vrOfThNgt96",
Email = "info@steamware.net",
Firstname = "Stazione",
IsActive = true,
Lang = "IT",
Lastname = "Collecchio",
Livello = 3,
MaskPlantId = 1,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "piz03.user01"
},
new
{
UserId = 11,
AuthKey = "th1sIsTh3R1vrOfThNgt96",
Email = "info@steamware.net",
Firstname = "Stazione",
IsActive = true,
Lang = "IT",
Lastname = "Noceto",
Livello = 3,
MaskPlantId = 2,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "piz04.user01"
},
new
{
UserId = 12,
AuthKey = "th1sIsTh3R1vrOfThNgt96",
Email = "info@steamware.net",
Firstname = "Stazione",
IsActive = true,
Lang = "IT",
Lastname = "Baganzola",
Livello = 3,
MaskPlantId = 3,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "piz05.user01"
},
new
{
UserId = 13,
AuthKey = "th1sIsTh3R1vrOfThNgt96",
Email = "info@steamware.net",
Firstname = "Stazione",
IsActive = true,
Lang = "IT",
Lastname = "Pilastrello",
Livello = 3,
MaskPlantId = 4,
MaskSupplierId = 0,
MaskTranspId = 0,
SaltPasswd = "",
UserName = "piz08.user01"
});
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.WeekPlanModel", b =>
{
b.Property<int>("WeekPlanId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<int>("DayNum")
.HasColumnType("int");
b.Property<int>("DeliveryHour")
.HasColumnType("int");
b.Property<string>("Note")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<int>("PlantId")
.HasColumnType("int");
b.Property<int>("SupplierId")
.HasColumnType("int");
b.Property<int>("TransporterId")
.HasColumnType("int");
b.HasKey("WeekPlanId");
b.HasIndex("PlantId");
b.HasIndex("SupplierId");
b.HasIndex("TransporterId");
b.ToTable("WeekPlan");
b.HasData(
new
{
WeekPlanId = 1,
DayNum = 1,
DeliveryHour = 20,
Note = "18K",
PlantId = 2,
SupplierId = 1,
TransporterId = 1
},
new
{
WeekPlanId = 2,
DayNum = 2,
DeliveryHour = 20,
Note = "18K",
PlantId = 2,
SupplierId = 1,
TransporterId = 1
},
new
{
WeekPlanId = 3,
DayNum = 3,
DeliveryHour = 20,
Note = "18K",
PlantId = 2,
SupplierId = 1,
TransporterId = 2
},
new
{
WeekPlanId = 4,
DayNum = 4,
DeliveryHour = 15,
Note = "9K",
PlantId = 2,
SupplierId = 1,
TransporterId = 1
},
new
{
WeekPlanId = 5,
DayNum = 4,
DeliveryHour = 20,
Note = "18K",
PlantId = 2,
SupplierId = 1,
TransporterId = 1
},
new
{
WeekPlanId = 6,
DayNum = 6,
DeliveryHour = 20,
Note = "18K",
PlantId = 2,
SupplierId = 1,
TransporterId = 1
},
new
{
WeekPlanId = 7,
DayNum = 2,
DeliveryHour = 14,
Note = "3K",
PlantId = 3,
SupplierId = 1,
TransporterId = 1
},
new
{
WeekPlanId = 8,
DayNum = 2,
DeliveryHour = 15,
Note = "15K",
PlantId = 4,
SupplierId = 1,
TransporterId = 1
},
new
{
WeekPlanId = 9,
DayNum = 2,
DeliveryHour = 17,
Note = "18K",
PlantId = 1,
SupplierId = 2,
TransporterId = 2
});
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.OrderModel", b =>
{
b.HasOne("GWMS.Data.DatabaseModels.PlantDetailModel", "Plant")
.WithMany()
.HasForeignKey("PlantId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("GWMS.Data.DatabaseModels.SupplierModel", "Supplier")
.WithMany()
.HasForeignKey("SupplierId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("GWMS.Data.DatabaseModels.TransporterModel", "Transporter")
.WithMany()
.HasForeignKey("TransporterId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Plant");
b.Navigation("Supplier");
b.Navigation("Transporter");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantLogModel", b =>
{
b.HasOne("GWMS.Data.DatabaseModels.PlantDetailModel", "Plant")
.WithMany()
.HasForeignKey("PlantId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Plant");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.PlantStatusModel", b =>
{
b.HasOne("GWMS.Data.DatabaseModels.PlantDetailModel", "Plant")
.WithMany()
.HasForeignKey("PlantId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Plant");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.WeekPlanModel", b =>
{
b.HasOne("GWMS.Data.DatabaseModels.PlantDetailModel", "Plant")
.WithMany()
.HasForeignKey("PlantId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("GWMS.Data.DatabaseModels.SupplierModel", "Supplier")
.WithMany()
.HasForeignKey("SupplierId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("GWMS.Data.DatabaseModels.TransporterModel", "Transporter")
.WithMany()
.HasForeignKey("TransporterId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Plant");
b.Navigation("Supplier");
b.Navigation("Transporter");
});
#pragma warning restore 612, 618
}
}
}
@@ -0,0 +1,64 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
namespace GWMS.Data.Migrations
{
public partial class OrderFillData : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<double>(
name: "LevelEnd",
table: "Order",
type: "double",
nullable: false,
defaultValue: 0.0);
migrationBuilder.AddColumn<double>(
name: "LevelStart",
table: "Order",
type: "double",
nullable: false,
defaultValue: 0.0);
migrationBuilder.UpdateData(
table: "Transporter",
keyColumn: "TransporterId",
keyValue: 1,
column: "PositionUpdated",
value: new DateTime(2021, 8, 9, 16, 36, 52, 691, DateTimeKind.Local).AddTicks(9092));
migrationBuilder.UpdateData(
table: "Transporter",
keyColumn: "TransporterId",
keyValue: 2,
column: "PositionUpdated",
value: new DateTime(2021, 8, 9, 16, 36, 52, 691, DateTimeKind.Local).AddTicks(9470));
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "LevelEnd",
table: "Order");
migrationBuilder.DropColumn(
name: "LevelStart",
table: "Order");
migrationBuilder.UpdateData(
table: "Transporter",
keyColumn: "TransporterId",
keyValue: 1,
column: "PositionUpdated",
value: new DateTime(2021, 8, 6, 18, 20, 35, 347, DateTimeKind.Local).AddTicks(1664));
migrationBuilder.UpdateData(
table: "Transporter",
keyColumn: "TransporterId",
keyValue: 2,
column: "PositionUpdated",
value: new DateTime(2021, 8, 6, 18, 20, 35, 347, DateTimeKind.Local).AddTicks(2482));
}
}
}
@@ -146,6 +146,12 @@ namespace GWMS.Data.Migrations
b.Property<double>("ExecutionQty") b.Property<double>("ExecutionQty")
.HasColumnType("double"); .HasColumnType("double");
b.Property<double>("LevelEnd")
.HasColumnType("double");
b.Property<double>("LevelStart")
.HasColumnType("double");
b.Property<string>("OrderCode") b.Property<string>("OrderCode")
.HasMaxLength(100) .HasMaxLength(100)
.HasColumnType("varchar(100)"); .HasColumnType("varchar(100)");
@@ -183,10 +189,13 @@ namespace GWMS.Data.Migrations
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
.HasColumnType("int"); .HasColumnType("int");
b.Property<double>("LevelAct") b.Property<double>("LevelMax")
.HasColumnType("double"); .HasColumnType("double");
b.Property<double>("LevelMax") b.Property<double>("LevelReorder")
.HasColumnType("double");
b.Property<double>("OrderQtyStd")
.HasColumnType("double"); .HasColumnType("double");
b.Property<string>("PlantCode") b.Property<string>("PlantCode")
@@ -197,24 +206,6 @@ namespace GWMS.Data.Migrations
.HasMaxLength(250) .HasMaxLength(250)
.HasColumnType("varchar(250)"); .HasColumnType("varchar(250)");
b.Property<double>("PressAct")
.HasColumnType("double");
b.Property<double>("PressBHAct")
.HasColumnType("double");
b.Property<double>("PressBHMax")
.HasColumnType("double");
b.Property<double>("PressBLAct")
.HasColumnType("double");
b.Property<double>("PressBLMax")
.HasColumnType("double");
b.Property<double>("PressMax")
.HasColumnType("double");
b.HasKey("PlantId"); b.HasKey("PlantId");
b.ToTable("PlantDetail"); b.ToTable("PlantDetail");
@@ -223,58 +214,38 @@ namespace GWMS.Data.Migrations
new new
{ {
PlantId = 1, PlantId = 1,
LevelAct = 0.0, LevelMax = 26000.0,
LevelMax = 28000.0, LevelReorder = 15000.0,
OrderQtyStd = 18000.0,
PlantCode = "PIZ03", PlantCode = "PIZ03",
PlantDesc = "Collecchio", PlantDesc = "Collecchio"
PressAct = 0.0,
PressBHAct = 0.0,
PressBHMax = 270.0,
PressBLAct = 0.0,
PressBLMax = 270.0,
PressMax = 19.0
}, },
new new
{ {
PlantId = 2, PlantId = 2,
LevelAct = 0.0,
LevelMax = 28000.0, LevelMax = 28000.0,
LevelReorder = 15000.0,
OrderQtyStd = 18000.0,
PlantCode = "PIZ04", PlantCode = "PIZ04",
PlantDesc = "Noceto", PlantDesc = "Noceto"
PressAct = 0.0,
PressBHAct = 0.0,
PressBHMax = 270.0,
PressBLAct = 0.0,
PressBLMax = 270.0,
PressMax = 19.0
}, },
new new
{ {
PlantId = 3, PlantId = 3,
LevelAct = 0.0,
LevelMax = 24000.0, LevelMax = 24000.0,
LevelReorder = 15000.0,
OrderQtyStd = 18000.0,
PlantCode = "PIZ05", PlantCode = "PIZ05",
PlantDesc = "Baganzola", PlantDesc = "Baganzola"
PressAct = 0.0,
PressBHAct = 0.0,
PressBHMax = 270.0,
PressBLAct = 0.0,
PressBLMax = 270.0,
PressMax = 19.0
}, },
new new
{ {
PlantId = 4, PlantId = 4,
LevelAct = 0.0, LevelMax = 26000.0,
LevelMax = 24000.0, LevelReorder = 15000.0,
OrderQtyStd = 18000.0,
PlantCode = "PIZ08", PlantCode = "PIZ08",
PlantDesc = "Pilastrello", PlantDesc = "Pilastrello"
PressAct = 0.0,
PressBHAct = 0.0,
PressBHMax = 270.0,
PressBLAct = 0.0,
PressBLMax = 270.0,
PressMax = 19.0
}); });
}); });
@@ -332,6 +303,28 @@ namespace GWMS.Data.Migrations
b.ToTable("PlantStatus"); b.ToTable("PlantStatus");
}); });
modelBuilder.Entity("GWMS.Data.DatabaseModels.RebootLogModel", b =>
{
b.Property<int>("RecordId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<DateTime>("DtEvent")
.HasColumnType("datetime(6)");
b.Property<string>("Item")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.Property<string>("Payload")
.HasMaxLength(250)
.HasColumnType("varchar(250)");
b.HasKey("RecordId");
b.ToTable("RebootLog");
});
modelBuilder.Entity("GWMS.Data.DatabaseModels.SupplierModel", b => modelBuilder.Entity("GWMS.Data.DatabaseModels.SupplierModel", b =>
{ {
b.Property<int>("SupplierId") b.Property<int>("SupplierId")
@@ -398,7 +391,7 @@ namespace GWMS.Data.Migrations
TransporterId = 1, TransporterId = 1,
PositionLatitude = 0.0, PositionLatitude = 0.0,
PositionLongitude = 0.0, PositionLongitude = 0.0,
PositionUpdated = new DateTime(2021, 6, 25, 16, 15, 35, 940, DateTimeKind.Local).AddTicks(7402), PositionUpdated = new DateTime(2021, 8, 9, 16, 36, 52, 691, DateTimeKind.Local).AddTicks(9092),
TransporterCode = "LEVO", TransporterCode = "LEVO",
TransporterDesc = "Levorato" TransporterDesc = "Levorato"
}, },
@@ -407,7 +400,7 @@ namespace GWMS.Data.Migrations
TransporterId = 2, TransporterId = 2,
PositionLatitude = 0.0, PositionLatitude = 0.0,
PositionLongitude = 0.0, PositionLongitude = 0.0,
PositionUpdated = new DateTime(2021, 6, 25, 16, 15, 35, 940, DateTimeKind.Local).AddTicks(8022), PositionUpdated = new DateTime(2021, 8, 9, 16, 36, 52, 691, DateTimeKind.Local).AddTicks(9470),
TransporterCode = "TRAF", TransporterCode = "TRAF",
TransporterDesc = "Traffik" TransporterDesc = "Traffik"
}); });
+8 -4
View File
@@ -37,10 +37,14 @@ namespace GWMS.Data
// inizializzazione dei valori di default x Plant // inizializzazione dei valori di default x Plant
modelBuilder.Entity<PlantDetailModel>().HasData( 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, LevelReorder = 15000, OrderQtyStd = 9000 },
new PlantDetailModel { PlantId = 2, PlantCode = "PIZ04", PlantDesc = "Noceto", LevelMax = 28000, PressMax = 19, PressBHMax = 270, PressBLMax = 270 }, new PlantDetailModel { PlantId = 2, PlantCode = "PIZ04", PlantDesc = "Noceto", LevelMax = 28000, LevelReorder = 15000, OrderQtyStd = 18000 },
new PlantDetailModel { PlantId = 3, PlantCode = "PIZ05", PlantDesc = "Baganzola", LevelMax = 24000, PressMax = 19, PressBHMax = 270, PressBLMax = 270 }, new PlantDetailModel { PlantId = 3, PlantCode = "PIZ05", PlantDesc = "Baganzola", LevelMax = 24000, LevelReorder = 15000, OrderQtyStd = 9000 },
new PlantDetailModel { PlantId = 4, PlantCode = "PIZ08", PlantDesc = "Pilastrello", LevelMax = 24000, PressMax = 19, PressBHMax = 270, PressBLMax = 270 } new PlantDetailModel { PlantId = 4, PlantCode = "PIZ08", PlantDesc = "Pilastrello", LevelMax = 26000, LevelReorder = 15000, OrderQtyStd = 9000 }
// 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 = 26000, PressMax = 19, PressBHMax = 270, PressBLMax = 270 }
); );
// inizializzazione dei valori di default x Fornitori // inizializzazione dei valori di default x Fornitori
@@ -0,0 +1,27 @@
DROP PROCEDURE IF EXISTS DecimateLog;
DELIMITER $$
CREATE PROCEDURE DecimateLog(
pStartDate DATETIME,
pPlantId INT,
pMinInt INT,
pFluxType VARCHAR(250)
)
BEGIN
DECLARE pCounter INT DEFAULT 1;
DECLARE pDt DATETIME DEFAULT pStartDate;
DECLARE pMaxStep INT DEFAULT 1;
WHILE pDt <= DATE_ADD(NOW(), INTERVAL -pMinInt MINUTE) DO
#SELECT pDt;
CALL DeletePlantLogrecords(pDt, pPlantId, pMinInt, pFluxType);
SET pCounter = pCounter + 1;
SET pDt = DATE_ADD(pDt, INTERVAL pMinInt MINUTE);
END WHILE;
END$$
DELIMITER ;
@@ -0,0 +1,42 @@
USE GWMS_PZZFRR;
DROP PROCEDURE IF EXISTS DeletePlantLogrecords;
DELIMITER $$
CREATE PROCEDURE DeletePlantLogrecords(
IN pStartDate DATETIME,
IN pPlantId INT,
IN pMinInt INT,
IN pFluxType VARCHAR(250)
)
BEGIN
# calcolo il primo record dalla data indicata
DECLARE pDt DATETIME DEFAULT pStartDate;
SET pDt=
(
SELECT DtEvent
FROM PlantLog
WHERE PlantId = pPlantId
AND FluxType = pFluxType
AND DtEvent > pStartDate
ORDER BY DtEvent
LIMIT 1
) + INTERVAL 10 SECOND;
#SELECT pDt;
# calcolo TUTTI i record successivi (da eliminare)
DELETE
FROM PlantLog
WHERE PlantId = pPlantId
AND FluxType = pFluxType
AND DtEvent > pDt AND DtEvent < (pStartDate + INTERVAL pMinInt MINUTE)
;
END$$
DELIMITER ;
+150 -23
View File
@@ -7,7 +7,9 @@
@inject MessageService AppMService @inject MessageService AppMService
@inject GWMSDataService DataService @inject GWMSDataService DataService
@inject NavigationManager NavManager
@inject IConfiguration Configuration @inject IConfiguration Configuration
@inject IJSRuntime JSRuntime
<div class="card"> <div class="card">
<div class="card-header bg-info text-light"> <div class="card-header bg-info text-light">
@@ -17,15 +19,33 @@
<EditForm Model="@_currItem"> <EditForm Model="@_currItem">
<DataAnnotationsValidator /> <DataAnnotationsValidator />
<div class="row"> <div class="row">
<div class="col-12 col-lg-2"> <div class="col-12 col-lg-1">
<img src="@getImgUrl(_currItem.OrderCode)" class="img-fluid" width="85" /> <img src="@getImgUrl(_currItem.OrderCode)" class="img-fluid" width="85" />
</div> </div>
<div class="col-12 col-lg-8 align-items-center"> <div class="col-12 col-lg-9 align-items-center">
<div class="row"> <div class="row">
<div class="col-8"> <div class="col-3">
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend"> <div class="input-group-prepend">
<span class="input-group-text" style="width: 3em;"> <span class="input-group-text">
<span class="fas fa-qrcode" aria-hidden="true"></span>
</span>
</div>
<InputText @bind-Value="@_currItem.OrderCode" class="form-control"></InputText>
</div>
</div>
<div class="col-3 pl-0">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><span class="fas fa-calendar" aria-hidden="true"></span></span>
</div>
<DateEdit class="form-control" InputMode="DateInputMode.DateTime" @bind-Date="@_currItem.DtOrder" />
</div>
</div>
<div class="col-3 pl-0">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">
<span class="fas fa-industry" aria-hidden="true"></span> <span class="fas fa-industry" aria-hidden="true"></span>
</span> </span>
</div> </div>
@@ -37,42 +57,113 @@
</InputSelect> </InputSelect>
</div> </div>
</div> </div>
<div class="col-4"> <div class="col-3 pl-0">
@*<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">
<span class="fas fa-calendar-alt" aria-hidden="true"></span>
</span>
</div>
<InputDate id="DtEta" @bind-Value="_currItem.DtETA" class="form-control" title="ETA (previsione consegna)" />
</div>*@
</div>
<div class="col-12 mt-2">
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend"> <div class="input-group-prepend">
<span class="input-group-text" style="width: 3em;"> <span class="input-group-text">
<span class="fas fa-truck-moving" aria-hidden="true"></span>
</span>
</div>
<InputSelect @bind-Value="@_currItem.TransporterId" title="Trasportatore" class="form-control small">
@foreach (var item in transpList)
{
<option value="@item.TransporterId">@item.TransporterCode | @item.TransporterDesc</option>
}
</InputSelect>
</div>
</div>
<div class="col-9 mt-2">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">
<span class="fas fa-comment-alt" aria-hidden="true"></span> <span class="fas fa-comment-alt" aria-hidden="true"></span>
</span> </span>
</div> </div>
<InputText id="OrderDesc" @bind-Value="_currItem.OrderDesc" class="form-control" title="Note Ordine (opzionali)" /> <InputText id="OrderDesc" @bind-Value="_currItem.OrderDesc" class="form-control" title="Note Ordine (opzionali)"></InputText>
<div class="input-group-append"> <div class="input-group-append">
<span class="input-group-text">note</span>
</div>
</div>
</div>
<div class="col-3 pl-0 mt-2">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"> <span class="input-group-text">
Note <span class="fas fa-weight" aria-hidden="true"></span>
</span> </span>
</div> </div>
<InputNumber @bind-Value="@_currItem.OrderQty" class="form-control"></InputNumber>
<div class="input-group-append">
<span class="input-group-text">kg</span>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="col-12 col-lg-2"> <div class="col-12 col-lg-2">
<div class="mb-2"> <div class="row">
<button type="button" class="btn btn-outline-success btn-block" value="Save" @onclick="saveUpdate">Save <i class="far fa-save"></i></button> <div class="col-8 pr-0">
</div> <button type="button" class="btn btn-warning btn-block" value="Cancel" @onclick="cancelUpdate">Cancel <i class="fas fa-ban"></i></button>
<div> <div class="mt-2">
<button type="button" class="btn btn-outline-warning btn-block" value="Cancel" @onclick="cancelUpdate">Cancel <i class="fas fa-ban"></i></button> <button type="button" class="btn btn-success btn-block" value="Save" @onclick="saveUpdate">Save <i class="far fa-save"></i></button>
</div>
</div>
<div class="col-4">
<button type="button" class="btn btn btn-danger btn-block h-100" value="Delete" @onclick="deleteRecord" title="Delete"><i class="fas fa-trash"></i></button>
</div>
</div> </div>
</div> </div>
</div> </div>
@if (editAll)
{
<div class="row mt-2">
<div class="col-12 col-lg-1">
</div>
<div class="col-12 col-lg-9 align-items-center">
<div class="row">
<div class="col-9">
<div class="row">
<div class="col-6">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><span class="fas fa-calendar" aria-hidden="true"></span></span>
</div>
<DateEdit class="form-control" InputMode="DateInputMode.DateTime" @bind-Date="@_currItem.DtExecStart" />
<div class="input-group-append">
<span class="input-group-text">inizio carico</span>
</div>
</div>
</div>
<div class="col-6">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><span class="fas fa-calendar" aria-hidden="true"></span></span>
</div>
<DateEdit class="form-control" InputMode="DateInputMode.DateTime" @bind-Date="@_currItem.DtExecEnd" />
<div class="input-group-append">
<span class="input-group-text">fine carico</span>
</div>
</div>
</div>
</div>
</div>
<div class="col-3 pl-0">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">
<span class="fas fa-weight" aria-hidden="true"></span>
</span>
</div>
<InputNumber @bind-Value="@_currItem.ExecutionQty" class="form-control"></InputNumber>
<div class="input-group-append">
<span class="input-group-text">kg</span>
</div>
</div>
</div>
</div>
</div>
</div>
}
</EditForm> </EditForm>
</div> </div>
</div> </div>
@@ -80,6 +171,7 @@
@code { @code {
private List<SupplierModel> suppList; private List<SupplierModel> suppList;
private List<TransporterModel> transpList;
protected OrderModel _currItem = new OrderModel(); protected OrderModel _currItem = new OrderModel();
protected int _supplierId { get; set; } = 0; protected int _supplierId { get; set; } = 0;
@@ -97,6 +189,8 @@
} }
} }
private bool editAll { get; set; } = false;
[Parameter] [Parameter]
public EventCallback<int> DataReset { get; set; } public EventCallback<int> DataReset { get; set; }
[Parameter] [Parameter]
@@ -135,6 +229,22 @@
await DataReset.InvokeAsync(0); await DataReset.InvokeAsync(0);
} }
private async Task deleteRecord()
{
if (!await JSRuntime.InvokeAsync<bool>("confirm", "Sicuro di voler eliminare l'ordine selezionato??"))
return;
if (_currItem != null)
{
DataService.OrderDelete(_currItem);
await DataUpdated.InvokeAsync(1);
}
else
{
Console.WriteLine("User null!");
}
}
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
await ReloadAllData(); await ReloadAllData();
@@ -143,6 +253,23 @@
protected async Task ReloadAllData() protected async Task ReloadAllData()
{ {
suppList = await DataService.SuppliersGetAll(); suppList = await DataService.SuppliersGetAll();
transpList = await DataService.TransportersGetAll();
// vedere anche https://www.mikesdotnetting.com/article/340/working-with-query-strings-in-blazor
var uri = NavManager.ToAbsoluteUri(NavManager.Uri);
var currMode = GetQueryParm("currMode");
if (!string.IsNullOrEmpty(currMode))
{
editAll = currMode.Equals("debug");
}
}
// Blazor: get query parm from the URL
protected string GetQueryParm(string parmName)
{
var uriBuilder = new UriBuilder(NavManager.Uri);
var q = System.Web.HttpUtility.ParseQueryString(uriBuilder.Query);
return q[parmName] ?? "";
} }
/// <summary> /// <summary>
+8 -8
View File
@@ -17,7 +17,7 @@
</div> </div>
<div class="card-body p-1"> <div class="card-body p-1">
<div class="row"> <div class="row">
<div class="col-5 pr-0"> <div class="col-4 pr-0">
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<ul class="list-group"> <ul class="list-group">
@@ -26,23 +26,23 @@
</li> </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 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"> <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>
<li class="list-group-item d-flex justify-content-between align-items-center small"> <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>
<li class="list-group-item active d-flex justify-content-between align-items-center py-1">PB Bassa</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"> <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>
<li class="list-group-item d-flex justify-content-between align-items-center small"> <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> </li>
</ul> </ul>
</div> </div>
</div> </div>
</div> </div>
<div class="col-7"> <div class="col-8">
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<ul class="list-group"> <ul class="list-group">
@@ -66,10 +66,10 @@
</div> </div>
</li> </li>
<li class="list-group-item d-flex justify-content-between align-items-center"> <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>
<li class="list-group-item d-flex justify-content-between align-items-center"> <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> </li>
</ul> </ul>
</div> </div>
+33 -2
View File
@@ -54,6 +54,11 @@ namespace GWMS.UI.Components
AspectRatio = 2 AspectRatio = 2
}; };
/// <summary>
/// fattore di riduzione x visualizzare meno punti (in base alla numerosità...
/// </summary>
protected int redFact = 1;
#endregion Protected Fields #endregion Protected Fields
#region Private Properties #region Private Properties
@@ -121,12 +126,23 @@ namespace GWMS.UI.Components
#region Private Methods #region Private Methods
private void fixRedFactor()
{
int answ = 1;
int numCount = _currItem.LevelTS.Count;
// passo a 2h se > 1 week
if (numCount > 120)
answ = 2;
redFact = answ;
}
private LineChartDataset<double> GetLineChartDataset() private LineChartDataset<double> GetLineChartDataset()
{ {
fixRedFactor();
var answ = new LineChartDataset<double> var answ = new LineChartDataset<double>
{ {
//Label = "Livello", //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), BorderColor = getLineColors(1f),
Fill = true, Fill = true,
PointRadius = 3, PointRadius = 3,
@@ -139,7 +155,8 @@ namespace GWMS.UI.Components
private List<string> GetLineChartLabels() 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; return answ;
} }
@@ -176,5 +193,19 @@ namespace GWMS.UI.Components
} }
#endregion Protected Methods #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
} }
} }
+1 -1
View File
@@ -206,7 +206,7 @@
private async Task deleteRecord() private async Task deleteRecord()
{ {
if (!await JSRuntime.InvokeAsync<bool>("confirm", $"Sicuro di voler eliminare la consegna selezionata??")) if (!await JSRuntime.InvokeAsync<bool>("confirm", "Sicuro di voler eliminare la consegna selezionata??"))
return; return;
if (_currItem != null) if (_currItem != null)
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -70,13 +70,13 @@ namespace GWMS.UI.Controllers
// POST api/PlantLog // POST api/PlantLog
[HttpPost] [HttpPost]
public ActionResult Post([FromBody] List<PlantLogModel> newItems) public async Task<ActionResult> Post([FromBody] List<PlantLogModel> newItems)
{ {
bool fatto = false; bool fatto = false;
// verifico ci sia valore // verifico ci sia valore
if (newItems != null) if (newItems != null)
{ {
fatto = _DataService.PlantLogInsert(newItems); fatto = await _DataService.PlantLogInsert(newItems);
} }
if (fatto) if (fatto)
{ {
+416 -8
View File
@@ -14,6 +14,8 @@ using System.Diagnostics;
using NLog; using NLog;
using GWMS.Data.DTO; using GWMS.Data.DTO;
using GWMS.Data.DatabaseModels; using GWMS.Data.DatabaseModels;
using static GWMS.Data.IobObjects;
using System.Globalization;
namespace GWMS.UI.Data namespace GWMS.UI.Data
{ {
@@ -88,20 +90,263 @@ namespace GWMS.UI.Data
return new DistributedCacheEntryOptions().SetAbsoluteExpiration(DateTime.Now.AddSeconds(numSecAbsExp)).SetSlidingExpiration(TimeSpan.FromSeconds(numSecSliExp)); return new DistributedCacheEntryOptions().SetAbsoluteExpiration(DateTime.Now.AddSeconds(numSecAbsExp)).SetSlidingExpiration(TimeSpan.FromSeconds(numSecSliExp));
} }
/// <summary>
/// Recupera PlantDTO e aggiorno valori attuali (se presente...)
/// ATTENZIONE: i dati sono sempre ricevuti PER SINGOLO PlantId!!!
/// </summary>
/// <param name="newItems"></param>
private async Task updateCurrDTO(List<PlantLogModel> newItems)
{
List<PlantDTO> dbResult = new List<PlantDTO>();
int PlantId = newItems.FirstOrDefault().PlantId;
string cacheKey = "DATA:PLANTS:ListDTO";
string rawData;
var redisDataList = await distributedCache.GetAsync(cacheKey);
if (redisDataList != null)
{
rawData = Encoding.UTF8.GetString(redisDataList);
dbResult = JsonConvert.DeserializeObject<List<PlantDTO>>(rawData);
// ora ciclo x ogni flusso/macchina l'ultimo record
List<PlantLogModel> lastByFlux = newItems
.OrderByDescending(x => x.DtEvent)
.GroupBy(g => g.FluxType)
.Select(s => s.First())
.ToList();
// aggiorno il DTO x i valori trovati...
var currDto = dbResult.Where(x => x.PlantId == PlantId).FirstOrDefault();
// verifico SE c'è Level
var lastLev = lastByFlux.Where(x => x.FluxType == "Level").FirstOrDefault();
if (lastLev != null)
{
currDto.LevelAct = lastLev.ValNumber;
}
// verifico SE c'è MainPress
var lastMain = lastByFlux.Where(x => x.FluxType == "MainPress").FirstOrDefault();
if (lastMain != null)
{
if (currDto.PressAct.ContainsKey("Main"))
{
currDto.PressAct["Main"] = lastMain.ValNumber;
}
else
{
currDto.PressAct.Add("Main", lastMain.ValNumber);
}
}
// verifico SE c'è PressBH
var lastBH = lastByFlux.Where(x => x.FluxType == "PressBH").FirstOrDefault();
if (lastBH != null)
{
if (currDto.PressAct.ContainsKey("BH"))
{
currDto.PressAct["BH"] = lastBH.ValNumber;
}
else
{
currDto.PressAct.Add("BH", lastBH.ValNumber);
}
}
// verifico SE c'è PressBL
var lastBL = lastByFlux.Where(x => x.FluxType == "PressBL").FirstOrDefault();
if (lastBL != null)
{
if (currDto.PressAct.ContainsKey("BL"))
{
currDto.PressAct["BL"] = lastBL.ValNumber;
}
else
{
currDto.PressAct.Add("BL", lastBL.ValNumber);
}
}
// salvo DTO!
rawData = JsonConvert.SerializeObject(dbResult);
redisDataList = Encoding.UTF8.GetBytes(rawData);
await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt(true));
}
}
#endregion Private Methods #endregion Private Methods
#region Protected Methods #region Protected Methods
/// <summary>
/// Hash dati EXE TASK x la macchina specificata
/// </summary>
/// <param name="idxMacchina"></param>
/// <returns></returns>
protected static string exeTaskHash(string idxMacchina)
{
return mHash(string.Format("ExeTask:{0}", idxMacchina));
}
protected async Task<bool> checkCreateOrders()
{
bool fatto = false;
List<OrderModel> NewOrders = new List<OrderModel>();
DateTime adesso = DateTime.Now;
int supplierId = 1;
int transporterId = 1;
double qtyOrd = 0;
// faccio ciclo x tutti gli impianti
List<PlantDTO> currPlantData = await PlantsGetAll();
List<WeekPlanModel> fullWeekPlan = WeekPlanGet().Result;
foreach (var item in currPlantData)
{
// recupero ordini x il plant
var currOrderOpen = await OrdersGetOpen(item.PlantId);
// calcolo delta ordinato
qtyOrd = currOrderOpen.Sum(x => x.OrderQty);
// verifico il livello attuale + i valori degli ordini APERTI rispetto al livello di riordino...
if (item.LevelAct + qtyOrd < item.LevelReorder)
{
// (FARE !!! VERIFICA!!!!)
// calcolo supplier/transporter da tab WeekPlan
var dailyPlan = fullWeekPlan.Where(x => x.PlantId == item.PlantId && (int)x.DayNum == ((int)adesso.DayOfWeek + 1)).FirstOrDefault();
if (dailyPlan != null)
{
supplierId = dailyPlan.SupplierId;
transporterId = dailyPlan.TransporterId;
}
else
{
supplierId = 1;
transporterId = 1;
}
// stacco un NUOVO ordine di quantità finita
NewOrders.Add(new OrderModel() { DtOrder = adesso, OrderQty = item.OrderQtyStd, PlantId = item.PlantId, OrderCode = $"O{item.PlantCode}{adesso:yyMMddHHmm}", OrderDesc = $"Ordine {item.PlantDesc} - {adesso}", SupplierId = supplierId, TransporterId = transporterId });
}
}
if (NewOrders.Count > 0)
{
// effettuo inserimento ordini!
dbController.OrderInsert(NewOrders);
// invio email x ogni fornitore x i NUOVI ordini inseriti
var orders4supp = NewOrders.GroupBy(g => g.SupplierId).FirstOrDefault();
foreach (var item in orders4supp)
{
// invio email di notifica nuovi ordini inseriti
}
// invio email x ogni fornitore x i NUOVI ordini inseriti
var orders4transp = NewOrders.GroupBy(g => g.TransporterId).FirstOrDefault();
foreach (var item in orders4transp)
{
// invio email di notifica nuovi ordini inseriti
}
fatto = true;
}
return fatto;
}
protected string getCacheKey(string TableName, SelectOrderData CurrFilter) protected string getCacheKey(string TableName, SelectOrderData CurrFilter)
{ {
string answ = $"{TableName}:P_{CurrFilter.PlantId:00}:S_{CurrFilter.SupplierId:00}:T_{CurrFilter.TransporterId:00}:D_{CurrFilter.DateStart:yyyyMMddHHmm}_{CurrFilter.DateEnd:yyyyMMddHHmm}"; string answ = $"{TableName}:P_{CurrFilter.PlantId:00}:S_{CurrFilter.SupplierId:00}:T_{CurrFilter.TransporterId:00}:D_{CurrFilter.DateStart:yyyyMMddHHmm}_{CurrFilter.DateEnd:yyyyMMddHHmm}";
return answ; return answ;
} }
/// <summary>
/// invalida tutta la cache in caso di update
/// </summary>
/// <returns></returns>
protected async void invalidateAllCache()
{
await distributedCache.RemoveAsync("DATA:CONFIG");
await distributedCache.RemoveAsync("DATA:CHECKLEVEL");
await distributedCache.RemoveAsync("DATA:PLANTS:ListDTO");
await distributedCache.RemoveAsync("DATA:SUPPL:List");
await distributedCache.RemoveAsync("DATA:TRANSP:List");
await distributedCache.RemoveAsync("DATA:WEEKPLAN:List");
}
protected async Task<List<PlantLogModel>> PlantLogGetLastByFlux(int PlantId)
{
List<PlantLogModel> lastValues = new List<PlantLogModel>();
// cerco in cache
string cacheKey = $"DATA:PLANTS:LastFlux:{PlantId}";
string rawData;
var redisDataList = await distributedCache.GetAsync(cacheKey);
if (redisDataList != null)
{
rawData = Encoding.UTF8.GetString(redisDataList);
lastValues = JsonConvert.DeserializeObject<List<PlantLogModel>>(rawData);
}
// altrimenti DB e salvo...
else
{
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
lastValues = dbController.PlantLogGetLastByFlux(PlantId);
rawData = JsonConvert.SerializeObject(lastValues);
redisDataList = Encoding.UTF8.GetBytes(rawData);
await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt(true));
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Info($"Effettuata lettura da DB + caching per PlantLogGetLastByFlux: {ts.TotalMilliseconds} ms");
}
return await Task.FromResult(lastValues);
}
#endregion Protected Methods #endregion Protected Methods
#region Public Methods #region Public Methods
/// <summary>
/// Hash Redis contenente i dati MP di una specifico TYPE (es StatusMacchina, StateMachineIngressi, ...)
/// </summary>
/// <param name="dataType"></param>
/// <returns></returns>
public static string mHash(string dataType)
{
return $"DATA:{dataType}";
}
/// <summary>
/// effettua verifica x tutti i plant, se livello > livello riordino e NON ci sono ordini APERTI in arrivo --> lancia ordine
/// </summary>
public async Task<bool> checkLevels()
{
bool fatto = false;
// effettuo verifica veto ricalcolo ordini da cache...
DateTime adesso = DateTime.Now;
DateTime vetoCheck = adesso.AddMinutes(1);
string cacheKey = "DATA:CHECKLEVEL";
string rawData;
try
{
var redisDataList = await distributedCache.GetAsync(cacheKey);
// se non ho veto --> controllo
if (redisDataList != null)
{
rawData = Encoding.UTF8.GetString(redisDataList);
vetoCheck = JsonConvert.DeserializeObject<DateTime>(rawData);
}
else
{
vetoCheck = adesso.AddMinutes(-1);
}
if (adesso > vetoCheck)
{
fatto = await checkCreateOrders();
// imposto nuovo veto a 5 min...
vetoCheck = adesso.AddMinutes(5);
rawData = JsonConvert.SerializeObject(vetoCheck);
redisDataList = Encoding.UTF8.GetBytes(rawData);
await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt(false));
}
}
catch
{ }
return fatto;
}
public async Task<List<GWMS.Data.DatabaseModels.ConfigModel>> ConfigGetAll() public async Task<List<GWMS.Data.DatabaseModels.ConfigModel>> ConfigGetAll()
{ {
//return Task.FromResult(dbController.ActionsGetAll()); //return Task.FromResult(dbController.ActionsGetAll());
@@ -129,6 +374,26 @@ namespace GWMS.UI.Data
return await Task.FromResult(dbResult); return await Task.FromResult(dbResult);
} }
public PlantLogModel convertFluxToPL(int plantId, flogData origData)
{
// cerco di ottenere un val in cifre
double valDbl = 0;
NumberStyles style = NumberStyles.Number;
CultureInfo culture = CultureInfo.CreateSpecificCulture("it-IT");
double.TryParse(origData.valore.Replace(".", ","), style, culture, out valDbl);
TimeSpan delta = origData.dtCurr.Subtract(origData.dtEve);
PlantLogModel answ = new PlantLogModel()
{
FluxType = origData.flux,
ValNumber = valDbl,
ValString = origData.valore,
PlantId = plantId,
DtEvent = DateTime.Now.Subtract(delta)
};
return answ;
}
public async Task<bool> HasPlantLog() public async Task<bool> HasPlantLog()
{ {
return await Task.FromResult(dbController.HasPlantLog()); return await Task.FromResult(dbController.HasPlantLog());
@@ -161,13 +426,54 @@ namespace GWMS.UI.Data
return await Task.FromResult(dbResult); return await Task.FromResult(dbResult);
} }
/// <summary>
/// Restitusice elenco KVP dei TASK (da passare a IOB-WIN) per l'impianto indicato
/// </summary>
/// <param name="idxMacchina"></param>
/// <returns></returns>
public async Task<Dictionary<string, string>> mTaskMacchina(string idxMacchina)
{
// hard coded dimensione vettore DatiMacchine
Dictionary<string, string> answ = new Dictionary<string, string>();
// ORA recupero da memoria redis...
try
{
string cacheKey = exeTaskHash(idxMacchina);
string rawData;
var redisDataList = await distributedCache.GetAsync(cacheKey);
if (redisDataList != null)
{
rawData = Encoding.UTF8.GetString(redisDataList);
answ = JsonConvert.DeserializeObject<Dictionary<string, string>>(rawData);
}
}
catch (Exception exc)
{
Log.Info($"Errore in recupero dati EXE TASK x Redis mTaskMacchina - idxMacchina {idxMacchina}{Environment.NewLine}{exc}");
}
return answ;
}
public async void OrderDelete(OrderModel currItem)
{
try
{
dbController.OrderDelete(currItem);
invalidateAllCache();
dbController.ResetController();
}
catch
{
}
}
public async Task<List<OrderModel>> OrdersGetFilt(SelectOrderData CurrFilter) public async Task<List<OrderModel>> OrdersGetFilt(SelectOrderData CurrFilter)
{ {
List<OrderModel> dbResult = new List<OrderModel>(); List<OrderModel> dbResult = new List<OrderModel>();
Stopwatch stopWatch = new Stopwatch(); Stopwatch stopWatch = new Stopwatch();
stopWatch.Start(); stopWatch.Start();
dbResult = dbController.GetOrdersFilt(CurrFilter.PlantId, CurrFilter.SupplierId, CurrFilter.TransporterId, CurrFilter.DateStart, CurrFilter.DateEnd); dbResult = dbController.GetOrdersFilt(CurrFilter.PlantId, CurrFilter.SupplierId, CurrFilter.TransporterId, CurrFilter.DateStart, CurrFilter.DateEnd, CurrFilter.ShowClosed);
stopWatch.Stop(); stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed; TimeSpan ts = stopWatch.Elapsed;
Log.Info($"Effettuata lettura da DB per OrdersGetFilt: {ts.TotalMilliseconds} ms"); Log.Info($"Effettuata lettura da DB per OrdersGetFilt: {ts.TotalMilliseconds} ms");
@@ -175,11 +481,32 @@ namespace GWMS.UI.Data
return await Task.FromResult(dbResult); return await Task.FromResult(dbResult);
} }
/// <summary>
/// Elenco degli ordini ancora aperti x il Plant
/// </summary>
/// <param name="CurrFilter"></param>
/// <returns></returns>
public async Task<List<OrderModel>> OrdersGetOpen(int PlantId)
{
List<OrderModel> dbResult = new List<OrderModel>();
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
dbResult = dbController.GetOrdersOpen(PlantId);
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Info($"Effettuata lettura da DB per OrdersGetOpen | PlantId: {PlantId} | {ts.TotalMilliseconds} ms");
return await Task.FromResult(dbResult);
}
public void OrderUpdate(OrderModel currItem) public void OrderUpdate(OrderModel currItem)
{ {
try try
{ {
dbController.OrderUpdate(currItem); dbController.OrderUpdate(currItem);
invalidateAllCache();
dbController.ResetController();
} }
catch catch
{ {
@@ -212,9 +539,63 @@ namespace GWMS.UI.Data
return await Task.FromResult(dbResult); return await Task.FromResult(dbResult);
} }
public bool PlantLogInsert(List<PlantLogModel> newItems) public async Task<bool> PlantLogInsert(List<PlantLogModel> newItems)
{ {
return dbController.PlantLogInsertNew(newItems); bool fatto = false;
// init valori
int IntervalMin = 60;
int.TryParse(_configuration["IntervalMin"], out IntervalMin);
List<PlantLogModel> item2insert = new List<PlantLogModel>();
int PlantId = newItems.FirstOrDefault().PlantId;
// aggiorno valori ACT x DTO
await updateCurrDTO(newItems);
// recupero ultimi inseriti
List<PlantLogModel> lastValues = PlantLogGetLastByFlux(PlantId).Result;
// verifico i flussi presenti tra quelli ricevuti
List<string> fluxList = newItems
.GroupBy(g => g.FluxType)
.Select(s => s.First().FluxType)
.ToList();
foreach (var item in fluxList)
{
// cerco se c'è valore...
var lastInserted = lastValues.Where(x => x.FluxType == item).FirstOrDefault();
DateTime dateLimit = DateTime.Today.AddDays(-1);
if (lastInserted != null)
{
// per ogni flusso calcolo il valore minimo x inserimento (arrotondando a minInt)
dateLimit = dbController.DateRoundEnd(lastInserted.DtEvent, IntervalMin);
}
// cerco se ho record > valore minimo x ogni flusso ricevuto
List<PlantLogModel> insCandidates = newItems.Where(x => x.FluxType == item && x.DtEvent >= dateLimit).ToList();
while (insCandidates.Count > 0)
{
var newRec = insCandidates.First();
// il primo lo accodo da inserire
item2insert.Add(newRec);
// calcolo nuovo veto
dateLimit = dbController.DateRoundEnd(newRec.DtEvent, IntervalMin);
// ...e se ho record accodo
insCandidates = newItems.Where(x => x.FluxType == item && x.DtEvent >= dateLimit).ToList();
}
}
// 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() public async Task<List<PlantDTO>> PlantsGetAll()
@@ -232,7 +613,9 @@ namespace GWMS.UI.Data
{ {
Stopwatch stopWatch = new Stopwatch(); Stopwatch stopWatch = new Stopwatch();
stopWatch.Start(); stopWatch.Start();
dbResult = dbController.GetPlantsDTO(); int maxRec = 100;
int.TryParse(_configuration["MaxLogRecord"], out maxRec);
dbResult = dbController.GetPlantsDTO(maxRec);
rawData = JsonConvert.SerializeObject(dbResult); rawData = JsonConvert.SerializeObject(dbResult);
redisDataList = Encoding.UTF8.GetBytes(rawData); redisDataList = Encoding.UTF8.GetBytes(rawData);
await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt(true)); await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt(true));
@@ -243,11 +626,38 @@ namespace GWMS.UI.Data
return await Task.FromResult(dbResult); return await Task.FromResult(dbResult);
} }
public async Task<PlantDTO> PlantsGetByCode(string PlantCode)
{
PlantDTO answ = new PlantDTO();
var ListRecords = await PlantsGetAll();
var found = ListRecords.Where(x => x.PlantCode == PlantCode).FirstOrDefault();
if (found != null)
{
answ = found;
}
return await Task.FromResult(answ);
}
public void RebootLogInsert(RebootLogModel newItem)
{
try
{
dbController.RecordRebootLog(newItem);
}
catch
{ }
}
public async Task<bool> RegenDB(int numDays, int stepMin = 30, int maxHourRate = 800) public async Task<bool> RegenDB(int numDays, int stepMin = 30, int maxHourRate = 800)
{ {
return await Task.FromResult(dbController.RegenDB(1, numDays, stepMin, maxHourRate)); return await Task.FromResult(dbController.RegenDB(1, numDays, stepMin, maxHourRate));
} }
public void ResetController()
{
dbController.ResetController();
}
public void rollBackEdit(object item) public void rollBackEdit(object item)
{ {
dbController.rollBackEntity(item); dbController.rollBackEntity(item);
@@ -337,8 +747,7 @@ namespace GWMS.UI.Data
//dbController.ResetController(); //dbController.ResetController();
dbController.WeekPlanDelete(currItem); dbController.WeekPlanDelete(currItem);
string cacheKey = $"DATA:WEEKPLAN:List"; string cacheKey = $"DATA:WEEKPLAN:List";
var redisDataList = Encoding.UTF8.GetBytes(""); await distributedCache.RemoveAsync(cacheKey);
await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt(true));
} }
catch catch
{ {
@@ -365,8 +774,7 @@ namespace GWMS.UI.Data
//dbController.ResetController(); //dbController.ResetController();
dbController.WeekPlanUpdate(currItem); dbController.WeekPlanUpdate(currItem);
string cacheKey = $"DATA:WEEKPLAN:List"; string cacheKey = $"DATA:WEEKPLAN:List";
var redisDataList = Encoding.UTF8.GetBytes(""); await distributedCache.RemoveAsync(cacheKey);
await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt(true));
} }
catch catch
{ {
+2 -7
View File
@@ -9,7 +9,7 @@ namespace GWMS.UI.Data
{ {
#region Private Fields #region Private Fields
private SelectData _detailFilter = SelectData.Init(5, 7); private SelectData _detailFilter = SelectData.Init(5, 15);
private string _pageIcon; private string _pageIcon;
private string _pageName; private string _pageName;
private string _searchVal; private string _searchVal;
@@ -33,8 +33,6 @@ namespace GWMS.UI.Data
#region Public Properties #region Public Properties
public SelectData DDB_Filter { get; set; } = SelectData.Init(5, 3);
public SelectData DetailFilter public SelectData DetailFilter
{ {
get => _detailFilter; get => _detailFilter;
@@ -52,10 +50,7 @@ namespace GWMS.UI.Data
} }
} }
public SelectData KRE_Filter { get; set; } = SelectData.Init(5, 7); public SelectOrderData Order_Filter { get; set; } = SelectOrderData.Init(5, 30);
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 string PageIcon public string PageIcon
{ {
+1 -1
View File
@@ -25,7 +25,7 @@ namespace GWMS.UI.Data
public static SelectData Init(int minRound, int numDayPrev) public static SelectData Init(int minRound, int numDayPrev)
{ {
TimeSpan DayElapsed = DateTime.Now.Subtract(DateTime.Today); TimeSpan DayElapsed = DateTime.Now.Subtract(DateTime.Today);
int minDay = (int)(DayElapsed.TotalMinutes / minRound) * minRound; int minDay = (int)((DayElapsed.TotalMinutes / minRound) + 1) * minRound;
DateTime endRounded = DateTime.Today.AddMinutes(minDay); DateTime endRounded = DateTime.Today.AddMinutes(minDay);
SelectData answ = new SelectData() SelectData answ = new SelectData()
{ {
+5 -1
View File
@@ -10,7 +10,9 @@ namespace GWMS.UI.Data
#region Public Properties #region Public Properties
public int PlantId { get; set; } = 0; public int PlantId { get; set; } = 0;
public bool ShowClosed { get; set; } = false;
public int SupplierId { get; set; } = 0; public int SupplierId { get; set; } = 0;
public int TransporterId { get; set; } = 0; public int TransporterId { get; set; } = 0;
#endregion Public Properties #endregion Public Properties
@@ -26,7 +28,7 @@ namespace GWMS.UI.Data
public static new SelectOrderData Init(int minRound, int numDayPrev) public static new SelectOrderData Init(int minRound, int numDayPrev)
{ {
var selD = SelectData.Init(minRound, numDayPrev); var selD = SelectData.Init(minRound, numDayPrev);
return new SelectOrderData() { DateStart = selD.DateStart, DateEnd = selD.DateEnd }; return new SelectOrderData() { DateStart = selD.DateStart, DateEnd = selD.DateEnd, ShowClosed = false };
} }
public override bool Equals(object obj) public override bool Equals(object obj)
@@ -34,6 +36,8 @@ namespace GWMS.UI.Data
if (!(obj is SelectOrderData item)) if (!(obj is SelectOrderData item))
return false; return false;
if (ShowClosed != item.ShowClosed)
return false;
if (PlantId != item.PlantId) if (PlantId != item.PlantId)
return false; return false;
if (SupplierId != item.SupplierId) if (SupplierId != item.SupplierId)
+2
View File
@@ -2,6 +2,8 @@
<PropertyGroup> <PropertyGroup>
<TargetFramework>net5.0</TargetFramework> <TargetFramework>net5.0</TargetFramework>
<Version>1.0.2108.1012</Version>
<UserSecretsId>95c9f021-52d1-4390-a670-5810b7b777b0</UserSecretsId>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
+45 -6
View File
@@ -11,6 +11,16 @@
</div> </div>
<div class="col-9 text-right"> <div class="col-9 text-right">
<div class="d-flex justify-content-between"> <div class="d-flex justify-content-between">
<div class="p-2">
<div class="input-group input-group-sm">
<div class="input-group-prepend">
</div>
<div class="custom-control custom-switch">
<input type="checkbox" class="custom-control-input" id="togAttivi" title="Solo Aperti / Mostra tutti" @bind-value="@ShowClosed" />
<label class="custom-control-label small" for="togAttivi">tutti</label>
</div>
</div>
</div>
<div class="p-2"> <div class="p-2">
<div class="input-group input-group-sm"> <div class="input-group input-group-sm">
<div class="input-group-prepend"> <div class="input-group-prepend">
@@ -65,6 +75,17 @@
</select> </select>
</div> </div>
</div> </div>
<div class="p-2">
<div class="form-group mb-0">
<Button id="btnReset" class="btn btn-info btn-sm btn-block" Clicked="ResetFilter" title="Reset Filter"><span class="oi oi-loop-circular"></span></Button>
</div>
</div>
<div class="p-2">
@if (ShowAddNew)
{
<button class="btn btn-block btn-sm btn-success" @onclick="CreateNew">Nuovo <i class="far fa-calendar-plus"></i></button>
}
</div>
</div> </div>
</div> </div>
</div> </div>
@@ -94,7 +115,9 @@
<th>Data Ordine</th> <th>Data Ordine</th>
<th>Ordine</th> <th>Ordine</th>
<th class="text-right">Fornitore</th> <th class="text-right">Fornitore</th>
<th class="text-right">Qta</th> <th class="text-right">Richiesta</th>
<th class="text-right">Carico</th>
<th class="text-right">Effettivo</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@@ -112,13 +135,29 @@
</td> </td>
<td>@record.OrderCode | @record.OrderDesc</td> <td>@record.OrderCode | @record.OrderDesc</td>
<td class="text-right"> <td class="text-right">
<div class="row"> <div class="text-uppercase">
<div class="col">[@record.Supplier.SupplierCode]</div> @record.Supplier.SupplierDesc
<div class="col text-right">@record.Supplier.SupplierDesc</div>
</div> </div>
<div class="small">@record.Transporter.TransporterCode | @record.Transporter.TransporterDesc</div> <div class="small">@record.Transporter.TransporterDesc</div>
</td>
<td class="text-right">
@record.OrderQty.ToString("N0")
</td>
<td class="text-right">
@if (!record.DtExecStart.Equals(@record.DtExecEnd))
{
<div>
@record.DtExecStart.Date.ToString("ddd dd/MM/yyyyy")
</div>
<div class="small">@record.DtExecStart.TimeOfDay --> @record.DtExecEnd.TimeOfDay</div>
}
</td>
<td class="text-right">
@if (record.ExecutionQty > 0)
{
@record.ExecutionQty.ToString("N0")
}
</td> </td>
<td class="text-right">@record.OrderQty.ToString("N0")</td>
</tr> </tr>
} }
</tbody> </tbody>
+64 -1
View File
@@ -105,6 +105,28 @@ namespace GWMS.UI.Pages
private bool ShowCharts { get; set; } = false; private bool ShowCharts { get; set; } = false;
private bool ShowClosed
{
get
{
bool answ = true;
if (AppMService.Order_Filter != null)
{
answ = AppMService.Order_Filter.ShowClosed;
}
return answ;
}
set
{
if (!AppMService.Order_Filter.ShowClosed.Equals(value))
{
AppMService.Order_Filter.ShowClosed = value;
var pUpd = Task.Run(async () => await ReloadData());
pUpd.Wait();
}
}
}
#endregion Private Properties #endregion Private Properties
#region Protected Properties #region Protected Properties
@@ -180,6 +202,20 @@ namespace GWMS.UI.Pages
#endregion Protected Properties #endregion Protected Properties
#region Public Properties
public bool ShowAddNew
{
get
{
bool answ = false;
answ = (SelSupplierId > 0 && SelPlantId > 0);
return answ;
}
}
#endregion Public Properties
#region Private Methods #region Private Methods
private void OnDateEndChanged(DateTime? date) private void OnDateEndChanged(DateTime? date)
@@ -204,6 +240,32 @@ namespace GWMS.UI.Pages
#region Protected Methods #region Protected Methods
/// <summary>
/// Creazione nuovo record Ordine
/// </summary>
protected void CreateNew()
{
var currPlant = PlantsList.Where(x => x.PlantId == SelPlantId).FirstOrDefault();
var currSuppl = SuppliersList.Where(x => x.SupplierId == SelSupplierId).FirstOrDefault();
if (currPlant != null && currSuppl != null)
{
DateTime adesso = DateTime.Now;
// creo un nuovo record
currRecord = new OrderModel()
{
DtOrder = adesso,
PlantId = SelPlantId,
SupplierId = SelSupplierId,
OrderDesc = $"Ord Man {currPlant.PlantDesc} - {adesso}",
OrderQty = 1000,
TransporterId = 1,
OrderCode = $"O{currPlant.PlantCode}{adesso:yyMMddHHmm}",
};
// aggiorno filtro
AppMService.Order_Filter = SelectOrderData.Init(5, 7);
}
}
protected void Edit(OrderModel selRecord) protected void Edit(OrderModel selRecord)
{ {
currRecord = selRecord; currRecord = selRecord;
@@ -241,7 +303,7 @@ namespace GWMS.UI.Pages
currRecord = null; currRecord = null;
} }
protected async Task ResetFilter(SelectOrderData newFilter) protected async Task ResetFilter()
{ {
currRecord = null; currRecord = null;
SearchRecords = null; SearchRecords = null;
@@ -259,6 +321,7 @@ namespace GWMS.UI.Pages
protected async Task UpdateData() protected async Task UpdateData()
{ {
currRecord = null; currRecord = null;
DataService.ResetController();
await ReloadData(); await ReloadData();
} }
+1 -35
View File
@@ -20,41 +20,7 @@
} }
</div> </div>
<div class="col-12"> <div class="col-12">
@*<div class="d-flex justify-content-between"> @*<SetupSim />*@
<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 />
</div> </div>
</div> </div>
</div> </div>
+1 -1
View File
@@ -268,7 +268,7 @@ namespace GWMS.UI.Pages
protected List<WeekPlanModel> SlotList(DayOfWeek Giorno, int Ora) protected List<WeekPlanModel> SlotList(DayOfWeek Giorno, int Ora)
{ {
List<WeekPlanModel> result = new(); List<WeekPlanModel> result = new List<WeekPlanModel>();
if (ListRecords != null && ListRecords.Count > 0) if (ListRecords != null && ListRecords.Count > 0)
{ {
+35 -25
View File
@@ -1,28 +1,38 @@
{ {
"iisSettings": { "iisSettings": {
"windowsAuthentication": false, "windowsAuthentication": false,
"anonymousAuthentication": true, "anonymousAuthentication": true,
"iisExpress": { "iisExpress": {
"applicationUrl": "http://localhost:26659", "applicationUrl": "http://localhost:26659",
"sslPort": 44339 "sslPort": 44339
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"GWMS.UI": {
"commandName": "Project",
"dotnetRunMessages": "true",
"launchBrowser": true,
"applicationUrl": "https://localhost:5003;http://localhost:5002",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
} }
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"GWMS.UI": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"dotnetRunMessages": "true",
"applicationUrl": "https://localhost:5003;http://localhost:5002"
},
"WSL 2": {
"commandName": "WSL2",
"launchBrowser": true,
"launchUrl": "https://localhost:5003",
"environmentVariables": {
"ASPNETCORE_URLS": "https://localhost:5003;http://localhost:5002",
"ASPNETCORE_ENVIRONMENT": "Development"
},
"distributionName": ""
}
}
} }
+3
View File
@@ -113,6 +113,9 @@ namespace GWMS.UI
DbConfig.InitDb(dbServerAddr, nKey, sKey); DbConfig.InitDb(dbServerAddr, nKey, sKey);
// inizializzo il DB e creo (se necessario) l'utente // inizializzo il DB e creo (se necessario) l'utente
DbConfig.CheckUser(nKey, sKey); DbConfig.CheckUser(nKey, sKey);
// verifico se serve applicazione migrazioni
//DbConfig.ExecMigrationMain();
//DbConfig.ExecMigrationIdentity();
// altri parametri per check vari // altri parametri per check vari
string connStringDB = DbConfig.CONNECTION_STRING; string connStringDB = DbConfig.CONNECTION_STRING;
+7 -5
View File
@@ -9,21 +9,23 @@
"AllowedHosts": "*", "AllowedHosts": "*",
"ConnectionStrings": { "ConnectionStrings": {
"Redis": "localhost:6379", "Redis": "localhost:6379",
//"AuthConnection": "Server=10.74.83.98;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;", //"AuthConnection": "Server=10.74.83.97;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;",
//"DefaultConnection": "Server=10.74.83.98;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;", //"DefaultConnection": "Server=10.74.83.97;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;",
//"AdminConnection": "Server=10.74.83.98;port=3306;database=GWMS;user=root;pwd=Egalware_24068!;sslmode=None;", //"AdminConnection": "Server=10.74.83.97;port=3306;database=GWMS;user=root;pwd=Egalware_24068!;sslmode=None;",
//"GWMS.Data": "Server=10.74.83.98;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;" //"GWMS.Data": "Server=10.74.83.97;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;"
"AuthConnection": "Server=localhost;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;", "AuthConnection": "Server=localhost;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;",
"DefaultConnection": "Server=localhost;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;", "DefaultConnection": "Server=localhost;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;",
"AdminConnection": "Server=localhost;port=3306;database=GWMS;user=root;pwd=Egalware_24068!;sslmode=None;", "AdminConnection": "Server=localhost;port=3306;database=GWMS;user=root;pwd=Egalware_24068!;sslmode=None;",
"GWMS.Data": "Server=localhost;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;" "GWMS.Data": "Server=localhost;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;"
}, },
"DbConfig": { "DbConfig": {
//"Server": "10.74.83.98", //"Server": "10.74.83.97",
"Server": "localhost", "Server": "localhost",
"nKey": "PZZFRR", "nKey": "PZZFRR",
"sKey": "M3T@n0" "sKey": "M3T@n0"
}, },
"IntervalMin": 60,
"MaxLogRecord": 240,
"ZCodeUrl": "https://qrcode.steamware.net/", "ZCodeUrl": "https://qrcode.steamware.net/",
"logo": "img/LogoPizzaferri.jpg" "logo": "img/LogoPizzaferri.jpg"
} }
+1 -1
View File
@@ -20,7 +20,7 @@ Set-Content -Path $FileVers -Value $currRelNum
# replace x manifest # replace x manifest
$manData = Get-Content $FileManIn $manData = Get-Content $FileManIn
$manData = $manData -replace "1.0.0.0", $currRelNum $manData = $manData -replace "1.0.0.0", $currRelNum
$manData = $manData -replace "{{DIRNAME}}", "MP-STATS" $manData = $manData -replace "{{DIRNAME}}", "GWMS"
$manData = $manData -replace "{{BRANCHNAME}}", "stable/0" $manData = $manData -replace "{{BRANCHNAME}}", "stable/0"
$manData = $manData -replace "{{PACKNAME}}", "GWMS.UI" $manData = $manData -replace "{{PACKNAME}}", "GWMS.UI"
Set-Content -Path $FileManOut -Value $manData Set-Content -Path $FileManOut -Value $manData
-6
View File
@@ -9,8 +9,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GWMS.UI", "GWMS.UI\GWMS.UI.
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GWMS.User", "GWMS.User\GWMS.User.csproj", "{3112DC8B-4752-4D43-A9A7-41AC40A38DFD}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GWMS.User", "GWMS.User\GWMS.User.csproj", "{3112DC8B-4752-4D43-A9A7-41AC40A38DFD}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GWMS.API", "GWMS.API\GWMS.API.csproj", "{F455A3A5-89FD-49E3-B5B6-ED8B0DCEC444}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
@@ -29,10 +27,6 @@ Global
{3112DC8B-4752-4D43-A9A7-41AC40A38DFD}.Debug|Any CPU.Build.0 = Debug|Any CPU {3112DC8B-4752-4D43-A9A7-41AC40A38DFD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3112DC8B-4752-4D43-A9A7-41AC40A38DFD}.Release|Any CPU.ActiveCfg = Release|Any CPU {3112DC8B-4752-4D43-A9A7-41AC40A38DFD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3112DC8B-4752-4D43-A9A7-41AC40A38DFD}.Release|Any CPU.Build.0 = Release|Any CPU {3112DC8B-4752-4D43-A9A7-41AC40A38DFD}.Release|Any CPU.Build.0 = Release|Any CPU
{F455A3A5-89FD-49E3-B5B6-ED8B0DCEC444}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F455A3A5-89FD-49E3-B5B6-ED8B0DCEC444}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F455A3A5-89FD-49E3-B5B6-ED8B0DCEC444}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F455A3A5-89FD-49E3-B5B6-ED8B0DCEC444}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
+3 -3
View File
@@ -1,8 +1,7 @@
<body> <body>
<i>Modulo statistiche MAPO</i> <i>GWMS - Gas Warehouse Management System</i>
<h4>Versione: {{CURRENT-REL}}</h4> <h4>Versione: {{CURRENT-REL}}</h4>
<br /> <br /> Note di rilascio:
Note di rilascio:
<ul> <ul>
<li> <li>
<b>Ultime modifiche:</b> <b>Ultime modifiche:</b>
@@ -11,6 +10,7 @@
<li> <li>
<b>v.1.* &rarr;</b> <b>v.1.* &rarr;</b>
<ul> <ul>
<li>INtegrazione metodi MAPO IOB</li>
<li>Prima release dotnet5</li> <li>Prima release dotnet5</li>
<li>Integrazione EFCore</li> <li>Integrazione EFCore</li>
</ul> </ul>
+4 -4
View File
@@ -1,8 +1,7 @@
<body> <body>
<i>Modulo statistiche MAPO</i> <i>GWMS - Gas Warehouse Management System</i>
<h4>Versione: 1.0.2106.3010</h4> <h4>Versione: 1.0.2108.1012</h4>
<br /> <br /> Note di rilascio:
Note di rilascio:
<ul> <ul>
<li> <li>
<b>Ultime modifiche:</b> <b>Ultime modifiche:</b>
@@ -11,6 +10,7 @@
<li> <li>
<b>v.1.* &rarr;</b> <b>v.1.* &rarr;</b>
<ul> <ul>
<li>INtegrazione metodi MAPO IOB</li>
<li>Prima release dotnet5</li> <li>Prima release dotnet5</li>
<li>Integrazione EFCore</li> <li>Integrazione EFCore</li>
</ul> </ul>
+1 -1
View File
@@ -1 +1 @@
1.0.2106.3010 1.0.2108.1012
+3 -3
View File
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<item> <item>
<version>1.0.2106.3010</version> <version>1.0.2108.1012</version>
<url>http://nexus.steamware.net/repository/SWS/MP-STATS/stable/0/GWMS.UI.zip</url> <url>http://nexus.steamware.net/repository/SWS/GWMS/stable/0/GWMS.UI.zip</url>
<changelog>http://nexus.steamware.net/repository/SWS/MP-STATS/stable/0/ChangeLog.html</changelog> <changelog>http://nexus.steamware.net/repository/SWS/GWMS/stable/0/ChangeLog.html</changelog>
<mandatory>false</mandatory> <mandatory>false</mandatory>
</item> </item>