diff --git a/MP.Data/DisplayAction.cs b/MP.Data/DisplayAction.cs index 47795e5e..7b29f64c 100644 --- a/MP.Data/DisplayAction.cs +++ b/MP.Data/DisplayAction.cs @@ -10,11 +10,12 @@ namespace MP.Data public string ConfirmAction { get; set; } = ""; public DateTime DtReq { get; set; } = DateTime.Now; public bool IsActive { get; set; } = true; - public string Message { get; set; } = "NONE"; + public string Message { get; set; } = "New Message"; public bool ShowCancel { get; set; } = true; public bool ShowClose { get; set; } = true; public bool ShowConfirm { get; set; } = true; - public string Topic { get; set; } = "NONE"; + public string Topic { get; set; } = "New Topic"; + public string Parameter { get; set; } = ""; #endregion Public Properties } diff --git a/MP.Data/Utils.cs b/MP.Data/Utils.cs index f018edca..e568f28e 100644 --- a/MP.Data/Utils.cs +++ b/MP.Data/Utils.cs @@ -18,7 +18,7 @@ namespace MP.Data public static string redKeyArtUsed { - get => RedHash($"CACHE:CheckArtUsed"); + get => RedHash($"SPEC:Cache:CheckArtUsed"); } public static string redKeyTabCheckArt diff --git a/MP.SPEC/Components/AskCloseOdl.razor.cs b/MP.SPEC/Components/AskCloseOdl.razor.cs index f832c836..94269c48 100644 --- a/MP.SPEC/Components/AskCloseOdl.razor.cs +++ b/MP.SPEC/Components/AskCloseOdl.razor.cs @@ -1,6 +1,7 @@ using Microsoft.AspNetCore.Components; using MP.Data; using MP.SPEC.Data; +using Newtonsoft.Json; namespace MP.SPEC.Components { @@ -10,12 +11,42 @@ namespace MP.SPEC.Components public void Dispose() { +#if false aTimer.Elapsed -= ElapsedTimer; aTimer.Stop(); - aTimer.Dispose(); + aTimer.Dispose(); +#endif + + MMDataService.BroadastMsgPipe.EA_NewMessage -= BroadastMsgPipe_EA_NewMessage; GC.Collect(); } + protected DateTime lastRec = DateTime.Now.AddMinutes(-1); + private void BroadastMsgPipe_EA_NewMessage(object? sender, EventArgs e) + { + DateTime adesso = DateTime.Now; + PubSubEventArgs currArgs = (PubSubEventArgs)e; + if (!string.IsNullOrEmpty(currArgs.newMessage)) + { + lastRec = adesso; + try + { + var result = JsonConvert.DeserializeObject(currArgs.newMessage); + if (result != null) + { + CurrAction = result; + } + } + catch + { } + InvokeAsync(() => + { + StateHasChanged(); + }); + } + } + +#if false public void ElapsedTimer(object? source, System.Timers.ElapsedEventArgs e) { aTimer.Stop(); @@ -36,7 +67,8 @@ namespace MP.SPEC.Components aTimer.Elapsed += ElapsedTimer; aTimer.Enabled = true; aTimer.Start(); - } + } +#endif #endregion Public Methods @@ -53,16 +85,6 @@ namespace MP.SPEC.Components [Inject] protected MpDataService MMDataService { get; set; } = null!; -#if false - protected bool showRequest - { - get - { - return CurrAction != null && CurrAction.IsActive; - //return DateTime.Now.Second % 10 < 7; - } - } -#endif #endregion Protected Properties @@ -71,14 +93,19 @@ namespace MP.SPEC.Components protected override async Task OnInitializedAsync() { await reloadData(); - StartTimer(); + MMDataService.BroadastMsgPipe.EA_NewMessage += BroadastMsgPipe_EA_NewMessage; +#if false + StartTimer(); +#endif } #endregion Protected Methods #region Private Fields - private static System.Timers.Timer aTimer = null!; +#if false + private static System.Timers.Timer aTimer = null!; +#endif #endregion Private Fields @@ -87,7 +114,10 @@ namespace MP.SPEC.Components private async Task reloadData() { CurrAction = await MMDataService.ActionGetReq(); - //await InvokeAsync(() => StateHasChanged()); + if (CurrAction != null) + { + await InvokeAsync(() => StateHasChanged()); + } } protected async Task doConfirm() @@ -98,7 +128,7 @@ namespace MP.SPEC.Components // elimino richiesta CurrAction = null; - await MMDataService.ActionSetReq(CurrAction); + MMDataService.ActionSetReq(CurrAction); } protected async Task doCancel() { @@ -106,7 +136,7 @@ namespace MP.SPEC.Components // eseguo CurrAction.IsActive = false; - await MMDataService.ActionSetReq(CurrAction); + MMDataService.ActionSetReq(CurrAction); } #endregion Private Methods diff --git a/MP.SPEC/Data/MpDataService.cs b/MP.SPEC/Data/MpDataService.cs index 4613313e..507f662c 100644 --- a/MP.SPEC/Data/MpDataService.cs +++ b/MP.SPEC/Data/MpDataService.cs @@ -48,6 +48,8 @@ namespace MP.SPEC.Data public static MP.Data.Controllers.MpSpecController dbController { get; set; } = null!; + public MessagePipe BroadastMsgPipe { get; set; } = null!; + /// /// Dizionario dei tag configurati per IOB /// @@ -57,6 +59,48 @@ namespace MP.SPEC.Data #region Public Methods + /// + /// Recupera eventuali azioni richieste + /// + /// + public async Task ActionGetReq() + { + Stopwatch stopWatch = new Stopwatch(); + stopWatch.Start(); + DisplayAction? result = null; + // cerco in redis... + RedisValue rawData = await redisDb.StringGetAsync(redisActionReq); + if (!string.IsNullOrEmpty($"{rawData}")) + { + result = JsonConvert.DeserializeObject($"{rawData}"); + stopWatch.Stop(); + TimeSpan ts = stopWatch.Elapsed; + Log.Debug($"ActionGetReq Read from REDIS: {ts.TotalMilliseconds}ms"); + } + return result; + } + + /// + /// Salva richiesta azione + /// + /// + /// + public bool ActionSetReq(DisplayAction? act2save) + { + bool fatto = false; + Stopwatch stopWatch = new Stopwatch(); + stopWatch.Start(); + // cerco in redis... + string rawData = JsonConvert.SerializeObject(act2save); + // invio broadcast + salvo in redis + BroadastMsgPipe.saveAndSendMessage(redisActionReq, rawData); + //await redisDb.StringSetAsync(redisActionReq, rawData); + stopWatch.Stop(); + TimeSpan ts = stopWatch.Elapsed; + Log.Debug($"ActionSetReq REDIS send to broadcast + Write cache: {ts.TotalMilliseconds}ms"); + return fatto; + } + public async Task> AnagStatiComm() { Stopwatch stopWatch = new Stopwatch(); @@ -88,45 +132,6 @@ namespace MP.SPEC.Data return result; } - /// - /// Recupera eventuali azioni richieste - /// - /// - public async Task ActionGetReq() - { - Stopwatch stopWatch = new Stopwatch(); - stopWatch.Start(); - DisplayAction? result = null; - // cerco in redis... - RedisValue rawData = await redisDb.StringGetAsync(redisActionReq); - if (!string.IsNullOrEmpty($"{rawData}")) - { - result = JsonConvert.DeserializeObject($"{rawData}"); - stopWatch.Stop(); - TimeSpan ts = stopWatch.Elapsed; - Log.Debug($"ActionGetReq Read from REDIS: {ts.TotalMilliseconds}ms"); - } - return result; - } - /// - /// Salva richiesta azione - /// - /// - /// - public async Task ActionSetReq(DisplayAction? act2save) - { - Stopwatch stopWatch = new Stopwatch(); - stopWatch.Start(); - bool fatto = false; - // cerco in redis... - RedisValue rawData = JsonConvert.SerializeObject(act2save); - await redisDb.StringSetAsync(redisActionReq, rawData); - stopWatch.Stop(); - TimeSpan ts = stopWatch.Elapsed; - Log.Debug($"ActionSetReq Write to REDIS: {ts.TotalMilliseconds}ms"); - return fatto; - } - public async Task> AnagTipoArtLV() { Stopwatch stopWatch = new Stopwatch(); @@ -518,9 +523,6 @@ namespace MP.SPEC.Data /// public Task> ElencoGruppiFase() { -#if false - return Task.FromResult(dbController.AnagGruppiFase()); -#endif List result = new List(); Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); @@ -572,7 +574,7 @@ namespace MP.SPEC.Data public async Task FlushRedisCache() { await Task.Delay(1); - RedisValue pattern = new RedisValue($"{redisBaseAddr}*"); + RedisValue pattern = new RedisValue($"{redisBaseAddrSpec}*"); bool answ = await ExecFlushRedisPattern(pattern); // rileggo vocabolario.,.. ObjVocabolario = VocabolarioGetAll(); @@ -1384,43 +1386,40 @@ namespace MP.SPEC.Data #region Private Fields - private const string redisAnagGruppi = redisBaseAddr + "SPEC:Cache:AnagGruppi"; + private const string redisActionReq = redisBaseAddr + "IO:Action:Req"; + private const string redisAnagGruppi = redisBaseAddrSpec + "Cache:AnagGruppi"; - private const string redisArtByDossier = redisBaseAddr + "SPEC:Cache:ArtByDossier"; + private const string redisArtByDossier = redisBaseAddrSpec + "Cache:ArtByDossier"; - private const string redisArtList = redisBaseAddr + "SPEC:Cache:ArtList"; + private const string redisArtList = redisBaseAddrSpec + "Cache:ArtList"; private const string redisBaseAddr = "MP:"; + private const string redisBaseAddrSpec = redisBaseAddr + "SPEC:"; - private const string redisConfKey = redisBaseAddr + "SPEC:Cache:Config"; + private const string redisConfKey = redisBaseAddrSpec + "Cache:Config"; - private const string redisDossByMac = redisBaseAddr + "SPEC:Cache:DossByMac"; + private const string redisDossByMac = redisBaseAddrSpec + "Cache:DossByMac"; - private const string redisFluxByMac = redisBaseAddr + "SPEC:Cache:FluxByMac"; + private const string redisFluxByMac = redisBaseAddrSpec + "Cache:FluxByMac"; - private const string redisFluxLogFilt = redisBaseAddr + "SPEC:Cache:FluxLogFilt"; + private const string redisFluxLogFilt = redisBaseAddrSpec + "Cache:FluxLogFilt"; - private const string redisGiacenzaList = redisBaseAddr + ":GiacenzaList"; - private const string redisMacByFlux = redisBaseAddr + "SPEC:Cache:MacByFlux"; + private const string redisGiacenzaList = redisBaseAddrSpec + "Cache:GiacenzaList"; + private const string redisMacByFlux = redisBaseAddrSpec + "Cache:MacByFlux"; - private const string redisMacList = redisBaseAddr + "SPEC:Cache:MacList"; - - private const string redisOdlByBatch = redisXdlData + ":OdlByBatch"; - private const string redisOdlCurrByMac = redisXdlData + ":OdlByMac"; - private const string redisOdlList = redisXdlData + ":OdlList"; - private const string redisPOdlByOdl = redisXdlData + ":POdlByOdl"; - private const string redisPOdlByPOdl = redisXdlData + ":POdlByPOdl"; - private const string redisPOdlList = redisXdlData + ":POdlList"; - private const string redisStatoCom = redisBaseAddr + "SPEC:Cache:StatoCom"; - private const string redisTipoArt = redisBaseAddr + "SPEC:Cache:TipoArt"; - private const string redisVocabolario = redisBaseAddr + "SPEC:Cache:Vocabolario"; - private const string redisXdlData = redisBaseAddr + "SPEC:Cache:XDL"; - private const string redisActionReq = redisBaseAddr + "SPEC:Action:Req"; + private const string redisMacList = redisBaseAddrSpec + "Cache:MacList"; + private const string redisOdlByBatch = redisXdlData + "OdlByBatch"; + private const string redisOdlCurrByMac = redisXdlData + "OdlByMac"; + private const string redisOdlList = redisXdlData + "OdlList"; + private const string redisPOdlByOdl = redisXdlData + "POdlByOdl"; + private const string redisPOdlByPOdl = redisXdlData + "POdlByPOdl"; + private const string redisPOdlList = redisXdlData + "POdlList"; + private const string redisStatoCom = redisBaseAddrSpec + "Cache:StatoCom"; + private const string redisTipoArt = redisBaseAddrSpec + "Cache:TipoArt"; + private const string redisVocabolario = redisBaseAddrSpec + "Cache:Vocabolario"; + private const string redisXdlData = redisBaseAddrSpec + "Cache:XDL:"; private static IConfiguration _configuration = null!; - - public MessagePipe BroadastMsgPipe { get; set; } = null!; - private static ILogger _logger = null!; private static Logger Log = LogManager.GetCurrentClassLogger(); diff --git a/MP.SPEC/MP.SPEC.csproj b/MP.SPEC/MP.SPEC.csproj index dd824d44..ee97ef8d 100644 --- a/MP.SPEC/MP.SPEC.csproj +++ b/MP.SPEC/MP.SPEC.csproj @@ -5,7 +5,7 @@ enable enable MP.SPEC - 6.16.2212.913 + 6.16.2212.916 diff --git a/MP.SPEC/Pages/Test.razor.cs b/MP.SPEC/Pages/Test.razor.cs index d54d693b..f056632b 100644 --- a/MP.SPEC/Pages/Test.razor.cs +++ b/MP.SPEC/Pages/Test.razor.cs @@ -41,7 +41,7 @@ namespace MP.SPEC.Pages { //CurrAction.IsActive = false; //await MMDataService.ActionSetReq(CurrAction); - await MMDataService.ActionSetReq(null); + MMDataService.ActionSetReq(null); } protected override async Task OnInitializedAsync() @@ -72,9 +72,11 @@ namespace MP.SPEC.Pages #endif } - protected async void sendMessage() + protected void sendMessage() { - await MMDataService.ActionSetReq(CurrAction); + CurrAction.DtReq = DateTime.Now; + CurrAction.IsActive= true; + MMDataService.ActionSetReq(CurrAction); } #endregion Protected Methods diff --git a/MP.SPEC/Resources/ChangeLog.html b/MP.SPEC/Resources/ChangeLog.html index 509557b8..277f909e 100644 --- a/MP.SPEC/Resources/ChangeLog.html +++ b/MP.SPEC/Resources/ChangeLog.html @@ -1,6 +1,6 @@ Modulo MAPOSPEC -

Versione: 6.16.2212.913

+

Versione: 6.16.2212.916


Note di rilascio:
  • diff --git a/MP.SPEC/Resources/VersNum.txt b/MP.SPEC/Resources/VersNum.txt index 0c66cae5..d4c32d28 100644 --- a/MP.SPEC/Resources/VersNum.txt +++ b/MP.SPEC/Resources/VersNum.txt @@ -1 +1 @@ -6.16.2212.913 +6.16.2212.916 diff --git a/MP.SPEC/Resources/manifest.xml b/MP.SPEC/Resources/manifest.xml index f3aa6167..347792c8 100644 --- a/MP.SPEC/Resources/manifest.xml +++ b/MP.SPEC/Resources/manifest.xml @@ -1,6 +1,6 @@ - 6.16.2212.913 + 6.16.2212.916 https://nexus.steamware.net/repository/SWS/MP-SPEC/stable/LAST/MP.SPEC.zip https://nexus.steamware.net/repository/SWS/MP-SPEC/stable/LAST/ChangeLog.html false