合并代码

This commit is contained in:
ChenYi 2025-05-08 17:22:06 +08:00
commit bdfc8eabae
81 changed files with 800 additions and 530 deletions

View File

@ -37,6 +37,9 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_00H
TimeDensity = -1
};
result?.Invoke(dto);
#if DEBUG
_logger.LogWarning($"全部否认:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString}");
#endif
return Task.FromResult(true);
}
catch (Exception ex)

View File

@ -48,7 +48,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_02H
data.ProjectId = ammeterInfo.ProjectID;
data.DeviceId = ammeterInfo.FocusId;
data.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
data.MeterAddress = ammeterInfo.AmmerterAddress;
data.DeviceAddress = ammeterInfo.Address;
data.DeviceType = MeterTypeEnum.Focus;
}
UnitDataAnalysis<AnalysisBaseDto<string>> dto = new UnitDataAnalysis<AnalysisBaseDto<string>>

View File

@ -45,7 +45,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_02H
data.ProjectId = ammeterInfo.ProjectID;
data.DeviceId = ammeterInfo.FocusId;
data.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
data.MeterAddress = ammeterInfo.AmmerterAddress;
data.DeviceAddress = ammeterInfo.Address;
data.DeviceType = MeterTypeEnum.Focus;
}
UnitDataAnalysis<AnalysisBaseDto<string>> dto = new UnitDataAnalysis<AnalysisBaseDto<string>>

View File

@ -45,7 +45,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_02H
data.ProjectId = ammeterInfo.ProjectID;
data.DeviceId = ammeterInfo.FocusId;
data.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
data.MeterAddress = ammeterInfo.AmmerterAddress;
data.DeviceAddress = ammeterInfo.Address;
data.DeviceType = MeterTypeEnum.Focus;
}
UnitDataAnalysis<AnalysisBaseDto<string>> dto = new UnitDataAnalysis<AnalysisBaseDto<string>>

View File

