完善下发数据的处理。

This commit is contained in:
ChenYi 2025-03-17 11:34:30 +08:00
parent 032c075f2f
commit 5b177759bd
9 changed files with 1993 additions and 50 deletions

View File

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -118,7 +119,7 @@ namespace JiShe.CollectBus.ScheduledMeterReading
List<string> itemCodeList = new List<string>(); List<string> itemCodeList = new List<string>();
foreach (var dataType in itemArr) foreach (var dataType in itemArr)
{ {
var excludeItemCode = "10_98,10_94";//排除透明转发:尖峰平谷时段、跳合闸 var excludeItemCode = "10_98,10_94";//TODO 排除透明转发:尖峰平谷时段、跳合闸,特殊电表
var gatherItem = gatherItemInfos.FirstOrDefault(f => f.DataType.Equals(dataType)); var gatherItem = gatherItemInfos.FirstOrDefault(f => f.DataType.Equals(dataType));
if (gatherItem != null) if (gatherItem != null)
{ {
@ -127,17 +128,21 @@ namespace JiShe.CollectBus.ScheduledMeterReading
itemCodeList.Add(gatherItem.ItemCode); itemCodeList.Add(gatherItem.ItemCode);
} }
} }
}
#endregion
#region #region
if (itemArr.Exists(e => e.Equals("95"))) //德力西DTS if (itemArr.Exists(e => e.Equals("95"))) //德力西DTS
{ {
itemCodeList.Add("10_95"); itemCodeList.Add("10_95");
} }
//if (itemArr.Exists(e => e.Equals("109")))//WAVE_109 if (itemArr.Exists(e => e.Equals("109")))//WAVE_109
// ammeter.ItemCodes += "10_109,"; {
itemCodeList.Add("10_109");
}
#endregion #endregion
}
#endregion
ammeter.ItemCodes = itemCodeList.Serialize();//转换成JSON字符串 ammeter.ItemCodes = itemCodeList.Serialize();//转换成JSON字符串
@ -207,7 +212,7 @@ namespace JiShe.CollectBus.ScheduledMeterReading
_logger.LogError($"{nameof(AmmeterScheduledMeterFiveMinuteReading)} 5分钟采集电表数据处理时没有获取到缓存信息,-102"); _logger.LogError($"{nameof(AmmeterScheduledMeterFiveMinuteReading)} 5分钟采集电表数据处理时没有获取到缓存信息,-102");
return; return;
} }
await AmmerterScheduledMeterReadingIssued(ProtocolConst.AmmeterSubscriberWorkerOneMinuteIssuedEventName, meterInfos); await AmmerterScheduledMeterReadingIssued(ProtocolConst.AmmeterSubscriberWorkerFiveMinuteIssuedEventName, meterInfos);
_logger.LogInformation($"{nameof(AmmeterScheduledMeterFiveMinuteReading)} 5分钟采集电表数据处理完成"); _logger.LogInformation($"{nameof(AmmeterScheduledMeterFiveMinuteReading)} 5分钟采集电表数据处理完成");
} }
@ -235,8 +240,14 @@ namespace JiShe.CollectBus.ScheduledMeterReading
return; return;
} }
await AmmerterScheduledMeterReadingIssued(ProtocolConst.AmmeterSubscriberWorkerOneMinuteIssuedEventName, meterInfos); Stopwatch stopwatch = new Stopwatch();
_logger.LogInformation($"{nameof(AmmeterScheduledMeterFifteenMinuteReading)} 15分钟采集电表数据处理完成"); stopwatch.Start();
await AmmerterScheduledMeterReadingIssued(ProtocolConst.AmmeterSubscriberWorkerFifteenMinuteIssuedEventName, meterInfos);
stopwatch.Stop();
_logger.LogInformation($"{nameof(AmmeterScheduledMeterFifteenMinuteReading)} 15分钟采集电表数据处理完成共消耗{stopwatch.ElapsedMilliseconds}毫秒。");
} }
#endregion #endregion
@ -494,6 +505,7 @@ namespace JiShe.CollectBus.ScheduledMeterReading
foreach (var group in focusHashGroups) foreach (var group in focusHashGroups)
{ {
_ = Task.Run(async () => { await CreatePublishTask(eventName, group.Value); }); _ = Task.Run(async () => { await CreatePublishTask(eventName, group.Value); });
//await CreatePublishTask(eventName, group.Value);
} }
await Task.CompletedTask; await Task.CompletedTask;
@ -538,12 +550,12 @@ namespace JiShe.CollectBus.ScheduledMeterReading
continue; continue;
} }
//排除1天未在线的集中器生成指令 或 排除集中器配置为自动上报的集中器 ////排除1天未在线的集中器生成指令 或 排除集中器配置为自动上报的集中器
if (!IsGennerateCmd(ammeter.LastTime, -1)) //if (!IsGennerateCmd(ammeter.LastTime, -1))
{ //{
_logger.LogInformation($"{nameof(CreatePublishTask)} 集中器{ammeter.FocusAddress}的电表{ammeter.Name},采集时间:{ammeter.LastTime}已超过1天未在线不生成指令"); // _logger.LogInformation($"{nameof(CreatePublishTask)} 集中器{ammeter.FocusAddress}的电表{ammeter.Name},采集时间:{ammeter.LastTime}已超过1天未在线不生成指令");
continue; // continue;
} //}
if (string.IsNullOrWhiteSpace(ammeter.AreaCode)) if (string.IsNullOrWhiteSpace(ammeter.AreaCode))
{ {
@ -622,13 +634,15 @@ namespace JiShe.CollectBus.ScheduledMeterReading
} }
else else
{ {
//特殊表暂不处理
if (TelemetryPacketBuilder.AFNHandlers.TryGetValue(tempItem, out var handler)) if (TelemetryPacketBuilder.AFNHandlers.TryGetValue(tempItem, out var handler))
{ {
dataInfos = handler(ammeter.FocusAddress, fn, ammeter.MeteringCode); dataInfos = handler(ammeter.FocusAddress, fn, ammeter.MeteringCode);
} }
else else
{ {
throw new InvalidOperationException($"无效编码: {tempItem}"); _logger.LogWarning($"{nameof(CreatePublishTask)} 集中器{ammeter.FocusAddress}的电表{ammeter.Name}采集项{tempItem}无效编码。");
continue;
} }
} }
//TODO:特殊表 //TODO:特殊表

