diff --git a/modules/JiShe.CollectBus.Analyzers/ComplexTypeSourceAnalyzers.cs b/modules/JiShe.CollectBus.Analyzers/ComplexTypeSourceAnalyzers.cs index 44ab9d5..20951e5 100644 --- a/modules/JiShe.CollectBus.Analyzers/ComplexTypeSourceAnalyzers.cs +++ b/modules/JiShe.CollectBus.Analyzers/ComplexTypeSourceAnalyzers.cs @@ -13,7 +13,7 @@ namespace JiShe.CollectBus.IncrementalGenerator [Generator(LanguageNames.CSharp)] public class ComplexTypeSourceAnalyzers : IIncrementalGenerator { - private const string AttributeFullName = "JiShe.CollectBus.Analyzers.Shared.GenerateAccessorsAttribute"; + private const string AttributeFullName = "JiShe.CollectBus.Analyzers.Shared.SourceAnalyzersAttribute"; public void Initialize(IncrementalGeneratorInitializationContext context) { diff --git a/modules/JiShe.CollectBus.Analyzers/ISourceAnalyzersProvider.cs b/modules/JiShe.CollectBus.Analyzers/ISourceAnalyzersProvider.cs deleted file mode 100644 index ed2ce4e..0000000 --- a/modules/JiShe.CollectBus.Analyzers/ISourceAnalyzersProvider.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace JiShe.CollectBus.Analyzers -{ - internal class ISourceAnalyzersProvider - { - } -} diff --git a/modules/JiShe.CollectBus.IoTDB/Model/TableModelSingleMeasuringEntity.cs b/modules/JiShe.CollectBus.IoTDB/Model/TableModelSingleMeasuringEntity.cs index ed3824d..966f226 100644 --- a/modules/JiShe.CollectBus.IoTDB/Model/TableModelSingleMeasuringEntity.cs +++ b/modules/JiShe.CollectBus.IoTDB/Model/TableModelSingleMeasuringEntity.cs @@ -8,7 +8,7 @@ namespace JiShe.CollectBus.IoTDB.Model /// Table模型单项数据实体 /// [EntityType(EntityTypeEnum.TableModel)] - [GenerateAccessors] + [SourceAnalyzers] public class TableModelSingleMeasuringEntity : IoTEntity { /// diff --git a/modules/JiShe.CollectBus.IoTDB/Model/TreeModelSingleMeasuringEntity.cs b/modules/JiShe.CollectBus.IoTDB/Model/TreeModelSingleMeasuringEntity.cs index c6b1418..719c3c3 100644 --- a/modules/JiShe.CollectBus.IoTDB/Model/TreeModelSingleMeasuringEntity.cs +++ b/modules/JiShe.CollectBus.IoTDB/Model/TreeModelSingleMeasuringEntity.cs @@ -8,7 +8,7 @@ namespace JiShe.CollectBus.IoTDB.Model /// Tree模型单项数据实体 /// [EntityType(EntityTypeEnum.TreeModel)] - [GenerateAccessors] + [SourceAnalyzers] public class TreeModelSingleMeasuringEntity : IoTEntity { /// diff --git a/services/JiShe.CollectBus.Application.Contracts/ScheduledMeterReading/IScheduledMeterReadingService.cs b/services/JiShe.CollectBus.Application.Contracts/ScheduledMeterReading/IScheduledMeterReadingService.cs index 1a06897..4dde0be 100644 --- a/services/JiShe.CollectBus.Application.Contracts/ScheduledMeterReading/IScheduledMeterReadingService.cs +++ b/services/JiShe.CollectBus.Application.Contracts/ScheduledMeterReading/IScheduledMeterReadingService.cs @@ -124,7 +124,7 @@ namespace JiShe.CollectBus.ScheduledMeterReading /// 水表数据采集 /// /// - Task WatermeterScheduledMeterAutoReading(); + Task WatermeterScheduledMeterAutoReadding(); #endregion diff --git a/services/JiShe.CollectBus.Application/ScheduledMeterReading/BasicScheduledMeterReadingService.cs b/services/JiShe.CollectBus.Application/ScheduledMeterReading/BasicScheduledMeterReadingService.cs index 0b5f28a..f9ad966 100644 --- a/services/JiShe.CollectBus.Application/ScheduledMeterReading/BasicScheduledMeterReadingService.cs +++ b/services/JiShe.CollectBus.Application/ScheduledMeterReading/BasicScheduledMeterReadingService.cs @@ -709,7 +709,8 @@ namespace JiShe.CollectBus.ScheduledMeterReading itemCode: tempItem, subItemCode: null, pendingCopyReadTime: currentTime, - creationTime: currentTime); + creationTime: currentTime, + packetType: (TelemetryPacketTypeEnum)timeDensity); taskList.Add(meterReadingRecords); } @@ -791,7 +792,8 @@ namespace JiShe.CollectBus.ScheduledMeterReading itemCode: itemCode, subItemCode: subItemCode, pendingCopyReadTime: currentTime, - creationTime: currentTime); + creationTime: currentTime, + packetType: TelemetryPacketTypeEnum.AmmeterAutomaticVerificationTime); taskList.Add(meterReadingRecords); if (taskList == null || taskList.Count <= 0) @@ -855,7 +857,7 @@ namespace JiShe.CollectBus.ScheduledMeterReading _logger.LogError($"{nameof(AmmeterScheduledAutoValveControl)} 定时阀控运行时间{currentTime}没有找到对应的协议组件,-105"); return; } - + foreach (var item in DayFreezeCodes) { ProtocolBuildResponse builderResponse = await protocolPlugin.BuildAsync(new ProtocolBuildRequest() @@ -872,10 +874,11 @@ namespace JiShe.CollectBus.ScheduledMeterReading itemCode: item, subItemCode: null, pendingCopyReadTime: currentTime, - creationTime: currentTime); + creationTime: currentTime, + packetType: TelemetryPacketTypeEnum.AmmeterDayFreeze); taskList.Add(meterReadingRecords); } - + if (taskList == null || taskList.Count <= 0) { @@ -895,7 +898,7 @@ namespace JiShe.CollectBus.ScheduledMeterReading _ = KafkaProducerIssuedMessageAction(ProtocolConst.AmmeterSubscriberWorkerOtherIssuedEventName, data, groupIndex); } ); - + } catch (Exception) { @@ -954,7 +957,8 @@ namespace JiShe.CollectBus.ScheduledMeterReading itemCode: item, subItemCode: null, pendingCopyReadTime: currentTime, - creationTime: currentTime); + creationTime: currentTime, + packetType: TelemetryPacketTypeEnum.AmmeterMonthFreeze); taskList.Add(meterReadingRecords); } @@ -1097,7 +1101,7 @@ namespace JiShe.CollectBus.ScheduledMeterReading /// 水表数据采集 /// /// - public virtual async Task WatermeterScheduledMeterAutoReading() + public virtual async Task WatermeterScheduledMeterAutoReadding() { //获取缓存中的水表信息 int timeDensity = 60;//水表目前只有一个采集频率 60分钟 @@ -1129,7 +1133,7 @@ namespace JiShe.CollectBus.ScheduledMeterReading Conditions = conditions, }); - _logger.LogInformation($"{nameof(WatermeterScheduledMeterAutoReading)} {timeDensity}分钟采集水表数据处理完成"); + _logger.LogInformation($"{nameof(WatermeterScheduledMeterAutoReadding)} {timeDensity}分钟采集水表数据处理完成"); } /// @@ -1214,7 +1218,8 @@ namespace JiShe.CollectBus.ScheduledMeterReading DeviceId = $"{watermeter.MeterId}", Timestamps = DateTimeOffset.Now.ToUnixTimeNanoseconds(), DatabaseBusiID = watermeter.DatabaseBusiID, - PendingCopyReadTime = timestamps, + PacketType = (int)TelemetryPacketTypeEnum.WatermeterAutoReadding, + PendingCopyReadTime = timestamps, CreationTime = currentTime, MeterAddress = watermeter.MeterAddress, AFN = builderResponse.AFn, @@ -1298,7 +1303,8 @@ namespace JiShe.CollectBus.ScheduledMeterReading itemCode: itemCode, subItemCode: null, pendingCopyReadTime: currentTime, - creationTime: currentTime); + creationTime: currentTime, + packetType: TelemetryPacketTypeEnum.TerminalVersion); taskList.Add(meterReadingRecords); if (taskList == null || taskList.Count <= 0) @@ -1376,7 +1382,8 @@ namespace JiShe.CollectBus.ScheduledMeterReading itemCode: itemCode, subItemCode: null, pendingCopyReadTime: currentTime, - creationTime: currentTime); + creationTime: currentTime, + packetType: TelemetryPacketTypeEnum.TelematicsModule); taskList.Add(meterReadingRecords); if (taskList == null || taskList.Count <= 0) @@ -1560,8 +1567,9 @@ namespace JiShe.CollectBus.ScheduledMeterReading /// 端到端采集项编码 /// 待采集时间,定时采集频率才是特殊情况,其他默认当前时间戳 /// 数据创建时间戳 + /// 数据包类型 /// - protected MeterReadingTelemetryPacketInfo CreateAmmeterPacketInfo(AmmeterInfo ammeterInfo, long timestamps, ProtocolBuildResponse builderResponse, string itemCode, string subItemCode, DateTime pendingCopyReadTime, DateTime creationTime) + protected MeterReadingTelemetryPacketInfo CreateAmmeterPacketInfo(AmmeterInfo ammeterInfo, long timestamps, ProtocolBuildResponse builderResponse, string itemCode, string subItemCode, DateTime pendingCopyReadTime, DateTime creationTime, TelemetryPacketTypeEnum packetType) { string taskMark = CommonHelper.GetTaskMark(builderResponse.AFn, builderResponse.Fn, ammeterInfo.MeteringCode, builderResponse.MSA, builderResponse.Seq); return new MeterReadingTelemetryPacketInfo() @@ -1575,10 +1583,13 @@ namespace JiShe.CollectBus.ScheduledMeterReading PendingCopyReadTime = pendingCopyReadTime, CreationTime = creationTime, MeterAddress = ammeterInfo.AmmerterAddress, + PacketType = (int)packetType, AFN = builderResponse.AFn, Fn = builderResponse.Fn, Seq = builderResponse.Seq, MSA = builderResponse.MSA, + FocusId = ammeterInfo.FocusId, + FocusAddress = ammeterInfo.FocusAddress, ItemCode = itemCode, SubItemCode = subItemCode, TaskMark = taskMark, diff --git a/services/JiShe.CollectBus.Domain/Ammeters/ElectricityMeter.cs b/services/JiShe.CollectBus.Domain/Ammeters/ElectricityMeter.cs index db833f6..9ba3c94 100644 --- a/services/JiShe.CollectBus.Domain/Ammeters/ElectricityMeter.cs +++ b/services/JiShe.CollectBus.Domain/Ammeters/ElectricityMeter.cs @@ -6,7 +6,7 @@ using JiShe.CollectBus.IoTDB.Model; namespace JiShe.CollectBus.Ammeters { [EntityType(EntityTypeEnum.TableModel)] - [GenerateAccessors] + [SourceAnalyzers] public class ElectricityMeter : IoTEntity { [ATTRIBUTEColumn] diff --git a/services/JiShe.CollectBus.Domain/Ammeters/ElectricityMeterTreeModel.cs b/services/JiShe.CollectBus.Domain/Ammeters/ElectricityMeterTreeModel.cs index f02fcb1..1f11198 100644 --- a/services/JiShe.CollectBus.Domain/Ammeters/ElectricityMeterTreeModel.cs +++ b/services/JiShe.CollectBus.Domain/Ammeters/ElectricityMeterTreeModel.cs @@ -6,7 +6,7 @@ using JiShe.CollectBus.IoTDB.Model; namespace JiShe.CollectBus.Ammeters { [EntityType(EntityTypeEnum.TreeModel)] - [GenerateAccessors] + [SourceAnalyzers] public class ElectricityMeterTreeModel : IoTEntity { [ATTRIBUTEColumn] diff --git a/services/JiShe.CollectBus.Domain/IotSystems/MeterReadingRecords/MeterReadingTelemetryPacketInfo.cs b/services/JiShe.CollectBus.Domain/IotSystems/MeterReadingRecords/MeterReadingTelemetryPacketInfo.cs index f0c1721..4b61e99 100644 --- a/services/JiShe.CollectBus.Domain/IotSystems/MeterReadingRecords/MeterReadingTelemetryPacketInfo.cs +++ b/services/JiShe.CollectBus.Domain/IotSystems/MeterReadingRecords/MeterReadingTelemetryPacketInfo.cs @@ -10,7 +10,7 @@ namespace JiShe.CollectBus.IotSystems.MeterReadingRecords /// 抄读任务数据 /// [EntityType(EntityTypeEnum.TableModel)] - [GenerateAccessors] + [SourceAnalyzers] public class MeterReadingTelemetryPacketInfo : IoTEntity { /// @@ -19,6 +19,12 @@ namespace JiShe.CollectBus.IotSystems.MeterReadingRecords [FIELDColumn] public string ScoreValue { get; set; } + /// + /// 数据包类型 + /// + [FIELDColumn] + public int PacketType { get; set; } + /// /// 是否手动操作 /// @@ -55,12 +61,6 @@ namespace JiShe.CollectBus.IotSystems.MeterReadingRecords /// [FIELDColumn] public string FocusAddress { get; set; } - - /// - /// 表Id - /// - [FIELDColumn] - public int MeterId { get; set; } /// /// 表地址 diff --git a/shared/JiShe.CollectBus.Analyzers.Shared/ISourceAnalyzersProvider.cs b/shared/JiShe.CollectBus.Analyzers.Shared/ISourceAnalyzersProvider.cs new file mode 100644 index 0000000..905f0ef --- /dev/null +++ b/shared/JiShe.CollectBus.Analyzers.Shared/ISourceAnalyzersProvider.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace JiShe.CollectBus.Analyzers +{ + public interface ISourceAnalyzersProvider + { + /// + /// 获取属性值 + /// + /// + /// + /// + object GetPropertyValue(T entity, string propertyName); + + /// + /// 设置属性值 + /// + /// + /// + /// + void SetPropertyValue(T entity, string propertyName, object value); + + /// + /// 判断是否是元组属性 + /// + /// + /// + bool IsTupleProperty(string propertyName); + + /// + /// 获取元组属性值 + /// + /// + /// + /// + (object Item1, object Item2) GetTupleParts(T entity, string tuplePropertyName); + } +} diff --git a/shared/JiShe.CollectBus.Analyzers.Shared/GenerateAccessorsAttribute.cs b/shared/JiShe.CollectBus.Analyzers.Shared/SourceAnalyzersAttribute.cs similarity index 78% rename from shared/JiShe.CollectBus.Analyzers.Shared/GenerateAccessorsAttribute.cs rename to shared/JiShe.CollectBus.Analyzers.Shared/SourceAnalyzersAttribute.cs index 10b5d79..0b33a6a 100644 --- a/shared/JiShe.CollectBus.Analyzers.Shared/GenerateAccessorsAttribute.cs +++ b/shared/JiShe.CollectBus.Analyzers.Shared/SourceAnalyzersAttribute.cs @@ -6,7 +6,7 @@ namespace JiShe.CollectBus.Analyzers.Shared /// 标记需要生成源码的类 /// [AttributeUsage(AttributeTargets.Class)] - public class GenerateAccessorsAttribute : Attribute + public class SourceAnalyzersAttribute : Attribute { } } diff --git a/shared/JiShe.CollectBus.Common/Enums/TelemetryPacketTypeEnum.cs b/shared/JiShe.CollectBus.Common/Enums/TelemetryPacketTypeEnum.cs new file mode 100644 index 0000000..837392b --- /dev/null +++ b/shared/JiShe.CollectBus.Common/Enums/TelemetryPacketTypeEnum.cs @@ -0,0 +1,75 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace JiShe.CollectBus.Common.Enums +{ + /// + /// 遥测数据包类型枚举 + /// + public enum TelemetryPacketTypeEnum + { + /// + /// 1分钟密度 + /// + [Description("1分钟密度")] + AmmeterOneMinute = 1, + + /// + /// 5分钟密度 + /// + [Description("5分钟密度")] + AmmeterMeterFiveMinute = 5, + + /// + /// 15分钟密度 + /// + [Description("15分钟密度")] + AmmeterFifteenMinute = 15, + + /// + /// 自动校时 + /// + [Description("自动校时")] + AmmeterAutomaticVerificationTime = 16, + + /// + /// 日冻结 + /// + [Description("日冻结")] + AmmeterDayFreeze = 17, + + /// + /// 月冻结 + /// + [Description("月冻结")] + AmmeterMonthFreeze = 18, + + /// + /// 自动阀控 + /// + [Description("自动阀控")] + AmmeterAutoValveControl = 19, + + /// + /// 集中器终端版本 + /// + [Description("集中器终端版本")] + TerminalVersion = 20, + + /// + /// 集中器通信模块SIM + /// + [Description("集中器通信模块SIM")] + TelematicsModule = 21, + + /// + /// 水表抄读 + /// + [Description("水表抄读")] + WatermeterAutoReadding = 22, + } +}