@ -33,7 +33,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
ArgumentNullException.ThrowIfNull(input);
ArgumentNullException.ThrowIfNull(input.UnitData?.HexMessageList);
ArgumentNullException.ThrowIfNull(input.A.A3?.D1_D7);
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -48,7 +48,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
TimeDensity = 0
};
List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
List<AnalysisBaseDto<decimal>> list = GenerateFinalResult(2, datas, "正向有功电能示值", input.AFN_FC.AFN, input.DT.Fn);
List<AnalysisBaseDto<decimal?>> list = GenerateFinalResult(2, datas, "正向有功电能示值", input.AFN_FC.AFN, input.DT.Fn);
unitDataAnalysis.Data= list;
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
@ -90,22 +90,32 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
}
#endregion
public List<AnalysisBaseDto<decimal>> GenerateFinalResult(int index, List<string> data, string filedDesc = "", int afn = 0, int fn = 0)
public List<AnalysisBaseDto<decimal?>> GenerateFinalResult(int index, List<string> data, string filedDesc = "", int afn = 0, int fn = 0)
{
List<AnalysisBaseDto<decimal>> list = new List<AnalysisBaseDto<decimal>>();
List<AnalysisBaseDto<decimal?>> list = new List<AnalysisBaseDto<decimal?>>();
for (int i = index; i < data.Count; i++)
{
AnalysisBaseDto<decimal> meter = new AnalysisBaseDto<decimal>();
decimal value = 0;
AnalysisBaseDto<decimal?> meter = new AnalysisBaseDto<decimal?>
{
DeviceType = MeterTypeEnum.Ammeter
};
var errorCode = data[i].CheckErrorCode();
if (errorCode != null)
{
meter.ErrorCodeMsg= errorCode.Item2;
meter.ValidData = false;
}
else
decimal.TryParse(data[i], out value);
meter.DataValue = value;
{
if(decimal.TryParse(data[i], out decimal value))
meter.DataValue = value;
}
meter.DataType = $"{afn.ToString().PadLeft(2, '0')}_{fn}_{i - index}";
meter.TimeSpan = Convert.ToDateTime($"{data[0].Substring(0, 4)}-{data[0].Substring(4, 2)}-{data[0].Substring(6, 2)} {data[0].Substring(8, 2)}:{data[0].Substring(10, 2)}:00");
string timeSpan = $"{data[0].Substring(0, 4)}-{data[0].Substring(4, 2)}-{data[0].Substring(6, 2)} {data[0].Substring(8, 2)}:{data[0].Substring(10, 2)}:00";
if (DateTime.TryParse(timeSpan, out DateTime readingDate))
{
meter.TimeSpan = readingDate;
}
meter.FiledDesc = filedDesc;
meter.FiledName = meter.DataType.GetDataFieldByGatherDataType() ?? string.Empty;
list.Add(meter);

View File

@ -31,8 +31,8 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
ArgumentNullException.ThrowIfNull(input);
ArgumentNullException.ThrowIfNull(input.UnitData?.HexMessageList);
List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
List<AnalysisBaseDto<decimal>> list = GenerateFinalResult(2, datas, "正向无功电能示值", input.AFN_FC.AFN, input.DT.Fn);
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
List<AnalysisBaseDto<decimal?>> list = GenerateFinalResult(2, datas, "正向无功电能示值", input.AFN_FC.AFN, input.DT.Fn);
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -78,21 +78,30 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
}
return values;
}
public List<AnalysisBaseDto<decimal>> GenerateFinalResult(int index, List<string> data, string filedDesc = "", int afn = 0, int fn = 0)
public List<AnalysisBaseDto<decimal?>> GenerateFinalResult(int index, List<string> data, string filedDesc = "", int afn = 0, int fn = 0)
{
List<AnalysisBaseDto<decimal>> list = new List<AnalysisBaseDto<decimal>>();
List<AnalysisBaseDto<decimal?>> list = new List<AnalysisBaseDto<decimal?>>();
for (int i = index; i < data.Count; i++)
{
AnalysisBaseDto<decimal> meter = new AnalysisBaseDto<decimal>();
decimal value = 0;
AnalysisBaseDto<decimal?> meter = new AnalysisBaseDto<decimal?>
{
DeviceType = MeterTypeEnum.Ammeter
};
var errorCode = data[i].CheckErrorCode();
if (errorCode != null)
{
meter.ErrorCodeMsg = errorCode.Item2;
meter.ValidData = false;
}
else
decimal.TryParse(data[i], out value);
meter.DataValue = value;
{
if(decimal.TryParse(data[i], out decimal value))
meter.DataValue = value;
}
meter.DataType = $"{afn.ToString().PadLeft(2, '0')}_{fn}_{i - index}";
meter.TimeSpan = Convert.ToDateTime($"{data[0].Substring(0, 4)}-{data[0].Substring(4, 2)}-{data[0].Substring(6, 2)} {data[0].Substring(8, 2)}:{data[0].Substring(10, 2)}:00");
string timeSpan = $"{data[0].Substring(0, 4)}-{data[0].Substring(4, 2)}-{data[0].Substring(6, 2)} {data[0].Substring(8, 2)}:{data[0].Substring(10, 2)}:00";
if(DateTime.TryParse(timeSpan, out DateTime readingDate))
meter.TimeSpan = readingDate;
meter.FiledDesc = filedDesc;
meter.FiledName = meter.DataType.GetDataFieldByGatherDataType() ?? string.Empty;
list.Add(meter);

View File

@ -6,6 +6,8 @@ using JiShe.CollectBus.Protocol.Interfaces;
using JiShe.CollectBus.Protocol.T37612012.Appendix;
using JiShe.CollectBus.Protocol3761;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json.Linq;
using YamlDotNet.Core.Tokens;
namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
{
@ -30,8 +32,8 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
ArgumentNullException.ThrowIfNull(input);
ArgumentNullException.ThrowIfNull(input.UnitData?.HexMessageList);
List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
List<AnalysisBaseDto<decimal>> list = GenerateFinalResult(2, datas, "反向有功总电能示值", input.AFN_FC.AFN, input.DT.Fn);
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
List<AnalysisBaseDto<decimal?>> list = GenerateFinalResult(2, datas, "反向有功总电能示值", input.AFN_FC.AFN, input.DT.Fn);
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -78,21 +80,30 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
}
return values;
}
public List<AnalysisBaseDto<decimal>> GenerateFinalResult(int index, List<string> data, string filedDesc = "", int afn = 0, int fn = 0)
public List<AnalysisBaseDto<decimal?>> GenerateFinalResult(int index, List<string> data, string filedDesc = "", int afn = 0, int fn = 0)
{
List<AnalysisBaseDto<decimal>> list = new List<AnalysisBaseDto<decimal>>();
List<AnalysisBaseDto<decimal?>> list = new List<AnalysisBaseDto<decimal?>>();
for (int i = index; i < data.Count; i++)
{
AnalysisBaseDto<decimal> meter = new AnalysisBaseDto<decimal>();
decimal value = 0;
AnalysisBaseDto<decimal?> meter = new AnalysisBaseDto<decimal?>
{
DeviceType = MeterTypeEnum.Ammeter
};
var errorCode = data[i].CheckErrorCode();
if (errorCode != null)
{
meter.ErrorCodeMsg = errorCode.Item2;
meter.ValidData = false;
}
else
decimal.TryParse(data[i], out value);
meter.DataValue = value;
{
if(decimal.TryParse(data[i], out decimal value))
meter.DataValue = value;
}
meter.DataType = $"{afn.ToString().PadLeft(2, '0')}_{fn}_{i - index}";
meter.TimeSpan = Convert.ToDateTime($"{data[0].Substring(0, 4)}-{data[0].Substring(4, 2)}-{data[0].Substring(6, 2)} {data[0].Substring(8, 2)}:{data[0].Substring(10, 2)}:00");
string timeSpan = $"{data[0].Substring(0, 4)}-{data[0].Substring(4, 2)}-{data[0].Substring(6, 2)} {data[0].Substring(8, 2)}:{data[0].Substring(10, 2)}:00";
if(DateTime.TryParse(timeSpan, out DateTime readTime))
meter.TimeSpan = readTime;
meter.FiledDesc = filedDesc;
meter.FiledName = meter.DataType.GetDataFieldByGatherDataType() ?? string.Empty;
list.Add(meter);

View File

@ -7,6 +7,7 @@ using JiShe.CollectBus.Protocol.Interfaces;
using JiShe.CollectBus.Protocol.T37612012.Appendix;
using JiShe.CollectBus.Protocol3761;
using Microsoft.Extensions.Logging;
using YamlDotNet.Core.Tokens;
namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
{
@ -34,9 +35,8 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
ArgumentNullException.ThrowIfNull(input.UnitData?.HexMessageList);
List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> list = GenerateFinalResult(2, datas, "反向无功电能示值", dataType);
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
List<AnalysisBaseDto<decimal?>> list = GenerateFinalResult(2, datas, "反向无功电能示值", dataType);
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -82,21 +82,33 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
}
return values;
}
public List<AnalysisBaseDto<decimal>> GenerateFinalResult(int index, List<string> data, string dataType, string filedDesc = "")
public List<AnalysisBaseDto<decimal?>> GenerateFinalResult(int index, List<string> data, string dataType, string filedDesc = "")
{
List<AnalysisBaseDto<decimal>> list = new List<AnalysisBaseDto<decimal>>();
List<AnalysisBaseDto<decimal?>> list = new List<AnalysisBaseDto<decimal?>>();
for (int i = index; i < data.Count; i++)
{
AnalysisBaseDto<decimal> meter = new AnalysisBaseDto<decimal>();
decimal value = 0;
AnalysisBaseDto<decimal?> meter = new AnalysisBaseDto<decimal?>
{
DeviceType = MeterTypeEnum.Ammeter
};
var errorCode = data[i].CheckErrorCode();
if (errorCode != null)
{
meter.ErrorCodeMsg = errorCode.Item2;
meter.ValidData = false;
}
else
decimal.TryParse(data[i], out value);
meter.DataValue = value;
{
if(decimal.TryParse(data[i], out decimal value))
meter.DataValue = value;
}
meter.DataType = $"{dataType}_{i - index}";
meter.TimeSpan = Convert.ToDateTime($"{data[0].Substring(0, 4)}-{data[0].Substring(4, 2)}-{data[0].Substring(6, 2)} {data[0].Substring(8, 2)}:{data[0].Substring(10, 2)}:00");
string timeSpan = $"{data[0].Substring(0, 4)}-{data[0].Substring(4, 2)}-{data[0].Substring(6, 2)} {data[0].Substring(8, 2)}:{data[0].Substring(10, 2)}:00";
if (DateTime.TryParse(timeSpan,out DateTime readingDate))
{
meter.TimeSpan = readingDate;
}
meter.FiledDesc = filedDesc;
meter.FiledName = meter.DataType.GetDataFieldByGatherDataType() ?? string.Empty;
list.Add(meter);

View File

@ -35,8 +35,8 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
AnalysisBaseDto<decimal> data = GenerateFinalResult(datas, "当月正向有功最大需量及发生时间", dataType);
UnitDataAnalysis<AnalysisBaseDto<decimal>> unitDataAnalysis = new UnitDataAnalysis<AnalysisBaseDto<decimal>>
AnalysisBaseDto<decimal?> data = GenerateFinalResult(datas, "当月正向有功最大需量及发生时间", dataType);
UnitDataAnalysis<AnalysisBaseDto<decimal?>> unitDataAnalysis = new UnitDataAnalysis<AnalysisBaseDto<decimal?>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -96,19 +96,25 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
return values;
}
public AnalysisBaseDto<decimal> GenerateFinalResult(List<string> data, string filedDesc,string dataType)
public AnalysisBaseDto<decimal?> GenerateFinalResult(List<string> data, string filedDesc,string dataType)
{
AnalysisBaseDto<decimal> dto = new AnalysisBaseDto<decimal>();
decimal value = 0;
AnalysisBaseDto<decimal?> dto = new AnalysisBaseDto<decimal?>
{
DeviceType = MeterTypeEnum.Ammeter
};
var errorCode = data[2].CheckErrorCode();
if (errorCode != null)
{
dto.ErrorCodeMsg = errorCode.Item2;
dto.ValidData = false;
}
else
decimal.TryParse(data[2], out value);
{
if(decimal.TryParse(data[2], out decimal value))
dto.DataValue = value;
}
dto.DataValue = value;
string timeSpan = $"{DateTime.Now.Year}-{data[3].Substring(0, 2)}-{data[3].Substring(2, 2)} {data[3].Substring(4, 2)}:{data[3].Substring(6, 2)}:00";//$"{data[0].Substring(0, 4)}-{data[0].Substring(4, 2)}-{data[0].Substring(6, 2)}";
string timeSpan = $"{DateTime.Now.Year}-{data[3].Substring(0, 2)}-{data[3].Substring(2, 2)} {data[3].Substring(4, 2)}:{data[3].Substring(6, 2)}:00";
if (DateTime.TryParse(timeSpan, out DateTime readingDate))
{
dto.TimeSpan = readingDate;

View File

@ -38,7 +38,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
List<string> datas = await AnalysisDataUnit(input.UnitData.HexMessageList);
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
AnalysisBaseDto<decimal> data = GenerateFinalResult(datas, dataType,"上月(上一结算日)正向有功最大需量及发生时间");
AnalysisBaseDto<decimal?> data = GenerateFinalResult(datas, dataType,"上月(上一结算日)正向有功最大需量及发生时间");
// 查询电表信息
AmmeterInfo ammeterInfo = await _dataStorage.GetMeterInfoAsync(data.DeviceType.ToString(), "15");
if (ammeterInfo != null)
@ -46,9 +46,9 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
data.ProjectId = ammeterInfo.ProjectID;
data.DeviceId = ammeterInfo.MeterId;
data.DatabaseBusiID=ammeterInfo.DatabaseBusiID;
data.MeterAddress= ammeterInfo.AmmerterAddress;
data.DeviceAddress= ammeterInfo.AmmerterAddress;
}
UnitDataAnalysis<AnalysisBaseDto<decimal>> unitDataAnalysis = new UnitDataAnalysis<AnalysisBaseDto<decimal>>
UnitDataAnalysis<AnalysisBaseDto<decimal?>> unitDataAnalysis = new UnitDataAnalysis<AnalysisBaseDto<decimal?>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -63,7 +63,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
DensityUnit = DensityUnit.Second,
TimeDensity = 0
};
await _dataStorage.SaveDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}
@ -110,10 +110,12 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
}
return values;
}
public AnalysisBaseDto<decimal> GenerateFinalResult(List<string> data,string dataType, string filedDesc = "")
public AnalysisBaseDto<decimal?> GenerateFinalResult(List<string> data,string dataType, string filedDesc = "")
{
AnalysisBaseDto<decimal> dto = new AnalysisBaseDto<decimal>();
AnalysisBaseDto<decimal?> dto = new AnalysisBaseDto<decimal?>
{
DeviceType = MeterTypeEnum.Ammeter
};
var errorCodeInfo = data[2].CheckErrorCode();
if (errorCodeInfo != null)
{
@ -133,7 +135,6 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
else
{
string timeSpan = $"{DateTime.Now.Year}-{data[3].Substring(0, 2)}-{data[3].Substring(2, 2)} {data[3].Substring(4, 2)}:{data[3].Substring(6, 2)}:00";
//TODO:时间标
if (!DateTime.TryParse(timeSpan, out DateTime dataTime))
dto.ValidData = false;

View File

@ -6,6 +6,7 @@ using JiShe.CollectBus.Protocol.Dto;
using JiShe.CollectBus.Protocol.Interfaces;
using JiShe.CollectBus.Protocol3761;
using Microsoft.Extensions.Logging;
using YamlDotNet.Core.Tokens;
namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
{
@ -34,8 +35,8 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
ArgumentNullException.ThrowIfNull(input.AFN_FC.AFN);
ArgumentNullException.ThrowIfNull(input.DT.Fn);
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
AnalysisBaseDto<decimal> data = GenerateFinalResult(input.UnitData.HexMessageList, dataType);
UnitDataAnalysis<AnalysisBaseDto<decimal>> dto = new UnitDataAnalysis<AnalysisBaseDto<decimal>>
AnalysisBaseDto<decimal?> data = GenerateFinalResult(input.UnitData.HexMessageList, dataType);
UnitDataAnalysis<AnalysisBaseDto<decimal?>> dto = new UnitDataAnalysis<AnalysisBaseDto<decimal?>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -58,10 +59,12 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
}
return await Task.FromResult(false);
}
public AnalysisBaseDto<decimal> GenerateFinalResult(List<string> hexMessageList,string dataType)
public AnalysisBaseDto<decimal?> GenerateFinalResult(List<string> hexMessageList,string dataType)
{
AnalysisBaseDto<decimal> dto = new AnalysisBaseDto<decimal>();
decimal value = 0;
AnalysisBaseDto<decimal?> dto = new AnalysisBaseDto<decimal?>
{
DeviceType = MeterTypeEnum.WaterMeter
};
var arr = hexMessageList.GetRange(11, 4);
var errorCodeInfo = arr.CheckErrorCode();
if (errorCodeInfo != null)
@ -70,9 +73,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
dto.ErrorCodeMsg = errorCodeInfo.Item2;
}
else
decimal.TryParse($"{arr[11]}{arr[12]}{arr[13]}.{arr[14]}", out value);
dto.DataValue = value;
{
if (decimal.TryParse($"{arr[11]}{arr[12]}{arr[13]}.{arr[14]}", out decimal value))
dto.DataValue = value;
}
dto.DataType = dataType;
dto.FiledDesc = "水示值";
dto.FiledName = dto.DataType.GetDataFieldByGatherDataType() ?? string.Empty;

View File

@ -1,11 +1,14 @@
using JiShe.CollectBus.Common.Enums;
using JiShe.CollectBus.Common.Extensions;
using JiShe.CollectBus.Common.Helpers;
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;
using Newtonsoft.Json.Linq;
using YamlDotNet.Core.Tokens;
namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
{
@ -32,13 +35,15 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
ArgumentNullException.ThrowIfNull(input);
ArgumentNullException.ThrowIfNull(input.UnitData?.HexMessageList);
List<string> remarks = new List<string>() { "当前总有功功率", "当前A相有功功率", "当前B相有功功率", "当前C相有功功率", "当前总无功功率", "当前A相无功功率", "当前B相无功功率", "当前C相无功功率", "当前总功率因数", "当前A相功率因数", "当前B相功率因数", "当前C相功率因数", "当前A相电压", "当前B相电压", "当前C相电压", "当前A相电流", "当前C相电流", "当前 C相电流", "当前零序电流", "当前总视在功率", "当前A相视在功率", "当前B相视在功率", "当前C相视在功率" };
List<AnalysisBaseDto<decimal>> list = new List<AnalysisBaseDto<decimal>>();
List<AnalysisBaseDto<decimal?>> list = new List<AnalysisBaseDto<decimal?>>();
List<string> data = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
for (int i = 1; i < data.Count; i++)
{
AnalysisBaseDto<decimal> dto = new AnalysisBaseDto<decimal>();
decimal value = 0;
AnalysisBaseDto<decimal?> dto = new AnalysisBaseDto<decimal?>
{
DeviceType = MeterTypeEnum.Ammeter
};
var errorCodeInfo = data[i].CheckErrorCode();
if (errorCodeInfo != null)
{
@ -46,15 +51,18 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
dto.ErrorCodeMsg = errorCodeInfo.Item2;
}
else
decimal.TryParse(data[i], out value);
dto.DataValue = value;
{
if(decimal.TryParse(data[i], out decimal value))
dto.DataValue = value;
}
dto.DataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}_{DataType[i-1]}";
dto.FiledName = DataType[i - 1];
dto.FiledName = DataType[i - 1].GetDataFieldByGatherDataType() ?? string.Empty;
dto.TimeSpan = Convert.ToDateTime($"{data[0].Substring(0, 4)}-{data[0].Substring(4, 2)}-{data[0].Substring(6, 2)} {data[0].Substring(8, 2)}:{data[0].Substring(10, 2)}:00");
dto.FiledDesc = remarks[i - 1];
list.Add(dto);
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,

View File

@ -6,6 +6,8 @@ using JiShe.CollectBus.Protocol.Interfaces;
using JiShe.CollectBus.Protocol.T37612012.Appendix;
using JiShe.CollectBus.Protocol3761;
using Microsoft.Extensions.Logging;
using static System.Runtime.InteropServices.JavaScript.JSType;
using System.Diagnostics.Metrics;
namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
{
@ -71,7 +73,8 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
{
await _analysisStrategyContext.ExecuteAsync<List<string>>(nameof(Appendix_A1), arr, (value) =>
{
dto.DataValue = value;
var data = (Tuple<string, string>)value;
dto.DataValue = $"{data.Item1} {data.Item2}";
});
}
dto.DataType = dataType;

View File

@ -1,11 +1,13 @@
using JiShe.CollectBus.Common.Enums;
using JiShe.CollectBus.Common.Extensions;
using JiShe.CollectBus.Common.Helpers;
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;
using YamlDotNet.Core.Tokens;
namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
{
@ -33,11 +35,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
List<string> data = await AnalysisDataUnitAsync(input.UnitData?.HexMessageList!);
List<string> remarks = new List<string>() { "Uab/Ua 相位角", "Ub 相位角", "Ucb/Uc 相位角", "Ia 相位角", "Ib 相位角", "Ic 相位角" };
List<AnalysisBaseDto<decimal>> list = new List<AnalysisBaseDto<decimal>>();
List<AnalysisBaseDto<decimal?>> list = new List<AnalysisBaseDto<decimal?>>();
for (int i = 0; i < data.Count; i++)
{
AnalysisBaseDto<decimal> dto = new AnalysisBaseDto<decimal>();
decimal value = 0;
AnalysisBaseDto<decimal?> dto = new AnalysisBaseDto<decimal?>
{
DeviceType = MeterTypeEnum.Ammeter
};
var errorCodeInfo = data[i].CheckErrorCode();
if (errorCodeInfo != null)
{
@ -45,15 +49,16 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
dto.ErrorCodeMsg = errorCodeInfo.Item2;
}
else
decimal.TryParse(data[i], out value);
dto.DataValue = value;
{
if(decimal.TryParse(data[i], out decimal value))
dto.DataValue = value;
}
dto.DataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}_{DataType[i]}";
dto.FiledName = DataType[i];
dto.FiledName = dto.DataType.GetDataFieldByGatherDataType() ?? string.Empty;
dto.FiledDesc= remarks[i];
list.Add(dto);
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,

View File

@ -38,7 +38,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "反向无功总电能量");
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "反向无功总电能量");
if (data.Count > 0)
{
@ -51,12 +51,12 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -71,7 +71,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -37,7 +37,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "正向有功总电能示值");
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "正向有功总电能示值");
if (data.Count > 0)
{
// 查询电表信息
@ -49,11 +49,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -68,7 +68,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -38,7 +38,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "正向无功总电能示值");
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "正向无功总电能示值");
if (data.Count > 0)
{
@ -51,11 +51,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -70,7 +70,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -38,7 +38,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "反向有功总电能示值");
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "反向有功总电能示值");
if (data.Count > 0)
{
@ -51,11 +51,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -70,7 +70,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -37,7 +37,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "反向无功总电能示值");
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "反向无功总电能示值");
if (data.Count > 0)
{
@ -50,11 +50,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -69,7 +69,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -37,7 +37,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "功率因数");
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "功率因数");
if (data.Count > 0)
{
@ -50,11 +50,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -69,7 +69,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -37,7 +37,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "A相功率因数");
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "A相功率因数");
if (data.Count > 0)
{
@ -50,11 +50,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -69,7 +69,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -37,7 +37,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "B相功率因数");
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "B相功率因数");
if (data.Count > 0)
{
// 查询电表信息
@ -49,11 +49,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -68,7 +68,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -37,7 +37,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "C相功率因数");
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "C相功率因数");
if (data.Count > 0)
{
@ -50,11 +50,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -69,7 +69,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -8,6 +8,7 @@ using JiShe.CollectBus.Protocol.Interfaces;
using JiShe.CollectBus.Protocol.T37612012.Appendix;
using JiShe.CollectBus.Protocol3761;
using Microsoft.Extensions.Logging;
using YamlDotNet.Core.Tokens;
namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
{
@ -35,7 +36,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = GenerateFinalResult(datas,3, dataType, "抄表日冻结电能表正向有功最大需量及发生时间");
List<AnalysisBaseDto<decimal?>> data = GenerateFinalResult(datas,3, dataType, "抄表日冻结电能表正向有功最大需量及发生时间");
if (data.Count > 0)
{
@ -48,11 +49,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -67,7 +68,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Day,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}
@ -86,18 +87,18 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int ratingCount = hexMessageList.GetRatingCount(12, 1);//费率数 M1≤M≤12
values.Add(ratingCount.ToString());
int handlerNum = 13;
values.AddRange(await GetDataAsync<decimal>(hexMessageList.GetRange(handlerNum, 3 * (ratingCount + 1)), ratingCount, 3, nameof(Appendix_A23)));//正向有功总最大需量
values.AddRange(await GetDataAsync(hexMessageList.GetRange(handlerNum, 3 * (ratingCount + 1)), ratingCount, 3, nameof(Appendix_A23)));//正向有功总最大需量
handlerNum += 3 * (ratingCount + 1);//12
values.AddRange(await GetDataAsync<string>(hexMessageList.GetRange(handlerNum, 4 * (ratingCount + 1)), ratingCount, 4, nameof(Appendix_A17)));//正向有功总最大需量发生时间
values.AddRange(await GetDataAsync(hexMessageList.GetRange(handlerNum, 4 * (ratingCount + 1)), ratingCount, 4, nameof(Appendix_A17)));//正向有功总最大需量发生时间
handlerNum += 4 * (ratingCount + 1);//28
values.AddRange(await GetDataAsync<decimal>(hexMessageList.GetRange(handlerNum, 3 * (ratingCount + 1)), ratingCount, 3, nameof(Appendix_A23)));//正向无功总最大需量
values.AddRange(await GetDataAsync(hexMessageList.GetRange(handlerNum, 3 * (ratingCount + 1)), ratingCount, 3, nameof(Appendix_A23)));//正向无功总最大需量
handlerNum += 3 * (ratingCount + 1);//48
values.AddRange(await GetDataAsync<string>(hexMessageList.GetRange(handlerNum, 4 * (ratingCount + 1)), ratingCount, 4, nameof(Appendix_A17)));//正向无功总最大需量发生时间
values.AddRange(await GetDataAsync(hexMessageList.GetRange(handlerNum, 4 * (ratingCount + 1)), ratingCount, 4, nameof(Appendix_A17)));//正向无功总最大需量发生时间
handlerNum += 4 * (ratingCount + 1);
return values;
}
private async Task<List<string>> GetDataAsync<T>(List<string> data, int ratingCount, int len, string appendixName)
private async Task<List<string>> GetDataAsync(List<string> data, int ratingCount, int len, string appendixName)
{
List<string> values = new List<string>();
for (int i = 0; i < ratingCount + 1; i++)
@ -108,7 +109,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
values.Add(errorCode.Item1);
else
{
await _analysisStrategyContext.ExecuteAsync<List<string>>(nameof(Appendix_A5), arr, (value) =>
await _analysisStrategyContext.ExecuteAsync<List<string>>(appendixName, arr, (value) =>
{
values.Add(value.ToString());
});
@ -117,19 +118,18 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
return values;
}
public List<AnalysisBaseDto<decimal>> GenerateFinalResult(List<string> data, int index, string dataType, string filedDesc = "")
public List<AnalysisBaseDto<decimal?>> GenerateFinalResult(List<string> data, int index, string dataType, string filedDesc = "")
{
List<AnalysisBaseDto<decimal>> list = new List<AnalysisBaseDto<decimal>>();
List<AnalysisBaseDto<decimal?>> list = new List<AnalysisBaseDto<decimal?>>();
int fCount = Convert.ToInt32(data[2]) + 1;
for (int i = 1; i <= 2; i++)
{
AnalysisBaseDto<decimal> meter = new AnalysisBaseDto<decimal>
AnalysisBaseDto<decimal?> meter = new AnalysisBaseDto<decimal?>
{
DeviceType = MeterTypeEnum.Ammeter
};
int startIndex = i == 1 ? 3 : (3 + i * fCount);
decimal value = 0;
var errorCode = data[startIndex].CheckErrorCode();
if (errorCode != null)
{
@ -137,12 +137,14 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
meter.ErrorCodeMsg = errorCode.Item2;
}
else
decimal.TryParse(data[startIndex], out value);
meter.DataValue = value;
{
if(decimal.TryParse(data[startIndex], out decimal value))
{
meter.DataValue = value;
}
}
string timeSpan = $"{DateTime.Now.Year}-{data[startIndex + fCount].Substring(0, 2)}-{data[startIndex + fCount].Substring(2, 2)} {data[startIndex + fCount].Substring(4, 2)}:{data[startIndex + fCount].Substring(6, 2)}:00";
DateTime readingDate = DateTime.Now;
if (DateTime.TryParse(timeSpan, out readingDate))
if (DateTime.TryParse(timeSpan, out DateTime readingDate))
{
meter.TimeSpan = readingDate;
}

View File

@ -37,7 +37,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "一象限无功电能示值");
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "一象限无功电能示值");
if (data.Count > 0)
{
// 查询电表信息
@ -49,11 +49,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -68,7 +68,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -31,13 +31,14 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
try
{
ArgumentNullException.ThrowIfNull(input);
ArgumentNullException.ThrowIfNull(input.A.Code);
ArgumentNullException.ThrowIfNull(input.UnitData?.HexMessageList);
List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "四象限无功电能示值");
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "四象限无功电能示值");
if (data.Count > 0)
{
// 查询电表信息
@ -49,11 +50,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -68,7 +69,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -37,7 +37,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "二象限无功电能示值");
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "二象限无功电能示值");
if (data.Count > 0)
{
// 查询电表信息
@ -49,11 +49,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -68,7 +68,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -37,7 +37,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "三象限无功电能示值");
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "三象限无功电能示值");
if (data.Count > 0)
{
@ -50,11 +50,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -69,7 +69,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -36,7 +36,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
string timeSpan = $"{datas[0].Substring(0, 4)}-{datas[0].Substring(4, 2)}-{datas[0].Substring(6, 2)} 00:00:00";
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_d(3, dataType,timeSpan, "正向有功总电能示值").IsValidData(new List<string>() { "0D_161", "0D_161_1", "0D_161_2", "0D_161_3", "0D_161_4" });
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_d(3, dataType,timeSpan, "正向有功总电能示值").IsValidData(new List<string>() { "0D_161", "0D_161_1", "0D_161_2", "0D_161_3", "0D_161_4" });
if (data.Count > 0)
{
@ -49,11 +49,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -68,7 +68,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Day,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -36,7 +36,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
string timeSpan = $"{datas[0].Substring(0, 4)}-{datas[0].Substring(4, 2)}-{datas[0].Substring(6, 2)} 00:00:00";
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_d(3, dataType, timeSpan, "正向无功(组合无功 1电能示值").IsValidData(new List<string>() { "0D_162", "0D_162_1", "0D_162_2", "0D_162_3", "0D_162_4" });
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_d(3, dataType, timeSpan, "正向无功(组合无功 1电能示值").IsValidData(new List<string>() { "0D_162", "0D_162_1", "0D_162_2", "0D_162_3", "0D_162_4" });
if (data.Count > 0)
{
// 查询电表信息
@ -48,11 +48,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -67,7 +67,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Day,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -36,7 +36,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
string timeSpan = $"{datas[0].Substring(0, 4)}-{datas[0].Substring(4, 2)}-{datas[0].Substring(6, 2)} 00:00:00";
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_d(3, dataType, timeSpan, "反向有功总电能示值").IsValidData(new List<string>() { "0D_163", "0D_163_1", "0D_163_2", "0D_163_3", "0D_163_4" });
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_d(3, dataType, timeSpan, "反向有功总电能示值").IsValidData(new List<string>() { "0D_163", "0D_163_1", "0D_163_2", "0D_163_3", "0D_163_4" });
if (data.Count > 0)
{
@ -49,11 +49,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -68,7 +68,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Day,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -36,7 +36,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
string timeSpan = $"{datas[0].Substring(0, 4)}-{datas[0].Substring(4, 2)}-{datas[0].Substring(6, 2)} 00:00:00";
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_d(3, dataType, timeSpan, "日冻结反向无功(组合无功 1电能示值").IsValidData(new List<string>() { "0D_164", "0D_164_1", "0D_164_2", "0D_164_3", "0D_164_4" });
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_d(3, dataType, timeSpan, "日冻结反向无功(组合无功 1电能示值").IsValidData(new List<string>() { "0D_164", "0D_164_1", "0D_164_2", "0D_164_3", "0D_164_4" });
if (data.Count > 0)
{
// 查询电表信息
@ -48,11 +48,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -67,7 +67,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Day,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -36,7 +36,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
string timeSpan = $"{datas[0].Substring(0, 4)}-{datas[0].Substring(4, 2)}-{datas[0].Substring(6, 2)} 00:00:00";
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_d(3, dataType, timeSpan, "日冻结一象限无功电能示值").IsValidData(new List<string>() { "0D_165", "0D_165_1", "0D_165_2", "0D_165_3", "0D_165_4" });
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_d(3, dataType, timeSpan, "日冻结一象限无功电能示值").IsValidData(new List<string>() { "0D_165", "0D_165_1", "0D_165_2", "0D_165_3", "0D_165_4" });
if (data.Count > 0)
{
// 查询电表信息
@ -48,11 +48,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -67,7 +67,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Day,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -36,7 +36,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
string timeSpan = $"{datas[0].Substring(0, 4)}-{datas[0].Substring(4, 2)}-{datas[0].Substring(6, 2)} 00:00:00";
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_d(3, dataType, timeSpan, "日冻结二象限无功电能示值").IsValidData(new List<string>() { "0D_166", "0D_166_1", "0D_166_2", "0D_166_3", "0D_166_4" });
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_d(3, dataType, timeSpan, "日冻结二象限无功电能示值").IsValidData(new List<string>() { "0D_166", "0D_166_1", "0D_166_2", "0D_166_3", "0D_166_4" });
if (data.Count > 0)
{
// 查询电表信息
@ -48,11 +48,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -67,7 +67,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Day,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -36,7 +36,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
string timeSpan = $"{datas[0].Substring(0, 4)}-{datas[0].Substring(4, 2)}-{datas[0].Substring(6, 2)} 00:00:00";
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_d(3, dataType, timeSpan, "日冻结三象限无功电能示值").IsValidData(new List<string>() { "0D_167", "0D_167_1", "0D_167_2", "0D_167_3", "0D_167_4" });
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_d(3, dataType, timeSpan, "日冻结三象限无功电能示值").IsValidData(new List<string>() { "0D_167", "0D_167_1", "0D_167_2", "0D_167_3", "0D_167_4" });
if (data.Count > 0)
{
// 查询电表信息
@ -48,11 +48,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -67,7 +67,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Day,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -36,7 +36,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
string timeSpan = $"{datas[0].Substring(0, 4)}-{datas[0].Substring(4, 2)}-{datas[0].Substring(6, 2)} 00:00:00";
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_d(3, dataType, timeSpan, "日冻结四象限无功电能示值").IsValidData(new List<string>() { "0D_168", "0D_168_1", "0D_168_2", "0D_168_3", "0D_168_4" });
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_d(3, dataType, timeSpan, "日冻结四象限无功电能示值").IsValidData(new List<string>() { "0D_168", "0D_168_1", "0D_168_2", "0D_168_3", "0D_168_4" });
if (data.Count > 0)
{
// 查询电表信息
@ -48,11 +48,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -67,7 +67,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Day,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -35,7 +35,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
string timeSpan = $"{datas[0].Substring(0, 4)}-{datas[0].Substring(4, 2)}-01 00:00:00";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_m(3, dataType, timeSpan, "月冻结正向有功电能示值").IsValidData(new List<string>() { "0D_177", "0D_177_1", "0D_177_2", "0D_177_3", "0D_177_4" });
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_m(3, dataType, timeSpan, "月冻结正向有功电能示值").IsValidData(new List<string>() { "0D_177", "0D_177_1", "0D_177_2", "0D_177_3", "0D_177_4" });
if (data.Count > 0)
{
// 查询电表信息
@ -47,11 +47,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -66,7 +66,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Month,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -36,7 +36,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
string timeSpan = $"{datas[0].Substring(0, 4)}-{datas[0].Substring(4, 2)}-01 00:00:00";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_m(3, dataType, timeSpan, "月冻结正向无功(组合无功 1电能示值").IsValidData(new List<string>() { "0D_178", "0D_178_1", "0D_178_2", "0D_178_3", "0D_178_4" });
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_m(3, dataType, timeSpan, "月冻结正向无功(组合无功 1电能示值").IsValidData(new List<string>() { "0D_178", "0D_178_1", "0D_178_2", "0D_178_3", "0D_178_4" });
if (data.Count > 0)
{
// 查询电表信息
@ -48,11 +48,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -67,7 +67,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Month,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -36,7 +36,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
string timeSpan = $"{datas[0].Substring(0, 4)}-{datas[0].Substring(4, 2)}-01 00:00:00";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_m(3, dataType, timeSpan, "反向有功总电能示值").IsValidData(new List<string>() { "0D_179", "0D_179_1", "0D_179_2", "0D_179_3", "0D_179_4" });
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_m(3, dataType, timeSpan, "反向有功总电能示值").IsValidData(new List<string>() { "0D_179", "0D_179_1", "0D_179_2", "0D_179_3", "0D_179_4" });
if (data.Count > 0)
{
// 查询电表信息
@ -48,11 +48,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -67,7 +67,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Month,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -35,7 +35,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
string timeSpan = $"{datas[0].Substring(0, 4)}-{datas[0].Substring(4, 2)}-01 00:00:00";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_m(3, dataType, timeSpan, "月冻结反向无功(组合无功 1电能示值").IsValidData(new List<string>() { "0D_180", "0D_180_1", "0D_180_2", "0D_180_3", "0D_180_4" });
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_m(3, dataType, timeSpan, "月冻结反向无功(组合无功 1电能示值").IsValidData(new List<string>() { "0D_180", "0D_180_1", "0D_180_2", "0D_180_3", "0D_180_4" });
if (data.Count > 0)
{
// 查询电表信息
@ -47,11 +47,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -66,7 +66,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Month,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -36,7 +36,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
string timeSpan = $"{datas[0].Substring(0, 4)}-{datas[0].Substring(4, 2)}-01 00:00:00";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_m(3, dataType, timeSpan, "月冻结一象限无功电能示值(总、费率 1M").IsValidData(new List<string>() { "0D_181", "0D_181_1", "0D_181_2", "0D_181_3", "0D_181_4" });
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_m(3, dataType, timeSpan, "月冻结一象限无功电能示值(总、费率 1M").IsValidData(new List<string>() { "0D_181", "0D_181_1", "0D_181_2", "0D_181_3", "0D_181_4" });
if (data.Count > 0)
{
// 查询电表信息
@ -48,11 +48,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -67,7 +67,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Month,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -36,7 +36,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
string timeSpan = $"{datas[0].Substring(0, 4)}-{datas[0].Substring(4, 2)}-01 00:00:00";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_m(3, dataType, timeSpan, "月冻结二象限无功电能示值(总、费率 1M").IsValidData(new List<string>() { "0D_182", "0D_182_1", "0D_182_2", "0D_182_3", "0D_182_4" });
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_m(3, dataType, timeSpan, "月冻结二象限无功电能示值(总、费率 1M").IsValidData(new List<string>() { "0D_182", "0D_182_1", "0D_182_2", "0D_182_3", "0D_182_4" });
if (data.Count > 0)
{
// 查询电表信息
@ -48,11 +48,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -67,7 +67,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Month,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -35,7 +35,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
string timeSpan = $"{datas[0].Substring(0, 4)}-{datas[0].Substring(4, 2)}-01 00:00:00";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_m(3, dataType, timeSpan, "月冻结三象限无功电能示值(总、费率 1M").IsValidData(new List<string>() { "0D_183", "0D_183_1", "0D_183_2", "0D_183_3", "0D_183_4" });
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_m(3, dataType, timeSpan, "月冻结三象限无功电能示值(总、费率 1M").IsValidData(new List<string>() { "0D_183", "0D_183_1", "0D_183_2", "0D_183_3", "0D_183_4" });
if (data.Count > 0)
{
// 查询电表信息
@ -47,11 +47,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -66,7 +66,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Month,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -36,7 +36,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
string timeSpan = $"{datas[0].Substring(0, 4)}-{datas[0].Substring(4, 2)}-01 00:00:00";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_m(3, dataType, timeSpan, "月冻结四象限无功电能示值(总、费率 1M").IsValidData(new List<string>() { "0D_184", "0D_184_1", "0D_184_2", "0D_184_3", "0D_184_4" });
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_m(3, dataType, timeSpan, "月冻结四象限无功电能示值(总、费率 1M").IsValidData(new List<string>() { "0D_184", "0D_184_1", "0D_184_2", "0D_184_3", "0D_184_4" });
if (data.Count > 0)
{
// 查询电表信息
@ -48,11 +48,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -67,7 +67,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Month,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -37,7 +37,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
string timeSpan = $"{datas[0].Substring(0, 4)}-{datas[0].Substring(4, 2)}-{datas[0].Substring(6, 2)} 00:00:00";
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_d(3, dataType, timeSpan, "抄表日冻结正向有功最大需量及发生时间");
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_d(3, dataType, timeSpan, "抄表日冻结正向有功最大需量及发生时间");
if (data.Count > 0)
{
// 查询电表信息
@ -49,11 +49,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -68,7 +68,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Day,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}
@ -87,13 +87,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int ratingCount = hexMessageList.GetRatingCount(12, 1);
values.Add(ratingCount.ToString());
int handlerNum = 13;
values.AddRange(await GetDataAsync<decimal>(hexMessageList.GetRange(handlerNum, 3), ratingCount, 3, nameof(Appendix_A23)));//正向有功总最大需量
values.AddRange(await GetDataAsync(hexMessageList.GetRange(handlerNum, 3), ratingCount, 3, nameof(Appendix_A23)));//正向有功总最大需量
handlerNum += 3;
values.AddRange(await GetDataAsync<string>(hexMessageList.GetRange(handlerNum, 4), ratingCount, 4, nameof(Appendix_A17)));//正向有功总最大需量发生时间
values.AddRange(await GetDataAsync(hexMessageList.GetRange(handlerNum, 4), ratingCount, 4, nameof(Appendix_A17)));//正向有功总最大需量发生时间
return values;
}
private async Task<List<string>> GetDataAsync<T>(List<string> data, int ratingCount, int len, string appendixName)
private async Task<List<string>> GetDataAsync(List<string> data, int ratingCount, int len, string appendixName)
{
List<string> values = new List<string>();
for (int i = 0; i < ratingCount + 1; i++)

View File

@ -34,9 +34,8 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
ArgumentNullException.ThrowIfNull(input.UnitData?.HexMessageList);
List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
AnalysisBaseDto<decimal> data = GenerateFinalResult(datas, "抄表日冻结正向无功最大需量及发生时间");
data.DataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
AnalysisBaseDto<decimal?> data = GenerateFinalResult(datas, "抄表日冻结正向无功最大需量及发生时间", dataType);
// 查询电表信息
AmmeterInfo ammeterInfo = await _dataStorage.GetMeterInfoAsync(data.DeviceType.ToString(), "15");
@ -45,9 +44,9 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
data.ProjectId = ammeterInfo.ProjectID;
data.DeviceId = ammeterInfo.MeterId;
data.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
data.MeterAddress = ammeterInfo.AmmerterAddress;
data.DeviceAddress = ammeterInfo.AmmerterAddress;
}
UnitDataAnalysis<AnalysisBaseDto<decimal>> unitDataAnalysis = new UnitDataAnalysis<AnalysisBaseDto<decimal>>
UnitDataAnalysis<AnalysisBaseDto<decimal?>> unitDataAnalysis = new UnitDataAnalysis<AnalysisBaseDto<decimal?>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -62,7 +61,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Day,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}
@ -81,18 +80,18 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int ratingCount = hexMessageList.GetRatingCount(12, 1);
values.Add(ratingCount.ToString());
int handlerNum = 13;
values.AddRange(await GetDataAsync<decimal>(hexMessageList.GetRange(handlerNum, 3 * (ratingCount + 1)), ratingCount, 3, nameof(Appendix_A23)));//正向有功总最大需量
values.AddRange(await GetDataAsync(hexMessageList.GetRange(handlerNum, 3 * (ratingCount + 1)), ratingCount, 3, nameof(Appendix_A23)));//正向有功总最大需量
handlerNum += 3 * (ratingCount + 1);//12
values.AddRange(await GetDataAsync<string>(hexMessageList.GetRange(handlerNum, 4 * (ratingCount + 1)), ratingCount, 4, nameof(Appendix_A17)));//正向有功总最大需量发生时间
values.AddRange(await GetDataAsync(hexMessageList.GetRange(handlerNum, 4 * (ratingCount + 1)), ratingCount, 4, nameof(Appendix_A17)));//正向有功总最大需量发生时间
handlerNum += 4 * (ratingCount + 1);//28
values.AddRange(await GetDataAsync<decimal>(hexMessageList.GetRange(handlerNum, 3 * (ratingCount + 1)), ratingCount, 3, nameof(Appendix_A23)));//正向无功总最大需量
values.AddRange(await GetDataAsync(hexMessageList.GetRange(handlerNum, 3 * (ratingCount + 1)), ratingCount, 3, nameof(Appendix_A23)));//正向无功总最大需量
handlerNum += 3 * (ratingCount + 1);//48
values.AddRange(await GetDataAsync<string>(hexMessageList.GetRange(handlerNum, 4 * (ratingCount + 1)), ratingCount, 4, nameof(Appendix_A17)));//正向无功总最大需量发生时间
values.AddRange(await GetDataAsync(hexMessageList.GetRange(handlerNum, 4 * (ratingCount + 1)), ratingCount, 4, nameof(Appendix_A17)));//正向无功总最大需量发生时间
handlerNum += 4 * (ratingCount + 1);
return values;
}
private async Task<List<string>> GetDataAsync<T>(List<string> data, int ratingCount, int len, string appendixName)
private async Task<List<string>> GetDataAsync(List<string> data, int ratingCount, int len, string appendixName)
{
List<string> values = new List<string>();
for (int i = 0; i < ratingCount + 1; i++)
@ -112,15 +111,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
return values;
}
public AnalysisBaseDto<decimal> GenerateFinalResult(List<string> data, string filedDesc = "")
public AnalysisBaseDto<decimal?> GenerateFinalResult(List<string> data, string filedDesc,string dataType)
{
List<AnalysisBaseDto<decimal>> list = new List<AnalysisBaseDto<decimal>>();
AnalysisBaseDto<decimal> meter = new AnalysisBaseDto<decimal>
List<AnalysisBaseDto<decimal?>> list = new List<AnalysisBaseDto<decimal?>>();
AnalysisBaseDto<decimal?> meter = new AnalysisBaseDto<decimal?>
{
DeviceType = MeterTypeEnum.Ammeter
};
decimal value = 0;
var errorCode = data[3].CheckErrorCode();
if (errorCode != null)
{
@ -128,15 +125,18 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
meter.ErrorCodeMsg = errorCode.Item2;
}
else
decimal.TryParse(data[3], out value);
meter.DataValue = value;
string timeSpan = $"{DateTime.Now.Year}-{data[4].Substring(0, 2)}-{data[4].Substring(2, 2)} {data[4].Substring(4, 2)}:{data[4].Substring(6, 2)}:00";//$"{data[0].Substring(0, 4)}-{data[0].Substring(4, 2)}-{data[0].Substring(6, 2)}";
DateTime readingDate = DateTime.Now;
if (DateTime.TryParse(timeSpan, out readingDate))
{
if(decimal.TryParse(data[3], out decimal value))
{
meter.DataValue = value;
}
}
string timeSpan = $"{DateTime.Now.Year}-{data[4].Substring(0, 2)}-{data[4].Substring(2, 2)} {data[4].Substring(4, 2)}:{data[4].Substring(6, 2)}:00";
if (DateTime.TryParse(timeSpan, out DateTime readingDate))
{
meter.TimeSpan = readingDate;
}
meter.DataType = dataType;
meter.FiledDesc = filedDesc;
meter.FiledName = meter.DataType.GetDataFieldByGatherDataType() ?? string.Empty;
return meter;

View File

@ -35,9 +35,9 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
ArgumentNullException.ThrowIfNull(input.UnitData?.HexMessageList);
List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
AnalysisBaseDto<decimal> data = GenerateFinalResult(datas, "月冻结正向有功最大需量及发生时间");
data.DataType= $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
AnalysisBaseDto<decimal?> data = GenerateFinalResult(datas, "月冻结正向有功最大需量及发生时间", dataType);
// 查询电表信息
AmmeterInfo ammeterInfo = await _dataStorage.GetMeterInfoAsync(data.DeviceType.ToString(), "15");
if (ammeterInfo != null)
@ -45,9 +45,9 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
data.ProjectId = ammeterInfo.ProjectID;
data.DeviceId = ammeterInfo.MeterId;
data.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
data.MeterAddress = ammeterInfo.AmmerterAddress;
data.DeviceAddress = ammeterInfo.AmmerterAddress;
}
UnitDataAnalysis<AnalysisBaseDto<decimal>> unitDataAnalysis = new UnitDataAnalysis<AnalysisBaseDto<decimal>>
UnitDataAnalysis<AnalysisBaseDto<decimal?>> unitDataAnalysis = new UnitDataAnalysis<AnalysisBaseDto<decimal?>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -62,7 +62,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Month,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}
@ -83,13 +83,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int ratingCount = hexMessageList.GetRatingCount(11, 1);
values.Add(ratingCount.ToString());
int handlerNum = 12;
values.AddRange(await GetDataAsync<decimal>(hexMessageList.GetRange(handlerNum, 3), 3, nameof(Appendix_A23)));//正向有功总最大需量
values.AddRange(await GetDataAsync(hexMessageList.GetRange(handlerNum, 3), 3, nameof(Appendix_A23)));//正向有功总最大需量
handlerNum += 3;
values.AddRange(await GetDataAsync<string>(hexMessageList.GetRange(handlerNum, 4), 4, nameof(Appendix_A17)));//正向有功总最大需量发生时间
values.AddRange(await GetDataAsync(hexMessageList.GetRange(handlerNum, 4), 4, nameof(Appendix_A17)));//正向有功总最大需量发生时间
return values;
}
private async Task<List<string>> GetDataAsync<T>(List<string> data, int len, string appendixName)
private async Task<List<string>> GetDataAsync(List<string> data, int len, string appendixName)
{
List<string> values = new List<string>();
var errorCode = data.CheckErrorCode();
@ -104,14 +104,12 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}
return values;
}
public AnalysisBaseDto<decimal> GenerateFinalResult(List<string> data, string filedDesc = "")
public AnalysisBaseDto<decimal?> GenerateFinalResult(List<string> data, string filedDesc, string dataType)
{
AnalysisBaseDto<decimal> meter = new AnalysisBaseDto<decimal>
AnalysisBaseDto<decimal?> meter = new AnalysisBaseDto<decimal?>
{
DeviceType = MeterTypeEnum.Ammeter,
};
decimal value = 0;
var errorCode = data[3].CheckErrorCode();
if (errorCode != null)
{
@ -119,15 +117,18 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
meter.ErrorCodeMsg = errorCode.Item2;
}
else
decimal.TryParse(data[3], out value);
meter.DataValue = value;
string timeSpan = $"{data[0].Substring(0, 4)}-{data[4].Substring(0, 2)}-{data[4].Substring(2, 2)} {data[4].Substring(4, 2)}:{data[4].Substring(6, 2)}:00";//$"{data[0].Substring(0, 4)}-{data[0].Substring(4, 2)}-{data[0].Substring(6, 2)}";
DateTime readingDate = DateTime.Now;
if (DateTime.TryParse(timeSpan, out readingDate))
{
if(decimal.TryParse(data[3], out decimal value))
{
meter.DataValue = value;
}
}
string timeSpan = $"{data[0].Substring(0, 4)}-{data[4].Substring(0, 2)}-{data[4].Substring(2, 2)} {data[4].Substring(4, 2)}:{data[4].Substring(6, 2)}:00";
if (DateTime.TryParse(timeSpan, out DateTime readingDate))
{
meter.TimeSpan = readingDate;
}
meter.DataType = dataType;
meter.FiledDesc = filedDesc;
meter.FiledName = meter.DataType.GetDataFieldByGatherDataType() ?? string.Empty;
return meter;

View File

@ -35,19 +35,19 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
ArgumentNullException.ThrowIfNull(input.UnitData?.HexMessageList);
List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
AnalysisBaseDto<decimal> data = GenerateFinalResult(datas, "月冻结反向有功最大需量及发生时间");
data.DataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
// 查询电表信息
AnalysisBaseDto<decimal?> data = GenerateFinalResult(datas, "月冻结反向有功最大需量及发生时间", dataType);
// 查询电表信息
AmmeterInfo ammeterInfo = await _dataStorage.GetMeterInfoAsync(data.DeviceType.ToString(), "15");
if (ammeterInfo != null)
{
data.ProjectId = ammeterInfo.ProjectID;
data.DeviceId = ammeterInfo.MeterId;
data.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
data.MeterAddress = ammeterInfo.AmmerterAddress;
data.DeviceAddress = ammeterInfo.AmmerterAddress;
}
UnitDataAnalysis<AnalysisBaseDto<decimal>> unitDataAnalysis = new UnitDataAnalysis<AnalysisBaseDto<decimal>>
UnitDataAnalysis<AnalysisBaseDto<decimal?>> unitDataAnalysis = new UnitDataAnalysis<AnalysisBaseDto<decimal?>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -62,7 +62,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Month,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}
@ -83,13 +83,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int ratingCount = hexMessageList.GetRatingCount(11, 1);
values.Add(ratingCount.ToString());
int handlerNum = 12;
values.AddRange(await GetDataAsync<decimal>(hexMessageList.GetRange(handlerNum, 3), 3,nameof(Appendix_A23)));//正向有功总最大需量
values.AddRange(await GetDataAsync(hexMessageList.GetRange(handlerNum, 3), 3,nameof(Appendix_A23)));//正向有功总最大需量
handlerNum += 3;
values.AddRange(await GetDataAsync<string>(hexMessageList.GetRange(handlerNum, 4), 4, nameof(Appendix_A17)));//正向有功总最大需量发生时间
values.AddRange(await GetDataAsync(hexMessageList.GetRange(handlerNum, 4), 4, nameof(Appendix_A17)));//正向有功总最大需量发生时间
return values;
}
private async Task<List<string>> GetDataAsync<T>(List<string> data, int len, string appendixName)
private async Task<List<string>> GetDataAsync(List<string> data, int len, string appendixName)
{
List<string> values = new List<string>();
var errorCode = data.CheckErrorCode();
@ -104,14 +104,12 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}
return values;
}
public AnalysisBaseDto<decimal> GenerateFinalResult(List<string> data, string filedDesc = "")
public AnalysisBaseDto<decimal?> GenerateFinalResult(List<string> data, string filedDesc,string dataType)
{
AnalysisBaseDto<decimal> meter = new AnalysisBaseDto<decimal>
AnalysisBaseDto<decimal?> meter = new AnalysisBaseDto<decimal?>
{
DeviceType = MeterTypeEnum.Ammeter
};
decimal value = 0;
var errorCode = data[3].CheckErrorCode();
if (errorCode != null)
{
@ -119,15 +117,18 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
meter.ErrorCodeMsg = errorCode.Item2;
}
else
decimal.TryParse(data[3], out value);
meter.DataValue = value;
string timeSpan = $"{data[0].Substring(0, 4)}-{data[4].Substring(0, 2)}-{data[4].Substring(2, 2)} {data[4].Substring(4, 2)}:{data[4].Substring(6, 2)}:00";//$"{data[0].Substring(0, 4)}-{data[0].Substring(4, 2)}-{data[0].Substring(6, 2)}";
DateTime readingDate = DateTime.Now;
if (DateTime.TryParse(timeSpan, out readingDate))
{
if(decimal.TryParse(data[3], out decimal value))
{
meter.DataValue = value;
}
}
string timeSpan = $"{data[0].Substring(0, 4)}-{data[4].Substring(0, 2)}-{data[4].Substring(2, 2)} {data[4].Substring(4, 2)}:{data[4].Substring(6, 2)}:00";
if (DateTime.TryParse(timeSpan, out DateTime readingDate))
{
meter.TimeSpan = readingDate;
}
meter.DataType = dataType;
meter.FiledDesc = filedDesc;
meter.FiledName = meter.DataType.GetDataFieldByGatherDataType() ?? string.Empty;
return meter;

View File

@ -10,6 +10,7 @@ using System.Data;
using JiShe.CollectBus.Common.Extensions;
using JiShe.CollectBus.IotSystems.Ammeters;
using JiShe.CollectBus.Common.Helpers;
using YamlDotNet.Core.Tokens;
namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
{
@ -37,7 +38,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = GenerateFinalResult(datas, dataType, "月冻结电能表正向有功最大需量及发生时间");
List<AnalysisBaseDto<decimal?>> data = GenerateFinalResult(datas, dataType, "月冻结电能表正向有功最大需量及发生时间");
if (data.Count > 0)
{
// 查询电表信息
@ -49,11 +50,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -68,7 +69,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Day,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}
@ -87,18 +88,18 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int ratingCount = hexMessageList.GetRatingCount(11, 1);
values.Add(ratingCount.ToString());
int handlerNum = 12;
values.AddRange(await GetDataAsync<decimal>(hexMessageList.GetRange(handlerNum, 3 * (ratingCount + 1)), ratingCount, 3, nameof(Appendix_A23)));//正向有功总最大需量
values.AddRange(await GetDataAsync(hexMessageList.GetRange(handlerNum, 3 * (ratingCount + 1)), ratingCount, 3, nameof(Appendix_A23)));//正向有功总最大需量
handlerNum += 3 * (ratingCount + 1);
values.AddRange(await GetDataAsync<string>(hexMessageList.GetRange(handlerNum, 4 * (ratingCount + 1)), ratingCount, 4, nameof(Appendix_A17)));//正向有功总最大需量发生时间
values.AddRange(await GetDataAsync(hexMessageList.GetRange(handlerNum, 4 * (ratingCount + 1)), ratingCount, 4, nameof(Appendix_A17)));//正向有功总最大需量发生时间
handlerNum += 4 * (ratingCount + 1);
values.AddRange(await GetDataAsync<decimal>(hexMessageList.GetRange(handlerNum, 3 * (ratingCount + 1)), ratingCount, 3, nameof(Appendix_A23)));//正向无功总最大需量
values.AddRange(await GetDataAsync(hexMessageList.GetRange(handlerNum, 3 * (ratingCount + 1)), ratingCount, 3, nameof(Appendix_A23)));//正向无功总最大需量
handlerNum += 3 * (ratingCount + 1);
values.AddRange(await GetDataAsync<string>(hexMessageList.GetRange(handlerNum, 4 * (ratingCount + 1)), ratingCount, 4, nameof(Appendix_A17)));//正向无功总最大需量发生时间
values.AddRange(await GetDataAsync(hexMessageList.GetRange(handlerNum, 4 * (ratingCount + 1)), ratingCount, 4, nameof(Appendix_A17)));//正向无功总最大需量发生时间
handlerNum += 4 * (ratingCount + 1);
return values;
}
private async Task<List<string>> GetDataAsync<T>(List<string> data, int ratingCount, int len, string appendixName)
private async Task<List<string>> GetDataAsync(List<string> data, int ratingCount, int len, string appendixName)
{
List<string> values = new List<string>();
for (int i = 0; i < ratingCount + 1; i++)
@ -118,16 +119,15 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
return values;
}
public List<AnalysisBaseDto<decimal>> GenerateFinalResult(List<string> data, string dataType,string filedDesc = "")
public List<AnalysisBaseDto<decimal?>> GenerateFinalResult(List<string> data, string dataType,string filedDesc = "")
{
List<AnalysisBaseDto<decimal>> list = new List<AnalysisBaseDto<decimal>>();
List<AnalysisBaseDto<decimal?>> list = new List<AnalysisBaseDto<decimal?>>();
int fCount = Convert.ToInt32(data[2]) + 1;
for (int i = 1; i <= 2; i++)
{
AnalysisBaseDto<decimal> meter = new AnalysisBaseDto<decimal>();
AnalysisBaseDto<decimal?> meter = new AnalysisBaseDto<decimal?>();
meter.DeviceType= MeterTypeEnum.Ammeter;
int startIndex = i == 1 ? 3 : (3 + i * fCount);
decimal value = 0;
var errorCode = data[startIndex].CheckErrorCode();
if (errorCode != null)
{
@ -135,17 +135,18 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
meter.ErrorCodeMsg = errorCode.Item2;
}
else
decimal.TryParse(data[startIndex], out value);
meter.DataValue = value;
//2021 01 15
{
if(decimal.TryParse(data[startIndex], out decimal value))
{
meter.DataValue = value;
}
}
string timeSpan = $"{DateTime.Now.Year}-{data[startIndex + fCount].Substring(0, 2)}-{data[startIndex + fCount].Substring(2, 2)} {data[startIndex + fCount].Substring(4, 2)}:{data[startIndex + fCount].Substring(6, 2)}:00";
DateTime readingDate = DateTime.Now;
if (DateTime.TryParse(timeSpan, out readingDate))
if (DateTime.TryParse(timeSpan, out DateTime readingDate))
{
meter.TimeSpan = readingDate;
}
meter.DataType = i == 1 ? dataType : $"{dataType}_{ i - 1}";
filedDesc = i == 1 ? filedDesc : filedDesc.Replace("有功", "无功");
meter.FiledDesc = filedDesc;
meter.FiledName = meter.DataType.GetDataFieldByGatherDataType() ?? string.Empty;

View File

@ -41,7 +41,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
//冻结数据时标
var time = $"{datas[0].Substring(0, 4)}-{datas[0].Substring(4, 2)}-{datas[0].Substring(6, 2)} 00:00:00";
List<AnalysisBaseDto<decimal>> data = GenerateFinalResult(datas,dataType, "日冻结正向有/无功最大需量及发生时间");
List<AnalysisBaseDto<decimal?>> data = GenerateFinalResult(datas,dataType, "日冻结正向有/无功最大需量及发生时间");
if (data.Count > 0)
{
// 查询电表信息
@ -53,11 +53,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -72,7 +72,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Day,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}
@ -92,18 +92,18 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int ratingCount = hexMessageList.GetRatingCount(12, 1);//费率数 M1≤M≤12
values.Add(ratingCount.ToString());
int handlerNum = 13;
values.AddRange(await GetDataAsync<decimal>(hexMessageList.GetRange(handlerNum, 3 * (ratingCount + 1)), ratingCount, 3, nameof(Appendix_A23)));//正向有功总最大需量
values.AddRange(await GetDataAsync(hexMessageList.GetRange(handlerNum, 3 * (ratingCount + 1)), ratingCount, 3, nameof(Appendix_A23)));//正向有功总最大需量
handlerNum += 3 * (ratingCount + 1);//12
values.AddRange(await GetDataAsync<string>(hexMessageList.GetRange(handlerNum, 4 * (ratingCount + 1)), ratingCount, 4, nameof(Appendix_A17)));//正向有功总最大需量发生时间
values.AddRange(await GetDataAsync(hexMessageList.GetRange(handlerNum, 4 * (ratingCount + 1)), ratingCount, 4, nameof(Appendix_A17)));//正向有功总最大需量发生时间
handlerNum += 4 * (ratingCount + 1);//28
values.AddRange(await GetDataAsync<decimal>(hexMessageList.GetRange(handlerNum, 3 * (ratingCount + 1)), ratingCount, 3, nameof(Appendix_A23)));//正向无功总最大需量
values.AddRange(await GetDataAsync(hexMessageList.GetRange(handlerNum, 3 * (ratingCount + 1)), ratingCount, 3, nameof(Appendix_A23)));//正向无功总最大需量
handlerNum += 3 * (ratingCount + 1);//48
values.AddRange(await GetDataAsync<string>(hexMessageList.GetRange(handlerNum, 4 * (ratingCount + 1)), ratingCount, 4, nameof(Appendix_A17)));//正向无功总最大需量发生时间
values.AddRange(await GetDataAsync(hexMessageList.GetRange(handlerNum, 4 * (ratingCount + 1)), ratingCount, 4, nameof(Appendix_A17)));//正向无功总最大需量发生时间
handlerNum += 4 * (ratingCount + 1);
return values;
}
private async Task<List<string>> GetDataAsync<T>(List<string> data, int ratingCount, int len, string appendixName)
private async Task<List<string>> GetDataAsync(List<string> data, int ratingCount, int len, string appendixName)
{
List<string> values = new List<string>();
for (int i = 0; i < ratingCount + 1; i++)
@ -123,61 +123,52 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
return values;
}
public List<AnalysisBaseDto<decimal>> GenerateFinalResult(List<string> data,string dataType, string filedDesc = "")
public List<AnalysisBaseDto<decimal?>> GenerateFinalResult(List<string> data,string dataType, string filedDesc = "")
{
List<AnalysisBaseDto<decimal>> list = new List<AnalysisBaseDto<decimal>>();
List<AnalysisBaseDto<decimal?>> list = new List<AnalysisBaseDto<decimal?>>();
int fCount = Convert.ToInt32(data[2]) + 1;
for (int i = 1; i <= 2; i++)
{
try
AnalysisBaseDto<decimal?> meter = new AnalysisBaseDto<decimal?>
{
AnalysisBaseDto<decimal> meter = new AnalysisBaseDto<decimal>
{
DeviceType = MeterTypeEnum.Ammeter
};
int startIndex = i == 1 ? 3 : (3 + i * fCount);
DeviceType = MeterTypeEnum.Ammeter
};
int startIndex = i == 1 ? 3 : (3 + i * fCount);
var errorCode = data[startIndex].CheckErrorCode();
if (errorCode != null)
meter.ValidData = false;
decimal.TryParse(data[startIndex], out decimal value);//decimal.TryParse(data[startIndex], out value);
var errorCode = data[startIndex].CheckErrorCode();
if (errorCode != null)
meter.ValidData = false;
if(decimal.TryParse(data[startIndex], out decimal value))
meter.DataValue = value;
//TODO:日冻结类数据时标Td 20210824
var dataTime = string.Empty;
errorCode = data[0].CheckErrorCode();
if (data[0].Length == 8 && errorCode is null)
dataTime = $"{data[0].Substring(0, 4)}-{data[0].Substring(4, 2)}-{data[0].Substring(6, 2)} 00:00:00";
if (!DateTime.TryParse(dataTime, out DateTime readingDate))
meter.ValidData = false;
meter.TimeSpan = readingDate;//
//TODO:日冻结类数据时标Td
var dataTime = string.Empty;
errorCode = data[0].CheckErrorCode();
if (data[0].Length == 8 && errorCode is null)
dataTime = $"{data[0].Substring(0, 4)}-{data[0].Substring(4, 2)}-{data[0].Substring(6, 2)} 00:00:00";
if (DateTime.TryParse(dataTime, out DateTime readingDate))
meter.TimeSpan = readingDate;
else
meter.ValidData = false;
//TODO:最大需量发生时间
errorCode = data[startIndex + fCount].CheckErrorCode();
if (errorCode != null && data[startIndex + fCount].Length != 8)
errorCode = data[startIndex + fCount].CheckErrorCode();
if (errorCode != null && data[startIndex + fCount].Length != 8)
meter.ValidData = false;
else
{
string timeSpan = $"{data[0].Substring(0, 4)}-{data[startIndex + fCount].Substring(0, 2)}-{data[startIndex + fCount].Substring(2, 2)} {data[startIndex + fCount].Substring(4, 2)}:{data[startIndex + fCount].Substring(6, 2)}:00";
if (!DateTime.TryParse(timeSpan, out DateTime tsField))
meter.ValidData = false;
else
{
string timeSpan = $"{data[0].Substring(0, 4)}-{data[startIndex + fCount].Substring(0, 2)}-{data[startIndex + fCount].Substring(2, 2)} {data[startIndex + fCount].Substring(4, 2)}:{data[startIndex + fCount].Substring(6, 2)}:00";
if (!DateTime.TryParse(timeSpan, out DateTime tsField))
meter.ValidData = false;
else
meter.TimeSpan=tsField;
}
meter.TimeSpan=tsField;
}
meter.DataType = i == 1 ? dataType : $"{dataType}_{ i - 1}";
filedDesc = i == 1 ? filedDesc : filedDesc.Replace("有功", "无功");
meter.FiledDesc = filedDesc;
meter.FiledName = meter.DataType.GetDataFieldByGatherDataType() ?? string.Empty;
list.Add(meter);
meter.DataType = i == 1 ? dataType : $"{dataType}_{ i - 1}";
filedDesc = i == 1 ? filedDesc : filedDesc.Replace("有功", "无功");
meter.FiledDesc = filedDesc;
meter.FiledName = meter.DataType.GetDataFieldByGatherDataType() ?? string.Empty;
list.Add(meter);
}
catch
{
}
}
if (list.Count == 0)
throw new Exception("错误数据");
return list;
}
}

View File

@ -40,7 +40,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
//冻结数据时标
var time = $"{datas[0].Substring(0, 4)}-{datas[0].Substring(4, 2)}-{datas[0].Substring(6, 2)} 00:00:00";
List<AnalysisBaseDto<decimal>> data = GenerateFinalResult(datas, dataType, "日冻结反向有/无功最大需量及发生时间");
List<AnalysisBaseDto<decimal?>> data = GenerateFinalResult(datas, dataType, "日冻结反向有/无功最大需量及发生时间");
if (data.Count > 0)
{
// 查询电表信息
@ -52,11 +52,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -71,7 +71,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Day,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}
@ -91,18 +91,18 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int ratingCount = hexMessageList.GetRatingCount(12, 1);//费率数 M1≤M≤12
values.Add(ratingCount.ToString());
int handlerNum = 13;
values.AddRange(await GetDataAsync<decimal>(hexMessageList.GetRange(handlerNum, 3 * (ratingCount + 1)), ratingCount, 3, nameof(Appendix_A23)));//正向有功总最大需量
values.AddRange(await GetDataAsync(hexMessageList.GetRange(handlerNum, 3 * (ratingCount + 1)), ratingCount, 3, nameof(Appendix_A23)));//正向有功总最大需量
handlerNum += 3 * (ratingCount + 1);//12
values.AddRange(await GetDataAsync<string>(hexMessageList.GetRange(handlerNum, 4 * (ratingCount + 1)), ratingCount, 4, nameof(Appendix_A17)));//正向有功总最大需量发生时间
values.AddRange(await GetDataAsync(hexMessageList.GetRange(handlerNum, 4 * (ratingCount + 1)), ratingCount, 4, nameof(Appendix_A17)));//正向有功总最大需量发生时间
handlerNum += 4 * (ratingCount + 1);//28
values.AddRange(await GetDataAsync<decimal>(hexMessageList.GetRange(handlerNum, 3 * (ratingCount + 1)), ratingCount, 3, nameof(Appendix_A23)));//正向无功总最大需量
values.AddRange(await GetDataAsync(hexMessageList.GetRange(handlerNum, 3 * (ratingCount + 1)), ratingCount, 3, nameof(Appendix_A23)));//正向无功总最大需量
handlerNum += 3 * (ratingCount + 1);//48
values.AddRange(await GetDataAsync<string>(hexMessageList.GetRange(handlerNum, 4 * (ratingCount + 1)), ratingCount, 4, nameof(Appendix_A17)));//正向无功总最大需量发生时间
values.AddRange(await GetDataAsync(hexMessageList.GetRange(handlerNum, 4 * (ratingCount + 1)), ratingCount, 4, nameof(Appendix_A17)));//正向无功总最大需量发生时间
handlerNum += 4 * (ratingCount + 1);
return values;
}
private async Task<List<string>> GetDataAsync<T>(List<string> data, int ratingCount, int len, string appendixName)
private async Task<List<string>> GetDataAsync(List<string> data, int ratingCount, int len, string appendixName)
{
List<string> values = new List<string>();
for (int i = 0; i < ratingCount + 1; i++)
@ -122,13 +122,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
return values;
}
public List<AnalysisBaseDto<decimal>> GenerateFinalResult(List<string> data,string dataType, string filedDesc = "")
public List<AnalysisBaseDto<decimal?>> GenerateFinalResult(List<string> data,string dataType, string filedDesc = "")
{
List<AnalysisBaseDto<decimal>> list = new List<AnalysisBaseDto<decimal>>();
List<AnalysisBaseDto<decimal?>> list = new List<AnalysisBaseDto<decimal?>>();
int fCount = Convert.ToInt32(data[2]) + 1;
for (int i = 1; i <= 2; i++)
{
AnalysisBaseDto<decimal> meter = new AnalysisBaseDto<decimal>
AnalysisBaseDto<decimal?> meter = new AnalysisBaseDto<decimal?>
{
DeviceType = MeterTypeEnum.Ammeter
};
@ -140,17 +140,17 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
meter.ValidData = false;
meter.ErrorCodeMsg = errorCode.Item2;
}
decimal.TryParse(data[startIndex], out decimal value);//decimal.TryParse(data[startIndex], out value);
meter.DataValue = value;
//TODO:日冻结类数据时标Td 20210824
if(decimal.TryParse(data[startIndex], out decimal value))
meter.DataValue = value;
//TODO:日冻结类数据时标Td
var dataTime = string.Empty;
errorCode = data[0].CheckErrorCode();
if (data[0].Length == 8 && errorCode is null)
dataTime = $"{data[0].Substring(0, 4)}-{data[0].Substring(4, 2)}-{data[0].Substring(6, 2)} 00:00:00";
if (!DateTime.TryParse(dataTime, out DateTime readingDate))
meter.ValidData = false;
meter.TimeSpan = readingDate;
else
meter.TimeSpan = readingDate;
//TODO:最大需量发生时间
errorCode = data[startIndex + fCount].CheckErrorCode();
@ -169,7 +169,6 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
meter.FiledDesc = filedDesc;
meter.FiledName = meter.DataType.GetDataFieldByGatherDataType() ?? string.Empty;
list.Add(meter);
}
return list;
}

View File

@ -38,7 +38,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "有功功率曲线");
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "有功功率曲线");
if (data.Count > 0)
{
// 查询电表信息
@ -50,11 +50,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -69,7 +69,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -39,7 +39,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "A相有功功率曲线");
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "A相有功功率曲线");
if (data.Count > 0)
{
// 查询电表信息
@ -51,11 +51,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -70,7 +70,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -39,7 +39,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "B相有功功率曲线");
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "B相有功功率曲线");
if (data.Count > 0)
{
// 查询电表信息
@ -51,11 +51,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -70,7 +70,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -38,7 +38,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "C相有功功率曲线");
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "C相有功功率曲线");
if (data.Count > 0)
{
// 查询电表信息
@ -50,11 +50,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -69,7 +69,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -39,7 +39,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "无功功率曲线");
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "无功功率曲线");
if (data.Count > 0)
{
// 查询电表信息
@ -51,11 +51,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -70,7 +70,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -39,7 +39,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "A相无功功率曲线");
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "A相无功功率曲线");
if (data.Count > 0)
{
// 查询电表信息
@ -51,11 +51,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -70,7 +70,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -38,7 +38,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "B相无功功率曲线");
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "B相无功功率曲线");
if (data.Count > 0)
{
// 查询电表信息
@ -50,11 +50,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -69,7 +69,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -39,7 +39,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "C相无功功率曲线");
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "C相无功功率曲线");
if (data.Count > 0)
{
// 查询电表信息
@ -51,11 +51,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -70,7 +70,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -39,7 +39,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "A相电压曲线");
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "A相电压曲线");
if (data.Count > 0)
{
// 查询电表信息
@ -51,11 +51,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -70,7 +70,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -39,7 +39,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "B相电压曲线");
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "B相电压曲线");
if (data.Count > 0)
{
// 查询电表信息
@ -51,11 +51,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -70,7 +70,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -38,7 +38,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "C相电压曲线");
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "C相电压曲线");
if (data.Count > 0)
{
// 查询电表信息
@ -50,11 +50,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -69,7 +69,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -39,7 +39,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "A相电流曲线");
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "A相电流曲线");
if (data.Count > 0)
{
// 查询电表信息
@ -51,11 +51,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -70,7 +70,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -39,7 +39,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "B相电流曲线");
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "B相电流曲线");
if (data.Count > 0)
{
// 查询电表信息
@ -51,11 +51,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -70,7 +70,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -39,7 +39,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "C相电流曲线");
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "C相电流曲线");
if (data.Count > 0)
{
// 查询电表信息
@ -51,11 +51,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -70,7 +70,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -39,7 +39,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "测量点零序电流曲线");
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "测量点零序电流曲线");
if (data.Count > 0)
{
// 查询电表信息
@ -51,11 +51,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -70,7 +70,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -39,7 +39,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "正向有功总电能量曲线");
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "正向有功总电能量曲线");
if (data.Count > 0)
{
// 查询电表信息
@ -51,11 +51,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -70,7 +70,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -39,7 +39,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "正向无功总电能量曲线");
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "正向无功总电能量曲线");
if (data.Count > 0)
{
// 查询电表信息
@ -51,11 +51,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -70,7 +70,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -39,7 +39,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "反向有功总电能量曲线");
List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "反向有功总电能量曲线");
if (data.Count > 0)
{
// 查询电表信息
@ -51,11 +51,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.MeterId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.MeterAddress = ammeterInfo.AmmerterAddress;
item.DeviceAddress = ammeterInfo.AmmerterAddress;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -70,7 +70,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}