View File

@ -59,11 +59,12 @@ namespace JiShe.CollectBus.ScheduledMeterReading
INNER JOIN TB_FocusInfo(NOLOCK) AS B ON A.ID = B.GatherInfoID AND B.RemoveState >= 0 AND B.State>=0 INNER JOIN TB_FocusInfo(NOLOCK) AS B ON A.ID = B.GatherInfoID AND B.RemoveState >= 0 AND B.State>=0
INNER JOIN TB_AmmeterInfo(NOLOCK) AS C ON B.ID = C.FocusID AND C.State>= 0 AND C.State<100 INNER JOIN TB_AmmeterInfo(NOLOCK) AS C ON B.ID = C.FocusID AND C.State>= 0 AND C.State<100
INNER JOIN TB_AmmeterGatherItem(NOLOCK) AS D ON C.ID = D.AmmeterID AND D.State>=0 INNER JOIN TB_AmmeterGatherItem(NOLOCK) AS D ON C.ID = D.AmmeterID AND D.State>=0
WHERE 1=1 "; WHERE 1=1 and C.Special = 0 ";
//TODO 记得移除特殊表过滤
if (!string.IsNullOrWhiteSpace(gatherCode)) if (!string.IsNullOrWhiteSpace(gatherCode))
{ {
sql = $@"{sql} A.GatherCode = '{gatherCode}'"; sql = $@"{sql} AND A.GatherCode = '{gatherCode}'";
} }
return await SqlProvider.Instance.Change(DbEnum.EnergyDB) return await SqlProvider.Instance.Change(DbEnum.EnergyDB)
.Ado .Ado

View File

