优化代码

This commit is contained in:
陈益 2025-04-13 21:26:27 +08:00
parent a57910f4b2
commit 608337948a
4 changed files with 86 additions and 57 deletions

View File

@ -132,8 +132,9 @@ namespace JiShe.CollectBus.ScheduledMeterReading
_logger.LogInformation($"{nameof(CreateToBeIssueTasks)} {timeDensity}分钟采集待下发任务创建完成"); _logger.LogInformation($"{nameof(CreateToBeIssueTasks)} {timeDensity}分钟采集待下发任务创建完成");
//删除已经处理过的缓存数据 //根据当前的采集频率和类型,重新更新下一个任务点,把任务的创建源固定在当前逻辑,避免任务处理的逻辑异常导致任务创建失败。
await FreeRedisProvider.Instance.DelAsync(item); tasksToBeIssueModel.NextTask = tasksToBeIssueModel.NextTask.AddMinutes(timeDensity);
await FreeRedisProvider.Instance.SetAsync(item, tasksToBeIssueModel);
} }
} }
@ -326,9 +327,9 @@ namespace JiShe.CollectBus.ScheduledMeterReading
await _meterReadingRecordRepository.InsertManyAsync(meterTaskInfosList, currentTime); await _meterReadingRecordRepository.InsertManyAsync(meterTaskInfosList, currentTime);
} }
//删除任务数据 ////删除任务数据
await FreeRedisProvider.Instance.DelAsync(oneMinutekeyList); //await FreeRedisProvider.Instance.DelAsync(oneMinutekeyList);
await CacheNextTaskData(timeDensity, MeterTypeEnum.Ammeter); //await CacheNextTaskData(timeDensity, MeterTypeEnum.Ammeter);
_logger.LogInformation($"{nameof(AmmeterScheduledMeterOneMinuteReading)} {timeDensity}分钟采集电表数据处理完成"); _logger.LogInformation($"{nameof(AmmeterScheduledMeterOneMinuteReading)} {timeDensity}分钟采集电表数据处理完成");
@ -387,11 +388,11 @@ namespace JiShe.CollectBus.ScheduledMeterReading
await _meterReadingRecordRepository.InsertManyAsync(meterTaskInfosList, currentTime); await _meterReadingRecordRepository.InsertManyAsync(meterTaskInfosList, currentTime);
} }
//删除任务数据 ////删除任务数据
await FreeRedisProvider.Instance.DelAsync(fiveMinutekeyList); //await FreeRedisProvider.Instance.DelAsync(fiveMinutekeyList);
//缓存下一个时间的任务 ////缓存下一个时间的任务
await CacheNextTaskData(timeDensity, MeterTypeEnum.Ammeter); //await CacheNextTaskData(timeDensity, MeterTypeEnum.Ammeter);
_logger.LogInformation($"{nameof(AmmeterScheduledMeterFiveMinuteReading)} {timeDensity}分钟采集电表数据处理完成"); _logger.LogInformation($"{nameof(AmmeterScheduledMeterFiveMinuteReading)} {timeDensity}分钟采集电表数据处理完成");
} }
@ -452,11 +453,11 @@ namespace JiShe.CollectBus.ScheduledMeterReading
await _meterReadingRecordRepository.InsertManyAsync(meterTaskInfosList, currentDateTime); await _meterReadingRecordRepository.InsertManyAsync(meterTaskInfosList, currentDateTime);
} }
//删除任务数据 ////删除任务数据
//await FreeRedisProvider.Instance.DelAsync(fifteenMinutekeyList); //await FreeRedisProvider.Instance.DelAsync(fifteenMinutekeyList);
//缓存下一个时间的任务 ////缓存下一个时间的任务
await CacheNextTaskData(timeDensity, MeterTypeEnum.Ammeter); //await CacheNextTaskData(timeDensity, MeterTypeEnum.Ammeter);
stopwatch.Stop(); stopwatch.Stop();
@ -838,11 +839,11 @@ namespace JiShe.CollectBus.ScheduledMeterReading
await _meterReadingRecordRepository.InsertManyAsync(meterTaskInfosList); await _meterReadingRecordRepository.InsertManyAsync(meterTaskInfosList);
} }
//删除任务数据 ////删除任务数据
await FreeRedisProvider.Instance.DelAsync(oneMinutekeyList); //await FreeRedisProvider.Instance.DelAsync(oneMinutekeyList);
//缓存下一个时间的任务 ////缓存下一个时间的任务
await CacheNextTaskData(timeDensity, MeterTypeEnum.WaterMeter); //await CacheNextTaskData(timeDensity, MeterTypeEnum.WaterMeter);
_logger.LogInformation($"{nameof(WatermeterScheduledMeterOneMinuteReading)} {timeDensity}分钟采集水表数据处理完成"); _logger.LogInformation($"{nameof(WatermeterScheduledMeterOneMinuteReading)} {timeDensity}分钟采集水表数据处理完成");
@ -900,11 +901,11 @@ namespace JiShe.CollectBus.ScheduledMeterReading
await _meterReadingRecordRepository.InsertManyAsync(meterTaskInfosList); await _meterReadingRecordRepository.InsertManyAsync(meterTaskInfosList);
} }
//删除任务数据 ////删除任务数据
await FreeRedisProvider.Instance.DelAsync(fiveMinutekeyList); //await FreeRedisProvider.Instance.DelAsync(fiveMinutekeyList);
//缓存下一个时间的任务 ////缓存下一个时间的任务
await CacheNextTaskData(timeDensity, MeterTypeEnum.WaterMeter); //await CacheNextTaskData(timeDensity, MeterTypeEnum.WaterMeter);
_logger.LogInformation($"{nameof(WatermeterScheduledMeterFiveMinuteReading)} {timeDensity}分钟采集水表数据处理完成"); _logger.LogInformation($"{nameof(WatermeterScheduledMeterFiveMinuteReading)} {timeDensity}分钟采集水表数据处理完成");
@ -961,11 +962,11 @@ namespace JiShe.CollectBus.ScheduledMeterReading
await _meterReadingRecordRepository.InsertManyAsync(meterTaskInfosList); await _meterReadingRecordRepository.InsertManyAsync(meterTaskInfosList);
} }
//删除任务数据 ////删除任务数据
await FreeRedisProvider.Instance.DelAsync(fifteenMinutekeyList); //await FreeRedisProvider.Instance.DelAsync(fifteenMinutekeyList);
//缓存下一个时间的任务 ////缓存下一个时间的任务
await CacheNextTaskData(timeDensity, MeterTypeEnum.WaterMeter); //await CacheNextTaskData(timeDensity, MeterTypeEnum.WaterMeter);
_logger.LogInformation($"{nameof(WatermeterScheduledMeterFiveMinuteReading)} {timeDensity}分钟采集水表数据处理完成"); _logger.LogInformation($"{nameof(WatermeterScheduledMeterFiveMinuteReading)} {timeDensity}分钟采集水表数据处理完成");
@ -1050,24 +1051,24 @@ namespace JiShe.CollectBus.ScheduledMeterReading
return true; return true;
} }
/// <summary> ///// <summary>
/// 缓存下一个时间的任务 ///// 缓存下一个时间的任务
/// </summary> ///// </summary>
/// <param name="timeDensity">采集频率</param> ///// <param name="timeDensity">采集频率</param>
/// <param name="meterType">表类型</param> ///// <param name="meterType">表类型</param>
/// <returns></returns> ///// <returns></returns>
private async Task CacheNextTaskData(int timeDensity, MeterTypeEnum meterType) //private async Task CacheNextTaskData(int timeDensity, MeterTypeEnum meterType)
{ //{
//缓存下一个时间的任务 // //缓存下一个时间的任务
TasksToBeIssueModel nextTask = new TasksToBeIssueModel() // TasksToBeIssueModel nextTask = new TasksToBeIssueModel()
{ // {
TimeDensity = timeDensity, // TimeDensity = timeDensity,
NextTask = DateTime.Now.AddMinutes(timeDensity) // NextTask = DateTime.Now.AddMinutes(timeDensity)
}; // };
var redisCacheKey = string.Format(RedisConst.CacheTasksToBeIssuedKey, SystemType, ServerTagName, meterType, timeDensity); // var redisCacheKey = string.Format(RedisConst.CacheTasksToBeIssuedKey, SystemType, ServerTagName, meterType, timeDensity);
await FreeRedisProvider.Instance.SetAsync(redisCacheKey, nextTask); // await FreeRedisProvider.Instance.SetAsync(redisCacheKey, nextTask);
} //}
/// <summary> /// <summary>