View File

@ -1,9 +1,13 @@
using JiShe.CollectBus.Common.Enums;
using JiShe.CollectBus.Common.Extensions;
using JiShe.CollectBus.IotSystems.Ammeters;
using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto;
using JiShe.CollectBus.Protocol.Dto;
using JiShe.CollectBus.Protocol.Interfaces;
using JiShe.CollectBus.Protocol3761;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0EH
{
@ -15,13 +19,14 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0EH
public class AFN14_F1_Analysis : IAnalysisStrategy<TB3761>
{
private readonly ILogger<AFN14_F1_Analysis> _logger;
public AFN14_F1_Analysis(ILogger<AFN14_F1_Analysis> logger)
private readonly DataStorage _dataStorage;
public AFN14_F1_Analysis(ILogger<AFN14_F1_Analysis> logger, DataStorage dataStorage)
{
_logger = logger;
_dataStorage= dataStorage;
}
public Task<bool> ExecuteAsync(TB3761 input, Action<dynamic>? result = null)
public async Task<bool> ExecuteAsync(TB3761 input, Action<dynamic>? result = null)
{
try
{
@ -31,15 +36,35 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0EH
bool isOnOffPower = erc.Equals(14) ? true : false;
if (!isOnOffPower)
{
throw new Exception($"ERC{erc}非上掉电事件");
// TODO非终端停/上电事件直接确认
_logger.LogWarning($"0E_1解析ERC{erc}非终端停/上电事件:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString}");
return await Task.FromResult(true);
}
UnitDataAnalysis<Tuple<string, string>> dto = new UnitDataAnalysis<Tuple<string, string>>
List<AnalysisBaseDto<string>> data = AnalysisDataUnit(input.UnitData.HexMessageList);
if (data.Count > 0)
{
// 查询电表信息
AmmeterInfo ammeterInfo = await _dataStorage.GetMeterInfoAsync(data[0].DeviceType.ToString(), "15");
if (ammeterInfo != null)
{
data.ForEach(item =>
{
item.ProjectId = ammeterInfo.ProjectID;
item.DeviceId = ammeterInfo.FocusId;
item.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
item.DeviceAddress = ammeterInfo.Address;
item.DeviceType = MeterTypeEnum.Focus;
});
}
}
UnitDataAnalysis<List<AnalysisBaseDto<string>>> dto = new UnitDataAnalysis<List<AnalysisBaseDto<string>>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
Fn = input.DT.Fn,
Pn = input.DA.Pn,
Data = AnalysisDataUnit(input.UnitData.HexMessageList),
Data = data,
HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId,
ReceivedTime = input.ReceivedTime,
@ -48,37 +73,55 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0EH
};
// meterData.DataType = "0E_1";
result?.Invoke(dto);
return Task.FromResult(true);
await _dataStorage.SaveMultipleStatusToIotDbAsync<string>(dto);
return await Task.FromResult(true);
}
catch (Exception ex)
{
_logger.LogError(ex, $"0E_1解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}");
}
return Task.FromResult(false);
return await Task.FromResult(false);
}
private Tuple<string, string> AnalysisDataUnit(List<string> hexMessageList)
private List<AnalysisBaseDto<string>> AnalysisDataUnit(List<string> hexMessageList)
{
/// Item1=停电事件
/// Item2=上电事件
return Tuple.Create(HandlerTime(hexMessageList.GetRange(10, 5)), HandlerTime(hexMessageList.GetRange(15, 5)));
List <AnalysisBaseDto<string>> values = new List<AnalysisBaseDto<string>>
{
new AnalysisBaseDto<string>
{
FiledDesc = "停电事件",
FiledName = "Type",
DataValue = "PowerDownEvent",
TimeSpan=HandlerTime(hexMessageList.GetRange(10, 5))
},
new AnalysisBaseDto<string>
{
FiledDesc = "上电事件",
FiledName = "Type",
DataValue = "PowerOnEvent",
TimeSpan=HandlerTime(hexMessageList.GetRange(15, 5))
}
};
return values;
}
/// <summary>
/// /解析时间
/// </summary>
/// <param name="times"></param>
/// <param name="isSetCurTime">时间验证失败是否默认为当前时间</param>
/// <returns></returns>
private string HandlerTime(List<string> times)
private DateTime? HandlerTime(List<string> times)
{
var time = string.Empty;
try
{
times.Reverse();
time = $"{DateTime.Now.ToString("yyyy").Substring(0, 2)}{times[0]}-{times[1]}-{times[2]} {times[3]}:{times[4]}:00";
string time = $"{DateTime.Now.ToString("yyyy").Substring(0, 2)}{times[0]}-{times[1]}-{times[2]} {times[3]}:{times[4]}:00";
DateTime.TryParse(time, out DateTime dateTime);
return dateTime;
}
catch { }
return time;
return null;
}
}
}

