diff --git a/modules/JiShe.CollectBus.Kafka/Consumer/ConsumerService.cs b/modules/JiShe.CollectBus.Kafka/Consumer/ConsumerService.cs index fc853e9..98e3166 100644 --- a/modules/JiShe.CollectBus.Kafka/Consumer/ConsumerService.cs +++ b/modules/JiShe.CollectBus.Kafka/Consumer/ConsumerService.cs @@ -27,7 +27,7 @@ namespace JiShe.CollectBus.Kafka.Consumer /// /// 消费完或者无数据时的延迟时间 /// - private TimeSpan DelayTime => TimeSpan.FromMilliseconds(100); + private static TimeSpan DelayTime => TimeSpan.FromMilliseconds(100); private readonly KafkaOptionConfig _kafkaOptionConfig; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_00H/AFN0_F1_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_00H/AFN0_F1_Analysis.cs index 63ab925..da469d7 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_00H/AFN0_F1_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_00H/AFN0_F1_Analysis.cs @@ -8,7 +8,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_00H /// /// 5.1.3.1 F1:全部确认:对收到报文中的全部数据单元标识进行确认 /// - public class AFN0_F1_Analysis: IAnalysisStrategy> + public class AFN0_F1_Analysis: IAnalysisStrategy { private readonly ILogger _logger; @@ -17,26 +17,28 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_00H _logger = logger; } - public Task> ExecuteAsync(TB3761 tB3761) + public Task ExecuteAsync(TB3761 input, Action? result = null) { try { - ArgumentNullException.ThrowIfNull(nameof(tB3761)); + ArgumentNullException.ThrowIfNull(input); + ArgumentNullException.ThrowIfNull(input.A.Code); UnitDataAnalysis dto = new UnitDataAnalysis { - Code = tB3761.A.Code, - AFN = tB3761.AFN_FC.AFN, - Fn = tB3761.DT.Fn, - Pn = tB3761.DA.Pn, - Data= true + Code = input.A.Code, + AFN = input.AFN_FC.AFN, + Fn = input.DT.Fn, + Pn = input.DA.Pn, + Data = true }; - return Task.FromResult(dto); + result?.Invoke(dto); + return Task.FromResult(true); } catch (Exception ex) { - _logger.LogError(ex, $"00_1解析失败:{tB3761.A.Code}-{tB3761.DT.Fn}-{tB3761.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + _logger.LogError(ex, $"00_1解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); } + return Task.FromResult(false); } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_00H/AFN0_F2_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_00H/AFN0_F2_Analysis.cs index 5ae0b45..d067b0c 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_00H/AFN0_F2_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_00H/AFN0_F2_Analysis.cs @@ -8,7 +8,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_00H /// /// 5.1.3.2 F2:全部否认 /// - public class AFN0_F2_Analysis : IAnalysisStrategy> + public class AFN0_F2_Analysis : IAnalysisStrategy { private readonly ILogger _logger; @@ -16,26 +16,30 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_00H { _logger = logger; } - public Task> ExecuteAsync(TB3761 input) + public Task ExecuteAsync(TB3761 tB3761, Action? result = null) { try { - ArgumentNullException.ThrowIfNull(input); + ArgumentNullException.ThrowIfNull(tB3761); + ArgumentNullException.ThrowIfNull(tB3761.A.Code); UnitDataAnalysis dto = new UnitDataAnalysis { - Code = input.A.Code, - AFN = input.AFN_FC.AFN, - Fn = input.DT.Fn, - Pn = input.DA.Pn, + Code = tB3761.A.Code, + AFN = tB3761.AFN_FC.AFN, + Fn = tB3761.DT.Fn, + Pn = tB3761.DA.Pn, Data = false, }; - return Task.FromResult(dto); + result?.Invoke(dto); + return Task.FromResult(true); } catch (Exception ex) { - _logger.LogError(ex, $"00_2解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); + _logger.LogError(ex, $"00_2解析失败:{tB3761.A.Code}-{tB3761.DT.Fn}-{tB3761.BaseHexMessage.HexMessageString},{ex.Message}"); return null; } } + + } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_02H/AFN2_F1_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_02H/AFN2_F1_Analysis.cs new file mode 100644 index 0000000..16143fc --- /dev/null +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_02H/AFN2_F1_Analysis.cs @@ -0,0 +1,132 @@ +using JiShe.CollectBus.Protocol.Dto; +using JiShe.CollectBus.Protocol.Interfaces; +using JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_00H; +using JiShe.CollectBus.Protocol3761; +using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_02H +{ + /// + /// 5.3.3.1 F1:登录 + /// + public class AFN2_F1_Analysis : IAnalysisStrategy + { + private readonly ILogger _logger; + + public AFN2_F1_Analysis(ILogger logger) + { + _logger = logger; + } + + public Task ExecuteAsync(TB3761 input, Action? result = null) + { + try + { + ArgumentNullException.ThrowIfNull(input); + ArgumentNullException.ThrowIfNull(input.A.Code); + UnitDataAnalysis dto = new UnitDataAnalysis + { + Code = input.A.Code, + AFN = input.AFN_FC.AFN, + Fn = input.DT.Fn, + Pn = input.DA.Pn, + Data = $"登录帧" + }; + result?.Invoke(dto); + return Task.FromResult(true); + } + catch (Exception ex) + { + _logger.LogError(ex, $"02_1解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); + } + return Task.FromResult(false); + } + + + //public Task ExecuteAsync(TB3761 input, Action? callback = null) where TResult : UnitDataAnalysis + //{ + // try + // { + // ArgumentNullException.ThrowIfNull(input); + // ArgumentNullException.ThrowIfNull(input.A.Code); + // UnitDataAnalysis dto = new UnitDataAnalysis + // { + // Code = input.A.Code, + // AFN = input.AFN_FC.AFN, + // Fn = input.DT.Fn, + // Pn = input.DA.Pn, + // Data = $"登录帧" + // }; + // callback?.Invoke(dto); + // return Task.FromResult(dto); + // } + // catch (Exception ex) + // { + // _logger.LogError(ex, $"02_1解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); + // return null; + // } + //} + + //public Task> ExecuteAsync(TB3761 input, Action>? callback = null) + //{ + // try + // { + // ArgumentNullException.ThrowIfNull(input); + // ArgumentNullException.ThrowIfNull(input.A.Code); + // UnitDataAnalysis dto = new UnitDataAnalysis + // { + // Code = input.A.Code, + // AFN = input.AFN_FC.AFN, + // Fn = input.DT.Fn, + // Pn = input.DA.Pn, + // Data = $"登录帧" + // }; + // callback?.Invoke(dto); + // return Task.FromResult(dto); + // } + // catch (Exception ex) + // { + // _logger.LogError(ex, $"02_1解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); + // return null; + // } + //} + + //public Task ExecuteAsync(TB3761 input, Action? callback = null) + //{ + // try + // { + // ArgumentNullException.ThrowIfNull(input); + // ArgumentNullException.ThrowIfNull(input.A.Code); + // var dto = Activator.CreateInstance(); + // dto.Code = input.A.Code; + // dto.AFN = input.AFN_FC.AFN; + // dto.Fn = input.DT.Fn; + // dto.Pn = input.DA.Pn; + // dto.Data = "登录帧"; + // //UnitDataAnalysis dto = new UnitDataAnalysis + // //{ + // // Code = input.A.Code, + // // AFN = input.AFN_FC.AFN, + // // Fn = input.DT.Fn, + // // Pn = input.DA.Pn, + // // Data = $"登录帧" + // //}; + // callback?.Invoke(dto); + // return Task.FromResult(dto); + // } + // catch (Exception ex) + // { + // _logger.LogError(ex, $"02_1解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); + // return null; + // } + //} + + + + } +} diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_02H/AFN2_F2_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_02H/AFN2_F2_Analysis.cs new file mode 100644 index 0000000..b8622c2 --- /dev/null +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_02H/AFN2_F2_Analysis.cs @@ -0,0 +1,49 @@ +using JiShe.CollectBus.Protocol.Dto; +using JiShe.CollectBus.Protocol.Interfaces; +using JiShe.CollectBus.Protocol3761; +using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_02H +{ + /// + /// 5.3.3.2 F2:退出登录 + /// + public class AFN2_F2_Analysis : IAnalysisStrategy + { + private readonly ILogger _logger; + + public AFN2_F2_Analysis(ILogger logger) + { + _logger = logger; + } + + public Task ExecuteAsync(TB3761 tB3761, Action? result = null) + { + try + { + ArgumentNullException.ThrowIfNull(tB3761); + ArgumentNullException.ThrowIfNull(tB3761.A.Code); + UnitDataAnalysis dto = new UnitDataAnalysis + { + Code = tB3761.A.Code, + AFN = tB3761.AFN_FC.AFN, + Fn = tB3761.DT.Fn, + Pn = tB3761.DA.Pn, + Data = $"退出登录帧" + }; + result?.Invoke(dto); + return Task.FromResult(true); + } + catch (Exception ex) + { + _logger.LogError(ex, $"02_2解析失败:{tB3761.A.Code}-{tB3761.DT.Fn}-{tB3761.BaseHexMessage.HexMessageString},{ex.Message}"); + } + return Task.FromResult(false); + } + } +} diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_02H/AFN2_F3_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_02H/AFN2_F3_Analysis.cs new file mode 100644 index 0000000..0303fd0 --- /dev/null +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_02H/AFN2_F3_Analysis.cs @@ -0,0 +1,49 @@ +using JiShe.CollectBus.Protocol.Dto; +using JiShe.CollectBus.Protocol.Interfaces; +using JiShe.CollectBus.Protocol3761; +using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_02H +{ + /// + /// 5.3.3.3 F3:心跳 + /// + public class AFN2_F3_Analysis : IAnalysisStrategy + { + private readonly ILogger _logger; + + public AFN2_F3_Analysis(ILogger logger) + { + _logger = logger; + } + + public Task ExecuteAsync(TB3761 input, Action? result = null) + { + try + { + ArgumentNullException.ThrowIfNull(input); + ArgumentNullException.ThrowIfNull(input.A.Code); + UnitDataAnalysis dto = new UnitDataAnalysis + { + Code = input.A.Code, + AFN = input.AFN_FC.AFN, + Fn = input.DT.Fn, + Pn = input.DA.Pn, + Data = $"心跳帧" + }; + result?.Invoke(dto); + return Task.FromResult(true); + } + catch (Exception ex) + { + _logger.LogError(ex, $"02_1解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); + } + return Task.FromResult(false); + } + } +} diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_09H/AFN9_F1_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_09H/AFN9_F1_Analysis.cs index fd93dab..6ae65c5 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_09H/AFN9_F1_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_09H/AFN9_F1_Analysis.cs @@ -11,7 +11,7 @@ namespace JiShe.CollectBus.Protocol.AnalysisData.AFN_09H /// /// 5.9.1.2 F1:终端版本信息 /// - public class AFN9_F1_Analysis : IAnalysisStrategy> + public class AFN9_F1_Analysis : IAnalysisStrategy { private readonly ILogger _logger; @@ -20,7 +20,7 @@ namespace JiShe.CollectBus.Protocol.AnalysisData.AFN_09H _logger = logger; } - public Task> ExecuteAsync(TB3761 input) + public Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -31,19 +31,20 @@ namespace JiShe.CollectBus.Protocol.AnalysisData.AFN_09H data.Address = input.A.Code?.Substring(4, 5); UnitDataAnalysis dto = new UnitDataAnalysis { - Code = input.A.Code, + Code = input.A.Code!, AFN = input.AFN_FC.AFN, Fn = input.DT.Fn, Pn = input.DA.Pn, - Data= data + Data = data }; - return Task.FromResult(dto); + result?.Invoke(dto); + return Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"09_1解析失败:{input.A?.Code}-{input.DT?.Fn ?? 0}-{input?.BaseHexMessage?.HexMessageString},{ex.Message}"); - return null; } + return Task.FromResult(false); } private AFN9_F1_AnalysisDto AnalysisDataUnit(List hexMessageList) diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_09H/AFN9_F9_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_09H/AFN9_F9_Analysis.cs index 5d7f9f7..12e6e5c 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_09H/AFN9_F9_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_09H/AFN9_F9_Analysis.cs @@ -10,7 +10,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_09H /// /// 5.9.2.4.9 F9:远程通信模块版本信息(只读解析SIM卡号) /// - public class AFN9_F9_Analysis : IAnalysisStrategy> + public class AFN9_F9_Analysis : IAnalysisStrategy { private readonly ILogger _logger; @@ -19,7 +19,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_09H _logger = logger; } - public Task> ExecuteAsync(TB3761 input) + public Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -27,19 +27,20 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_09H ArgumentNullException.ThrowIfNull(input.UnitData.HexMessageList); UnitDataAnalysis dto = new UnitDataAnalysis { - Code = input.A.Code, + Code = input.A.Code!, AFN = input.AFN_FC.AFN, Fn = input.DT.Fn, Pn = input.DA.Pn, Data = Encoding.ASCII.GetString(string.Join("", input.UnitData.HexMessageList.Skip(30).Take(20).ToList()).HexToByte()).Replace("\0", "") //SIM卡 }; - return Task.FromResult(dto); + result?.Invoke(dto); + return Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"00_1解析失败:{input.A?.Code}-{input.DT?.Fn ?? 0}-{input?.BaseHexMessage?.HexMessageString},{ex.Message}"); - return null; } + return Task.FromResult(false); } } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0AH/AFN10_F10_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0AH/AFN10_F10_Analysis.cs index b6d190f..2b46c79 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0AH/AFN10_F10_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0AH/AFN10_F10_Analysis.cs @@ -10,7 +10,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0AH /// /// 5.10.1.3.1 F10:终端电能表/交流采样装置配置参数 /// - internal class AFN10_F10_Analysis : IAnalysisStrategy> + internal class AFN10_F10_Analysis : IAnalysisStrategy { private readonly ILogger _logger; @@ -18,8 +18,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0AH { _logger = logger; } - - public Task> ExecuteAsync(TB3761 input) + public Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -28,27 +27,26 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0AH Tuple> tuple = AFN10F10EntityAnalysis(input.UnitData.HexMessageList); UnitDataAnalysis dto = new UnitDataAnalysis { - Code = input.A.Code, + Code = input.A.Code!, AFN = input.AFN_FC.AFN, Fn = input.DT.Fn, Pn = input.DA.Pn, - Data=new AFN10_F10_AnalysisDto() + Data = new AFN10_F10_AnalysisDto() { AFN10F10Entitys = tuple.Item2, ConfigNum = tuple.Item1 } }; - return Task.FromResult(dto); + result?.Invoke(dto); + return Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0A_10解析失败:{input.A?.Code}-{input.DT?.Fn ?? 0}-{input?.BaseHexMessage?.HexMessageString},{ex.Message}"); - return null; } + return Task.FromResult(false); } - - public Tuple> AFN10F10EntityAnalysis(List hexMessageList) { List> meterList = new List>(); @@ -154,5 +152,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0AH } return "其他协议"; } + + } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0AH/AFN10_F66_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0AH/AFN10_F66_Analysis.cs index c197509..b56a5a0 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0AH/AFN10_F66_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0AH/AFN10_F66_Analysis.cs @@ -2,6 +2,7 @@ using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Interfaces; +using JiShe.CollectBus.Protocol.T37612012.Appendix; using JiShe.CollectBus.Protocol3761; using Microsoft.Extensions.Logging; @@ -10,7 +11,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0AH /// /// 5.5.1.3.53 F66:定时上报 2 类数据任务设置 /// - public class AFN10_F66_Analysis : IAnalysisStrategy> + public class AFN10_F66_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -21,7 +22,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0AH _analysisStrategyContext= analysisStrategyContext; } - public async Task> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -31,19 +32,20 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0AH data.Pn = input.DA.Pn; UnitDataAnalysis dto = new UnitDataAnalysis { - Code = input.A.Code, + Code = input.A.Code!, AFN = input.AFN_FC.AFN, Fn = input.DT.Fn, Pn = input.DA.Pn, - Data= data + Data = data }; - return await Task.FromResult(dto); + result?.Invoke(dto); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0A_66解析失败:{input.A?.Code}-{input.DT?.Fn ?? 0}-{input?.BaseHexMessage?.HexMessageString},{ex.Message}"); - return null; } + return await Task.FromResult(false); } public async Task GenerateFinalResult(List hexMessageList) @@ -58,11 +60,14 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0AH //TODO:发送基准时间 var arrBaseTime = hexMessageList.GetRange(5, 6); - var baseTimeArrStr = await _analysisStrategyContext.ExecuteAsync, string>("Appendix_A1", arrBaseTime); - var baseTimeArr= baseTimeArrStr.Split('_'); - //entity.BaseTime = DateTime.Parse($"{DateTime.Now.Year.ToString().Substring(0, 2)}{arrBaseTime[0]}-{arrBaseTime[1]}-{arrBaseTime[2]} {arrBaseTime[3]}:{arrBaseTime[4]}:{arrBaseTime[5]}"); - - entity.BaseTime = Convert.ToDateTime(baseTimeArr[0]); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A1), arrBaseTime, (value) => + { + var baseTimeArrStr = (string)value; + var baseTimeArr = baseTimeArrStr.Split('_'); + //entity.BaseTime = DateTime.Parse($"{DateTime.Now.Year.ToString().Substring(0, 2)}{arrBaseTime[0]}-{arrBaseTime[1]}-{arrBaseTime[2]} {arrBaseTime[3]}:{arrBaseTime[4]}:{arrBaseTime[5]}"); + entity.BaseTime = Convert.ToDateTime(baseTimeArr[0]); + }); + entity.CurveRatio = hexMessageList[11].HexToDec(); var count = hexMessageList[12].HexToDec(); var dataArr = hexMessageList.GetRange(13, 4 * count); diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0AH/AFN10_F68_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0AH/AFN10_F68_Analysis.cs index f9358e2..4977486 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0AH/AFN10_F68_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0AH/AFN10_F68_Analysis.cs @@ -8,7 +8,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0AH /// /// 5.5.1.3.55 F68:定时上报 2 类数据任务启动/停止设置 /// - public class AFN10_F68_Analysis : IAnalysisStrategy> + public class AFN10_F68_Analysis : IAnalysisStrategy { private readonly ILogger _logger; @@ -16,7 +16,8 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0AH { _logger = logger; } - public Task> ExecuteAsync(TB3761 input) + + public Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -24,20 +25,20 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0AH ArgumentNullException.ThrowIfNull(input.UnitData.HexMessageList); UnitDataAnalysis dto = new UnitDataAnalysis { - Code = input.A.Code, + Code = input.A.Code!, AFN = input.AFN_FC.AFN, Fn = input.DT.Fn, Pn = input.DA.Pn, Data = input.UnitData.HexMessageList[4].Equals("55") }; - - return Task.FromResult(dto); + result?.Invoke(dto); + return Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0A_68解析失败:{input.A?.Code}-{input.DT?.Fn ?? 0}-{input?.BaseHexMessage?.HexMessageString},{ex.Message}"); - return null; } + return Task.FromResult(false); } } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F129_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F129_Analysis.cs index 248317d..1b06191 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F129_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F129_Analysis.cs @@ -11,7 +11,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH /// /// 5.12.2.4.85 F129:当前正向有功电能示值(总、费率1~M) /// - public class AFN12_F129_Analysis : IAnalysisStrategy>> + public class AFN12_F129_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -24,7 +24,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH _dbProvider= dbProvider; } - public async Task>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -43,14 +43,15 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH List datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList); List list = GenerateFinalResult(2, datas, "正向有功电能示值", input.AFN_FC.AFN, input.DT.Fn); unitDataAnalysis.Data= list; - - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0C_129解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + } + return await Task.FromResult(false); } #region 单元数据值解析 @@ -72,8 +73,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A14), arr); //从第10个开始,每加5个字节为下一个值的开始 - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A14), arr, (value) => + { + values.Add(value.ToString()); + }); //从第10个开始,每加5个字节为下一个值的开始 } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F130_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F130_Analysis.cs index 009e9d2..e0355b1 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F130_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F130_Analysis.cs @@ -10,7 +10,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH /// /// 5.12.2.4.86 F130:当前正向无功(组合无功 1)电能示值(总、费率 1~M) /// - public class AFN12_F130_Analysis : IAnalysisStrategy>> + public class AFN12_F130_Analysis : IAnalysisStrategy { private readonly ILogger _logger; @@ -22,7 +22,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH _analysisStrategyContext = analysisStrategyContext; } - public async Task>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -32,20 +32,21 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH List list = GenerateFinalResult(2, datas, "正向无功电能示值", input.AFN_FC.AFN, input.DT.Fn); UnitDataAnalysis> unitDataAnalysis = new UnitDataAnalysis> { - Code = input.A.Code, + Code = input.A.Code!, AFN = input.AFN_FC.AFN, Fn = input.DT.Fn, Pn = input.DA.Pn, Data = list }; - - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0C_130解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + } + return await Task.FromResult(false); } private async Task> AnalysisDataUnitAsync(List hexMessageList) @@ -62,8 +63,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A11), arr); //从第10个开始,每加5个字节为下一个值的开始 - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A11), arr, (value) => + { + values.Add(value.ToString()); + }); //从第10个开始,每加5个字节为下一个值的开始 } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F131_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F131_Analysis.cs index 36492fb..949bc96 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F131_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F131_Analysis.cs @@ -10,7 +10,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH /// /// 5.12.2.4.87 F131:当前反向有功电能示值(总、费率 1~M) /// - public class AFN12_F131_Analysis : IAnalysisStrategy>> + public class AFN12_F131_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -21,7 +21,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH _analysisStrategyContext = analysisStrategyContext; } - public async Task>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -31,20 +31,21 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH List list = GenerateFinalResult(2, datas, "反向有功总电能示值", input.AFN_FC.AFN, input.DT.Fn); UnitDataAnalysis> unitDataAnalysis = new UnitDataAnalysis> { - Code = input.A.Code, + Code = input.A.Code!, AFN = input.AFN_FC.AFN, Fn = input.DT.Fn, Pn = input.DA.Pn, Data = list }; - - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0C_131解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + } + return await Task.FromResult(false); } @@ -62,8 +63,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A14), arr); //从第10个开始,每加5个字节为下一个值的开始 - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A14), arr, (value) => + { + values.Add(value.ToString()); + }); //从第10个开始,每加5个字节为下一个值的开始 } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F132_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F132_Analysis.cs index 59a41fb..39bd082 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F132_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F132_Analysis.cs @@ -10,7 +10,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH /// /// 5.12.2.4.88 F132:当前反向无功(组合无功 2)电能示值(总、费率 1~M) /// - public class AFN12_F132_Analysis : IAnalysisStrategy>> + public class AFN12_F132_Analysis : IAnalysisStrategy { private readonly ILogger _logger; @@ -23,7 +23,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH } - public async Task>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -39,14 +39,15 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH Pn = input.DA.Pn, Data = list }; - - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0C_132解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + } + return await Task.FromResult(false); } private async Task> AnalysisDataUnitAsync(List hexMessageList) @@ -63,8 +64,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A11), arr); //从第10个开始,每加4个字节为下一个值的开始 - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A11), arr, (value) => + { + values.Add(value.ToString()); + }); //从第10个开始,每加5个字节为下一个值的开始 } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F145_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F145_Analysis.cs index ec72e1a..f4a15aa 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F145_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F145_Analysis.cs @@ -11,7 +11,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH /// /// 5.12.2.4.101 F145:当月正向有功最大需量及发生时间(总、费率 1~M) /// - public class AFN12_F145_Analysis : IAnalysisStrategy> + public class AFN12_F145_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -23,7 +23,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH } - public async Task> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -34,20 +34,21 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH data.DataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}"; UnitDataAnalysis unitDataAnalysis = new UnitDataAnalysis { - Code = input.A.Code, + Code = input.A.Code!, AFN = input.AFN_FC.AFN, Fn = input.DT.Fn, Pn = input.DA.Pn, Data = data }; - - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0C_145解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + } + return await Task.FromResult(false); } @@ -65,8 +66,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A23), arr); - values.Add(value.ToString());//正向有功总最大需量 + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A23), arr, (value) => + { + values.Add(value.ToString()); + }); //正向有功总最大需量 } arr = hexMessageList.GetRange(10 + i * 7 + 3, 4); @@ -75,8 +78,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, string>(nameof(Appendix_A17), arr); - values.Add(value.ToString());//正向有功总最大需量发生时间 + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A17), arr, (value) => + { + values.Add(value.ToString()); + });//正向有功总最大需量发生时间 } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F149_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F149_Analysis.cs index faf6c34..edab4e1 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F149_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F149_Analysis.cs @@ -15,7 +15,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH /// /// 5.12.2.4.105 F149:上月(上一结算日)正向有功最大需量及发生时间(总、费率 1~M) /// - public class AFN12_F149_Analysis : IAnalysisStrategy>> + public class AFN12_F149_Analysis : IAnalysisStrategy { private readonly ILogger _logger; @@ -29,7 +29,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH } - public async Task>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -63,13 +63,15 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH DensityUnit = DensityUnit.Month }; await _dataStorage.SaveDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0C_149解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + } + return await Task.FromResult(false); } private async Task> AnalysisDataUnit(List hexMessageList) @@ -86,8 +88,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A23), arr); - values.Add(value.ToString());//正向有功总最大需量 + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A23), arr, (value) => + { + values.Add(value.ToString()); + });//正向有功总最大需量 } arr = hexMessageList.GetRange(13 + i * 7, 4); @@ -97,8 +101,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, string>(nameof(Appendix_A17), arr);//正向有功总最大需量发生时间 - values.Add(value);//正向有功总最大需量 + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A17), arr, (value) => + { + values.Add(value.ToString()); + });//正向有功总最大需量 } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F188_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F188_Analysis.cs index e3eaee7..7a11029 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F188_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F188_Analysis.cs @@ -10,7 +10,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH /// /// 水表抄读取 /// - public class AFN12_F188_Analysis : IAnalysisStrategy> + public class AFN12_F188_Analysis : IAnalysisStrategy { private readonly ILogger _logger; @@ -22,7 +22,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH _analysisStrategyContext = analysisStrategyContext; } - public async Task> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try @@ -35,19 +35,21 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH data.DataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}"; UnitDataAnalysis dto = new UnitDataAnalysis { - Code = input.A.Code, + Code = input.A.Code!, AFN = input.AFN_FC.AFN, Fn = input.DT.Fn, Pn = input.DA.Pn, Data = data }; - return await Task.FromResult(dto); + result?.Invoke(dto); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0C_188解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage?.HexMessageString},{ex.Message}"); - return null; + } + return await Task.FromResult(false); } public AFN12_F149_AnalysisDto GenerateFinalResult(List hexMessageList) { diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F25_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F25_Analysis.cs index 5b3cb9e..a6d8746 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F25_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F25_Analysis.cs @@ -11,7 +11,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH /// /// 5.12.2.4.22 F25:当前三相及总有/无功功率、功率因数,三相电压、电流、零序电流、视在功率 /// - public class AFN12_F25_Analysis : IAnalysisStrategy>> + public class AFN12_F25_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -24,7 +24,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH public List DataType { get; set; } = new List() { "YGGL", "YGGL_A", "YGGL_B", "YGGL_C", "WGGL", "WGGL_A", "WGGL_B", "WGGL_C", "GLYS", "GLYS_A", "GLYS_B", "GLYS_C", "DY_A", "DY_B", "DY_C", "DL_A", "DL_B", "DL_C", "LXDL", "SZGL", "SZGL_A", "SZGL_B", "SZGL_C" }; - public async Task>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -55,20 +55,21 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH } UnitDataAnalysis> unitDataAnalysis = new UnitDataAnalysis> { - Code = input.A.Code, + Code = input.A.Code!, AFN = input.AFN_FC.AFN, Fn = input.DT.Fn, Pn = input.DA.Pn, Data = list }; - - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0C_25解析失败:{input.A?.Code}-{input.DT?.Fn ?? 0}-{input?.BaseHexMessage?.HexMessageString},{ex.Message}"); - return null; + } + return await Task.FromResult(false); } private async Task> AnalysisDataUnitAsync(List hexMessageList) @@ -102,8 +103,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(appendixName, arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(appendixName, arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F2_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F2_Analysis.cs index 44c94a7..30d29df 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F2_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F2_Analysis.cs @@ -11,7 +11,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH /// /// 5.12.2.4.1 F2:终端日历时钟 /// - public class AFN12_F2_Analysis : IAnalysisStrategy> + public class AFN12_F2_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -22,7 +22,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH _analysisStrategyContext = analysisStrategyContext; } - public async Task> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try @@ -33,19 +33,21 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH data.DataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}"; UnitDataAnalysis dto = new UnitDataAnalysis { - Code = input.A.Code, + Code = input.A.Code!, AFN = input.AFN_FC.AFN, Fn = input.DT.Fn, Pn = input.DA.Pn, Data = data }; - return await Task.FromResult(dto); + result?.Invoke(dto); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0C_2解析失败:{input.A?.Code}-{input.DT?.Fn ?? 0}-{input?.BaseHexMessage?.HexMessageString},{ex.Message}"); - return null; + } + return await Task.FromResult(false); } public async Task GenerateFinalResultAsync(List hexMessageList) @@ -59,8 +61,12 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH dto.ErrorCodeMsg = errorCodeInfo.Item2; } else - dto.DataValue = await _analysisStrategyContext.ExecuteAsync, string>(nameof(Appendix_A1), arr); - + { + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A1), arr, (value) => + { + dto.DataValue = value; + }); + } dto.FiledName = "TerminalTime"; dto.FiledDesc = "召读终端时间"; return await Task.FromResult(dto); diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F33_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F33_Analysis.cs index 50bcfd8..5d07321 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F33_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F33_Analysis.cs @@ -10,7 +10,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH /// /// 5.12.2.4.30 F33:当前正向有/无功电能示值、一/四象限无功电能示值(总、费率 1~M,1≤M≤12) /// - public class AFN12_F33_Analysis : IAnalysisStrategy> + public class AFN12_F33_Analysis : IAnalysisStrategy { private List DataUnitHexList { get; set; }=new List(); private readonly ILogger _logger; @@ -23,7 +23,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH } - public async Task> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -35,20 +35,21 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH GetDataUnitHexString(input.UnitData.HexMessageList, rationgCount); UnitDataAnalysis unitDataAnalysis = new UnitDataAnalysis { - Code = input.A.Code, + Code = input.A.Code!, AFN = input.AFN_FC.AFN, Fn = input.DT.Fn, Pn = input.DA.Pn, Data = await AnalysisDataUnit(input.UnitData.HexMessageList, rationgCount) }; - - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0C_33解析失败:{input.A?.Code}-{input.DT?.Fn ?? 0}-{input?.BaseHexMessage?.HexMessageString},{ex.Message}"); - return null; + } + return await Task.FromResult(false); } #region 获取当前正向有/无功电能示值数据单元格式 private void GetDataUnitHexString(int rationgCount) @@ -83,8 +84,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH private async Task GetDataAsync(int ratingCount, int startIndex, int len, string appendxName) { ParentNodes parent = new ParentNodes(); - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(appendxName, DataUnitHexList.GetRange(startIndex, len)); - parent.Total_Value = value; + var arr = DataUnitHexList.GetRange(startIndex, len); + await _analysisStrategyContext.ExecuteAsync>(appendxName, arr, (value) => + { + parent.Total_Value = value; + }); parent.childNodes = await GetChildDataAsync(ratingCount, startIndex, len, appendxName); return parent; } @@ -102,11 +106,15 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH List children = new List(); for (int i = 0; i < RatingCount; i++) { - ChildNodes model = new ChildNodes() + var arr = DataUnitHexList.GetRange((i * len) + (startIndex + len), len); + await _analysisStrategyContext.ExecuteAsync>(appendxName, arr, (value) => { - Value = await _analysisStrategyContext.ExecuteAsync, decimal>(appendxName, DataUnitHexList.GetRange((i * len) + (startIndex + len), len)) //29,4 33,4 37,4 41,4 - }; - children.Add(model); + ChildNodes model = new ChildNodes() + { + Value = value //29,4 33,4 37,4 41,4 + }; + children.Add(model); + }); } return children; } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F49_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F49_Analysis.cs index 3e6f45a..259da95 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F49_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F49_Analysis.cs @@ -11,7 +11,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH /// /// 5.12.2.4.46 F49:当前电压、电流相位角 /// - public class AFN12_F49_Analysis : IAnalysisStrategy>> + public class AFN12_F49_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -24,7 +24,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH public List DataType { get; set; } = new List() { "Uab_Ua", "Ub", "Ucb_Uc", "Ia", "Ib", "Ic" }; - public async Task>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -54,20 +54,21 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH } UnitDataAnalysis> unitDataAnalysis = new UnitDataAnalysis> { - Code = input.A.Code, + Code = input.A.Code!, AFN = input.AFN_FC.AFN, Fn = input.DT.Fn, Pn = input.DA.Pn, Data= list }; - - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0C_49解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + } + return await Task.FromResult(false); } private async Task> AnalysisDataUnitAsync(List hexMessageList) { @@ -80,8 +81,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH values.Add(errorCode.Item1); else { - var value= await _analysisStrategyContext.ExecuteAsync,decimal>(nameof(Appendix_A5), arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A5), arr, (value) => + { + values.Add(value.ToString()); + }); } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F100_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F100_Analysis.cs index 80af3c8..1629600 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F100_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F100_Analysis.cs @@ -13,7 +13,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.78 F100:测量点反向无功总电能量曲线 /// - public class AFN13_F100_Analysis : IAnalysisStrategy>>> + public class AFN13_F100_Analysis : IAnalysisStrategy { private readonly ILogger _logger; @@ -26,7 +26,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -70,12 +70,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Minute }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_100解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -92,8 +93,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A13), arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A13), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F101_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F101_Analysis.cs index 4a81d20..e55ed8b 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F101_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F101_Analysis.cs @@ -13,7 +13,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.79 F101:测量点正向有功总电能示值曲线 /// - public class AFN13_F101_Analysis : IAnalysisStrategy>>> + public class AFN13_F101_Analysis : IAnalysisStrategy { private readonly ILogger _logger; @@ -25,7 +25,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _analysisStrategyContext = analysisStrategyContext; _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -67,12 +67,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Minute }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_101解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -89,8 +90,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A11), arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A11), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F102_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F102_Analysis.cs index 7f9d101..f30893b 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F102_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F102_Analysis.cs @@ -13,7 +13,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.80 F102:测量点正向无功总电能示值曲线 /// - public class AFN13_F102_Analysis : IAnalysisStrategy>>> + public class AFN13_F102_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -25,7 +25,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -68,12 +68,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Minute }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_102解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -90,8 +91,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A11), arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A11), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F103_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F103_Analysis.cs index 0882271..1896db4 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F103_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F103_Analysis.cs @@ -13,7 +13,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.81 F103:测量点反向有功总电能示值曲线 /// - public class AFN13_F103_Analysis : IAnalysisStrategy>>> + public class AFN13_F103_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -25,7 +25,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -68,12 +68,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Minute }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_103解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -90,8 +91,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A11), arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A11), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F104_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F104_Analysis.cs index 408a5af..0648374 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F104_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F104_Analysis.cs @@ -13,7 +13,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.82 F104:测量点反向无功总电能示值曲线 /// - public class AFN13_F104_Analysis : IAnalysisStrategy>>> + public class AFN13_F104_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -25,7 +25,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -68,12 +68,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Minute }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_104解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -90,8 +91,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A11), arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A11), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F105_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F105_Analysis.cs index 1d1fd4c..7806849 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F105_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F105_Analysis.cs @@ -13,7 +13,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.83 F105:测量点功率因数曲线 /// - public class AFN13_F105_Analysis : IAnalysisStrategy>>> + public class AFN13_F105_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -25,7 +25,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -68,12 +68,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Minute }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_105解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -91,8 +92,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A5), arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A5), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F106_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F106_Analysis.cs index 5dbd7a3..21077fc 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F106_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F106_Analysis.cs @@ -13,7 +13,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.84 F106:测量点 A相功率因数曲线 /// - public class AFN13_F106_Analysis : IAnalysisStrategy>>> + public class AFN13_F106_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -25,7 +25,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -68,12 +68,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Minute }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_106解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -92,8 +93,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A5), arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A5), arr, (value) => + { + values.Add(value.ToString()); + }); + } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F107_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F107_Analysis.cs index d5b1584..af7709f 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F107_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F107_Analysis.cs @@ -13,7 +13,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.84 F107:测量点 B相功率因数曲线 /// - public class AFN13_F107_Analysis : IAnalysisStrategy>>> + public class AFN13_F107_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -25,7 +25,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -67,12 +67,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Minute }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_107解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -90,8 +91,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A5), arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A5), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F108_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F108_Analysis.cs index 3a54a06..b303e88 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F108_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F108_Analysis.cs @@ -13,7 +13,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.84 F108:测量点 C相功率因数曲线 /// - public class AFN13_F108_Analysis : IAnalysisStrategy>>> + public class AFN13_F108_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -25,7 +25,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -68,12 +68,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Minute }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_107解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } private async Task> AnalysisDataUnitAsync(List hexMessageList) @@ -89,8 +90,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A5), arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A5), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F11_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F11_Analysis.cs index e3493eb..43c2cd4 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F11_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F11_Analysis.cs @@ -14,7 +14,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.11 F11:抄表日冻结电能表正向有/无功最大需量及发生时间(总、费率 1~M,1≤M≤12) /// - public class AFN13_F11_Analysis : IAnalysisStrategy>>> + public class AFN13_F11_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -26,7 +26,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -67,12 +67,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Day }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_11解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -106,8 +107,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, T>(nameof(Appendix_A5), arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A5), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F145_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F145_Analysis.cs index 125ef90..8653110 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F145_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F145_Analysis.cs @@ -13,7 +13,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.104 F145:测量点一象限无功总电能示值曲线 /// - public class AFN13_F145_Analysis : IAnalysisStrategy>>> + public class AFN13_F145_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -25,7 +25,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -67,12 +67,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Minute }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_145解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -90,8 +91,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A11), arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A11), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F146_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F146_Analysis.cs index 3113c9b..84c1894 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F146_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F146_Analysis.cs @@ -13,7 +13,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.105 F146:测量点四象限无功总电能示值曲线 /// - public class AFN13_F146_Analysis : IAnalysisStrategy>>> + public class AFN13_F146_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -25,7 +25,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -67,12 +67,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Minute }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_146解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -90,8 +91,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A11), arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A11), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F147_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F147_Analysis.cs index cdc58cc..5b6eda5 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F147_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F147_Analysis.cs @@ -13,7 +13,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.106 F147:测量点二象限无功总电能示值曲线 /// - public class AFN13_F147_Analysis : IAnalysisStrategy>>> + public class AFN13_F147_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -25,7 +25,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -67,12 +67,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Minute }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_147解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -90,8 +91,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A11), arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A11), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F148_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F148_Analysis.cs index dc978e3..c65f177 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F148_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F148_Analysis.cs @@ -13,7 +13,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.107 F148:测量点三象限无功总电能示值曲线 /// - public class AFN13_F148_Analysis : IAnalysisStrategy>>> + public class AFN13_F148_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -25,7 +25,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -68,12 +68,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Minute }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_148解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -90,8 +91,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A11), arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A11), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F161_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F161_Analysis.cs index a5c7c04..d6e53f8 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F161_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F161_Analysis.cs @@ -13,7 +13,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.116 F161:日冻结正向有功电能示值(总、费率 1~M) /// - public class AFN13_F161_Analysis : IAnalysisStrategy>>> + public class AFN13_F161_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -25,7 +25,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -68,12 +68,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Day }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_161解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -95,8 +96,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A14), arr); //从第10个开始,每加5个字节为下一个值的开始 - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A14), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F162_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F162_Analysis.cs index 3a3853d..3e43008 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F162_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F162_Analysis.cs @@ -13,7 +13,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.117 F162:日冻结正向无功(组合无功 1)电能示值(总、费率 1~M) /// - public class AFN13_F162_Analysis : IAnalysisStrategy>>> + public class AFN13_F162_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -25,7 +25,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -67,12 +67,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Day }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_162解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } private async Task> AnalysisDataUnitAsync(List hexMessageList) @@ -92,8 +93,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A11), arr); //从第10个开始,每加5个字节为下一个值的开始 - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A11), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F163_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F163_Analysis.cs index 7748948..07aea9d 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F163_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F163_Analysis.cs @@ -13,7 +13,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.118 F163:日冻结反向有功电能示值(总、费率 1~M) /// - public class AFN13_F163_Analysis : IAnalysisStrategy>>> + public class AFN13_F163_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -25,7 +25,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -68,12 +68,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Day }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_163解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } private async Task> AnalysisDataUnitAsync(List hexMessageList) @@ -93,8 +94,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A14), arr); //从第10个开始,每加5个字节为下一个值的开始 - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A14), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F164_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F164_Analysis.cs index 81cd07f..4da4a73 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F164_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F164_Analysis.cs @@ -13,7 +13,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.119 F164:日冻结反向无功(组合无功 1)电能示值(总、费率 1~M) /// - public class AFN13_F164_Analysis : IAnalysisStrategy>>> + public class AFN13_F164_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -25,7 +25,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -67,12 +67,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Day }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_164解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -93,8 +94,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A11), arr); //从第10个开始,每加5个字节为下一个值的开始 - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A11), arr, (value) => + { + values.Add(value.ToString()); + }); } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F165_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F165_Analysis.cs index d7a821c..ce2619d 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F165_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F165_Analysis.cs @@ -13,7 +13,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.120 F165:日冻结一象限无功电能示值(总、费率 1~M) /// - public class AFN13_F165_Analysis : IAnalysisStrategy>>> + public class AFN13_F165_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -25,7 +25,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -67,12 +67,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Day }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_165解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -93,8 +94,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A11), arr); //从第10个开始,每加5个字节为下一个值的开始 - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A11), arr, (value) => + { + values.Add(value.ToString()); + }); } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F166_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F166_Analysis.cs index cce8772..c2eea01 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F166_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F166_Analysis.cs @@ -13,7 +13,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.121 F166:日冻结二象限无功电能示值(总、费率 1~M) /// - public class AFN13_F166_Analysis : IAnalysisStrategy>>> + public class AFN13_F166_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -25,7 +25,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -67,12 +67,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Day }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_166解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -93,8 +94,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A11), arr); //从第10个开始,每加5个字节为下一个值的开始 - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A11), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F167_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F167_Analysis.cs index 2f1fc28..649532e 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F167_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F167_Analysis.cs @@ -13,7 +13,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.122 F167:日冻结三象限无功电能示值(总、费率 1~M) /// - public class AFN13_F167_Analysis : IAnalysisStrategy>>> + public class AFN13_F167_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -25,7 +25,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -67,12 +67,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Day }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_167解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -93,8 +94,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A11), arr); //从第10个开始,每加5个字节为下一个值的开始 - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A11), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F168_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F168_Analysis.cs index 2553c0b..620cfb2 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F168_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F168_Analysis.cs @@ -13,7 +13,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.123 F168:日冻结四象限无功电能示值(总、费率 1~M) /// - public class AFN13_F168_Analysis : IAnalysisStrategy>>> + public class AFN13_F168_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -25,7 +25,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -67,12 +67,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Day }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_168解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -93,8 +94,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A11), arr); //从第10个开始,每加5个字节为下一个值的开始 - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A11), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F177_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F177_Analysis.cs index 624f2c6..5f6a39c 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F177_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F177_Analysis.cs @@ -13,7 +13,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.132 F177:月冻结正向有功电能示值(总、费率 1~M) /// - public class AFN13_F177_Analysis : IAnalysisStrategy>>> + public class AFN13_F177_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -25,7 +25,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -66,12 +66,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Month }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_177解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -93,8 +94,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A14), arr); //从第10个开始,每加5个字节为下一个值的开始 - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A14), arr, (value) => + { + values.Add(value.ToString()); + }); } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F178_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F178_Analysis.cs index dc882c4..29c760f 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F178_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F178_Analysis.cs @@ -14,7 +14,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// F178:月冻结正向无功(组合无功 1)电能示值(总、费率 1~M) /// - public class AFN13_F178_Analysis : IAnalysisStrategy>>> + public class AFN13_F178_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -26,7 +26,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -67,12 +67,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Month }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_178解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -93,8 +94,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A11), arr); //从第10个开始,每加5个字节为下一个值的开始 - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A11), arr, (value) => + { + values.Add(value.ToString()); + }); } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F179_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F179_Analysis.cs index 07ff2b2..85f8ad6 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F179_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F179_Analysis.cs @@ -14,7 +14,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.134 F179:月冻结反向有功电能示值(总、费率 1~M) /// - public class AFN13_F179_Analysis : IAnalysisStrategy>>> + public class AFN13_F179_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -26,7 +26,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -67,12 +67,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Month }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_179解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -93,8 +94,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A14), arr); //从第10个开始,每加5个字节为下一个值的开始 - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A14), arr, (value) => + { + values.Add(value.ToString()); + }); } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F180_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F180_Analysis.cs index 0fed8cb..eaa625d 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F180_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F180_Analysis.cs @@ -13,7 +13,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.135 F180:月冻结反向无功(组合无功 1)电能示值(总、费率 1~M) /// - public class AFN13_F180_Analysis : IAnalysisStrategy>>> + public class AFN13_F180_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -25,7 +25,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -66,12 +66,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Month }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_180解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -92,8 +93,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A11), arr); //从第10个开始,每加5个字节为下一个值的开始 - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A11), arr, (value) => + { + values.Add(value.ToString()); + }); } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F181_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F181_Analysis.cs index 466da30..c79f790 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F181_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F181_Analysis.cs @@ -14,7 +14,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.136 F181:月冻结一象限无功电能示值(总、费率 1~M) /// - public class AFN13_F181_Analysis : IAnalysisStrategy>>> + public class AFN13_F181_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -26,7 +26,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -67,12 +67,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Month }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_181解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -93,8 +94,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A11), arr); //从第10个开始,每加5个字节为下一个值的开始 - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A11), arr, (value) => + { + values.Add(value.ToString()); + }); } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F182_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F182_Analysis.cs index 0833b9f..295e4dd 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F182_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F182_Analysis.cs @@ -14,7 +14,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.137 F182:月冻结二象限无功电能示值(总、费率 1~M) /// - public class AFN13_F182_Analysis : IAnalysisStrategy>>> + public class AFN13_F182_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -26,7 +26,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -67,12 +67,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Month }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_182解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -93,8 +94,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A11), arr); //从第10个开始,每加5个字节为下一个值的开始 - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A11), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F183_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F183_Analysis.cs index fc73291..4499285 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F183_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F183_Analysis.cs @@ -13,7 +13,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.138 F183:月冻结三象限无功电能示值(总、费率 1~M) /// - public class AFN13_F183_Analysis : IAnalysisStrategy>>> + public class AFN13_F183_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -25,7 +25,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -66,12 +66,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Month }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_183解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -92,8 +93,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A11), arr); //从第10个开始,每加5个字节为下一个值的开始 - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A11), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F184_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F184_Analysis.cs index 103d49c..187a4bc 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F184_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F184_Analysis.cs @@ -14,7 +14,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.139 F184:月冻结四象限无功电能示值(总、费率 1~M) /// - public class AFN13_F184_Analysis : IAnalysisStrategy>>> + public class AFN13_F184_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -26,7 +26,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -67,12 +67,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Month }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_184解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -93,8 +94,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A11), arr); //从第10个开始,每加5个字节为下一个值的开始 - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A11), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F189_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F189_Analysis.cs index 1fba574..9f44d47 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F189_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F189_Analysis.cs @@ -14,7 +14,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.144 F189:抄表日冻结正向有功最大需量及发生时间(总、费率 1~M) /// - public class AFN13_F189_Analysis : IAnalysisStrategy>>> + public class AFN13_F189_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -26,7 +26,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -68,12 +68,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Day }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_189解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -102,8 +103,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, T>(appendixName, arr); //从第10个开始,每加5个字节为下一个值的开始 - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(appendixName, arr, (value) => + { + values.Add(value.ToString()); + }); } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F190_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F190_Analysis.cs index 07f091a..03541a1 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F190_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F190_Analysis.cs @@ -14,7 +14,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.145 F190:抄表日冻结正向无功最大需量及发生时间(总、费率 1~M) /// - public class AFN13_F190_Analysis : IAnalysisStrategy>> + public class AFN13_F190_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -26,7 +26,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -62,12 +62,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Day }; await _dataStorage.SaveDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_190解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -101,8 +102,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, T>(appendixName, arr); //从第10个开始,每加5个字节为下一个值的开始 - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(appendixName, arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F193_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F193_Analysis.cs index e1fa0c3..3eaad1c 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F193_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F193_Analysis.cs @@ -15,7 +15,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.148 F193:月冻结正向有功最大需量及发生时间(总、费率 1~M) /// - public class AFN13_F193_Analysis : IAnalysisStrategy>> + public class AFN13_F193_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -27,7 +27,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -62,12 +62,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Month }; await _dataStorage.SaveDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_193解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -95,8 +96,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, T>(appendixName, data); //从第10个开始,每加5个字节为下一个值的开始 - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(appendixName, data, (value) => + { + values.Add(value.ToString()); + }); } return values; } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F195_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F195_Analysis.cs index 927ac96..0b948c0 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F195_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F195_Analysis.cs @@ -15,7 +15,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.150 F195:月冻结反向有功最大需量及发生时间(总、费率 1~M) /// - public class AFN13_F195_Analysis : IAnalysisStrategy>> + public class AFN13_F195_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -27,7 +27,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -62,12 +62,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Month }; await _dataStorage.SaveDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_195解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -95,8 +96,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, T>(appendixName, data); //从第10个开始,每加5个字节为下一个值的开始 - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(appendixName, data, (value) => + { + values.Add(value.ToString()); + }); } return values; } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F19_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F19_Analysis.cs index c9fc150..8e08fb7 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F19_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F19_Analysis.cs @@ -16,7 +16,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.15 F19:月冻结电能表正向有/无功最大需量及发生时间(总、费率 1~M,1≤M≤12) /// - public class AFN13_F19_Analysis : IAnalysisStrategy>>> + public class AFN13_F19_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -28,7 +28,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -68,12 +68,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Day }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_19解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -107,8 +108,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, T>(appendixName, arr); //从第10个开始,每加5个字节为下一个值的开始 - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(appendixName, arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F3_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F3_Analysis.cs index f8b2f6d..9d331ce 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F3_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F3_Analysis.cs @@ -17,7 +17,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.3 F3:日冻结正向有/无功最大需量及发生时间(总、费率 1~M,1≤M≤12) /// - public class AFN13_F3_Analysis : IAnalysisStrategy>>> + public class AFN13_F3_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -29,7 +29,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -72,12 +72,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Day }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_3解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } private async Task> AnalysisDataUnitAsync(List hexMessageList) @@ -112,8 +113,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, T>(appendixName, arr); //从第10个开始,每加5个字节为下一个值的开始 - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(appendixName, arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F4_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F4_Analysis.cs index 9ed6acd..244e57b 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F4_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F4_Analysis.cs @@ -16,7 +16,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.4 F4:日冻结反向有/无功最大需量及发生时间(总、费率 1~M,1≤M≤12) /// - public class AFN13_F4_Analysis : IAnalysisStrategy>>> + public class AFN13_F4_Analysis : IAnalysisStrategy { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -28,7 +28,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -71,12 +71,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Day }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_4解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } private async Task> AnalysisDataUnitAsync(List hexMessageList) @@ -111,8 +112,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, T>(appendixName, arr); //从第10个开始,每加5个字节为下一个值的开始 - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(appendixName, arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F81_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F81_Analysis.cs index fd9eaf5..7dabf8f 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F81_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F81_Analysis.cs @@ -13,7 +13,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.60 F81:测量点有功功率曲线 /// - public class AFN13_F81_Analysis : IAnalysisStrategy>>> + public class AFN13_F81_Analysis : IAnalysisStrategy { private readonly ILogger _logger; @@ -26,7 +26,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -68,12 +68,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Minute }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_81解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -91,8 +92,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A9), arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A9), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F82_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F82_Analysis.cs index 724cad2..d76e474 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F82_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F82_Analysis.cs @@ -14,7 +14,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.61 F82:测量点 A相有功功率曲线 /// - public class AFN13_F82_Analysis : IAnalysisStrategy>>> + public class AFN13_F82_Analysis : IAnalysisStrategy { private readonly ILogger _logger; @@ -27,7 +27,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -69,12 +69,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Minute }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_82解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -92,8 +93,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A9), arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A9), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F83_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F83_Analysis.cs index 2ffbd12..bae73dd 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F83_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F83_Analysis.cs @@ -14,7 +14,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.61 F83:测量点 B相有功功率曲线 /// - public class AFN13_F83_Analysis : IAnalysisStrategy>>> + public class AFN13_F83_Analysis : IAnalysisStrategy { private readonly ILogger _logger; @@ -27,7 +27,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -69,12 +69,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Minute }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_83解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -92,8 +93,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A9), arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A9), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F84_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F84_Analysis.cs index 36bc660..bedf4c0 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F84_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F84_Analysis.cs @@ -13,7 +13,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.61 F84:测量点 C相有功功率曲线 /// - public class AFN13_F84_Analysis : IAnalysisStrategy>>> + public class AFN13_F84_Analysis : IAnalysisStrategy { private readonly ILogger _logger; @@ -26,7 +26,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -68,12 +68,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Minute }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_84解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -91,8 +92,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A9), arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A9), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F85_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F85_Analysis.cs index 1437d2f..8497610 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F85_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F85_Analysis.cs @@ -14,7 +14,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.64 F85:测量点无功功率曲线 /// - public class AFN13_F85_Analysis : IAnalysisStrategy>>> + public class AFN13_F85_Analysis : IAnalysisStrategy { private readonly ILogger _logger; @@ -27,7 +27,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -69,12 +69,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Minute }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_85解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -92,8 +93,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A9), arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A9), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F86_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F86_Analysis.cs index 09c5a4a..76e4c5b 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F86_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F86_Analysis.cs @@ -14,7 +14,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.65 F86:测量点 A相无功功率曲线 /// - public class AFN13_F86_Analysis : IAnalysisStrategy>>> + public class AFN13_F86_Analysis : IAnalysisStrategy { private readonly ILogger _logger; @@ -27,7 +27,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -69,12 +69,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Minute }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_86解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -92,8 +93,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A9), arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A9), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F87_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F87_Analysis.cs index d2b8dc1..df4f106 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F87_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F87_Analysis.cs @@ -13,7 +13,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.66 F87:测量点 B相无功功率曲线 /// - public class AFN13_F87_Analysis : IAnalysisStrategy>>> + public class AFN13_F87_Analysis : IAnalysisStrategy { private readonly ILogger _logger; @@ -26,7 +26,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -68,12 +68,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Minute }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_87解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -91,8 +92,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A9), arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A9), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F88_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F88_Analysis.cs index 3eb020c..47981b1 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F88_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F88_Analysis.cs @@ -14,7 +14,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.67 F88:测量点 C相无功功率曲线 /// - public class AFN13_F88_Analysis : IAnalysisStrategy>>> + public class AFN13_F88_Analysis : IAnalysisStrategy { private readonly ILogger _logger; @@ -27,7 +27,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -69,12 +69,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Minute }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_88解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -92,8 +93,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A9), arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A9), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F89_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F89_Analysis.cs index d9863e4..2ecf993 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F89_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F89_Analysis.cs @@ -14,7 +14,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.68 F89:测量点 A相电压曲线 /// - public class AFN13_F89_Analysis : IAnalysisStrategy>>> + public class AFN13_F89_Analysis : IAnalysisStrategy { private readonly ILogger _logger; @@ -27,7 +27,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -69,12 +69,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Minute }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_89解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -92,8 +93,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A7), arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A7), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F90_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F90_Analysis.cs index a11a586..af58962 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F90_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F90_Analysis.cs @@ -14,7 +14,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.68 F89:测量点 B相电压曲线 /// - public class AFN13_F90_Analysis : IAnalysisStrategy>>> + public class AFN13_F90_Analysis : IAnalysisStrategy { private readonly ILogger _logger; @@ -27,7 +27,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -69,12 +69,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Minute }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_90解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -92,8 +93,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A7), arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A7), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F91_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F91_Analysis.cs index 740aa7f..f2781f6 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F91_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F91_Analysis.cs @@ -13,7 +13,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.68 F89:测量点 C相电压曲线 /// - public class AFN13_F91_Analysis : IAnalysisStrategy>>> + public class AFN13_F91_Analysis : IAnalysisStrategy { private readonly ILogger _logger; @@ -26,7 +26,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -68,12 +68,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Minute }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_91解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -91,8 +92,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A7), arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A7), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F92_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F92_Analysis.cs index 83a1aca..5ae333b 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F92_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F92_Analysis.cs @@ -14,7 +14,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.71 F92:测量点 A相电流曲线 /// - public class AFN13_F92_Analysis : IAnalysisStrategy>>> + public class AFN13_F92_Analysis : IAnalysisStrategy { private readonly ILogger _logger; @@ -27,7 +27,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -69,12 +69,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Minute }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_92解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } private async Task> AnalysisDataUnitAsync(List hexMessageList) @@ -91,8 +92,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A25), arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A25), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F93_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F93_Analysis.cs index 085c209..8fe5a04 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F93_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F93_Analysis.cs @@ -14,7 +14,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.72 F93:测量点 B相电流曲线 /// - public class AFN13_F93_Analysis : IAnalysisStrategy>>> + public class AFN13_F93_Analysis : IAnalysisStrategy { private readonly ILogger _logger; @@ -27,7 +27,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -69,12 +69,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Minute }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_93解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -92,8 +93,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A25), arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A25), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F94_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F94_Analysis.cs index b701b5c..fa85df1 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F94_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F94_Analysis.cs @@ -14,7 +14,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.73 F94:测量点 C相电流曲线 /// - public class AFN13_F94_Analysis : IAnalysisStrategy>>> + public class AFN13_F94_Analysis : IAnalysisStrategy { private readonly ILogger _logger; @@ -27,7 +27,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -69,12 +69,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Minute }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_94解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -92,8 +93,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A25), arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A25), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F95_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F95_Analysis.cs index 1021cf9..86a36af 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F95_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F95_Analysis.cs @@ -14,7 +14,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.74 F95:测量点零序电流曲线 /// - public class AFN13_F95_Analysis : IAnalysisStrategy>>> + public class AFN13_F95_Analysis : IAnalysisStrategy { private readonly ILogger _logger; @@ -27,7 +27,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -69,12 +69,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Minute }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_95解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -92,8 +93,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A25), arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A25), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F97_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F97_Analysis.cs index 44a27e6..09d66e8 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F97_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F97_Analysis.cs @@ -14,7 +14,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.75 F97:测量点正向有功总电能量曲线 /// - public class AFN13_F97_Analysis : IAnalysisStrategy>>> + public class AFN13_F97_Analysis : IAnalysisStrategy { private readonly ILogger _logger; @@ -27,7 +27,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -69,12 +69,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Minute }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_97解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -92,8 +93,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A13), arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A13), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F98_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F98_Analysis.cs index 5fad048..be7ab0b 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F98_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F98_Analysis.cs @@ -14,7 +14,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.76 F98:测量点正向无功总电能量曲线 /// - public class AFN13_F98_Analysis : IAnalysisStrategy>>> + public class AFN13_F98_Analysis : IAnalysisStrategy { private readonly ILogger _logger; @@ -27,7 +27,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -69,12 +69,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Minute }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_98解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } private async Task> AnalysisDataUnitAsync(List hexMessageList) @@ -91,8 +92,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A13), arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A13), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F99_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F99_Analysis.cs index 974740b..b935cf2 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F99_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F99_Analysis.cs @@ -14,7 +14,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH /// /// 5.13.2.4.77 F99:测量点反向有功总电能量曲线 /// - public class AFN13_F99_Analysis : IAnalysisStrategy>>> + public class AFN13_F99_Analysis : IAnalysisStrategy { private readonly ILogger _logger; @@ -27,7 +27,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH _dataStorage = dataStorage; } - public async Task>>> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -69,12 +69,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH DensityUnit = DensityUnit.Minute }; await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0D_99解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + return await Task.FromResult(false); } } @@ -92,8 +93,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH values.Add(errorCode.Item1); else { - var value = await _analysisStrategyContext.ExecuteAsync, decimal>(nameof(Appendix_A13), arr); - values.Add(value.ToString()); + await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_A13), arr, (value) => + { + values.Add(value.ToString()); + }); } } return values; diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0EH/AFN14_F1_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0EH/AFN14_F1_Analysis.cs index 7ca9c21..ad76f73 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0EH/AFN14_F1_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0EH/AFN14_F1_Analysis.cs @@ -11,7 +11,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0EH /// Item1=停电事件 /// Item2=上电事件 /// - public class AFN14_F1_Analysis : IAnalysisStrategy>> + public class AFN14_F1_Analysis : IAnalysisStrategy { private readonly ILogger _logger; @@ -20,7 +20,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0EH _logger = logger; } - public Task>> ExecuteAsync(TB3761 tB3761) + public Task ExecuteAsync(TB3761 tB3761, Action? result = null) { try { @@ -41,13 +41,14 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0EH Data = AnalysisDataUnit(tB3761.UnitData.HexMessageList) }; // meterData.DataType = "0E_1"; - return Task.FromResult(dto); + result?.Invoke(dto); + return Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0E_1解析失败:{tB3761.A.Code}-{tB3761.DT.Fn}-{tB3761.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; } + return Task.FromResult(false); } private Tuple AnalysisDataUnit(List hexMessageList) diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_10H/AFN16_F101_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_10H/AFN16_F101_Analysis.cs index ce5a7a3..26371b1 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_10H/AFN16_F101_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_10H/AFN16_F101_Analysis.cs @@ -9,7 +9,7 @@ namespace GatherService.WattMeter.AnalysisData.AFN_10H /// /// 5.16.1.2.1 F1:透明转发 读取SIM卡信息 /// - public class AFN16_F101_Analysis : IAnalysisStrategy> + public class AFN16_F101_Analysis : IAnalysisStrategy { private readonly ILogger _logger; @@ -18,7 +18,7 @@ namespace GatherService.WattMeter.AnalysisData.AFN_10H _logger = logger; } - public Task> ExecuteAsync(TB3761 input) + public Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -26,19 +26,21 @@ namespace GatherService.WattMeter.AnalysisData.AFN_10H ArgumentNullException.ThrowIfNull(input.UnitData.HexMessageList); UnitDataAnalysis dto = new UnitDataAnalysis { - Code = input.A.Code, + Code = input.A.Code!, AFN = input.AFN_FC.AFN, Fn = input.DT.Fn, Pn = input.DA.Pn, Data = AnalysisDataUnit(input.UnitData.HexMessageList) //SIM卡 }; - return Task.FromResult(dto); + result?.Invoke(dto); + return Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"10_101解析失败:{input.A?.Code}-{input.DT?.Fn ?? 0}-{input?.BaseHexMessage?.HexMessageString},{ex.Message}"); - return null; + } + return Task.FromResult(false); } private string AnalysisDataUnit(List hexMessageList) { diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_10H/AFN16_F1_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_10H/AFN16_F1_Analysis.cs index 9f9b120..e2a399e 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_10H/AFN16_F1_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_10H/AFN16_F1_Analysis.cs @@ -17,7 +17,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_10H /// /// 5.16 数据转发(AFN=10H) /// - public class AFN16_F1_Analysis : IAnalysisStrategy> + public class AFN16_F1_Analysis : IAnalysisStrategy { private readonly ILogger _logger; @@ -26,7 +26,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_10H _logger = logger; } - public Task> ExecuteAsync(TB3761 input) + public Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -40,13 +40,15 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_10H Pn = input.DA.Pn, Data = AnalysisDataUnit(input.UnitData.HexMessageList) }; - return Task.FromResult(dto); + result?.Invoke(dto); + return Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"10_101解析失败:{input.A?.Code}-{input.DT?.Fn ?? 0}-{input?.BaseHexMessage?.HexMessageString},{ex.Message}"); - return null; + } + return Task.FromResult(false); } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_10H/AFN16_F98_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_10H/AFN16_F98_Analysis.cs index a0e719d..12f8439 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_10H/AFN16_F98_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_10H/AFN16_F98_Analysis.cs @@ -12,7 +12,7 @@ namespace GatherService.WattMeter.AnalysisData.AFN_10H /// /// 透明转发---跳合闸 /// - public class AFN16_F98_Analysis : IAnalysisStrategy> + public class AFN16_F98_Analysis : IAnalysisStrategy { private readonly ILogger _logger; @@ -25,7 +25,7 @@ namespace GatherService.WattMeter.AnalysisData.AFN_10H _dataStorage = dataStorage; } - public async Task> ExecuteAsync(TB3761 input) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { @@ -58,13 +58,15 @@ namespace GatherService.WattMeter.AnalysisData.AFN_10H DensityUnit = DensityUnit.Second }; //await _dataStorage.SaveDataToIotDbAsync(unitDataAnalysis); - return await Task.FromResult(unitDataAnalysis); + result?.Invoke(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"10_98跳合闸解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return null; + } + return await Task.FromResult(false); } private List AnalysisDataUnit(List hexMessageList) diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_02800002.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_02800002.cs index 7245d70..8c71343 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_02800002.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_02800002.cs @@ -4,9 +4,9 @@ using Microsoft.Extensions.Logging; namespace JiShe.CollectBus.Protocol.T37612012.Appendix { /// - /// 第一套第 2 日时段表数据 + /// Appendix_02800002 /// - public class Appendix_02800002 : IAnalysisStrategy, List> + public class Appendix_02800002 : IAnalysisStrategy> { private readonly ILogger _logger; @@ -15,7 +15,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix _logger = logger; } - public Task> ExecuteAsync(List data) + public Task ExecuteAsync(List data, Action? result = null) { try { @@ -23,12 +23,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix return null; var value = string.Join(".", data); var values= new List() { "电网频率", "10_97", "1", value }; - return Task.FromResult(values); + result?.Invoke(values); + return Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"Appendix_02800002解析失败:{ex.Message}"); - return null; + return Task.FromResult(false); } } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04000201.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04000201.cs index 7c2db74..6345f90 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04000201.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04000201.cs @@ -7,7 +7,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix /// /// 年时区数 p≤14 /// - public class Appendix_04000201 : IAnalysisStrategy, List> + public class Appendix_04000201 : IAnalysisStrategy> { private int valueByteCount = 1; private readonly ILogger _logger; @@ -17,7 +17,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix _logger = logger; } - public async Task> ExecuteAsync(List data) + public async Task ExecuteAsync(List data, Action? result = null) { List values = new List(); values.Insert(0, "10_94"); @@ -27,7 +27,8 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix { values.Add(item.HexToDec().ToString()); } - return await Task.FromResult(values); + result?.Invoke(values); + return await Task.FromResult(true); } } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04000202.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04000202.cs index 20870cd..9ebafff 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04000202.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04000202.cs @@ -6,7 +6,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix /// /// 日时段表数 q≤8 /// - public class Appendix_04000202 : IAnalysisStrategy, List> + public class Appendix_04000202 : IAnalysisStrategy> { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -17,11 +17,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix _analysisStrategyContext = analysisStrategyContext; } - public async Task> ExecuteAsync(List data) + public async Task ExecuteAsync(List data, Action? result = null) { - var values = await _analysisStrategyContext.ExecuteAsync, List>("Appendix_04000201", data); - values[0] = "日时段表数"; - return await Task.FromResult(values); + return await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_04000201), data, (values) => + { + values[0] = "日时段表数"; + result?.Invoke(values); + }); } } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04000203.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04000203.cs index cf0c882..1a69d1c 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04000203.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04000203.cs @@ -6,7 +6,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix /// /// 日时段数(每日切换数) m≤14 /// - public class Appendix_04000203 : IAnalysisStrategy, List> + public class Appendix_04000203 : IAnalysisStrategy> { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -17,11 +17,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix _analysisStrategyContext = analysisStrategyContext; } - public async Task> ExecuteAsync(List data) + public async Task ExecuteAsync(List data, Action? result = null) { - var values = await _analysisStrategyContext.ExecuteAsync, List>("Appendix_04000201", data); - values[0] = "日时段数(每日切换数)"; - return await Task.FromResult(values); + return await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_04000201), data, (values) => + { + values[0] = "日时段数(每日切换数)"; + result?.Invoke(values); + }); } } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04000204.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04000204.cs index 56ab772..bed7fc0 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04000204.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04000204.cs @@ -1,12 +1,13 @@ using JiShe.CollectBus.Protocol.Interfaces; using Microsoft.Extensions.Logging; +using TouchSocket.Core; namespace JiShe.CollectBus.Protocol.T37612012.Appendix { /// /// 费率数 k≤63 /// - public class Appendix_04000204 : IAnalysisStrategy, List> + public class Appendix_04000204 : IAnalysisStrategy> { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -17,11 +18,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix _analysisStrategyContext = analysisStrategyContext; } - public async Task> ExecuteAsync(List data) + public async Task ExecuteAsync(List data, Action? result = null) { - var values = await _analysisStrategyContext.ExecuteAsync, List>("Appendix_04000201", data); - values[0] = "费率数"; - return await Task.FromResult(values); + return await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_04000201), data, (values) => + { + values[0] = "费率数"; + result?.Invoke(values); + }); } } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010000.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010000.cs index 4ce52fc..e77156e 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010000.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010000.cs @@ -6,7 +6,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix /// /// 第一套时区表数据 /// - public class Appendix_04010000 : IAnalysisStrategy, List> + public class Appendix_04010000 : IAnalysisStrategy> { /// /// 每个值字节数 @@ -19,7 +19,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix _logger = logger; } - public async Task> ExecuteAsync(List data) + public async Task ExecuteAsync(List data, Action? result = null) { List values = new List(); int valueCount = data.Count / valueByteCount; @@ -32,7 +32,8 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix values.Add($"{value[0]}:{value[1]}");//MM:DD 或hhmm values.Add(value[2]);//NN 费率号 } - return await Task.FromResult(values); + result?.Invoke(values); + return await Task.FromResult(true); } } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010001.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010001.cs index deb25fe..346a3be 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010001.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010001.cs @@ -6,7 +6,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix /// /// 第一套第 1 日时段表数据: /// - public class Appendix_04010001 : IAnalysisStrategy, List> + public class Appendix_04010001 : IAnalysisStrategy> { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -17,11 +17,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix _analysisStrategyContext = analysisStrategyContext; } - public async Task> ExecuteAsync(List data) + public async Task ExecuteAsync(List data, Action? result = null) { - var values = await _analysisStrategyContext.ExecuteAsync, List>("Appendix_04010000", data); - values[0] = "第一套第1日第{0}时段起始时间及费率号"; - return await Task.FromResult(values); + return await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_04010000), data, (values) => + { + values[0] = "第一套第1日第{0}时段起始时间及费率号"; + result?.Invoke(values); + }); } } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010002.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010002.cs index 3dee4da..0d27da0 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010002.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010002.cs @@ -6,7 +6,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix /// /// 第一套第 2 日时段表数据 /// - public class Appendix_04010002 : IAnalysisStrategy, List> + public class Appendix_04010002 : IAnalysisStrategy> { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -17,11 +17,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix _analysisStrategyContext = analysisStrategyContext; } - public async Task> ExecuteAsync(List data) + public async Task ExecuteAsync(List data, Action? result = null) { - var values = await _analysisStrategyContext.ExecuteAsync, List>("Appendix_04010000", data); - values[0] = "第一套第2日第{0}时段起始时间及费率号"; - return await Task.FromResult(values); + return await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_04010000), data, (values) => + { + values[0] = "第一套第2日第{0}时段起始时间及费率号"; + result?.Invoke(values); + }); } } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010003.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010003.cs index d3693c2..0a1a926 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010003.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010003.cs @@ -6,7 +6,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix /// /// 第一套第 3 日时段表数据 /// - public class Appendix_04010003 : IAnalysisStrategy, List> + public class Appendix_04010003 : IAnalysisStrategy> { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -17,11 +17,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix _analysisStrategyContext = analysisStrategyContext; } - public async Task> ExecuteAsync(List data) + public async Task ExecuteAsync(List data, Action? result = null) { - var values = await _analysisStrategyContext.ExecuteAsync, List>("Appendix_04010000", data); - values[0] = "第一套第3日第{0}时段起始时间及费率号"; - return await Task.FromResult(values); + return await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_04010000), data, (values) => + { + values[0] = "第一套第3日第{0}时段起始时间及费率号"; + result?.Invoke(values); + }); } } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010004.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010004.cs index 68faa82..baee7f0 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010004.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010004.cs @@ -6,7 +6,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix /// /// 第一套第 4 日时段表数据 /// - public class Appendix_04010004 : IAnalysisStrategy, List> + public class Appendix_04010004 : IAnalysisStrategy> { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -16,11 +16,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix _logger = logger; _analysisStrategyContext = analysisStrategyContext; } - public async Task> ExecuteAsync(List data) + public async Task ExecuteAsync(List data, Action? result = null) { - var values = await _analysisStrategyContext.ExecuteAsync, List> ("Appendix_04010000", data); - values[0] = "第一套第4日第{0}时段起始时间及费率号"; - return await Task.FromResult(values); + return await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_04010000), data, (values) => + { + values[0] = "第一套第4日第{0}时段起始时间及费率号"; + result?.Invoke(values); + }); } } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010005.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010005.cs index 9ef615f..605bae3 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010005.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010005.cs @@ -6,7 +6,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix /// /// 第一套第 5 日时段表数据 /// - public class Appendix_04010005 : IAnalysisStrategy, List> + public class Appendix_04010005 : IAnalysisStrategy> { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -17,11 +17,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix _analysisStrategyContext = analysisStrategyContext; } - public async Task> ExecuteAsync(List data) + public async Task ExecuteAsync(List data, Action? result = null) { - var values = await _analysisStrategyContext.ExecuteAsync, List>("Appendix_04010000", data); - values[0] = "第一套第5日第{0}时段起始时间及费率号"; - return await Task.FromResult(values); + return await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_04010000), data, (values) => + { + values[0] = "第一套第5日第{0}时段起始时间及费率号"; + result?.Invoke(values); + }); } } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010006.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010006.cs index a31ae33..d7dc837 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010006.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010006.cs @@ -6,7 +6,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix /// /// 第一套第 6 日时段表数据 /// - public class Appendix_04010006 : IAnalysisStrategy, List> + public class Appendix_04010006 : IAnalysisStrategy> { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -17,11 +17,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix _analysisStrategyContext = analysisStrategyContext; } - public async Task> ExecuteAsync(List data) + public async Task ExecuteAsync(List data, Action? result = null) { - var values = await _analysisStrategyContext.ExecuteAsync, List>("Appendix_04010000", data); - values[0] = "第一套第6日第{0}时段起始时间及费率号"; - return await Task.FromResult(values); + return await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_04010000), data, (values) => + { + values[0] = "第一套第6日第{0}时段起始时间及费率号"; + result?.Invoke(values); + }); } } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010007.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010007.cs index 5142cf7..273d040 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010007.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010007.cs @@ -6,7 +6,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix /// /// 第一套第 7 日时段表数据 /// - public class Appendix_04010007 : IAnalysisStrategy, List> + public class Appendix_04010007 : IAnalysisStrategy> { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -16,11 +16,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix _logger = logger; _analysisStrategyContext = analysisStrategyContext; } - public async Task> ExecuteAsync(List data) + public async Task ExecuteAsync(List data, Action? result = null) { - var values = await _analysisStrategyContext.ExecuteAsync, List>("Appendix_04010000", data); - values[0] = "第一套第7日第{0}时段起始时间及费率号"; - return await Task.FromResult(values); + return await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_04010000), data, (values) => + { + values[0] = "第一套第7日第{0}时段起始时间及费率号"; + result?.Invoke(values); + }); } } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010008.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010008.cs index 0074290..70322b9 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010008.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_04010008.cs @@ -6,7 +6,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix /// /// 第一套第 8 日时段表数据 /// - public class Appendix_04010008 : IAnalysisStrategy, List> + public class Appendix_04010008 : IAnalysisStrategy> { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; @@ -17,11 +17,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix _analysisStrategyContext = analysisStrategyContext; } - public async Task> ExecuteAsync(List data) + public async Task ExecuteAsync(List data, Action? result = null) { - var values = await _analysisStrategyContext.ExecuteAsync, List>("Appendix_04010000", data); - values[0] = "第一套第8日第{0}时段起始时间及费率号"; - return await Task.FromResult(values); + return await _analysisStrategyContext.ExecuteAsync>(nameof(Appendix_04010000), data, (values) => + { + values[0] = "第一套第8日第{0}时段起始时间及费率号"; + result?.Invoke(values); + }); } } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A1.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A1.cs index 86d2149..05d45d9 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A1.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A1.cs @@ -4,7 +4,7 @@ using Microsoft.Extensions.Logging; namespace JiShe.CollectBus.Protocol.T37612012.Appendix { - public class Appendix_A1 : IAnalysisStrategy, string> + public class Appendix_A1 : IAnalysisStrategy> { private readonly ILogger _logger; @@ -13,7 +13,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix _logger = logger; } - public async Task ExecuteAsync(List data) + public async Task ExecuteAsync(List data, Action? result = null) { var seconds = data[0]; var minutes = data[1]; @@ -24,7 +24,8 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix var week = binString.Substring(0, 3).HexTo4BinZero(); var year = $"{DateTime.Now.ToString("yyyy").Substring(0, 2)}{data[5]}"; string date= $"{year}-{months.ToString().PadLeft(2, '0')}-{day} {hours}:{minutes}:{seconds}_{week}"; - return await Task.FromResult(date); + result?.Invoke(date); + return await Task.FromResult(true); } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A11.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A11.cs index 2713adb..4f6f6d9 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A11.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A11.cs @@ -7,7 +7,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix /// /// 附录A.11数据格式 /// - class Appendix_A11 : IAnalysisStrategy, decimal> + class Appendix_A11 : IAnalysisStrategy> { private readonly ILogger _logger; @@ -16,7 +16,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix _logger = logger; } - public async Task ExecuteAsync(List data) + public async Task ExecuteAsync(List data, Action? result = null) { decimal value = 0.00M; List decimalDCBList = new List(); @@ -29,7 +29,8 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix int CalcType = i > 0 ? 2 : 1; value += GetByteDCD(data[i].HexTo4BinZero(), CalcType, decimalDCBList[i]); } - return await Task.FromResult(value); + result?.Invoke(value); + return await Task.FromResult(true); } /// diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A13.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A13.cs index 51d73ab..a0c8cb6 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A13.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A13.cs @@ -7,7 +7,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix /// /// 附录A.13数据格式 /// - class Appendix_A13 : IAnalysisStrategy, decimal> + class Appendix_A13 : IAnalysisStrategy> { private readonly ILogger _logger; @@ -16,7 +16,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix _logger = logger; } - public async Task ExecuteAsync(List data) + public async Task ExecuteAsync(List data, Action? result = null) { decimal value = 0.00M; List decimalDCBList = new List(); @@ -29,7 +29,8 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix int CalcType = i > 1 ? 2 : 1; value += GetByteDCD(data[i].HexTo4BinZero(), CalcType, decimalDCBList[i]); } - return await Task.FromResult(value); + result?.Invoke(value); + return await Task.FromResult(true); } /// /// 附录A.13数据格式计算规则方法 diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A14.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A14.cs index 5d21ee8..66e7b97 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A14.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A14.cs @@ -7,7 +7,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix /// /// 附录A.14数据格式 /// - class Appendix_A14 : IAnalysisStrategy, decimal> + class Appendix_A14 : IAnalysisStrategy> { private readonly ILogger _logger; @@ -15,7 +15,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix { _logger = logger; } - public async Task ExecuteAsync(List data) + public async Task ExecuteAsync(List data, Action? result = null) { decimal value = 0.0000M; List decimalDCBList = new List(); @@ -29,7 +29,8 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix int CalcType = i > 1 ? 2 : 1; value += GetByteDCD(data[i].HexTo4BinZero(), CalcType, decimalDCBList[i]); } - return await Task.FromResult(value); + result?.Invoke(value); + return await Task.FromResult(true); } /// diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A15.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A15.cs index 284c3f6..527bdf6 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A15.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A15.cs @@ -3,7 +3,7 @@ using Microsoft.Extensions.Logging; namespace JiShe.CollectBus.Protocol.T37612012.Appendix { - public class Appendix_A15 : IAnalysisStrategy, string> + public class Appendix_A15 : IAnalysisStrategy> { private readonly ILogger _logger; @@ -12,12 +12,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix _logger = logger; } - public async Task ExecuteAsync(List data) + public async Task ExecuteAsync(List data, Action? result = null) { data.Reverse(); data.Insert(0, DateTime.Now.ToString("yyyy").Substring(0, 2)); string date= string.Join("", data); - return await Task.FromResult(date); + result?.Invoke(date); + return await Task.FromResult(true); } } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A17.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A17.cs index 942fc95..a7e65c5 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A17.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A17.cs @@ -2,13 +2,14 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix { - public class Appendix_A17 : IAnalysisStrategy, string> + public class Appendix_A17 : IAnalysisStrategy> { - public async Task ExecuteAsync(List data) + public async Task ExecuteAsync(List data, Action? result = null) { data.Reverse(); string datasStr= string.Join("", data); - return await Task.FromResult(datasStr); + result?.Invoke(datasStr); + return await Task.FromResult(true); } } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A23.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A23.cs index 1a6efb5..ac58633 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A23.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A23.cs @@ -3,10 +3,10 @@ using JiShe.CollectBus.Protocol.Interfaces; namespace JiShe.CollectBus.Protocol.T37612012.Appendix { - public class Appendix_A23 : IAnalysisStrategy, decimal> + public class Appendix_A23 : IAnalysisStrategy> { - public async Task ExecuteAsync(List data) + public async Task ExecuteAsync(List data, Action? result = null) { decimal value = 0.000M; if (data[0].Check3761Byte()) @@ -15,7 +15,8 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix value += GetValue(0, 4, 10M, 4, 4, 100M, data[1], 1); if (data[2].Check3761Byte()) value += GetValue(0, 4, 10M, 4, 4, 1M, data[2], 0); - return await Task.FromResult(value); + result?.Invoke(value); + return await Task.FromResult(true); } /// /// 解析值 diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A25.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A25.cs index 3cda672..9cbeb28 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A25.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A25.cs @@ -3,9 +3,9 @@ using JiShe.CollectBus.Protocol.Interfaces; namespace JiShe.CollectBus.Protocol.T37612012.Appendix { - public class Appendix_A25 : IAnalysisStrategy, decimal> + public class Appendix_A25 : IAnalysisStrategy> { - public async Task ExecuteAsync(List data) + public async Task ExecuteAsync(List data, Action? result = null) { decimal value = 0.000M; string binString = string.Empty; @@ -26,7 +26,8 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix int sign = Convert.ToInt32(binString.Substring(0, 1));//正负值标记 value = sign == 0 ? value * 1 : value * -1; } - return await Task.FromResult(value); + result?.Invoke(value); + return await Task.FromResult(true); } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A5.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A5.cs index 3815e85..8dec6b4 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A5.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A5.cs @@ -3,9 +3,9 @@ using JiShe.CollectBus.Protocol.Interfaces; namespace JiShe.CollectBus.Protocol.T37612012.Appendix { - public class Appendix_A5 : IAnalysisStrategy, decimal> + public class Appendix_A5 : IAnalysisStrategy> { - public async Task ExecuteAsync(List data) + public async Task ExecuteAsync(List data, Action? result = null) { decimal value = 0.0M; string binString = string.Empty; @@ -21,7 +21,8 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix int sign = Convert.ToInt32(binString.Substring(0, 1));//正负值标记 value = sign == 0 ? value * 1 : value * -1; } - return await Task.FromResult(value); + result?.Invoke(value); + return await Task.FromResult(true); } } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A7.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A7.cs index b75d733..86704b4 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A7.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A7.cs @@ -3,10 +3,10 @@ using JiShe.CollectBus.Protocol.Interfaces; namespace JiShe.CollectBus.Protocol.T37612012.Appendix { - public class Appendix_A7 : IAnalysisStrategy, decimal> + public class Appendix_A7 : IAnalysisStrategy> { - public async Task ExecuteAsync(List data) + public async Task ExecuteAsync(List data, Action? result = null) { decimal value = 0.0M; string binString = string.Empty; @@ -21,7 +21,8 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix if (binString.Check3761Byte()) value += (binString.Substring(0, 4).BinToDec() * 100M) + (binString.Substring(4, 4).BinToDec() * 10M); } - return await Task.FromResult(value); + result?.Invoke(value); + return await Task.FromResult(true); } } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A9.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A9.cs index a3a0b38..28082c9 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A9.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/Appendix/Appendix_A9.cs @@ -3,10 +3,10 @@ using JiShe.CollectBus.Protocol.Interfaces; namespace JiShe.CollectBus.Protocol.T37612012.Appendix { - public class Appendix_A9 : IAnalysisStrategy, decimal> + public class Appendix_A9 : IAnalysisStrategy> { - public async Task ExecuteAsync(List data) + public async Task ExecuteAsync(List data, Action? result = null) { decimal value = 0.0000M; string binString = string.Empty; @@ -29,7 +29,8 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix int sign = Convert.ToInt32(binString.Substring(0, 1));//正负值标记 value = sign == 0 ? value * 1 : value * -1; } - return await Task.FromResult(value); + result?.Invoke(value); + return await Task.FromResult(true); } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/CollectBusProtocolT37612012Module.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/CollectBusProtocolT37612012Module.cs index 53ec062..d38b2ea 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/CollectBusProtocolT37612012Module.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/CollectBusProtocolT37612012Module.cs @@ -12,8 +12,10 @@ namespace JiShe.CollectBus.Protocol.T37612012 public override void ConfigureServices(ServiceConfigurationContext context) { context.Services.AddKeyedSingleton(nameof(T37612012ProtocolPlugin)); - //RegisterProtocolAnalysis(context.Services); - LoadAnalysisStrategy(context.Services); + + // TODO:先用之前的策略注册方式,后续验证后采用LoadAnalysisStrategy + RegisterProtocolAnalysis(context.Services); + //LoadAnalysisStrategy(context.Services); } public override async Task OnApplicationInitializationAsync(ApplicationInitializationContext context) @@ -31,8 +33,9 @@ namespace JiShe.CollectBus.Protocol.T37612012 public void LoadAnalysisStrategy(IServiceCollection services) { + services.AddTransient(); var assembly = Assembly.GetExecutingAssembly(); - var analysisStrategyTypes = assembly.GetTypes().Where(t => !t.IsAbstract && !t.IsInterface && t.GetInterfaces().Any(i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IAnalysisStrategy<,>))); + var analysisStrategyTypes = assembly.GetTypes().Where(t => !t.IsAbstract && !t.IsInterface && t.GetInterfaces().Any(i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IAnalysisStrategy<>))); foreach (var analysisStrategyType in analysisStrategyTypes) { var service = analysisStrategyType.GetInterfaces().First(); @@ -43,7 +46,7 @@ namespace JiShe.CollectBus.Protocol.T37612012 public void RegisterProtocolAnalysis(IServiceCollection services) { // 扫描并注册所有策略 - var strategyMetadata = new Dictionary<(string, Type, Type), Type>(); + var strategyMetadata = new Dictionary<(string, Type), Type>(); services.AddTransient(); // 批量注册 @@ -61,19 +64,19 @@ namespace JiShe.CollectBus.Protocol.T37612012 .FirstOrDefault(a => a.GetName().FullName == assemblyName.FullName); var assembly = existingAssembly ?? Assembly.LoadFrom(file); // 实现IAnalysisStrategy接口 - var analysisStrategyTypes = assembly.GetTypes().Where(t => !t.IsAbstract && !t.IsInterface && t.GetInterfaces().Any(i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IAnalysisStrategy<,>))); + var analysisStrategyTypes = assembly.GetTypes().Where(t => !t.IsAbstract && !t.IsInterface && t.GetInterfaces().Any(i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IAnalysisStrategy<>))); if (!analysisStrategyTypes.Any()) continue; foreach (var analysisStrategyType in analysisStrategyTypes) { // 通过反射获取静态元数据 var strategyType = analysisStrategyType.Name; - var genericArgs = analysisStrategyType.GetInterface($"IAnalysisStrategy`2")!.GetGenericArguments(); + var genericArgs = analysisStrategyType.GetInterface($"IAnalysisStrategy`1")!.GetGenericArguments(); var inputType = genericArgs[0]; - var resultType = genericArgs[1]; // 注册策略实现 services.AddTransient(analysisStrategyType); - strategyMetadata[(strategyType, inputType, resultType)] = analysisStrategyType; + strategyMetadata[(strategyType, inputType)] = analysisStrategyType; + } } @@ -81,22 +84,20 @@ namespace JiShe.CollectBus.Protocol.T37612012 services.AddSingleton(strategyMetadata); // 注册策略解析工厂 - services.AddTransient>(provider => (name, inputType, resultType) => + services.AddTransient>(provider => (name, inputType) => { - var metadata = provider.GetRequiredService>(); - if (metadata.TryGetValue((name, inputType, resultType), out var strategyType)) + var metadata = provider.GetRequiredService>(); + if (metadata.TryGetValue((name, inputType), out var strategyType)) { return provider.GetRequiredService(strategyType); } else { var logger = provider.GetRequiredService>(); - logger.LogWarning($"未能找到解析策略:{name}-{inputType}-{resultType}"); + logger.LogWarning($"未能找到解析策略:{name}-{inputType}"); return null; } }); - - } } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/T37612012ProtocolPlugin.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/T37612012ProtocolPlugin.cs index 25ed0fb..fd8a925 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/T37612012ProtocolPlugin.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/T37612012ProtocolPlugin.cs @@ -112,8 +112,8 @@ namespace JiShe.CollectBus.Protocol.T37612012 return; } // 登录心跳已做了处理,故需要忽略登录和心跳帧 - if (tB3761.DT.Fn == (int)FN.登录 || tB3761.DT.Fn == (int)FN.心跳) - return; + //if (tB3761.DT.Fn == (int)FN.登录 || tB3761.DT.Fn == (int)FN.心跳) + // return; //TODO:根据AFN进行分流推送到kafka string topicName = string.Format(ProtocolConst.AFNTopicNameFormat, tB3761.AFN_FC.AFN.ToString().PadLeft(2, '0')); tB3761.MessageId = Guid.NewGuid().ToString(); @@ -392,13 +392,14 @@ namespace JiShe.CollectBus.Protocol.T37612012 } else { + BaseHexMessage baseHexMessage = new BaseHexMessage + { + HexMessageList = hexStringList + }; + baseHexMessage.HexMessageString = string.Join(" ", baseHexMessage.HexMessageList); TB3761 tB3761 = new TB3761 { - BaseHexMessage = new BaseHexMessage - { - HexMessageString = messageReceived, - HexMessageList = hexStringList - }, + BaseHexMessage=baseHexMessage, C = Analysis_C(hexStringList), A = Analysis_A(hexStringList), AFN_FC = Analysis_AFN_FC(hexStringList), @@ -432,9 +433,7 @@ namespace JiShe.CollectBus.Protocol.T37612012 { HexMessageList = hexStringList.GetRange(6, 1) // 控制域 1字节 }; - baseHexMessage.HexMessageString = string.Join("", baseHexMessage.HexMessageList); - if (baseHexMessage.HexMessageList.Count == 0) - return null; + baseHexMessage.HexMessageString = string.Join(" ", baseHexMessage.HexMessageList); string binStr = baseHexMessage.HexMessageString.HexTo4BinZero(); c = new C { @@ -472,7 +471,7 @@ namespace JiShe.CollectBus.Protocol.T37612012 { HexMessageList = hexStringList.GetRange(7, 5) // 地址域 5个字节 }; - baseHexMessage.HexMessageString = string.Join("", baseHexMessage.HexMessageList); + baseHexMessage.HexMessageString = string.Join(" ", baseHexMessage.HexMessageList); a = new A { BaseHexMessage = baseHexMessage, @@ -509,7 +508,7 @@ namespace JiShe.CollectBus.Protocol.T37612012 { HexMessageList = hexAList.GetRange(4, 1) // 站地址和组地址标志A3 1个字节 }; - baseHexMessage.HexMessageString = string.Join("", baseHexMessage.HexMessageList); + baseHexMessage.HexMessageString = string.Join(" ", baseHexMessage.HexMessageList); var binStr = baseHexMessage.HexMessageString.HexTo4BinZero(); a3 = new A3 { @@ -536,14 +535,14 @@ namespace JiShe.CollectBus.Protocol.T37612012 AFN_FC aFN_FC = new AFN_FC(); try { - if (hexStringList.Count > 0) + if (hexStringList.Count > 12) { BaseHexMessage baseHexMessage = new BaseHexMessage { HexMessageList = hexStringList.GetRange(12, 1) //AFN功能码 1个字节 }; - baseHexMessage.HexMessageString = string.Join("", baseHexMessage.HexMessageList); + baseHexMessage.HexMessageString = string.Join(" ", baseHexMessage.HexMessageList); aFN_FC = new AFN_FC { @@ -570,13 +569,13 @@ namespace JiShe.CollectBus.Protocol.T37612012 SEQ seq = new SEQ(); try { - if (hexStringList.Count != 0) + if (hexStringList.Count>13) { BaseHexMessage baseHexMessage = new BaseHexMessage { HexMessageList = hexStringList.GetRange(13, 1) //帧序列域 SEQ 1个字节 }; - baseHexMessage.HexMessageString = string.Join("", baseHexMessage.HexMessageList); + baseHexMessage.HexMessageString = string.Join(" ", baseHexMessage.HexMessageList); var binStr = baseHexMessage.HexMessageString.HexTo4BinZero(); seq = new SEQ { @@ -605,13 +604,13 @@ namespace JiShe.CollectBus.Protocol.T37612012 UnitData unitData = new UnitData(); try { - if (hexStringList.Count != 0) + if (hexStringList.Count>14) { unitData = new UnitData { HexMessageList = hexStringList.GetRange(14, hexStringList.Count - 14 - 2) //总数字节数-固定长度报文头-控制域C-地址域A-校验和CS-结束字符(16H) }; - unitData.HexMessageString = string.Join("", unitData.HexMessageList); + unitData.HexMessageString = string.Join(" ", unitData.HexMessageList); } } catch (Exception ex) @@ -630,13 +629,13 @@ namespace JiShe.CollectBus.Protocol.T37612012 DA da = new DA(); try { - if (hexStringList.Count != 0) + if (hexStringList.Count > 14) { BaseHexMessage baseHexMessage = new BaseHexMessage { HexMessageList = hexStringList.GetRange(14, 2) //信息点DA Pn 2个字节 }; - baseHexMessage.HexMessageString = string.Join("", baseHexMessage.HexMessageList); + baseHexMessage.HexMessageString = string.Join(" ", baseHexMessage.HexMessageList); var da1 = baseHexMessage.HexMessageList[0]; var da2 = baseHexMessage.HexMessageList[1]; da = new DA() @@ -662,13 +661,13 @@ namespace JiShe.CollectBus.Protocol.T37612012 DT dt = new DT(); try { - if (hexStringList.Count != 0) + if (hexStringList.Count > 16) { BaseHexMessage baseHexMessage = new BaseHexMessage { HexMessageList = hexStringList.GetRange(16, 2) //信息类DT Fn 2个字节 }; - baseHexMessage.HexMessageString = string.Join("", baseHexMessage.HexMessageList); + baseHexMessage.HexMessageString = string.Join(" ", baseHexMessage.HexMessageList); var dt1 = baseHexMessage.HexMessageList[0]; var dt2 = baseHexMessage.HexMessageList[1]; dt = new DT() diff --git a/protocols/JiShe.CollectBus.Protocol/AnalysisStrategyContext.cs b/protocols/JiShe.CollectBus.Protocol/AnalysisStrategyContext.cs index cb66bcf..2485f2b 100644 --- a/protocols/JiShe.CollectBus.Protocol/AnalysisStrategyContext.cs +++ b/protocols/JiShe.CollectBus.Protocol/AnalysisStrategyContext.cs @@ -12,17 +12,16 @@ namespace JiShe.CollectBus.Protocol /// 执行策略 /// /// - /// /// /// + /// /// - public Task ExecuteAsync(string type, TInput input) + public async Task ExecuteAsync(string type, TInput input,Action? result=null) { - var factory = _provider.GetRequiredService>(); - var strategy = (IAnalysisStrategy)factory(type, typeof(TInput), typeof(TResult)); - return strategy.ExecuteAsync(input); + var factory = _provider.GetRequiredService>(); + var strategy = (IAnalysisStrategy)factory(type, typeof(TInput)); + return await strategy.ExecuteAsync(input, result); } + } - - } diff --git a/protocols/JiShe.CollectBus.Protocol/Interfaces/IAnalysisStrategy.cs b/protocols/JiShe.CollectBus.Protocol/Interfaces/IAnalysisStrategy.cs index 0066c19..7be9cbc 100644 --- a/protocols/JiShe.CollectBus.Protocol/Interfaces/IAnalysisStrategy.cs +++ b/protocols/JiShe.CollectBus.Protocol/Interfaces/IAnalysisStrategy.cs @@ -1,7 +1,9 @@ -namespace JiShe.CollectBus.Protocol.Interfaces +using JiShe.CollectBus.Protocol.Dto; + +namespace JiShe.CollectBus.Protocol.Interfaces { - public interface IAnalysisStrategy + public interface IAnalysisStrategy { - Task ExecuteAsync(TInput input); + Task ExecuteAsync(TInput input, Action? result = null); } } diff --git a/services/JiShe.CollectBus.Application/ScheduledMeterReading/BasicScheduledMeterReadingService.cs b/services/JiShe.CollectBus.Application/ScheduledMeterReading/BasicScheduledMeterReadingService.cs index a159326..a4d1749 100644 --- a/services/JiShe.CollectBus.Application/ScheduledMeterReading/BasicScheduledMeterReadingService.cs +++ b/services/JiShe.CollectBus.Application/ScheduledMeterReading/BasicScheduledMeterReadingService.cs @@ -839,7 +839,74 @@ namespace JiShe.CollectBus.ScheduledMeterReading throw; } } - + + /// + /// 电表监控重试抄读任务 + /// + /// + /// + public virtual async Task AmmeterScheduledRetryReading(RetryReadingEnum retryReadingEnum) + { + // 根据任务获取不同的锁 + var tryLock = FreeRedisProvider.Instance.Lock(retryReadingEnum.ToString(), 10); + try + { + if (tryLock != null) + { + // 轮询IotDB未成果下发电表数据 + var conditions = new List(); + // 下次发布时间小于等于当前时间 + conditions.Add(new QueryCondition() + { + Field = "NextSendTime", + Operator = "<", + IsNumber = false, + Value = DateTime.Now + }); + // 重试次数少于3次 + conditions.Add(new QueryCondition() + { + Field = "SendNum", + Operator = "<", + IsNumber = true, + Value = 3 + }); + //已发布的 + conditions.Add(new QueryCondition() + { + Field = "IsSend", + Operator = "=", + IsNumber = false, + Value = true + }); + // 未响应 + conditions.Add(new QueryCondition() + { + Field = "IsReceived", + Operator = "=", + IsNumber = false, + Value = false + }); + await CreateMeterKafkaTaskMessage(ProtocolConst.AmmeterSubscriberWorkerRetryEventName, new IoTDBQueryOptions() + { + TableNameOrTreePath = DevicePathBuilder.GetTableName(), + PageIndex = 1, + PageSize = pageSize, + Conditions = conditions, + }); + // 释放锁 + tryLock.Unlock(); + } + + } + catch(Exception) + { + // 释放锁 + tryLock.Unlock(); + throw; + } + } + #endregion @@ -1414,7 +1481,7 @@ namespace JiShe.CollectBus.ScheduledMeterReading deviceIdSelector: data => data.DeviceId, processor: (data, groupIndex) => { - _ = KafkaProducerIssuedMessageAction(ProtocolConst.AmmeterSubscriberWorkerFifteenMinuteIssuedEventName, data, groupIndex); + _ = KafkaProducerIssuedMessageAction(kafkaTopicName, data, groupIndex); } ); diff --git a/services/JiShe.CollectBus.Application/Subscribers/SubscriberAnalysisAppService.cs b/services/JiShe.CollectBus.Application/Subscribers/SubscriberAnalysisAppService.cs index d7ec7c1..bf90f7f 100644 --- a/services/JiShe.CollectBus.Application/Subscribers/SubscriberAnalysisAppService.cs +++ b/services/JiShe.CollectBus.Application/Subscribers/SubscriberAnalysisAppService.cs @@ -14,6 +14,7 @@ using System; using System.Threading.Tasks; using JiShe.CollectBus.Protocol; using TouchSocket.Sockets; +using JiShe.CollectBus.Protocol.Dto; namespace JiShe.CollectBus.Subscribers { @@ -70,7 +71,7 @@ namespace JiShe.CollectBus.Subscribers //var data = await analysisStrategy.ExecuteAsync>(tB3761); var executor = _serviceProvider.GetRequiredService(); - await executor.ExecuteAsync(serverName, receivedMessage.Data); + await executor.ExecuteAsync(serverName, receivedMessage.Data); } return SubscribeAck.Fail(); @@ -106,7 +107,7 @@ namespace JiShe.CollectBus.Subscribers //var data = await analysisStrategy.ExecuteAsync>(tB3761); var executor = _serviceProvider.GetRequiredService(); - await executor.ExecuteAsync(serverName, receivedMessage.Data); + await executor.ExecuteAsync(serverName, receivedMessage.Data); } return SubscribeAck.Fail(); @@ -143,10 +144,14 @@ namespace JiShe.CollectBus.Subscribers //var data = await analysisStrategy.ExecuteAsync>(tB3761); var executor = _serviceProvider.GetRequiredService(); - await executor.ExecuteAsync(serverName, receivedMessage.Data); + await executor.ExecuteAsync(serverName, receivedMessage.Data, (result) => + { + var ssss = (UnitDataAnalysis)result; + }); + return SubscribeAck.Success(); } - return SubscribeAck.Fail(); + } @@ -180,7 +185,8 @@ namespace JiShe.CollectBus.Subscribers //var data = await analysisStrategy.ExecuteAsync>(tB3761); var executor = _serviceProvider.GetRequiredService(); - await executor.ExecuteAsync(serverName, receivedMessage.Data); + await executor.ExecuteAsync(serverName, receivedMessage.Data); + return SubscribeAck.Success(); } return SubscribeAck.Fail(); @@ -217,7 +223,8 @@ namespace JiShe.CollectBus.Subscribers //var data = await analysisStrategy.ExecuteAsync>(tB3761); var executor = _serviceProvider.GetRequiredService(); - await executor.ExecuteAsync(serverName, receivedMessage.Data); + await executor.ExecuteAsync(serverName, receivedMessage.Data); + return SubscribeAck.Success(); } return SubscribeAck.Fail(); @@ -254,7 +261,8 @@ namespace JiShe.CollectBus.Subscribers //var data = await analysisStrategy.ExecuteAsync>(tB3761); var executor = _serviceProvider.GetRequiredService(); - await executor.ExecuteAsync(serverName, receivedMessage.Data); + await executor.ExecuteAsync(serverName, receivedMessage.Data); + return SubscribeAck.Success(); } return SubscribeAck.Fail(); @@ -291,7 +299,8 @@ namespace JiShe.CollectBus.Subscribers //var data = await analysisStrategy.ExecuteAsync>(tB3761); var executor = _serviceProvider.GetRequiredService(); - await executor.ExecuteAsync(serverName, receivedMessage.Data); + await executor.ExecuteAsync(serverName, receivedMessage.Data); + return SubscribeAck.Success(); } return SubscribeAck.Fail(); @@ -327,7 +336,8 @@ namespace JiShe.CollectBus.Subscribers //var data = await analysisStrategy.ExecuteAsync>(tB3761); var executor = _serviceProvider.GetRequiredService(); - await executor.ExecuteAsync(serverName, receivedMessage.Data); + await executor.ExecuteAsync(serverName, receivedMessage.Data); + return SubscribeAck.Success(); } return SubscribeAck.Fail(); @@ -363,7 +373,8 @@ namespace JiShe.CollectBus.Subscribers //var data = await analysisStrategy.ExecuteAsync>(tB3761); var executor = _serviceProvider.GetRequiredService(); - await executor.ExecuteAsync(serverName, receivedMessage.Data); + await executor.ExecuteAsync(serverName, receivedMessage.Data); + return SubscribeAck.Success(); } return SubscribeAck.Fail(); @@ -399,7 +410,8 @@ namespace JiShe.CollectBus.Subscribers //var data = await analysisStrategy.ExecuteAsync>(tB3761); var executor = _serviceProvider.GetRequiredService(); - await executor.ExecuteAsync(serverName, receivedMessage.Data); + await executor.ExecuteAsync(serverName, receivedMessage.Data); + return SubscribeAck.Success(); } return SubscribeAck.Fail(); @@ -436,7 +448,8 @@ namespace JiShe.CollectBus.Subscribers //var data = await analysisStrategy.ExecuteAsync>(tB3761); var executor = _serviceProvider.GetRequiredService(); - await executor.ExecuteAsync(serverName, receivedMessage.Data); + await executor.ExecuteAsync(serverName, receivedMessage.Data); + return SubscribeAck.Success(); } return SubscribeAck.Fail(); @@ -473,7 +486,8 @@ namespace JiShe.CollectBus.Subscribers //var data = await analysisStrategy.ExecuteAsync>(tB3761); var executor = _serviceProvider.GetRequiredService(); - await executor.ExecuteAsync(serverName, receivedMessage.Data); + await executor.ExecuteAsync(serverName, receivedMessage.Data); + return SubscribeAck.Success(); } return SubscribeAck.Fail(); @@ -510,7 +524,8 @@ namespace JiShe.CollectBus.Subscribers //var data = await analysisStrategy.ExecuteAsync>(tB3761); var executor = _serviceProvider.GetRequiredService(); - await executor.ExecuteAsync(serverName, receivedMessage.Data); + await executor.ExecuteAsync(serverName, receivedMessage.Data); + return SubscribeAck.Success(); } return SubscribeAck.Fail(); diff --git a/services/JiShe.CollectBus.Application/Subscribers/WorkerSubscriberAppService.cs b/services/JiShe.CollectBus.Application/Subscribers/WorkerSubscriberAppService.cs index 7680d44..ea2234e 100644 --- a/services/JiShe.CollectBus.Application/Subscribers/WorkerSubscriberAppService.cs +++ b/services/JiShe.CollectBus.Application/Subscribers/WorkerSubscriberAppService.cs @@ -86,6 +86,39 @@ namespace JiShe.CollectBus.Subscribers _logger.LogInformation("电表自动阀控下行消息消费队列开始处理"); return await SendMessagesAsync(receivedMessage); } + + /// + /// 重试电表下行消息消费队列 + /// + /// + /// + [KafkaSubscribe(ProtocolConst.AmmeterSubscriberWorkerRetryEventName)] + public async Task AmmeterScheduledMeterRetryReadingEvent(MeterReadingTelemetryPacketInfo receivedMessage) + { + _logger.LogInformation("重试电表数据下行消息消费队列开始处理"); + //return await SendMessagesAsync(receivedMessage); + try + { + var checkResult = _tcpService.ClientExists(receivedMessage.FocusAddress); + if (checkResult) + { + await _tcpService.SendAsync(receivedMessage.FocusAddress, Convert.FromHexString(receivedMessage.IssuedMessageHexString)); + receivedMessage.IsSend = true; + // 增加·发送次数和重试开始时间 + receivedMessage.SendNum += 1; + receivedMessage.NextSendTime = DateTime.Now.AddHours(1); + await _dbProvider.InsertAsync(receivedMessage); + // TODO: 第4次的时候会推送到地方预警处理 + } + // 由于有3次重试机会,故每次消息都会被确认 + return SubscribeAck.Success(); + } + catch (Exception) + { + throw; + } + } + #endregion #region 水表消息采集 @@ -117,8 +150,9 @@ namespace JiShe.CollectBus.Subscribers await _tcpService.SendAsync(receivedMessage.FocusAddress, Convert.FromHexString(receivedMessage.IssuedMessageHexString)); receivedMessage.IsSend = true; + // 增加·发送次数和重试开始时间 receivedMessage.SendNum += 1; - receivedMessage.NextSendTime = DateTime.Now.AddMinutes(5); + receivedMessage.NextSendTime = DateTime.Now.AddHours(1); await _dbProvider.InsertAsync(receivedMessage); return SubscribeAck.Success(); diff --git a/services/JiShe.CollectBus.Application/Workers/DataDetectionFifteenMinuteWorker.cs b/services/JiShe.CollectBus.Application/Workers/DataDetectionFifteenMinuteWorker.cs new file mode 100644 index 0000000..7e991ce --- /dev/null +++ b/services/JiShe.CollectBus.Application/Workers/DataDetectionFifteenMinuteWorker.cs @@ -0,0 +1,39 @@ +using JiShe.CollectBus.ScheduledMeterReading; +using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using Volo.Abp.BackgroundWorkers.Hangfire; +using Volo.Abp.DependencyInjection; + +namespace JiShe.CollectBus.Workers +{ + /// + /// 定时数据检测1小时一次 + /// + public class DataDetectionFifteenMinuteWorker : HangfireBackgroundWorkerBase, ITransientDependency, ICollectWorker + { + + private readonly ILogger _logger; + private readonly IScheduledMeterReadingService _scheduledMeterReadingService; + + public DataDetectionFifteenMinuteWorker(ILogger logger, IScheduledMeterReadingService scheduledMeterReadingService) + { + _logger = logger; + RecurringJobId = nameof(CreateToBeIssueTaskWorker); + CronExpression = "0 0 0/1 * * ?"; + TimeZone = TimeZoneInfo.Local; + this._scheduledMeterReadingService = scheduledMeterReadingService; + } + + + public override Task DoWorkAsync(CancellationToken cancellationToken = default) + { + //throw new NotImplementedException(); + return Task.CompletedTask; + } + } +} diff --git a/services/JiShe.CollectBus.Domain/IotSystems/MeterReadingRecords/MeterReadingTelemetryPacketInfo.cs b/services/JiShe.CollectBus.Domain/IotSystems/MeterReadingRecords/MeterReadingTelemetryPacketInfo.cs index 1b5c954..d26aed7 100644 --- a/services/JiShe.CollectBus.Domain/IotSystems/MeterReadingRecords/MeterReadingTelemetryPacketInfo.cs +++ b/services/JiShe.CollectBus.Domain/IotSystems/MeterReadingRecords/MeterReadingTelemetryPacketInfo.cs @@ -132,7 +132,7 @@ namespace JiShe.CollectBus.IotSystems.MeterReadingRecords /// 发送次数 /// [FIELDColumn] - public int SendNum { get; set; } + public int SendNum { get; set; }=0; /// /// 下次发送时间 diff --git a/shared/JiShe.CollectBus.Common/Consts/ProtocolConst.cs b/shared/JiShe.CollectBus.Common/Consts/ProtocolConst.cs index 6af0fd0..95c2c44 100644 --- a/shared/JiShe.CollectBus.Common/Consts/ProtocolConst.cs +++ b/shared/JiShe.CollectBus.Common/Consts/ProtocolConst.cs @@ -65,7 +65,12 @@ namespace JiShe.CollectBus.Common.Consts /// 电表手动抄读 /// public const string AmmeterSubscriberWorkerManualValveReadingIssuedEventName = "issued.manual.reading.ammeter.event"; - + + /// + /// 采集电表数据重试下行消息主题 + /// + public const string AmmeterSubscriberWorkerRetryEventName = "issued.retry.ammeter.event"; + #endregion #region 水表消息主题 diff --git a/shared/JiShe.CollectBus.Common/Enums/RetryReadingEnum.cs b/shared/JiShe.CollectBus.Common/Enums/RetryReadingEnum.cs new file mode 100644 index 0000000..ee7a388 --- /dev/null +++ b/shared/JiShe.CollectBus.Common/Enums/RetryReadingEnum.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace JiShe.CollectBus.Common.Enums +{ + /// + /// 监控重试类型 + /// + public enum RetryReadingEnum + { + /// + /// 1分钟 + /// + OneMinute, + + /// + /// 5分钟 + /// + FiveMinute, + + /// + /// 15分钟 + /// + FifteenMinute, + + } +} diff --git a/web/JiShe.CollectBus.Host/Pages/Monitor.cshtml b/web/JiShe.CollectBus.Host/Pages/Monitor.cshtml index 795d181..fa35bce 100644 --- a/web/JiShe.CollectBus.Host/Pages/Monitor.cshtml +++ b/web/JiShe.CollectBus.Host/Pages/Monitor.cshtml @@ -16,7 +16,6 @@ 后端服务 - diff --git a/web/JiShe.CollectBus.Host/appsettings.json b/web/JiShe.CollectBus.Host/appsettings.json index 834d2e3..397fb10 100644 --- a/web/JiShe.CollectBus.Host/appsettings.json +++ b/web/JiShe.CollectBus.Host/appsettings.json @@ -80,7 +80,7 @@ "SaslPassword": "lixiao1980", "KafkaReplicationFactor": 3, "NumPartitions": 30, - "ServerTagName": "JiSheCollectBus5", + "ServerTagName": "JiSheCollectBus99", "FirstCollectionTime": "2025-04-22 16:07:00" }, "IoTDBOptions": {