View File

@ -760,5 +760,17 @@ namespace JiShe.CollectBus.Common.Helpers
return fontValue; return fontValue;
} }
/// <summary>
/// 获取任务标识
/// </summary>
/// <param name="afn"></param>
/// <param name="fn"></param>
/// <param name="pn"></param>
/// <returns></returns>
public static string GetTaskMark(int afn,int fn,int pn)
{
return $"{afn}{fn}{pn}";
}
} }
} }

View File

@ -57,6 +57,11 @@ namespace JiShe.CollectBus.IotSystems.Devices
/// </summary> /// </summary>
public DeviceStatus Status { get; set; } public DeviceStatus Status { get; set; }
/// <summary>
/// 设备任务超时次数,超过一定次数则发出预警。
/// </summary>
public int TaskTimeOutCounts { get; set; } = 0;
public void UpdateByLoginAndHeartbeat(string clientId) public void UpdateByLoginAndHeartbeat(string clientId)
{ {
LastOnlineTime = DateTime.Now; LastOnlineTime = DateTime.Now;

View File

@ -10,7 +10,7 @@ using Volo.Abp.Domain.Entities.Auditing;
namespace JiShe.CollectBus.IotSystems.MeterReadingRecords namespace JiShe.CollectBus.IotSystems.MeterReadingRecords
{ {
/// <summary> /// <summary>
/// 抄读数据记录 /// 抄读任务数据记录
/// </summary> /// </summary>
public class MeterReadingRecords : AggregateRoot<Guid> public class MeterReadingRecords : AggregateRoot<Guid>
{ {
@ -19,20 +19,25 @@ namespace JiShe.CollectBus.IotSystems.MeterReadingRecords
/// </summary> /// </summary>
public bool ManualOrNot { get; set; } public bool ManualOrNot { get; set; }
/// <summary>
/// 任务数据唯一标记
/// </summary>
public string TaskMark { get; set; }
/// <summary>
/// 时间戳标记IoTDB时间列处理上报通过构建标记获取唯一标记匹配时间戳。
/// </summary>
public long Timestamps { get; set; }
/// <summary>
/// 是否超时
/// </summary>
public bool IsTimeout { get; set; } = false;
/// <summary> /// <summary>
/// 待抄读时间 /// 待抄读时间
/// </summary> /// </summary>
public DateTime PendingCopyReadTime { get; set; } public DateTime PendingCopyReadTime { get; set; }
/// <summary>
/// 下发消息内容
/// </summary>
public string IssuedMessageHexString { get; set; }
/// <summary>
/// 下发消息Id
/// </summary>
public string IssuedMessageId { get; set; }
/// <summary> /// <summary>
/// 集中器ID /// 集中器ID
@ -88,17 +93,23 @@ namespace JiShe.CollectBus.IotSystems.MeterReadingRecords
/// 采集项编码 /// 采集项编码
/// </summary> /// </summary>
public string ItemCode { get; set;} public string ItemCode { get; set;}
/// <summary>
/// 是否超时
/// </summary>
public bool IsTimeout { get; set; } = false;
/// <summary> /// <summary>
/// 创建时间 /// 创建时间
/// </summary> /// </summary>
public DateTime CreationTime { get; set; } public DateTime CreationTime { get; set; }
/// <summary>
/// 下发消息内容
/// </summary>
public string IssuedMessageHexString { get; set; }
/// <summary>
/// 下发消息Id
/// </summary>
public string IssuedMessageId { get; set; }
/// <summary> /// <summary>
/// 消息上报内容 /// 消息上报内容
/// </summary> /// </summary>