View File

@ -18,6 +18,9 @@ using static FreeSql.Internal.GlobalFilter;
namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_10H
{
/// <summary>
/// 透抄 电网频率
/// </summary>
public class AFN16_F97_Analysis : IAnalysisStrategy<TB3761>
{
private readonly ILogger<AFN16_F97_Analysis> _logger;
@ -37,7 +40,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_10H
ArgumentNullException.ThrowIfNull(input.UnitData?.HexMessageList);
List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
AnalysisBaseDto<decimal> data = GenerateFinalResult(datas);
AnalysisBaseDto<decimal?> data = GenerateFinalResult(datas);
// 查询电表信息
AmmeterInfo ammeterInfo = await _dataStorage.GetMeterInfoAsync(data.DeviceType.ToString(), "15");
if (ammeterInfo != null)
@ -45,9 +48,9 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_10H
data.ProjectId = ammeterInfo.ProjectID;
data.DeviceId = ammeterInfo.MeterId;
data.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
data.MeterAddress = ammeterInfo.AmmerterAddress;
data.DeviceAddress = ammeterInfo.AmmerterAddress;
}
UnitDataAnalysis<AnalysisBaseDto<decimal>> unitDataAnalysis = new UnitDataAnalysis<AnalysisBaseDto<decimal>>
UnitDataAnalysis<AnalysisBaseDto<decimal?>> unitDataAnalysis = new UnitDataAnalysis<AnalysisBaseDto<decimal?>>
{
Code = input.A.Code!,
AFN = input.AFN_FC.AFN,
@ -62,7 +65,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_10H
DensityUnit = DensityUnit.Hour,
ReceivedTime = input.ReceivedTime
};
await _dataStorage.SaveDataToIotDbAsync<decimal>(unitDataAnalysis);
await _dataStorage.SaveDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true);
}
@ -73,10 +76,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_10H
}
}
private AnalysisBaseDto<decimal> GenerateFinalResult(List<string> data)
private AnalysisBaseDto<decimal?> GenerateFinalResult(List<string> data)
{
AnalysisBaseDto<decimal> meter = new AnalysisBaseDto<decimal>();
decimal.TryParse(data[7], out decimal value);
AnalysisBaseDto<decimal?> meter = new AnalysisBaseDto<decimal?>();
var errorCode = data[7].CheckErrorCode();
if (errorCode != null)
{
@ -84,7 +87,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_10H
meter.ErrorCodeMsg = errorCode.Item2;
}
else
meter.DataValue = value;
{
if(decimal.TryParse(data[7], out decimal value))
meter.DataValue = value;
}
meter.DataType = "10_97";
meter.ValidData = data[2].Equals("91") || data[2].Equals("B1");
meter.FiledDesc = "电网频率";//"电网频率";

View File

@ -124,7 +124,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData
DatabaseBusiID = data.DatabaseBusiID,
PendingCopyReadTime = data.TimeSpan.Value.GetFormatTime(analysisBaseDto.DensityUnit, analysisBaseDto.TimeDensity),
CreationTime = currentTime,
MeterAddress = data.MeterAddress,
MeterAddress = data.DeviceAddress,
AFN = analysisBaseDto.AFN,
Fn = analysisBaseDto.Fn,
Seq = analysisBaseDto.PSEQ,
@ -228,7 +228,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData
DatabaseBusiID = item.DatabaseBusiID,
PendingCopyReadTime = item.TimeSpan.Value.GetFormatTime(analysisBaseDto.DensityUnit, analysisBaseDto.TimeDensity),
CreationTime = currentTime,
MeterAddress = item.MeterAddress,
MeterAddress = item.DeviceAddress,
AFN = analysisBaseDto.AFN,
Fn = analysisBaseDto.Fn,
Seq = analysisBaseDto.PSEQ,
@ -271,8 +271,8 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData
public async Task<bool> SaveStatusToIotDbAsync<T>(UnitDataAnalysis<AnalysisBaseDto<T>> analysisBaseDto)
{
ArgumentNullException.ThrowIfNull(nameof(analysisBaseDto.Data));
ArgumentNullException.ThrowIfNullOrWhiteSpace(nameof(analysisBaseDto.Data.FiledName));
ArgumentNullException.ThrowIfNullOrWhiteSpace(nameof(analysisBaseDto.Data.DataValue));
ArgumentException.ThrowIfNullOrWhiteSpace(nameof(analysisBaseDto.Data.FiledName));
ArgumentException.ThrowIfNullOrWhiteSpace(nameof(analysisBaseDto.Data.DataValue));
var data = analysisBaseDto.Data!;
if (!data.TimeSpan.HasValue)
data.TimeSpan = analysisBaseDto.ReceivedTime;
@ -335,5 +335,78 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData
return await Task.FromResult(true);
}
/// <summary>
/// 保存状态到IotDb
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="analysisBaseDto"></param>
/// <returns></returns>
public async Task<bool> SaveMultipleStatusToIotDbAsync<T>(UnitDataAnalysis<List<AnalysisBaseDto<T>>> analysisBaseDto)
{
ArgumentNullException.ThrowIfNull(nameof(analysisBaseDto.Data));
var data = analysisBaseDto.Data!;
foreach (var item in data)
{
ArgumentException.ThrowIfNullOrWhiteSpace(nameof(item.FiledName));
ArgumentException.ThrowIfNullOrWhiteSpace(nameof(item.DataValue));
if (!item.TimeSpan.HasValue)
item.TimeSpan = analysisBaseDto.ReceivedTime;
// 类型(心跳,登录,上电,掉电)
long timestamps = DateTime.Now.GetDateTimeOffset().ToUnixTimeNanoseconds();
var treeData = new TreeModelSingleMeasuringEntity<T>()
{
SystemName = _applicationOptions.SystemType,
DeviceId = $"{item.DeviceId}",
DeviceType = $"{item.DeviceType}.{IOTDBDataType.Status}",
ProjectId = $"{item.ProjectId}",
Timestamps = timestamps,
SingleMeasuring = new Tuple<string, T>(item.FiledName!, item.DataValue!)
};
_runtimeContext.UseTableSessionPool = false; // 使树模型池
await _dbProvider.InsertAsync(treeData);
// 数据帧
var treeFrameData = new TreeModelSingleMeasuringEntity<string>()
{
SystemName = _applicationOptions.SystemType,
DeviceId = $"{item.DeviceId}",
DeviceType = $"{item.DeviceType}.{IOTDBDataType.Status}",
ProjectId = $"{item.ProjectId}",
Timestamps = timestamps,
SingleMeasuring = new Tuple<string, string>(ConcentratorStatusFieldConst.FrameData, analysisBaseDto.HexMessage ?? string.Empty)
};
_runtimeContext.UseTableSessionPool = false; // 使树模型池
await _dbProvider.InsertAsync(treeFrameData);
// 时间
var treeRecordingTimeData = new TreeModelSingleMeasuringEntity<long>()
{
SystemName = _applicationOptions.SystemType,
DeviceId = $"{item.DeviceId}",
DeviceType = $"{item.DeviceType}.{IOTDBDataType.Status}",
ProjectId = $"{item.ProjectId}",
Timestamps = timestamps,
SingleMeasuring = new Tuple<string, long>(ConcentratorStatusFieldConst.RecordingTime, (item.TimeSpan.HasValue ? item.TimeSpan.Value : DateTime.Now).GetDateTimeOffset().ToUnixTimeNanoseconds())
};
_runtimeContext.UseTableSessionPool = false; // 使树模型池
await _dbProvider.InsertAsync(treeRecordingTimeData);
// 备注
var treeRemarkData = new TreeModelSingleMeasuringEntity<string>()
{
SystemName = _applicationOptions.SystemType,
DeviceId = $"{item.DeviceId}",
DeviceType = $"{item.DeviceType}.{IOTDBDataType.Status}",
ProjectId = $"{item.ProjectId}",
Timestamps = timestamps,
SingleMeasuring = new Tuple<string, string>(ConcentratorStatusFieldConst.Remark, item.FiledDesc ?? string.Empty)
};
_runtimeContext.UseTableSessionPool = false; // 使树模型池
await _dbProvider.InsertAsync(treeRemarkData);
}
return await Task.FromResult(true);
}
}
}

