Update libreria SDK x Icoel DB, ok procedure sync, da inglobare nell'IOB-WIN ora
This commit is contained in:
@@ -13,5 +13,6 @@
|
||||
<add name="EntrataFrontiera" connectionString="data source=192.168.137.10\sqlexpress;initial catalog=frontiera;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
|
||||
<add name="ExportIcoel" connectionString="data source=192.168.137.10\sqlexpress;initial catalog=IcoelExport;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
|
||||
<add name="TrackerLotti" connectionString="data source=192.168.250.250\sqlexpress;initial catalog=TrackerLotti3;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
|
||||
<add name="SyncState" connectionString="data source=localhost\sqlexpress;initial catalog=MoonPro_ISF;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
|
||||
</connectionStrings>
|
||||
</configuration>
|
||||
@@ -26,6 +26,7 @@ namespace EgwProxy.Icoel.DataLayer.Controllers
|
||||
private static EntrataDbContext dbEntrataCtx;
|
||||
private static ExportDbContext dbExportCtx;
|
||||
private static TrackerDbContext dbTrackerCtx;
|
||||
private static SyncStateDbContext dbSyncStateCtx;
|
||||
private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
|
||||
|
||||
#endregion Private Fields
|
||||
@@ -38,7 +39,8 @@ namespace EgwProxy.Icoel.DataLayer.Controllers
|
||||
/// <param name="connEntrata">Connesisone Db frontiera Entrata Merce</param>
|
||||
/// <param name="connTracker">Connessione DB Tracker</param>
|
||||
/// <param name="connExport">Connessione DB IcoelExport</param>
|
||||
public DbController(string connEntrata, string connTracker, string connExport)
|
||||
/// <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");
|
||||
@@ -46,6 +48,8 @@ namespace EgwProxy.Icoel.DataLayer.Controllers
|
||||
Log.Info("Avviata classe ExportDbContext");
|
||||
dbTrackerCtx = new TrackerDbContext(connTracker);
|
||||
Log.Info("Avviata classe dbTrackerCtx");
|
||||
dbSyncStateCtx = new SyncStateDbContext(connSyncState);
|
||||
Log.Info("Avviata classe dbSyncStateCtx");
|
||||
}
|
||||
|
||||
#endregion Public Constructors
|
||||
@@ -62,6 +66,7 @@ namespace EgwProxy.Icoel.DataLayer.Controllers
|
||||
dbEntrataCtx.Dispose();
|
||||
dbExportCtx.Dispose();
|
||||
dbTrackerCtx.Dispose();
|
||||
dbSyncStateCtx.Dispose();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -133,6 +138,52 @@ 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>
|
||||
/// 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> SyncStateDoExportAll()
|
||||
{
|
||||
List<DatabaseModels.SyncStateModel> dbResult = new List<DatabaseModels.SyncStateModel>();
|
||||
|
||||
dbResult = dbSyncStateCtx
|
||||
.Database
|
||||
.SqlQuery<DatabaseModels.SyncStateModel>("EXEC stp_ExportAll")
|
||||
.ToList();
|
||||
|
||||
return dbResult;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// recupera la tab di SyncState corrente
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public List<DatabaseModels.SyncStateModel> SyncStateGetAll()
|
||||
{
|
||||
List<DatabaseModels.SyncStateModel> dbResult = new List<DatabaseModels.SyncStateModel>();
|
||||
|
||||
dbResult = dbSyncStateCtx
|
||||
.DbSetSyncState
|
||||
.ToList();
|
||||
|
||||
return dbResult;
|
||||
}
|
||||
/// <summary>
|
||||
/// Elenco record DettConfezioni (da Icoel TrackerLotti)
|
||||
/// </summary>
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
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("SyncState")]
|
||||
public partial class SyncStateModel
|
||||
{
|
||||
[Key]
|
||||
[StringLength(50)]
|
||||
public string TableName { get; set; }
|
||||
|
||||
public long LastIdx { get; set; }
|
||||
|
||||
public long LastIdxIn { get; set; }
|
||||
|
||||
public long LastIdxOut { get; set; }
|
||||
|
||||
public long NumRec { get; set; }
|
||||
|
||||
public long NumRecIn { get; set; }
|
||||
|
||||
public long NumRecOut { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -69,6 +69,8 @@
|
||||
<Compile Include="ExportDbContext.cs" />
|
||||
<Compile Include="DatabaseModels\ProductsTotalsModel.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="DatabaseModels\SyncStateModel.cs" />
|
||||
<Compile Include="SyncStateDbContext.cs" />
|
||||
<Compile Include="TrackerDbContext.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
using EgwProxy.Icoel.DataLayer.DatabaseModels;
|
||||
using NLog;
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Data.Entity;
|
||||
using System.Linq;
|
||||
|
||||
namespace EgwProxy.Icoel.DataLayer
|
||||
{
|
||||
/// <summary>
|
||||
/// Classe per accesso dati SyncState del DB
|
||||
/// </summary>
|
||||
public partial class SyncStateDbContext : DbContext
|
||||
{
|
||||
private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
|
||||
|
||||
/// <summary>
|
||||
/// Costruttore implicito
|
||||
/// </summary>
|
||||
public SyncStateDbContext() : base("name=SyncState")
|
||||
{
|
||||
Log.Info("Init 01 SyncStateDbContext - DONE");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Costruttore da connectionString
|
||||
/// </summary>
|
||||
/// <param name="connectionString"></param>
|
||||
public SyncStateDbContext(string connectionString) : base(connectionString)
|
||||
{
|
||||
Log.Info("Init 02 SyncStateDbContext - DONE");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// DbSet dai dati stato sync DB esterni <--> locale
|
||||
/// </summary>
|
||||
public virtual DbSet<SyncStateModel> DbSetSyncState { get; set; }
|
||||
|
||||
protected override void OnModelCreating(DbModelBuilder modelBuilder)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -36,6 +36,7 @@ namespace EgwProxy.Icoel.DataLayer
|
||||
/// DbSet dai dati conferimento <--> pack di uscita
|
||||
/// </summary>
|
||||
public virtual DbSet<DettConferimentoModel> DbSetConferimento { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// DbSet dai dati conferimento <--> confezioni
|
||||
/// </summary>
|
||||
|
||||
@@ -15,9 +15,10 @@
|
||||
<appSettings>
|
||||
<add key="IndirizzoIpSizer" value="192.168.137.50" />
|
||||
<add key="SizerTcpPort" value="8001" />
|
||||
<add key="EntrataFrontiera" value="data source=192.168.137.10\sqlexpress;initial catalog=frontiera;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=EntityFramework" />
|
||||
<add key="ExportIcoel" value="data source=192.168.137.10\sqlexpress;initial catalog=IcoelExport;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=EntityFramework" />
|
||||
<add key="TrackerLotti" value="data source=192.168.250.250\sqlexpress;initial catalog=TrackerLotti3;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=EntityFramework" />
|
||||
<add key="EntrataFrontiera" value="data source=192.168.137.10\sqlexpress;initial catalog=frontiera;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=IOB-WIN-NEXT" />
|
||||
<add key="ExportIcoel" value="data source=192.168.137.10\sqlexpress;initial catalog=IcoelExport;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=IOB-WIN-NEXT" />
|
||||
<add key="TrackerLotti" value="data source=192.168.250.250\sqlexpress;initial catalog=TrackerLotti3;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=IOB-WIN-NEXT" />
|
||||
<add key="SyncState" value="data source=localhost\sqlexpress;initial catalog=MoonPro_ISF;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=IOB-WIN-NEXT" />
|
||||
</appSettings>
|
||||
<system.serviceModel>
|
||||
<bindings>
|
||||
@@ -39,9 +40,10 @@
|
||||
</system.serviceModel>
|
||||
<!--
|
||||
<connectionStrings>
|
||||
<add name="EntrataFrontiera" connectionString="data source=192.168.137.10\sqlexpress;initial catalog=frontiera;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
|
||||
<add name="ExportIcoel" connectionString="data source=192.168.137.10\sqlexpress;initial catalog=IcoelExport;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
|
||||
<add name="TrackerLotti" connectionString="data source=192.168.250.250\sqlexpress;initial catalog=TrackerLotti3;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
|
||||
<add name="EntrataFrontiera" connectionString="data source=192.168.137.10\sqlexpress;initial catalog=frontiera;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=IOB-WIN-NEXT" providerName="System.Data.SqlClient" />
|
||||
<add name="ExportIcoel" connectionString="data source=192.168.137.10\sqlexpress;initial catalog=IcoelExport;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=IOB-WIN-NEXT" providerName="System.Data.SqlClient" />
|
||||
<add name="TrackerLotti" connectionString="data source=192.168.250.250\sqlexpress;initial catalog=TrackerLotti3;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=IOB-WIN-NEXT" providerName="System.Data.SqlClient" />
|
||||
<add name="SyncState" connectionString="data source=localhost\sqlexpress;initial catalog=MoonPro_ISF;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=IOB-WIN-NEXT" providerName="System.Data.SqlClient" />
|
||||
</connectionStrings>
|
||||
-->
|
||||
</configuration>
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
using EgwProxy.Icoel.SizerService;
|
||||
using EgwProxy.Icoel.DataLayer.DatabaseModels;
|
||||
using EgwProxy.Icoel.SizerService;
|
||||
//using EgwProxy.Icoel.Test.INI;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Configuration;
|
||||
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace EgwProxy.Icoel.Test
|
||||
{
|
||||
@@ -225,8 +226,46 @@ namespace EgwProxy.Icoel.Test
|
||||
string userInput = "";
|
||||
|
||||
Console.WriteLine("------------ Test DB ------------");
|
||||
EgwProxy.Icoel.DbProxy dbProxy = new DbProxy(ReadSetting("EntrataFrontiera"), ReadSetting("TrackerLotti"), ReadSetting("ExportIcoel"));
|
||||
EgwProxy.Icoel.DbProxy dbProxy = new DbProxy(ReadSetting("EntrataFrontiera"), ReadSetting("TrackerLotti"), ReadSetting("ExportIcoel"), ReadSetting("SyncState"));
|
||||
Console.WriteLine();
|
||||
Console.WriteLine("--- SyncState ---");
|
||||
bool needRedo = true;
|
||||
var elencoSyncState = dbProxy.DataController.SyncStateGetAll();
|
||||
while (needRedo)
|
||||
{
|
||||
Console.WriteLine(" --- PRE --- ");
|
||||
if (elencoSyncState != null)
|
||||
{
|
||||
foreach (var item in elencoSyncState)
|
||||
{
|
||||
Console.WriteLine($"TAB: {item.TableName} | IdxIN / IdxLocal {item.LastIdxIn} / {item.LastIdx} | NumIn / NumLocal {item.NumRecIn} / {item.NumRec}");
|
||||
// verifico se serva redo..
|
||||
}
|
||||
}
|
||||
Console.WriteLine();
|
||||
Console.WriteLine("Premere un tasto x continuare...");
|
||||
Console.ReadKey();
|
||||
Stopwatch sw = new Stopwatch();
|
||||
sw.Start();
|
||||
elencoSyncState = dbProxy.DataController.SyncStateDoImportAll();
|
||||
sw.Stop();
|
||||
Console.WriteLine($" process time: {sw.ElapsedMilliseconds} ms ");
|
||||
Console.WriteLine(" --- POST --- ");
|
||||
if (elencoSyncState != null)
|
||||
{
|
||||
foreach (var item in elencoSyncState)
|
||||
{
|
||||
Console.WriteLine($"TAB: {item.TableName} | IdxIN / IdxLocal {item.LastIdxIn} / {item.LastIdx} | NumIn / NumLocal {item.NumRecIn} / {item.NumRec}");
|
||||
// verifico se serva redo..
|
||||
}
|
||||
}
|
||||
// processo
|
||||
needRedo = testNeedRedo(elencoSyncState);
|
||||
}
|
||||
Console.WriteLine();
|
||||
Console.WriteLine("Premere un tasto x continuare...");
|
||||
Console.ReadKey();
|
||||
|
||||
Console.WriteLine("--- Entrata Frontiera ---");
|
||||
var elencoBarcode = dbProxy.DataController.EntrateGetLast(10);
|
||||
if (elencoBarcode != null)
|
||||
@@ -357,6 +396,21 @@ namespace EgwProxy.Icoel.Test
|
||||
Console.ReadKey();
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Verifico necessità di rifare sync
|
||||
/// </summary>
|
||||
/// <param name="elencoSyncState"></param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="NotImplementedException"></exception>
|
||||
private static bool testNeedRedo(List<SyncStateModel> elencoSyncState)
|
||||
{
|
||||
bool answ = false;
|
||||
foreach (var item in elencoSyncState)
|
||||
{
|
||||
answ = answ || (item.NumRecIn > item.NumRec || item.LastIdxIn > item.LastIdx);
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
|
||||
#endregion Private Methods
|
||||
|
||||
@@ -23,9 +23,10 @@ namespace EgwProxy.Icoel
|
||||
/// <param name="connEntrata">stringa connesisone DB Entrata</param>
|
||||
/// <param name="connTracker">stringa connesisone DB Tracker</param>
|
||||
/// <param name="connExport">stringa connesisone DB Export</param>
|
||||
public DbProxy(string connEntrata, string connTracker, string connExport)
|
||||
/// <param name="connSyncState">Connessione DB locale di SYNC</param>
|
||||
public DbProxy(string connEntrata, string connTracker, string connExport, string connSyncState)
|
||||
{
|
||||
DataController = new DbController(connEntrata, connTracker, connExport);
|
||||
DataController = new DbController(connEntrata, connTracker, connExport, connSyncState);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user