Merge branch 'release/UpdateIobIcoelDb'

This commit is contained in:
2022-06-01 17:44:13 +02:00
14 changed files with 122 additions and 207 deletions
+1 -1
View File
@@ -36,7 +36,7 @@ variables:
.version-fix: &version-fix
- |
$env:NEW_REL = $env:VERS_MAIN+"."+(get-date format yyMM)+"."+(get-date format ddHH)
$env:NUM_REL = $env:VERS_MAIN+"."+(get-date format yyMM)+"."+(get-date format ddHH)
$env:NUM_REL = $env:VERS_MAIN+"."+(get-date format yyMM)+"."+(get-date format dHH)
$env:NUM_DEB = $env:VERS_MAIN+"."+(get-date format yyMM)+"-beta."+(get-date format dHH)
$env:NEW_COPYRIGHT = "EgalWare @ 2006-" + (get-date -format yyyy)
$contenuto = Get-Content -path 'VersGen\VersGen.cs' -Raw
@@ -2,8 +2,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
/*------------------------------------------------
* Aggiunto fix come da link seguente:
@@ -14,6 +12,7 @@ using System.Threading.Tasks;
* using SqlProviderServices= System.Data.Entity.SqlServer.SqlProviderServices;
*
*/
namespace EgwProxy.Icoel.DataLayer.Controllers
{
/// <summary>
@@ -26,29 +25,9 @@ namespace EgwProxy.Icoel.DataLayer.Controllers
private static ExportDbContext dbExportCtx;
private static TrackerDbContext dbTrackerCtx;
#endif
private static SyncStateDbContext dbSyncStateCtx;
private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
#if false
/// <summary>
/// Avvio dell'oggetto gestione DB con le 3 stringhe di connessione specifiche
/// </summary>
/// <param name="connEntrata">Connesisone Db frontiera Entrata Merce</param>
/// <param name="connTracker">Connessione DB Tracker</param>
/// <param name="connExport">Connessione DB IcoelExport</param>
/// <param name="connSyncState">Connessione DB locale di SYNC</param>
public DbController(string connEntrata, string connTracker, string connExport, string connSyncState)
{
dbEntrataCtx = new EntrataDbContext(connEntrata);
Log.Info("Avviata classe EntrataDbContext");
dbExportCtx = new ExportDbContext(connExport);
Log.Info("Avviata classe ExportDbContext");
dbTrackerCtx = new TrackerDbContext(connTracker);
Log.Info("Avviata classe dbTrackerCtx");
dbSyncStateCtx = new SyncStateDbContext(connSyncState);
Log.Info("Avviata classe dbSyncStateCtx");
}
#endif
#region Public Constructors
/// <summary>
/// Avvio dell'oggetto gestione DB con stringa di connessione specifica
/// </summary>
@@ -59,6 +38,25 @@ namespace EgwProxy.Icoel.DataLayer.Controllers
Log.Info("Avviata classe dbSyncStateCtx");
}
#endregion Public Constructors
#region Public Methods
/// <summary>
/// Recupera la tab di CurrData corrente
/// </summary>
/// <returns></returns>
public List<DatabaseModels.CurrDataModel> CurrDataGetAll()
{
List<DatabaseModels.CurrDataModel> dbResult = new List<DatabaseModels.CurrDataModel>();
dbResult = dbSyncStateCtx
.DbSetCurrData
.ToList();
return dbResult;
}
/// <summary>
/// Dispose classe
/// </summary>
@@ -73,94 +71,6 @@ namespace EgwProxy.Icoel.DataLayer.Controllers
dbSyncStateCtx.Dispose();
}
#if false
/// <summary>
/// Elenco record Entrata Merce (Frontiera)
/// </summary>
/// <param name="minIdx">idx da cui partire a recuperare</param>
/// <returns></returns>
public List<DatabaseModels.EntrataModel> EntrateGetFromIdx(int minIdx = 0)
{
List<DatabaseModels.EntrataModel> dbResult = new List<DatabaseModels.EntrataModel>();
dbResult = dbEntrataCtx
.DbSetEntrataMerce
.Where(x => (x.ID_CHIAVE >= minIdx))
.OrderBy(x => x.ID_CHIAVE)
.ToList();
return dbResult;
}
/// <summary>
/// Elenco ultimi record Entrata Merce (Frontiera)
/// </summary>
/// <param name="numRec">numero records da recuperare</param>
/// <returns></returns>
public List<DatabaseModels.EntrataModel> EntrateGetLast(int numRec = 100)
{
List<DatabaseModels.EntrataModel> dbResult = new List<DatabaseModels.EntrataModel>();
dbResult = dbEntrataCtx
.DbSetEntrataMerce
.OrderByDescending(x => x.ID_CHIAVE)
.Take(numRec)
.ToList();
return dbResult;
}
/// <summary>
/// Elenco record ProductsTotal (da Icoel Export Products)
/// </summary>
/// <param name="minIdx">idx da cui partire a recuperare</param>
/// <returns></returns>
public List<DatabaseModels.ProductsTotalsModel> ExportProductsGetFromIdx(int minIdx = 0)
{
List<DatabaseModels.ProductsTotalsModel> dbResult = new List<DatabaseModels.ProductsTotalsModel>();
dbResult = dbExportCtx
.DbSetProductsTotals
.Where(x => (x.SizerBatchId >= minIdx))
.OrderBy(x => x.SizerBatchId)
.ToList();
return dbResult;
}
/// <summary>
/// Elenco ultimi record ProductsTotal (da Icoel Export Products)
/// </summary>
/// <param name="numRec">numero records da recuperare</param>
/// <returns></returns>
public List<DatabaseModels.ProductsTotalsModel> ExportProductsGetLast(int numRec = 0)
{
List<DatabaseModels.ProductsTotalsModel> dbResult = new List<DatabaseModels.ProductsTotalsModel>();
dbResult = dbExportCtx
.DbSetProductsTotals
.OrderByDescending(x => x.SizerBatchId)
.ThenByDescending(x => x.Index)
.Take(numRec)
.ToList();
return dbResult;
}
#endif
/// <summary>
/// Esegue una volta la stored di ImportAll (x recupero dati da DB esterni) e poi
/// restitusice in output la tab di SyncState x verificare lo stato
/// </summary>
/// <returns></returns>
public List<DatabaseModels.SyncStateModel> SyncStateDoImportAll()
{
List<DatabaseModels.SyncStateModel> dbResult = new List<DatabaseModels.SyncStateModel>();
dbResult = dbSyncStateCtx
.Database
.SqlQuery<DatabaseModels.SyncStateModel>("EXEC stp_ImportAll")
.ToList();
return dbResult;
}
/// <summary>
/// Esegue una volta la stored di ImportAll (x recupero dati da DB esterni) e poi
/// restitusice in output la tab di SyncState x verificare lo stato
@@ -178,6 +88,23 @@ namespace EgwProxy.Icoel.DataLayer.Controllers
return dbResult;
}
/// <summary>
/// Esegue una volta la stored di ImportAll (x recupero dati da DB esterni) e poi
/// restitusice in output la tab di SyncState x verificare lo stato
/// </summary>
/// <returns></returns>
public List<DatabaseModels.SyncStateModel> SyncStateDoImportAll()
{
List<DatabaseModels.SyncStateModel> dbResult = new List<DatabaseModels.SyncStateModel>();
dbResult = dbSyncStateCtx
.Database
.SqlQuery<DatabaseModels.SyncStateModel>("EXEC stp_ImportAll")
.ToList();
return dbResult;
}
/// <summary>
/// recupera la tab di SyncState corrente
/// </summary>
@@ -193,60 +120,13 @@ namespace EgwProxy.Icoel.DataLayer.Controllers
return dbResult;
}
#if false
/// <summary>
/// Elenco record DettConfezioni (da Icoel TrackerLotti)
/// </summary>
/// <param name="minIdx">idx da cui partire a recuperare</param>
/// <returns></returns>
public List<DatabaseModels.DettConfezioniModel> TrackConfezioniGetFromIdx(int minIdx = 0)
{
List<DatabaseModels.DettConfezioniModel> dbResult = new List<DatabaseModels.DettConfezioniModel>();
dbResult = dbTrackerCtx
.DbSetConfezioni
.Where(x => (x.Pack_Id >= minIdx))
.OrderBy(x => x.Pack_Id)
.ToList();
#endregion Public Methods
return dbResult;
}
#region Private Fields
/// <summary>
/// Elenco ultimi record DettaglioConfezioni (da Icoel TrackerLotti)
/// </summary>
/// <param name="numRec">numero records da recuperare</param>
/// <returns></returns>
public List<DatabaseModels.DettConfezioniModel> TrackConfezioniGetLast(int numRec = 0)
{
List<DatabaseModels.DettConfezioniModel> dbResult = new List<DatabaseModels.DettConfezioniModel>();
dbResult = dbTrackerCtx
.DbSetConfezioni
.OrderByDescending(x => x.Pack_Id)
.Take(numRec)
.ToList();
private static SyncStateDbContext dbSyncStateCtx;
private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
return dbResult;
}
/// <summary>
/// Elenco dettaglio conferimento x PackId (da Icoel TrackerLotti)
/// ATTENZIONE: in caso di mancata associazione lotto ingresso con lavorazione corrente la
/// vista restituisce nuovo (possibile lavorare senza lotto ingresso e senza tracking)
/// </summary>
/// <param name="packId">idx da cui partire a recuperare</param>
/// <returns></returns>
public List<DatabaseModels.DettConferimentoModel> TrackPackConfDetailByIdx(long packId = 0)
{
List<DatabaseModels.DettConferimentoModel> dbResult = new List<DatabaseModels.DettConferimentoModel>();
dbResult = dbTrackerCtx
.DbSetConferimento
.Where(x => (x.PackId == packId))
.OrderBy(x => x.NUMERO_LOTTO)
.ThenByDescending(x => x.QUANTITA_ENTRATA)
.ToList();
return dbResult;
}
#endif
#endregion Private Fields
}
}
@@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.Spatial;
namespace EgwProxy.Icoel.DataLayer.DatabaseModels
{
[Table("CurrData")]
public partial class CurrDataModel
{
[Key]
[StringLength(50)]
public string Topic { get; set; }
public decimal CurrVal { get; set; } = 0;
}
}
@@ -25,5 +25,7 @@ namespace EgwProxy.Icoel.DataLayer.DatabaseModels
public long NumRecIn { get; set; }
public long NumRecOut { get; set; }
public DateTime LastUpdate { get; set; } = DateTime.Today;
}
}
@@ -65,6 +65,7 @@
<Compile Include="DatabaseModels\EntrataModel.cs" />
<Compile Include="DatabaseModels\DettConferimentoModel.cs" />
<Compile Include="DatabaseModels\DettConfezioniModel.cs" />
<Compile Include="DatabaseModels\CurrDataModel.cs" />
<Compile Include="EntrataDbContext.cs" />
<Compile Include="ExportDbContext.cs" />
<Compile Include="DatabaseModels\ProductsTotalsModel.cs" />
@@ -32,10 +32,15 @@ namespace EgwProxy.Icoel.DataLayer
}
/// <summary>
/// DbSet dai dati stato sync DB esterni <--> locale
/// DbSet dei dati stato sync DB esterni <--> locale
/// </summary>
public virtual DbSet<SyncStateModel> DbSetSyncState { get; set; }
/// <summary>
/// DbSet CurrData
/// </summary>
public virtual DbSet<CurrDataModel> DbSetCurrData { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
}
+7 -5
View File
@@ -182,18 +182,20 @@ namespace EgwProxy.Icoel.Compac
internal Dictionary<string, double> GetPerfMeters()
{
Dictionary<string, double> answ = new Dictionary<string, double>();
// indicata in tonnOra
// velocità processo indicata in tonnellate /oOra
double velTonnOra = SSClient.GetMachineTonnesPH();
// velocità espressa in frutti/minuto
double velFruttiMinuto = SSClient.GetMachineTotalFPM();
// percentuale riempimento carrellini
double percRiemp = SSClient.GetMachineCupfill();
//// indicata in carrelli/minuto
//int[] velCarrMinuto = SSClient.GetMachineRodsPM();
// Numero confezioni/ora
double numPackOra = SSClient.GetMachinePacksPH();
// accodo i valori ricavati
answ.Add("VelTonnOra", velTonnOra);
answ.Add("VelFruttiMinuto", velFruttiMinuto);
answ.Add("NumPacksOra", numPackOra);
answ.Add("PercRiemp", percRiemp);
answ.Add("VelFruttiMinuto", velFruttiMinuto);
answ.Add("VelTonnOra", velTonnOra);
return answ;
}
+2 -3
View File
@@ -63,13 +63,12 @@ MIN_SEND_PZC_BLOCK=0
MAX_SEND_PZC_BLOCK=100
ENABLE_DYN_DATA=TRUE
FORCE_DYN_DATA=TRUE
DEM_FACT_DYN_DATA=3
DEM_FACT_DYN_DATA=2
ENABLE_DATA_FILTER=TRUE
ENABLE_CLI_RESTART=TRUE
VETO_SIG_IN=TRUE
; clock base (da 10ms)
timerIntMs=50
timerIntMs=40
; conf parametri memoria READ/WRITE
PARAM_CONF=GIACO_ICOEL_002.json
+17 -6
View File
@@ -10,8 +10,8 @@
"tipoMem": "Real",
"index": 0,
"size": 0,
"func": "MEDIAN",
"period": 60,
"func": "AVG",
"period": 50,
"factor": 1
},
"VelFruttiMinuto": {
@@ -21,8 +21,19 @@
"tipoMem": "Real",
"index": 0,
"size": 0,
"func": "MEDIAN",
"period": 60,
"func": "AVG",
"period": 50,
"factor": 1
},
"NumPacksOra": {
"name": "NumPacksOra",
"description": "Numero confezioni / Ora",
"memAddr": "NumPacksOra",
"tipoMem": "Real",
"index": 0,
"size": 0,
"func": "AVG",
"period": 50,
"factor": 1
},
"PercRiemp": {
@@ -32,8 +43,8 @@
"tipoMem": "Real",
"index": 0,
"size": 0,
"func": "MEDIAN",
"period": 60,
"func": "AVG",
"period": 50,
"factor": 1
}
}
+1 -2
View File
@@ -66,13 +66,12 @@ FORCE_DYN_DATA=TRUE
DEM_FACT_DYN_DATA=5
ENABLE_DATA_FILTER=TRUE
ENABLE_CLI_RESTART=TRUE
VETO_SIG_IN=TRUE
SyncStateDb=localhost\sqlexpress
SyncStateUser=egalware
SyncStatePwd=egalware2022
; clock base (da 10ms)
timerIntMs=10
timerIntMs=20
; conf parametri memoria READ/WRITE
PARAM_CONF=GIACO_ICOEL_003.json
+10 -21
View File
@@ -3,36 +3,25 @@
},
"mMapRead": {
"VelTonnOra": {
"name": "VelTonnOra",
"description": "Velocità Impianto Tonnellate / Ora",
"memAddr": "VelTonnOra",
"TotMerceProcTonn": {
"name": "TotMerceProcTonn",
"description": "Totale merce processata oggi su impianto (Tonn)",
"memAddr": "TotMerceProcTonn",
"tipoMem": "Real",
"index": 0,
"size": 0,
"func": "MEDIAN",
"func": "MAX",
"period": 60,
"factor": 1
},
"VelFruttiMinuto": {
"name": "VelFruttiMinuto",
"description": "Velocità Impianto Frutti / Minuto",
"memAddr": "VelFruttiMinuto",
"TotMerceCaricTonn": {
"name": "TotMerceCaricTonn",
"description": "Totale merce caricata oggi su impianto (Tonn)",
"memAddr": "TotMerceCaricTonn",
"tipoMem": "Real",
"index": 0,
"size": 0,
"func": "MEDIAN",
"period": 60,
"factor": 1
},
"PercRiemp": {
"name": "PercRiemp",
"description": "Percentuale riempimento carrelli",
"memAddr": "PercRiemp",
"tipoMem": "Real",
"index": 0,
"size": 0,
"func": "MEDIAN",
"func": "MAX",
"period": 60,
"factor": 1
}
+2 -2
View File
@@ -88,10 +88,10 @@
<HintPath>..\packages\EasyModbusTCP.5.6.0\lib\net40\EasyModbus.dll</HintPath>
</Reference>
<Reference Include="EgwProxy.Icoel, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\EgwProxy.Icoel.3.6.2205.2812\lib\EgwProxy.Icoel.dll</HintPath>
<HintPath>..\packages\EgwProxy.Icoel.3.6.2206.116\lib\EgwProxy.Icoel.dll</HintPath>
</Reference>
<Reference Include="EgwProxy.Icoel.DataLayer, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\EgwProxy.Icoel.3.6.2205.2812\lib\EgwProxy.Icoel.DataLayer.dll</HintPath>
<HintPath>..\packages\EgwProxy.Icoel.3.6.2206.116\lib\EgwProxy.Icoel.DataLayer.dll</HintPath>
</Reference>
<Reference Include="EgwProxy.MultiCncLib, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\EgwProxy.MultiCncLib.3.6.2205.2319\lib\EgwProxy.MultiCncLib.dll</HintPath>
+8
View File
@@ -111,6 +111,14 @@ namespace IOB_WIN_NEXT
saveValue(ref outVal, item.LastIdx, $"{item.TableName}_LastIdx");
saveValue(ref outVal, item.LastIdxIn, $"{item.TableName}_LastIdxIn");
}
// aggiungo anche i campi currData
var currData = dbProxy.DataController.CurrDataGetAll();
foreach (var item in currData)
{
saveValue(ref outVal, (double)item.CurrVal, item.Topic);
}
lastReadPLC = DateTime.Now;
return outVal;
}
+2 -2
View File
@@ -2,11 +2,11 @@
<packages>
<package id="Autoupdater.NET.Official" version="1.7.0" targetFramework="net462" />
<package id="EasyModbusTCP" version="5.6.0" targetFramework="net462" />
<package id="EgwProxy.Icoel" version="3.6.2205.2812" targetFramework="net462" />
<package id="EgwProxy.Icoel" version="3.6.2206.116" targetFramework="net462" />
<package id="EgwProxy.MultiCncLib" version="3.6.2205.2319" targetFramework="net462" />
<package id="EgwProxy.OsaiCncLib" version="3.6.2205.2015" targetFramework="net462" />
<package id="MapoSDK" version="6.14.2205.3011" targetFramework="net462" />
<package id="EntityFramework" version="6.4.4" targetFramework="net462" />
<package id="MapoSDK" version="6.14.2205.3011" targetFramework="net462" />
<package id="MathNet.Numerics" version="4.15.0" targetFramework="net462" />
<package id="Microsoft.CodeAnalysis.NetAnalyzers" version="6.0.0" targetFramework="net462" developmentDependency="true" />
<package id="Microsoft.VisualStudio.SlowCheetah" version="4.0.8" targetFramework="net462" developmentDependency="true" />