优化代码
This commit is contained in:
parent
e806a127bf
commit
4ce1741f7e
@ -137,115 +137,99 @@ namespace JiShe.CollectBus.ScheduledMeterReading
|
||||
|
||||
//电表定时广播校时,一天一次。
|
||||
string currentTimeStr = $"{currentTime:HH:mm:00}";
|
||||
//if (string.Equals(currentTimeStr, _applicationOptions.AutomaticVerificationTime, StringComparison.CurrentCultureIgnoreCase))//自动校时
|
||||
//{
|
||||
// //_logger.LogInformation($"{nameof(AmmeterScheduledAutomaticVerificationTime)} 电表自动校时,非自动校时时间");
|
||||
// //return;
|
||||
if (string.Equals(currentTimeStr, _applicationOptions.AutomaticVerificationTime, StringComparison.CurrentCultureIgnoreCase))//自动校时
|
||||
{
|
||||
//_logger.LogInformation($"{nameof(AmmeterScheduledAutomaticVerificationTime)} 电表自动校时,非自动校时时间");
|
||||
//return;
|
||||
|
||||
// _ = CreateMeterPublishTask<DeviceInfo>(
|
||||
// timeDensity: timeDensity,
|
||||
// nextTaskTime: currentTime,
|
||||
// meterType: MeterTypeEnum.Ammeter,
|
||||
// taskCreateAction: async (timeDensity, data, groupIndex, timestamps) =>
|
||||
// {
|
||||
// var tempTask = await AmmeterScheduledAutomaticVerificationTime(timeDensity, data, groupIndex, timestamps);
|
||||
|
||||
// if (tempTask == null || tempTask.Count <= 0)
|
||||
// {
|
||||
// _logger.LogWarning($"电表自动校时 {data.Name} 任务数据构建失败:{data.Serialize()}");
|
||||
// return;
|
||||
// }
|
||||
// _ = _dataChannelManage.ScheduledMeterTaskWriterAsync(DataChannelManage.TaskDataChannel.Writer, (ProtocolConst.AmmeterSubscriberWorkerOtherIssuedEventName, tempTask));
|
||||
// });
|
||||
//}
|
||||
//else if (string.Equals(currentTimeStr, _applicationOptions.AutomaticTerminalVersionTime, StringComparison.CurrentCultureIgnoreCase))//集中器版本号读取
|
||||
//{
|
||||
// _ = CreateMeterPublishTask<DeviceInfo>(
|
||||
// timeDensity: timeDensity,
|
||||
// nextTaskTime: currentTime,
|
||||
// meterType: MeterTypeEnum.Ammeter,
|
||||
// taskCreateAction: async (timeDensity, data, groupIndex, timestamps) =>
|
||||
// {
|
||||
// var tempTask = await ConcentratorScheduledAutomaticGetTerminalVersion(timeDensity, data, groupIndex, timestamps);
|
||||
// if (tempTask == null || tempTask.Count <= 0)
|
||||
// {
|
||||
// _logger.LogWarning($"集中器终端版本信息 {data.Name} 任务数据构建失败:{data.Serialize()}");
|
||||
// return;
|
||||
// }
|
||||
// _ = _dataChannelManage.ScheduledMeterTaskWriterAsync(DataChannelManage.TaskDataChannel.Writer, (ProtocolConst.AmmeterSubscriberWorkerOtherIssuedEventName, tempTask));
|
||||
// });
|
||||
//}
|
||||
//else if (string.Equals(currentTimeStr, _applicationOptions.AutomaticTelematicsModuleTime, StringComparison.CurrentCultureIgnoreCase))//SIM卡读取
|
||||
//{
|
||||
// _ = CreateMeterPublishTask<DeviceInfo>(
|
||||
// timeDensity: timeDensity,
|
||||
// nextTaskTime: currentTime,
|
||||
// meterType: MeterTypeEnum.Ammeter,
|
||||
// taskCreateAction: async (timeDensity, data, groupIndex, timestamps) =>
|
||||
// {
|
||||
// var tempTask = await ConcentratorScheduledAutomaticGetTelematicsModule(timeDensity, data, groupIndex, timestamps);
|
||||
// if (tempTask == null || tempTask.Count <= 0)
|
||||
// {
|
||||
// _logger.LogWarning($"集中器SIM卡读取 {data.Name} 任务数据构建失败:{data.Serialize()}");
|
||||
// return;
|
||||
// }
|
||||
// _ = _dataChannelManage.ScheduledMeterTaskWriterAsync(DataChannelManage.TaskDataChannel.Writer, (ProtocolConst.AmmeterSubscriberWorkerOtherIssuedEventName, tempTask));
|
||||
// });
|
||||
//}
|
||||
//else if (string.Equals(currentTimeStr, _applicationOptions.AutomaticTelematicsModuleTime, StringComparison.CurrentCultureIgnoreCase))//月冻结
|
||||
//{
|
||||
// _ = CreateMeterPublishTask<DeviceInfo>(
|
||||
// timeDensity: timeDensity,
|
||||
// nextTaskTime: currentTime,
|
||||
// meterType: MeterTypeEnum.Ammeter,
|
||||
// taskCreateAction: async (timeDensity, data, groupIndex, timestamps) =>
|
||||
// {
|
||||
// var tempTask = await AmmeterScheduledGetAutomaticDayFreezeData(timeDensity, data, groupIndex, timestamps);
|
||||
// if (tempTask == null || tempTask.Count <= 0)
|
||||
// {
|
||||
// _logger.LogWarning($"电表月冻结 {data.Name} 任务数据构建失败:{data.Serialize()}");
|
||||
// return;
|
||||
// }
|
||||
// _ = _dataChannelManage.ScheduledMeterTaskWriterAsync(DataChannelManage.TaskDataChannel.Writer, (ProtocolConst.AmmeterSubscriberWorkerOtherIssuedEventName, tempTask));
|
||||
// });
|
||||
//}
|
||||
//else if (string.Equals(currentTimeStr, _applicationOptions.AutomaticDayFreezeTime, StringComparison.CurrentCultureIgnoreCase))//日冻结
|
||||
//{
|
||||
// _ = CreateMeterPublishTask<DeviceInfo>(
|
||||
// timeDensity: timeDensity,
|
||||
// nextTaskTime: currentTime,
|
||||
// meterType: MeterTypeEnum.Ammeter,
|
||||
// taskCreateAction: async (timeDensity, data, groupIndex, timestamps) =>
|
||||
// {
|
||||
// var tempTask = await AmmeterScheduledGetAutomaticMonthFreezeData(timeDensity, data, groupIndex, timestamps);
|
||||
// if (tempTask == null || tempTask.Count <= 0)
|
||||
// {
|
||||
// _logger.LogWarning($"电表日冻结 {data.Name} 任务数据构建失败:{data.Serialize()}");
|
||||
// return;
|
||||
// }
|
||||
// _ = _dataChannelManage.ScheduledMeterTaskWriterAsync(DataChannelManage.TaskDataChannel.Writer, (ProtocolConst.AmmeterSubscriberWorkerOtherIssuedEventName, tempTask));
|
||||
// });
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// _logger.LogInformation($"{nameof(CreateToBeIssueTasks)} 不是自动校时、采集终端信息等时间,继续处理其他");
|
||||
//}
|
||||
|
||||
|
||||
_ = CreateMeterPublishTask<DeviceInfo>(
|
||||
timeDensity: timeDensity,
|
||||
nextTaskTime: currentTime,
|
||||
meterType: MeterTypeEnum.Ammeter,
|
||||
taskCreateAction: async (timeDensity, data, groupIndex, timestamps) =>
|
||||
{
|
||||
var tempTask = await ConcentratorScheduledAutomaticGetTelematicsModule(timeDensity, data, groupIndex, timestamps);
|
||||
if (tempTask == null || tempTask.Count <= 0)
|
||||
_ = CreateMeterPublishTask<DeviceInfo>(
|
||||
timeDensity: timeDensity,
|
||||
nextTaskTime: currentTime,
|
||||
meterType: MeterTypeEnum.Ammeter,
|
||||
taskCreateAction: async (timeDensity, data, groupIndex, timestamps) =>
|
||||
{
|
||||
_logger.LogWarning($"集中器SIM卡读取 {data.Name} 任务数据构建失败:{data.Serialize()}");
|
||||
return;
|
||||
}
|
||||
_ = _dataChannelManage.ScheduledMeterTaskWriterAsync(DataChannelManage.TaskDataChannel.Writer, (ProtocolConst.AmmeterSubscriberWorkerOtherIssuedEventName, tempTask));
|
||||
});
|
||||
var tempTask = await AmmeterScheduledAutomaticVerificationTime(timeDensity, data, groupIndex, timestamps);
|
||||
|
||||
if (tempTask == null || tempTask.Count <= 0)
|
||||
{
|
||||
_logger.LogWarning($"电表自动校时 {data.Name} 任务数据构建失败:{data.Serialize()}");
|
||||
return;
|
||||
}
|
||||
_ = _dataChannelManage.ScheduledMeterTaskWriterAsync(DataChannelManage.TaskDataChannel.Writer, (ProtocolConst.AmmeterSubscriberWorkerOtherIssuedEventName, tempTask));
|
||||
});
|
||||
}
|
||||
else if (string.Equals(currentTimeStr, _applicationOptions.AutomaticTerminalVersionTime, StringComparison.CurrentCultureIgnoreCase))//集中器版本号读取
|
||||
{
|
||||
_ = CreateMeterPublishTask<DeviceInfo>(
|
||||
timeDensity: timeDensity,
|
||||
nextTaskTime: currentTime,
|
||||
meterType: MeterTypeEnum.Ammeter,
|
||||
taskCreateAction: async (timeDensity, data, groupIndex, timestamps) =>
|
||||
{
|
||||
var tempTask = await ConcentratorScheduledAutomaticGetTerminalVersion(timeDensity, data, groupIndex, timestamps);
|
||||
if (tempTask == null || tempTask.Count <= 0)
|
||||
{
|
||||
_logger.LogWarning($"集中器终端版本信息 {data.Name} 任务数据构建失败:{data.Serialize()}");
|
||||
return;
|
||||
}
|
||||
_ = _dataChannelManage.ScheduledMeterTaskWriterAsync(DataChannelManage.TaskDataChannel.Writer, (ProtocolConst.AmmeterSubscriberWorkerOtherIssuedEventName, tempTask));
|
||||
});
|
||||
}
|
||||
else if (string.Equals(currentTimeStr, _applicationOptions.AutomaticTelematicsModuleTime, StringComparison.CurrentCultureIgnoreCase))//SIM卡读取
|
||||
{
|
||||
_ = CreateMeterPublishTask<DeviceInfo>(
|
||||
timeDensity: timeDensity,
|
||||
nextTaskTime: currentTime,
|
||||
meterType: MeterTypeEnum.Ammeter,
|
||||
taskCreateAction: async (timeDensity, data, groupIndex, timestamps) =>
|
||||
{
|
||||
var tempTask = await ConcentratorScheduledAutomaticGetTelematicsModule(timeDensity, data, groupIndex, timestamps);
|
||||
if (tempTask == null || tempTask.Count <= 0)
|
||||
{
|
||||
_logger.LogWarning($"集中器SIM卡读取 {data.Name} 任务数据构建失败:{data.Serialize()}");
|
||||
return;
|
||||
}
|
||||
_ = _dataChannelManage.ScheduledMeterTaskWriterAsync(DataChannelManage.TaskDataChannel.Writer, (ProtocolConst.AmmeterSubscriberWorkerOtherIssuedEventName, tempTask));
|
||||
});
|
||||
}
|
||||
else if (string.Equals(currentTimeStr, _applicationOptions.AutomaticMonthFreezeTime, StringComparison.CurrentCultureIgnoreCase))//月冻结
|
||||
{
|
||||
_ = CreateMeterPublishTask<DeviceInfo>(
|
||||
timeDensity: timeDensity,
|
||||
nextTaskTime: currentTime,
|
||||
meterType: MeterTypeEnum.Ammeter,
|
||||
taskCreateAction: async (timeDensity, data, groupIndex, timestamps) =>
|
||||
{
|
||||
var tempTask = await AmmeterScheduledGetAutomaticMonthFreezeData(timeDensity, data, groupIndex, timestamps);
|
||||
if (tempTask == null || tempTask.Count <= 0)
|
||||
{
|
||||
_logger.LogWarning($"电表月冻结 {data.Name} 任务数据构建失败:{data.Serialize()}");
|
||||
return;
|
||||
}
|
||||
_ = _dataChannelManage.ScheduledMeterTaskWriterAsync(DataChannelManage.TaskDataChannel.Writer, (ProtocolConst.AmmeterSubscriberWorkerOtherIssuedEventName, tempTask));
|
||||
});
|
||||
}
|
||||
else if (string.Equals(currentTimeStr, _applicationOptions.AutomaticDayFreezeTime, StringComparison.CurrentCultureIgnoreCase))//日冻结
|
||||
{
|
||||
_ = CreateMeterPublishTask<DeviceInfo>(
|
||||
timeDensity: timeDensity,
|
||||
nextTaskTime: currentTime,
|
||||
meterType: MeterTypeEnum.Ammeter,
|
||||
taskCreateAction: async (timeDensity, data, groupIndex, timestamps) =>
|
||||
{
|
||||
var tempTask = await AmmeterScheduledGetAutomaticDayFreezeData(timeDensity, data, groupIndex, timestamps);
|
||||
if (tempTask == null || tempTask.Count <= 0)
|
||||
{
|
||||
_logger.LogWarning($"电表日冻结 {data.Name} 任务数据构建失败:{data.Serialize()}");
|
||||
return;
|
||||
}
|
||||
_ = _dataChannelManage.ScheduledMeterTaskWriterAsync(DataChannelManage.TaskDataChannel.Writer, (ProtocolConst.AmmeterSubscriberWorkerOtherIssuedEventName, tempTask));
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
_logger.LogInformation($"{nameof(CreateToBeIssueTasks)} 不是自动校时、采集终端信息等时间,继续处理其他");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -933,7 +917,13 @@ namespace JiShe.CollectBus.ScheduledMeterReading
|
||||
{
|
||||
FocusAddress = ammeterInfo.FocusAddress,
|
||||
Pn = ammeterInfo.MeteringCode,
|
||||
ItemCode = item
|
||||
ItemCode = item,
|
||||
DataTimeMark = new Protocol.DataTimeMark()
|
||||
{
|
||||
Density = ammeterInfo.TimeDensity.GetFocusDensity(),//转换成协议的值
|
||||
Point = 1,
|
||||
DataTime = currentTime.AddDays(-1),//日冻结抄读时间为昨天
|
||||
},
|
||||
});
|
||||
|
||||
var meterReadingRecords = CreateAmmeterPacketInfo(
|
||||
@ -978,12 +968,22 @@ namespace JiShe.CollectBus.ScheduledMeterReading
|
||||
{
|
||||
var currentTime = DateTime.Now;
|
||||
string currentTimeStr = $"{currentTime:HH:mm:00}";
|
||||
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
#if DEBUG
|
||||
#else
|
||||
//需要检查是不是每月1号抄读上个月的数据
|
||||
if (currentTime.Date != currentTime.FirstDayOfMonth().Date)
|
||||
{
|
||||
_logger.LogInformation($"{nameof(AmmeterScheduledGetAutomaticMonthFreezeData)} 非月冻结数据抄读时间,暂不处理");
|
||||
return null;
|
||||
}
|
||||
else
|
||||
{
|
||||
timestamps = currentTime.LastDayOfPrdviousMonth();
|
||||
}
|
||||
|
||||
//判断是否是月冻结数据抄读
|
||||
if (!string.Equals(currentTimeStr, _applicationOptions.AutomaticMonthFreezeTime, StringComparison.CurrentCultureIgnoreCase))
|
||||
{
|
||||
@ -1002,13 +1002,23 @@ namespace JiShe.CollectBus.ScheduledMeterReading
|
||||
return null;
|
||||
}
|
||||
|
||||
foreach (var item in DayFreezeCodes)
|
||||
foreach (var item in MonthFreezeCodes)
|
||||
{
|
||||
ProtocolBuildResponse builderResponse = await protocolPlugin.BuildAsync(new ProtocolBuildRequest()
|
||||
{
|
||||
FocusAddress = ammeterInfo.FocusAddress,
|
||||
Pn = ammeterInfo.MeteringCode,
|
||||
ItemCode = item
|
||||
ItemCode = item,
|
||||
DataTimeMark = new Protocol.DataTimeMark()
|
||||
{
|
||||
Density = ammeterInfo.TimeDensity.GetFocusDensity(),//转换成协议的值
|
||||
Point = 1,
|
||||
#if DEBUG
|
||||
DataTime = currentTime.AddMonths(-1),//月冻结抄读时间为上个月
|
||||
#else
|
||||
DataTime = timestamps,//月冻结抄读时间为上个月
|
||||
#endif
|
||||
},
|
||||
});
|
||||
|
||||
var meterReadingRecords = CreateAmmeterPacketInfo(
|
||||
@ -1108,7 +1118,7 @@ namespace JiShe.CollectBus.ScheduledMeterReading
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
#endregion
|
||||
|
||||
|
||||
#region 水表采集处理
|
||||
|
||||
@ -265,5 +265,79 @@ namespace JiShe.CollectBus.Common.Extensions
|
||||
}
|
||||
return DateTime.TryParseExact(dateLong.ToString(), "yyyyMMdd HHmmssZZ", null, System.Globalization.DateTimeStyles.None, out DateTime date) ? date : throw new ArgumentException("Date must be between 10000101 and 99991231.");
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 取得某月的第一天
|
||||
/// </summary>
|
||||
/// <param name="datetime">要取得月份第一天的时间</param>
|
||||
/// <returns></returns>
|
||||
public static DateTime FirstDayOfMonth(this DateTime datetime)
|
||||
{
|
||||
return datetime.AddDays(1 - datetime.Day);
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 取得某月的最后一天
|
||||
/// </summary>
|
||||
/// <param name="datetime">要取得月份最后一天的时间</param>
|
||||
/// <returns></returns>
|
||||
public static DateTime LastDayOfMonth(this DateTime datetime)
|
||||
{
|
||||
return datetime.AddDays(1 - datetime.Day).AddMonths(1).AddDays(-1);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取得上个月第一天
|
||||
/// </summary>
|
||||
/// <param name="datetime">要取得上个月第一天的当前时间</param>
|
||||
/// <returns></returns>
|
||||
public static DateTime FirstDayOfPreviousMonth(this DateTime datetime)
|
||||
{
|
||||
return datetime.AddDays(1 - datetime.Day).AddMonths(-1);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取得上个月的最后一天
|
||||
/// </summary>
|
||||
/// <param name="datetime">要取得上个月最后一天的当前时间</param>
|
||||
/// <returns></returns>
|
||||
public static DateTime LastDayOfPrdviousMonth(this DateTime datetime)
|
||||
{
|
||||
return datetime.AddDays(1 - datetime.Day).AddDays(-1);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 取得某月第一天0点以及最后一天的23:59:59时间范围
|
||||
/// </summary>
|
||||
/// <param name="datetime"></param>
|
||||
/// <returns></returns>
|
||||
public static Tuple<DateTime, DateTime> GetMonthDateRange(this DateTime datetime)
|
||||
{
|
||||
var lastDayOfMonthDate = LastDayOfMonth(datetime);
|
||||
return new Tuple<DateTime, DateTime>(datetime.FirstDayOfMonth(), new DateTime(lastDayOfMonthDate.Year, lastDayOfMonthDate.Month, lastDayOfMonthDate.Day, 23, 59, 59));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取得某一天0点到当月最后一天的23:59:59时间范围
|
||||
/// </summary>
|
||||
/// <param name="datetime"></param>
|
||||
/// <returns></returns>
|
||||
public static Tuple<DateTime, DateTime> GetCurrentDateToLastDayRange(this DateTime datetime)
|
||||
{
|
||||
var lastDayOfMonthDate = LastDayOfMonth(datetime);
|
||||
return new Tuple<DateTime, DateTime>(datetime.Date, new DateTime(lastDayOfMonthDate.Year, lastDayOfMonthDate.Month, lastDayOfMonthDate.Day, 23, 59, 59));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取得某一天0点到23:59:59时间范围
|
||||
/// </summary>
|
||||
/// <param name="datetime"></param>
|
||||
/// <returns></returns>
|
||||
public static Tuple<DateTime, DateTime> GetCurrentDateRange(this DateTime datetime)
|
||||
{
|
||||
return new Tuple<DateTime, DateTime>(datetime.Date, new DateTime(datetime.Year, datetime.Month, datetime.Day, 23, 59, 59));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -136,57 +136,7 @@ namespace JiShe.CollectBus.Common.Helpers
|
||||
return objModel;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取得某月的第一天
|
||||
/// </summary>
|
||||
/// <param name="datetime">要取得月份第一天的时间</param>
|
||||
/// <returns></returns>
|
||||
public static DateTime FirstDayOfMonth(this DateTime datetime)
|
||||
{
|
||||
return datetime.AddDays(1 - datetime.Day);
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 取得某月的最后一天
|
||||
/// </summary>
|
||||
/// <param name="datetime">要取得月份最后一天的时间</param>
|
||||
/// <returns></returns>
|
||||
public static DateTime LastDayOfMonth(this DateTime datetime)
|
||||
{
|
||||
return datetime.AddDays(1 - datetime.Day).AddMonths(1).AddDays(-1);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取得某月第一天0点以及最后一天的23:59:59时间范围
|
||||
/// </summary>
|
||||
/// <param name="datetime"></param>
|
||||
/// <returns></returns>
|
||||
public static Tuple<DateTime, DateTime> GetMonthDateRange(this DateTime datetime)
|
||||
{
|
||||
var lastDayOfMonthDate = LastDayOfMonth(datetime);
|
||||
return new Tuple<DateTime, DateTime>(datetime.FirstDayOfMonth(), new DateTime(lastDayOfMonthDate.Year, lastDayOfMonthDate.Month, lastDayOfMonthDate.Day, 23, 59, 59));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取得某一天0点到当月最后一天的23:59:59时间范围
|
||||
/// </summary>
|
||||
/// <param name="datetime"></param>
|
||||
/// <returns></returns>
|
||||
public static Tuple<DateTime, DateTime> GetCurrentDateToLastDayRange(this DateTime datetime)
|
||||
{
|
||||
var lastDayOfMonthDate = LastDayOfMonth(datetime);
|
||||
return new Tuple<DateTime, DateTime>(datetime.Date, new DateTime(lastDayOfMonthDate.Year, lastDayOfMonthDate.Month, lastDayOfMonthDate.Day, 23, 59, 59));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取得某一天0点到23:59:59时间范围
|
||||
/// </summary>
|
||||
/// <param name="datetime"></param>
|
||||
/// <returns></returns>
|
||||
public static Tuple<DateTime, DateTime> GetCurrentDateRange(this DateTime datetime)
|
||||
{
|
||||
return new Tuple<DateTime, DateTime>(datetime.Date, new DateTime(datetime.Year, datetime.Month, datetime.Day, 23, 59, 59));
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取指定枚举的所有 Attribute 说明以及value组成的键值对
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user