@ -81,7 +81,7 @@ namespace JiShe.CollectBus.Subscribers
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
[Route("ammeter/fiveminute/issued-event")] [Route("ammeter/fiveminute/issued-event")]
[CapSubscribe(ProtocolConst.AmmeterSubscriberWorkerOneMinuteIssuedEventName)] [CapSubscribe(ProtocolConst.AmmeterSubscriberWorkerFiveMinuteIssuedEventName)]
public async Task AmmeterScheduledMeterFiveMinuteReadingIssuedEvent(ScheduledMeterReadingIssuedEventMessage receivedMessage) public async Task AmmeterScheduledMeterFiveMinuteReadingIssuedEvent(ScheduledMeterReadingIssuedEventMessage receivedMessage)
{ {
_logger.LogInformation("5分钟采集电表数据下行消息消费队列开始处理"); _logger.LogInformation("5分钟采集电表数据下行消息消费队列开始处理");
@ -108,7 +108,7 @@ namespace JiShe.CollectBus.Subscribers
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
[Route("ammeter/fifteenminute/issued-event")] [Route("ammeter/fifteenminute/issued-event")]
[CapSubscribe(ProtocolConst.AmmeterSubscriberWorkerOneMinuteIssuedEventName)] [CapSubscribe(ProtocolConst.AmmeterSubscriberWorkerFifteenMinuteIssuedEventName)]
public async Task AmmeterScheduledMeterFifteenMinuteReadingIssuedEvent(ScheduledMeterReadingIssuedEventMessage receivedMessage) public async Task AmmeterScheduledMeterFifteenMinuteReadingIssuedEvent(ScheduledMeterReadingIssuedEventMessage receivedMessage)
{ {
_logger.LogInformation("15分钟采集电表数据下行消息消费队列开始处理"); _logger.LogInformation("15分钟采集电表数据下行消息消费队列开始处理");
@ -164,7 +164,7 @@ namespace JiShe.CollectBus.Subscribers
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
[Route("watermeter/fiveminute/issued-event")] [Route("watermeter/fiveminute/issued-event")]
[CapSubscribe(ProtocolConst.WatermeterSubscriberWorkerOneMinuteIssuedEventName)] [CapSubscribe(ProtocolConst.AmmeterSubscriberWorkerFiveMinuteIssuedEventName)]
public async Task WatermeterScheduledMeterFiveMinuteReadingIssuedEvent(ScheduledMeterReadingIssuedEventMessage receivedMessage) public async Task WatermeterScheduledMeterFiveMinuteReadingIssuedEvent(ScheduledMeterReadingIssuedEventMessage receivedMessage)
{ {
_logger.LogInformation("5分钟采集电表数据下行消息消费队列开始处理"); _logger.LogInformation("5分钟采集电表数据下行消息消费队列开始处理");
@ -191,7 +191,7 @@ namespace JiShe.CollectBus.Subscribers
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
[Route("watermeter/fifteenminute/issued-event")] [Route("watermeter/fifteenminute/issued-event")]
[CapSubscribe(ProtocolConst.WatermeterSubscriberWorkerOneMinuteIssuedEventName)] [CapSubscribe(ProtocolConst.AmmeterSubscriberWorkerFifteenMinuteIssuedEventName)]
public async Task WatermeterScheduledMeterFifteenMinuteReadingIssuedEvent(ScheduledMeterReadingIssuedEventMessage receivedMessage) public async Task WatermeterScheduledMeterFifteenMinuteReadingIssuedEvent(ScheduledMeterReadingIssuedEventMessage receivedMessage)
{ {
_logger.LogInformation("15分钟采集电表数据下行消息消费队列开始处理"); _logger.LogInformation("15分钟采集电表数据下行消息消费队列开始处理");

View File

@ -1401,7 +1401,7 @@ namespace JiShe.CollectBus.Common.BuildSendDatas
cmdStrList.AddRange(userDatas); cmdStrList.AddRange(userDatas);
cmdStrList.Add(cs); cmdStrList.Add(cs);
cmdStrList.Add(endStr); cmdStrList.Add(endStr);
Console.WriteLine(string.Join(" ", cmdStrList)); //Console.WriteLine(string.Join(" ", cmdStrList));
var bytes = cmdStrList.Select(x => Convert.ToByte(x, 16)).ToArray(); var bytes = cmdStrList.Select(x => Convert.ToByte(x, 16)).ToArray();
return bytes; return bytes;
} }

View File

@ -119,7 +119,7 @@ namespace JiShe.CollectBus.Ammeters
public string GatherCode { get; set; } public string GatherCode { get; set; }
/// <summary> /// <summary>
/// 是否特殊表 /// 是否特殊表1是特殊电表
/// </summary> /// </summary>
public int Special { get; set; } public int Special { get; set; }

View File

@ -1,7 +1,7 @@
{ {
"Logging": { "Logging": {
"LogLevel": { "LogLevel": {
"Default": "Information", "Default": "Warning",
"Microsoft.AspNetCore": "Warning" "Microsoft.AspNetCore": "Warning"
} }
} }

View File

@ -5,7 +5,7 @@
"Serilog.Sinks.File" "Serilog.Sinks.File"
], ],
"MinimumLevel": { "MinimumLevel": {
"Default": "Information", "Default": "Warning",
"Override": { "Override": {
"Microsoft": "Information", "Microsoft": "Information",
"Volo.Abp": "Warning", "Volo.Abp": "Warning",