View File

@ -21,10 +21,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.Appendix
var day = data[3];
string binString = data[4].HexTo4BinZero();
var months = (binString.Substring(3, 1).BinToDec() * 10) + Convert.ToInt32(binString.Substring(4, 4).BinToHex());
var week = binString.Substring(0, 3).HexTo4BinZero();
var week = binString.Substring(0, 3).BinToHex();
var year = $"{DateTime.Now.ToString("yyyy").Substring(0, 2)}{data[5]}";
string date= $"{year}-{months.ToString().PadLeft(2, '0')}-{day} {hours}:{minutes}:{seconds}_{week}";
result?.Invoke(date);
string date= $"{year}-{months.ToString().PadLeft(2, '0')}-{day} {hours}:{minutes}:{seconds}";
string[] weekdays = {"", "星期一", "星期二", "星期三","星期四", "星期五", "星期六", "星期日"};
int.TryParse(week, out int weekday);
// Item1=日期Item2=星期几
result?.Invoke(Tuple.Create(date, weekdays[weekday]));
return await Task.FromResult(true);
}

View File

@ -4,6 +4,7 @@ using JiShe.CollectBus.Common.Helpers;
using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto;
using NUglify.JavaScript.Syntax;
using System.Text.RegularExpressions;
using YamlDotNet.Core.Tokens;
namespace JiShe.CollectBus.Protocol.T37612012
{
@ -239,15 +240,15 @@ namespace JiShe.CollectBus.Protocol.T37612012
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
public static List<AnalysisBaseDto<decimal>> GenerateFinalResultTd_c(this List<string> data, int index,int density,string dataType, string filedDesc = "")
public static List<AnalysisBaseDto<decimal?>> GenerateFinalResultTd_c(this List<string> data, int index,int density,string dataType, string filedDesc = "")
{
List<AnalysisBaseDto<decimal>> list = new List<AnalysisBaseDto<decimal>>();
List<AnalysisBaseDto<decimal?>> list = new List<AnalysisBaseDto<decimal?>>();
for (int i = index; i < data.Count; i++)
{
AnalysisBaseDto<decimal> meter = new AnalysisBaseDto<decimal>();
meter.DeviceType= MeterTypeEnum.Ammeter;
decimal value = 0;
AnalysisBaseDto<decimal?> meter = new AnalysisBaseDto<decimal?>
{
DeviceType = MeterTypeEnum.Ammeter
};
var errorCode = data[i].CheckErrorCode();
if (errorCode != null)
{
@ -255,8 +256,12 @@ namespace JiShe.CollectBus.Protocol.T37612012
meter.ErrorCodeMsg = errorCode.Item2;
}
else
decimal.TryParse(data[i], out value);
meter.DataValue = value;
{
if(decimal.TryParse(data[i], out decimal value))
{
meter.DataValue = value;
}
}
meter.DataType = dataType;
meter.FiledDesc = filedDesc;
meter.FiledName = meter.DataType.GetDataFieldByGatherDataType() ?? string.Empty;
@ -276,14 +281,13 @@ namespace JiShe.CollectBus.Protocol.T37612012
/// <param name="timeSpan"></param>
/// <param name="filedDesc"></param>
/// <returns></returns>
public static List<AnalysisBaseDto<decimal>> GenerateFinalResultTd_m(this List<string> data, int index,string dataType,string timeSpan, string filedDesc = "")
public static List<AnalysisBaseDto<decimal?>> GenerateFinalResultTd_m(this List<string> data, int index,string dataType,string timeSpan, string filedDesc = "")
{
List<AnalysisBaseDto<decimal>> list = new List<AnalysisBaseDto<decimal>>();
List<AnalysisBaseDto<decimal?>> list = new List<AnalysisBaseDto<decimal?>>();
for (int i = index; i < data.Count; i++)
{
AnalysisBaseDto<decimal> meter = new AnalysisBaseDto<decimal>();
AnalysisBaseDto<decimal?> meter = new AnalysisBaseDto<decimal?>();
meter.DeviceType = MeterTypeEnum.Ammeter;
decimal value = 0;
var errorCode = data[i].CheckErrorCode();
if (errorCode != null)
{
@ -291,8 +295,12 @@ namespace JiShe.CollectBus.Protocol.T37612012
meter.ErrorCodeMsg = errorCode.Item2;
}
else
decimal.TryParse(data[i], out value);
meter.DataValue = value;
{
if(decimal.TryParse(data[i], out decimal value))
{
meter.DataValue = value;
}
}
if (DateTime.TryParse(timeSpan, out DateTime readingDate))
{
meter.TimeSpan = readingDate;
@ -312,13 +320,13 @@ namespace JiShe.CollectBus.Protocol.T37612012
/// <param name="data"></param>
/// <param name="remark"></param>
/// <returns></returns>
public static List<AnalysisBaseDto<decimal>> GenerateFinalResultTd_d(this List<string> data, int index,string dataType, string timeSpan, string filedDesc = "")
public static List<AnalysisBaseDto<decimal?>> GenerateFinalResultTd_d(this List<string> data, int index,string dataType, string timeSpan, string filedDesc = "")
{
List<AnalysisBaseDto<decimal>> list = new List<AnalysisBaseDto<decimal>>();
List<AnalysisBaseDto<decimal?>> list = new List<AnalysisBaseDto<decimal?>>();
int typeIndex = 0;
for (int i = index; i < data.Count; i++)
{
AnalysisBaseDto<decimal> meter = new AnalysisBaseDto<decimal>
AnalysisBaseDto<decimal?> meter = new AnalysisBaseDto<decimal?>
{
DeviceType = MeterTypeEnum.Ammeter
};
@ -330,8 +338,12 @@ namespace JiShe.CollectBus.Protocol.T37612012
meter.ErrorCodeMsg = errorCode.Item2;
}
else
decimal.TryParse(data[i], out value);
meter.DataValue = value;
{
if(decimal.TryParse(data[i], out value))
{
meter.DataValue = value;
}
}
if (DateTime.TryParse(timeSpan, out DateTime readingDate))
{
meter.TimeSpan = readingDate;
@ -364,29 +376,33 @@ namespace JiShe.CollectBus.Protocol.T37612012
/// <param name="meterDatas"></param>
/// <param name="mark"></param>
/// <returns></returns>
public static List<AnalysisBaseDto<decimal>> IsValidData(this List<AnalysisBaseDto<decimal>> meterDatas, List<string> mark)
public static List<AnalysisBaseDto<decimal?>> IsValidData(this List<AnalysisBaseDto<decimal?>> meterDatas, List<string> mark)
{
bool isUpload = false;
var jfpgSum = 0M;
var totalItem = meterDatas.Find(f => f.DataType.Equals(mark[0]));//meterDatas.Find(f => f.DataType.Equals(mark[0]));
for (int i = 1; i <= meterDatas.Count - 1; i++)
foreach (var item in meterDatas)
{
var value = meterDatas[i];//meterDatas.Find(f => f.DataType.Equals(mark[i]));
if (value.ValidData)
jfpgSum += value.DataValue;
if (item.ValidData && item.DataValue.HasValue)
jfpgSum += item.DataValue.Value;
}
var totalItem = meterDatas.FirstOrDefault(f => f.DataType.Equals(mark[0]));//meterDatas.Find(f => f.DataType.Equals(mark[0]));
if (totalItem != null)
{
var floatingNum = (jfpgSum * 5 / 100);//上下浮动数据
var minjfpgSum = jfpgSum - floatingNum;//100-(100*5/100);
var maxjfpgSum = jfpgSum + floatingNum;
if ((totalItem.DataValue <= maxjfpgSum || totalItem.DataValue >= minjfpgSum))//总值在JFPG之和的浮动范围内
isUpload = true;
else
isUpload = false;
}
var floatingNum = (jfpgSum * 5 / 100);//上下浮动数据
var minjfpgSum = jfpgSum - floatingNum;//100-(100*5/100);
var maxjfpgSum = jfpgSum + floatingNum;
if (totalItem.DataValue <= maxjfpgSum || totalItem.DataValue >= minjfpgSum)//总值在JFPG之和的浮动范围内
isUpload = true;
else
isUpload = false;
if (!isUpload)
{
meterDatas.ForEach(f =>
{
f.ValidData = false;
});
}
return meterDatas;
}
}

View File

@ -14,3 +14,12 @@ public class SampleDto2
{
public int Value { get; set; }
}
public class KafkaSendDto
{
public string Address { get; set; }
public string Frame { get; set; }
}

View File

@ -100,16 +100,17 @@ namespace JiShe.CollectBus.Plugins
{
//todo: 删除Redis缓存
var tcpSessionClient = (ITcpSessionClient)client;
var entity = await _deviceRepository.FindAsync(a => a.ClientId == tcpSessionClient.Id);
if (entity != null)
{
entity.UpdateByOnClosed();
await _deviceRepository.UpdateAsync(entity);
}
else
{
_logger.LogWarning($"[TCP] ID:{tcpSessionClient.Id} IP:{client.GetIPPort()}已关闭连接,但采集程序检索失败");
}
//var entity = await _deviceRepository.FindAsync(a => a.ClientId == tcpSessionClient.Id);
//if (entity != null)
//{
// entity.UpdateByOnClosed();
// await _deviceRepository.UpdateAsync(entity);
//}
//else
//{
//_logger.LogWarning($"[TCP] ID:{tcpSessionClient.Id} IP:{client.GetIPPort()}已关闭连接,但采集程序检索失败");
//}
_logger.LogWarning($"[TCP] ID:{tcpSessionClient.Id} IP:{client.GetIPPort()}已关闭连接");
await e.InvokeNext();
}

View File

@ -14,6 +14,7 @@ using JiShe.CollectBus.IotSystems.Ammeters;
using JiShe.CollectBus.IotSystems.PrepayModel;
using JiShe.CollectBus.Kafka.Attributes;
using JiShe.CollectBus.Kafka.Internal;
using JiShe.CollectBus.Kafka.Producer;
using JiShe.CollectBus.Protocol.Interfaces;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
@ -24,6 +25,8 @@ using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Threading.Tasks;
using TouchSocket.Core;
using TouchSocket.Sockets;
namespace JiShe.CollectBus.Samples;
@ -35,14 +38,18 @@ public class SampleAppService : CollectBusAppService, ISampleAppService, IKafkaS
private readonly IoTDbOptions _options;
private readonly IRedisDataCacheService _redisDataCacheService;
private readonly IProducerService _producerService;
private readonly ITcpService _tcpService;
public SampleAppService(IIoTDbProvider iotDBProvider, IOptions<IoTDbOptions> options,
IoTDBRuntimeContext dbContext, ILogger<SampleAppService> logger, IRedisDataCacheService redisDataCacheService)
IoTDBRuntimeContext dbContext, ILogger<SampleAppService> logger, IRedisDataCacheService redisDataCacheService, IProducerService producerService, ITcpService tcpService)
{
_iotDBProvider = iotDBProvider;
_options = options.Value;
_dbContext = dbContext;
_logger = logger;
_redisDataCacheService = redisDataCacheService;
_producerService =producerService;
_tcpService=tcpService;
}
/// <summary>
@ -416,5 +423,44 @@ public class SampleAppService : CollectBusAppService, ISampleAppService, IKafkaS
_logger.LogWarning($"收到订阅消息: {obj}");
return SubscribeAck.Success();
}
/// <summary>
/// 测试Kafka下发报文
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[AllowAnonymous]
public async Task<bool> KafkaSendAsync(KafkaSendDto input)
{
ArgumentException.ThrowIfNullOrWhiteSpace(input.Address);
ArgumentException.ThrowIfNullOrWhiteSpace(input.Frame);
input.Frame = input.Frame.Replace(" ", "");
await _producerService.ProduceAsync<KafkaSendDto>(ProtocolConst.TESTSENDTOPIC, input);
return await Task.FromResult(true);
}
/// <summary>
/// 订阅下发的数据
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[KafkaSubscribe(ProtocolConst.TESTSENDTOPIC)]
public async Task<ISubscribeAck> KafkaSubscribeTestSendAsync(KafkaSendDto dto)
{
if (_tcpService.ClientExists(dto.Address))
{
// 发送给设备
await _tcpService.SendAsync(dto.Address, Convert.FromHexString(dto.Frame));
_logger.LogWarning($"{dto.Address}下发消息报文:{dto.Frame}");
}
else
{
_logger.LogWarning($"{dto.Address}集中器未上线: {dto.Serialize()}");
}
// 测试不管是否上线都ACK
return SubscribeAck.Success();
}
}

View File

@ -63,18 +63,18 @@ namespace JiShe.CollectBus.Protocol.Contracts.Protocol.Dto
public int DatabaseBusiID { get; set; }
/// <summary>
/// 表地址
/// 设备地址(电表地址,水表地址,气表地址,集中器地址等)
/// </summary>
public string MeterAddress { get; set; } = null!;
public string DeviceAddress { get; set; } = null!;
}
public class AnalysisBaseDto<T> : AnalysisBaseDto
{
/// <summary>
/// 抄读值
/// </summary>
public T? DataValue { get; set; }
/// <summary>
/// 抄读值
/// </summary>
public T? DataValue { get; set; } = default;
}
}

View File

@ -170,5 +170,10 @@ namespace JiShe.CollectBus.Common.Consts
/// 测试主题格式
/// </summary>
public const string TESTTOPIC = "test-topic";
/// <summary>
/// 测试下发主题格式
/// </summary>
public const string TESTSENDTOPIC = "test-send-topic";
}
}

View File

@ -1183,10 +1183,10 @@ namespace JiShe.CollectBus.Common.Extensions
/// </summary>
/// <param name="hexString"></param>
/// <returns></returns>
public static string HexToDecStr(this int hexString)
public static string HexToDecStr(this int hexString,bool isUpper= true)
{
var decimalString = Convert.ToString(hexString, 16);
return decimalString;
return isUpper? decimalString.ToUpper(): decimalString;
}
/// <summary>

View File

@ -16,7 +16,6 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link href="libs/bootstrap/css/bootstrap.min.css" rel="stylesheet" />
<title>后端服务</title>
</head>
<body>