aggiunti metodi per lista scansione,

update scansione,
lista scansione x sessione
This commit is contained in:
zaccaria.majid
2022-12-05 18:28:05 +01:00
parent 665bea6e99
commit 1923ce960e
2 changed files with 145 additions and 6 deletions
+78 -5
View File
@@ -51,8 +51,29 @@ namespace MP.Data.Controllers
#endregion gestione config
#region gestione scansioni
/// <summary>
/// Elenco Scansioni dato Id sessione inventario
/// Elenco Scansioni Totali
/// </summary>
/// <returns></returns>
public List<ScanDataModel> ScanList()
{
List<ScanDataModel> dbResult = new List<ScanDataModel>();
using (var dbCtx = new MoonPro_InveContext(_configuration))
{
dbResult = dbCtx
.DbScanData
.AsNoTracking()
.OrderByDescending(x => x.DtScan)
.ToList();
}
return dbResult;
}
#if false
/// <summary>
/// Elenco Scansioni Totali
/// </summary>
/// <param name="InveSessId"></param>
/// <returns></returns>
@@ -63,12 +84,64 @@ namespace MP.Data.Controllers
{
dbResult = dbCtx
.DbScanData
.Where(x => x.InveSessID == InveSessId)
.AsNoTracking()
.Where(x => x.InveSessID == InveSessId)
.OrderByDescending(x => x.DtScan)
.ToList();
}
return dbResult;
}
#endif
/// <summary>
/// Elenco Scansioni dato Id sessione inventario
/// </summary>
/// <param name="InveSessId"></param>
/// <returns></returns>
public async Task<bool> updateScan(ScanDataModel editRec)
{
bool fatto = false;
using (var dbCtx = new MoonPro_InveContext(_configuration))
{
try
{
var currRec = dbCtx
.DbScanData
.Where(x => x.ScanID == editRec.ScanID)
.FirstOrDefault();
if (currRec != null)
{
currRec.ScanID = editRec.ScanID;
currRec.CodArticolo = editRec.CodArticolo;
currRec.DtScan = editRec.DtScan;
currRec.UserScan = editRec.UserScan;
currRec.ScanValue = editRec.ScanValue;
currRec.IsForced = editRec.IsForced;
currRec.Lotto = editRec.Lotto;
currRec.RifExt = editRec.RifExt;
currRec.Qty = editRec.Qty;
currRec.Note = editRec.Note;
currRec.IsKnown = editRec.IsKnown;
currRec.IsUnique = editRec.IsUnique;
currRec.InveSessID = editRec.InveSessID;
dbCtx.Entry(currRec).State = EntityState.Modified;
}
else
{
dbCtx
.DbScanData
.Add(editRec);
}
await dbCtx.SaveChangesAsync();
fatto = true;
}
catch (Exception exc)
{
Log.Error($"Eccezione durante ScanBySession{Environment.NewLine}{exc}");
}
}
return fatto;
}
/// <summary>
@@ -146,7 +219,7 @@ namespace MP.Data.Controllers
.Where(s => (s.MatrOpr > 0) && (s.MatrOpr == matrOpr) && (s.authKey == authKey))
.AsNoTracking()
.ToList();
if(dbResult.Count == 1)
if (dbResult.Count == 1)
{
answ = true;
}
@@ -276,7 +349,7 @@ namespace MP.Data.Controllers
{
dbResult = dbCtx
.DbUdcData
.Include(m=>m.lottoNav)
.Include(m => m.lottoNav)
.AsNoTracking()
.OrderByDescending(x => x.UDC)
.ToList();
@@ -302,7 +375,7 @@ namespace MP.Data.Controllers
.OrderByDescending(x => x.UDC)
.ToList();
if(dbResult.Count == 1)
if (dbResult.Count == 1)
{
answ = true;
}
+67 -1
View File
@@ -297,6 +297,72 @@ namespace MP.INVE.Data
return result;
}
public List<ScanDataModel> ScanList()
{
string source = "";
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
List<ScanDataModel>? result = new List<ScanDataModel>();
// cerco in redis...
RedisValue rawData = redisDb.StringGet(redisScanBaseAddr);
if (!string.IsNullOrEmpty($"{rawData}"))
{
result = JsonConvert.DeserializeObject<List<ScanDataModel>>($"{rawData}");
source = "REDIS";
}
else
{
result = dbController.ScanList();
// serializzo e salvo...
rawData = JsonConvert.SerializeObject(result);
redisDb.StringSetAsync(redisScanBaseAddr, rawData, getRandTOut(redisLongTimeCache));
source = "DB";
}
if (result == null)
{
result = new List<ScanDataModel>();
}
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Debug($"ScanList Read from {source}: {ts.TotalMilliseconds}ms");
return result;
}
public List<ScanDataModel> ScanBySession(int idSessione)
{
string source = "";
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
List<ScanDataModel>? result = new List<ScanDataModel>();
// cerco in redis...
{
var ListAll = ScanList();
result = ListAll.Where(x => x.InveSessID == idSessione).ToList();
if (result == null)
{
result = new List<ScanDataModel>();
}
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Debug($"ScanBySession Read from {source}: {ts.TotalMilliseconds}ms");
return result;
}
}
/// <summary>
/// Aggiornamento record selezionato
/// </summary>
/// <param name="currRec"></param>
/// <returns></returns>
public async Task<bool> UpdateScan(ScanDataModel currRec)
{
var dbResult = await dbController.updateScan(currRec);
// elimino cache redis...
RedisValue pattern = new RedisValue(redisScanBaseAddr);
bool answ = await ExecFlushRedisPattern(pattern);
await Task.Delay(1);
return dbResult;
}
public List<AnagUdcModel> ElencoUDC()
{
string source = "";
@@ -524,7 +590,7 @@ namespace MP.INVE.Data
private const string redisUdcBaseAddr = ":UDC";
private const string redisLottiBaseAddr = ":Lotti";
private const string redisConfigBaseAddr = ":Config";
private const string redisScanBaseAddr = ":Config";
private const string redisScanBaseAddr = redisBaseAddr + ":Scan";
private const string redisElencoOperatori = redisBaseAddr + redisOperatoriBaseAddr + ":ListOperatori";
private const string redisOperatoreLogged = redisBaseAddr + redisOperatoriBaseAddr + ":OperatoreLogged";
private const string redisSessionCurrList = redisBaseAddr + redisSessionBaseAddr + ":ListSessHist";