解析错误数据保存NULL

This commit is contained in:
zenghongyao 2025-05-08 15:12:37 +08:00
parent 91386007ae
commit 3488b0012a
70 changed files with 520 additions and 436 deletions

View File

@ -33,7 +33,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
ArgumentNullException.ThrowIfNull(input); ArgumentNullException.ThrowIfNull(input);
ArgumentNullException.ThrowIfNull(input.UnitData?.HexMessageList); ArgumentNullException.ThrowIfNull(input.UnitData?.HexMessageList);
ArgumentNullException.ThrowIfNull(input.A.A3?.D1_D7); 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!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -48,7 +48,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
TimeDensity = 0 TimeDensity = 0
}; };
List<string> datas = await AnalysisDataUnitAsync(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); List<AnalysisBaseDto<decimal?>> list = GenerateFinalResult(2, datas, "正向有功电能示值", input.AFN_FC.AFN, input.DT.Fn);
unitDataAnalysis.Data= list; unitDataAnalysis.Data= list;
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); return await Task.FromResult(true);
@ -90,22 +90,32 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
} }
#endregion #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++) for (int i = index; i < data.Count; i++)
{ {
AnalysisBaseDto<decimal> meter = new AnalysisBaseDto<decimal>(); AnalysisBaseDto<decimal?> meter = new AnalysisBaseDto<decimal?>
{
decimal value = 0; DeviceType = MeterTypeEnum.Ammeter
};
var errorCode = data[i].CheckErrorCode(); var errorCode = data[i].CheckErrorCode();
if (errorCode != null) if (errorCode != null)
{
meter.ErrorCodeMsg= errorCode.Item2;
meter.ValidData = false; meter.ValidData = false;
}
else 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.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.FiledDesc = filedDesc;
meter.FiledName = meter.DataType.GetDataFieldByGatherDataType() ?? string.Empty; meter.FiledName = meter.DataType.GetDataFieldByGatherDataType() ?? string.Empty;
list.Add(meter); list.Add(meter);

View File

@ -31,8 +31,8 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
ArgumentNullException.ThrowIfNull(input); ArgumentNullException.ThrowIfNull(input);
ArgumentNullException.ThrowIfNull(input.UnitData?.HexMessageList); ArgumentNullException.ThrowIfNull(input.UnitData?.HexMessageList);
List<string> datas = await AnalysisDataUnitAsync(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); List<AnalysisBaseDto<decimal?>> list = GenerateFinalResult(2, datas, "正向无功电能示值", input.AFN_FC.AFN, input.DT.Fn);
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -78,21 +78,30 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
} }
return values; 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++) for (int i = index; i < data.Count; i++)
{ {
AnalysisBaseDto<decimal> meter = new AnalysisBaseDto<decimal>(); AnalysisBaseDto<decimal?> meter = new AnalysisBaseDto<decimal?>
decimal value = 0; {
DeviceType = MeterTypeEnum.Ammeter
};
var errorCode = data[i].CheckErrorCode(); var errorCode = data[i].CheckErrorCode();
if (errorCode != null) if (errorCode != null)
{
meter.ErrorCodeMsg = errorCode.Item2;
meter.ValidData = false; meter.ValidData = false;
}
else 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.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.FiledDesc = filedDesc;
meter.FiledName = meter.DataType.GetDataFieldByGatherDataType() ?? string.Empty; meter.FiledName = meter.DataType.GetDataFieldByGatherDataType() ?? string.Empty;
list.Add(meter); list.Add(meter);

View File

@ -6,6 +6,8 @@ using JiShe.CollectBus.Protocol.Interfaces;
using JiShe.CollectBus.Protocol.T37612012.Appendix; using JiShe.CollectBus.Protocol.T37612012.Appendix;
using JiShe.CollectBus.Protocol3761; using JiShe.CollectBus.Protocol3761;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Newtonsoft.Json.Linq;
using YamlDotNet.Core.Tokens;
namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH 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);
ArgumentNullException.ThrowIfNull(input.UnitData?.HexMessageList); ArgumentNullException.ThrowIfNull(input.UnitData?.HexMessageList);
List<string> datas = await AnalysisDataUnitAsync(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); List<AnalysisBaseDto<decimal?>> list = GenerateFinalResult(2, datas, "反向有功总电能示值", input.AFN_FC.AFN, input.DT.Fn);
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -78,21 +80,30 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
} }
return values; 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++) for (int i = index; i < data.Count; i++)
{ {
AnalysisBaseDto<decimal> meter = new AnalysisBaseDto<decimal>(); AnalysisBaseDto<decimal?> meter = new AnalysisBaseDto<decimal?>
decimal value = 0; {
DeviceType = MeterTypeEnum.Ammeter
};
var errorCode = data[i].CheckErrorCode(); var errorCode = data[i].CheckErrorCode();
if (errorCode != null) if (errorCode != null)
{
meter.ErrorCodeMsg = errorCode.Item2;
meter.ValidData = false; meter.ValidData = false;
}
else 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.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.FiledDesc = filedDesc;
meter.FiledName = meter.DataType.GetDataFieldByGatherDataType() ?? string.Empty; meter.FiledName = meter.DataType.GetDataFieldByGatherDataType() ?? string.Empty;
list.Add(meter); list.Add(meter);

View File

@ -7,6 +7,7 @@ using JiShe.CollectBus.Protocol.Interfaces;
using JiShe.CollectBus.Protocol.T37612012.Appendix; using JiShe.CollectBus.Protocol.T37612012.Appendix;
using JiShe.CollectBus.Protocol3761; using JiShe.CollectBus.Protocol3761;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using YamlDotNet.Core.Tokens;
namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH 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); ArgumentNullException.ThrowIfNull(input.UnitData?.HexMessageList);
List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList); List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
string 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}";
List<AnalysisBaseDto<decimal?>> list = GenerateFinalResult(2, datas, "反向无功电能示值", dataType);
List<AnalysisBaseDto<decimal>> list = GenerateFinalResult(2, datas, "反向无功电能示值", dataType); UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -82,21 +82,33 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
} }
return values; 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++) for (int i = index; i < data.Count; i++)
{ {
AnalysisBaseDto<decimal> meter = new AnalysisBaseDto<decimal>(); AnalysisBaseDto<decimal?> meter = new AnalysisBaseDto<decimal?>
decimal value = 0; {
DeviceType = MeterTypeEnum.Ammeter
};
var errorCode = data[i].CheckErrorCode(); var errorCode = data[i].CheckErrorCode();
if (errorCode != null) if (errorCode != null)
{
meter.ErrorCodeMsg = errorCode.Item2;
meter.ValidData = false; meter.ValidData = false;
}
else 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.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.FiledDesc = filedDesc;
meter.FiledName = meter.DataType.GetDataFieldByGatherDataType() ?? string.Empty; meter.FiledName = meter.DataType.GetDataFieldByGatherDataType() ?? string.Empty;
list.Add(meter); 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); List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
string 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); AnalysisBaseDto<decimal?> data = GenerateFinalResult(datas, "当月正向有功最大需量及发生时间", dataType);
UnitDataAnalysis<AnalysisBaseDto<decimal>> unitDataAnalysis = new UnitDataAnalysis<AnalysisBaseDto<decimal>> UnitDataAnalysis<AnalysisBaseDto<decimal?>> unitDataAnalysis = new UnitDataAnalysis<AnalysisBaseDto<decimal?>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -96,19 +96,25 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
return values; 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>(); AnalysisBaseDto<decimal?> dto = new AnalysisBaseDto<decimal?>
{
decimal value = 0; DeviceType = MeterTypeEnum.Ammeter
};
var errorCode = data[2].CheckErrorCode(); var errorCode = data[2].CheckErrorCode();
if (errorCode != null) if (errorCode != null)
{
dto.ErrorCodeMsg = errorCode.Item2;
dto.ValidData = false; dto.ValidData = false;
}
else 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";
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)}";
if (DateTime.TryParse(timeSpan, out DateTime readingDate)) if (DateTime.TryParse(timeSpan, out DateTime readingDate))
{ {
dto.TimeSpan = 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); List<string> datas = await AnalysisDataUnit(input.UnitData.HexMessageList);
string 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,"上月(上一结算日)正向有功最大需量及发生时间"); AnalysisBaseDto<decimal?> data = GenerateFinalResult(datas, dataType,"上月(上一结算日)正向有功最大需量及发生时间");
// 查询电表信息 // 查询电表信息
AmmeterInfo ammeterInfo = await _dataStorage.GetMeterInfoAsync(data.DeviceType.ToString(), "15"); AmmeterInfo ammeterInfo = await _dataStorage.GetMeterInfoAsync(data.DeviceType.ToString(), "15");
if (ammeterInfo != null) if (ammeterInfo != null)
@ -48,7 +48,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
data.DatabaseBusiID=ammeterInfo.DatabaseBusiID; data.DatabaseBusiID=ammeterInfo.DatabaseBusiID;
data.DeviceAddress= 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!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -63,7 +63,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
DensityUnit = DensityUnit.Second, DensityUnit = DensityUnit.Second,
TimeDensity = 0 TimeDensity = 0
}; };
await _dataStorage.SaveDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); return await Task.FromResult(true);
} }
@ -110,10 +110,12 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
} }
return values; 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(); var errorCodeInfo = data[2].CheckErrorCode();
if (errorCodeInfo != null) if (errorCodeInfo != null)
{ {
@ -133,7 +135,6 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
else 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"; 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:时间标 //TODO:时间标
if (!DateTime.TryParse(timeSpan, out DateTime dataTime)) if (!DateTime.TryParse(timeSpan, out DateTime dataTime))
dto.ValidData = false; dto.ValidData = false;

View File

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

View File

@ -1,11 +1,14 @@
using JiShe.CollectBus.Common.Enums; using JiShe.CollectBus.Common.Enums;
using JiShe.CollectBus.Common.Extensions; using JiShe.CollectBus.Common.Extensions;
using JiShe.CollectBus.Common.Helpers;
using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto;
using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto;
using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol.Interfaces;
using JiShe.CollectBus.Protocol.T37612012.Appendix; using JiShe.CollectBus.Protocol.T37612012.Appendix;
using JiShe.CollectBus.Protocol3761; using JiShe.CollectBus.Protocol3761;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Newtonsoft.Json.Linq;
using YamlDotNet.Core.Tokens;
namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
{ {
@ -32,13 +35,15 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
ArgumentNullException.ThrowIfNull(input); ArgumentNullException.ThrowIfNull(input);
ArgumentNullException.ThrowIfNull(input.UnitData?.HexMessageList); 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<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); List<string> data = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
for (int i = 1; i < data.Count; i++) for (int i = 1; i < data.Count; i++)
{ {
AnalysisBaseDto<decimal> dto = new AnalysisBaseDto<decimal>(); AnalysisBaseDto<decimal?> dto = new AnalysisBaseDto<decimal?>
decimal value = 0; {
DeviceType = MeterTypeEnum.Ammeter
};
var errorCodeInfo = data[i].CheckErrorCode(); var errorCodeInfo = data[i].CheckErrorCode();
if (errorCodeInfo != null) if (errorCodeInfo != null)
{ {
@ -46,15 +51,18 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
dto.ErrorCodeMsg = errorCodeInfo.Item2; dto.ErrorCodeMsg = errorCodeInfo.Item2;
} }
else 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.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.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]; dto.FiledDesc = remarks[i - 1];
list.Add(dto); 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!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,

View File

@ -1,11 +1,13 @@
using JiShe.CollectBus.Common.Enums; using JiShe.CollectBus.Common.Enums;
using JiShe.CollectBus.Common.Extensions; using JiShe.CollectBus.Common.Extensions;
using JiShe.CollectBus.Common.Helpers;
using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto;
using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto;
using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol.Interfaces;
using JiShe.CollectBus.Protocol.T37612012.Appendix; using JiShe.CollectBus.Protocol.T37612012.Appendix;
using JiShe.CollectBus.Protocol3761; using JiShe.CollectBus.Protocol3761;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using YamlDotNet.Core.Tokens;
namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH 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> data = await AnalysisDataUnitAsync(input.UnitData?.HexMessageList!);
List<string> remarks = new List<string>() { "Uab/Ua 相位角", "Ub 相位角", "Ucb/Uc 相位角", "Ia 相位角", "Ib 相位角", "Ic 相位角" }; 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++) for (int i = 0; i < data.Count; i++)
{ {
AnalysisBaseDto<decimal> dto = new AnalysisBaseDto<decimal>(); AnalysisBaseDto<decimal?> dto = new AnalysisBaseDto<decimal?>
decimal value = 0; {
DeviceType = MeterTypeEnum.Ammeter
};
var errorCodeInfo = data[i].CheckErrorCode(); var errorCodeInfo = data[i].CheckErrorCode();
if (errorCodeInfo != null) if (errorCodeInfo != null)
{ {
@ -45,15 +49,16 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
dto.ErrorCodeMsg = errorCodeInfo.Item2; dto.ErrorCodeMsg = errorCodeInfo.Item2;
} }
else 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.DataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}_{DataType[i]}";
dto.FiledName = DataType[i]; dto.FiledName = DataType[i].GetDataFieldByGatherDataType() ?? string.Empty;
dto.FiledDesc= remarks[i]; dto.FiledDesc= remarks[i];
list.Add(dto); 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!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, 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))); int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string 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}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "反向无功总电能量"); List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "反向无功总电能量");
if (data.Count > 0) if (data.Count > 0)
{ {
@ -56,7 +56,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -71,7 +71,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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))); int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string 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}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "正向有功总电能示值"); List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "正向有功总电能示值");
if (data.Count > 0) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -53,7 +53,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -68,7 +68,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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}"; 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) if (data.Count > 0)
{ {
@ -55,7 +55,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -70,7 +70,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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}"; 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) if (data.Count > 0)
{ {
@ -55,7 +55,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -70,7 +70,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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))); int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string 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}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "反向无功总电能示值"); List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "反向无功总电能示值");
if (data.Count > 0) if (data.Count > 0)
{ {
@ -54,7 +54,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -69,7 +69,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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))); int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string 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}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "功率因数"); List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "功率因数");
if (data.Count > 0) if (data.Count > 0)
{ {
@ -54,7 +54,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -69,7 +69,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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))); int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string 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}";
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) if (data.Count > 0)
{ {
@ -54,7 +54,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -69,7 +69,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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))); int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string 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}";
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) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -53,7 +53,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -68,7 +68,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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))); int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string 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}";
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) if (data.Count > 0)
{ {
@ -54,7 +54,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -69,7 +69,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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.Protocol.T37612012.Appendix;
using JiShe.CollectBus.Protocol3761; using JiShe.CollectBus.Protocol3761;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using YamlDotNet.Core.Tokens;
namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH 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); List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
string 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}";
List<AnalysisBaseDto<decimal>> data = GenerateFinalResult(datas,3, dataType, "抄表日冻结电能表正向有功最大需量及发生时间"); List<AnalysisBaseDto<decimal?>> data = GenerateFinalResult(datas,3, dataType, "抄表日冻结电能表正向有功最大需量及发生时间");
if (data.Count > 0) if (data.Count > 0)
{ {
@ -52,7 +53,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -67,7 +68,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Day, DensityUnit = DensityUnit.Day,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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 int ratingCount = hexMessageList.GetRatingCount(12, 1);//费率数 M1≤M≤12
values.Add(ratingCount.ToString()); values.Add(ratingCount.ToString());
int handlerNum = 13; 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 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 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 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); handlerNum += 4 * (ratingCount + 1);
return values; 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>(); List<string> values = new List<string>();
for (int i = 0; i < ratingCount + 1; i++) for (int i = 0; i < ratingCount + 1; i++)
@ -108,7 +109,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
values.Add(errorCode.Item1); values.Add(errorCode.Item1);
else else
{ {
await _analysisStrategyContext.ExecuteAsync<List<string>>(nameof(Appendix_A5), arr, (value) => await _analysisStrategyContext.ExecuteAsync<List<string>>(appendixName, arr, (value) =>
{ {
values.Add(value.ToString()); values.Add(value.ToString());
}); });
@ -117,19 +118,18 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
return values; 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; int fCount = Convert.ToInt32(data[2]) + 1;
for (int i = 1; i <= 2; i++) for (int i = 1; i <= 2; i++)
{ {
AnalysisBaseDto<decimal> meter = new AnalysisBaseDto<decimal> AnalysisBaseDto<decimal?> meter = new AnalysisBaseDto<decimal?>
{ {
DeviceType = MeterTypeEnum.Ammeter DeviceType = MeterTypeEnum.Ammeter
}; };
int startIndex = i == 1 ? 3 : (3 + i * fCount); int startIndex = i == 1 ? 3 : (3 + i * fCount);
decimal value = 0;
var errorCode = data[startIndex].CheckErrorCode(); var errorCode = data[startIndex].CheckErrorCode();
if (errorCode != null) if (errorCode != null)
{ {
@ -137,12 +137,14 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
meter.ErrorCodeMsg = errorCode.Item2; meter.ErrorCodeMsg = errorCode.Item2;
} }
else else
decimal.TryParse(data[startIndex], out value); {
if(decimal.TryParse(data[startIndex], out decimal value))
meter.DataValue = 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"; 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 DateTime readingDate))
if (DateTime.TryParse(timeSpan, out readingDate))
{ {
meter.TimeSpan = 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))); int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string 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}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "一象限无功电能示值"); List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "一象限无功电能示值");
if (data.Count > 0) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -53,7 +53,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -68,7 +68,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); return await Task.FromResult(true);
} }

View File

@ -31,13 +31,14 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
try try
{ {
ArgumentNullException.ThrowIfNull(input); ArgumentNullException.ThrowIfNull(input);
ArgumentNullException.ThrowIfNull(input.A.Code);
ArgumentNullException.ThrowIfNull(input.UnitData?.HexMessageList); ArgumentNullException.ThrowIfNull(input.UnitData?.HexMessageList);
List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList); List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums))); int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string 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}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "四象限无功电能示值"); List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "四象限无功电能示值");
if (data.Count > 0) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -53,7 +54,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -68,7 +69,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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))); int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string 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}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "二象限无功电能示值"); List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "二象限无功电能示值");
if (data.Count > 0) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -53,7 +53,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -68,7 +68,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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))); int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string 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}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "三象限无功电能示值"); List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "三象限无功电能示值");
if (data.Count > 0) if (data.Count > 0)
{ {
@ -54,7 +54,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -69,7 +69,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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 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}"; 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) if (data.Count > 0)
{ {
@ -53,7 +53,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -68,7 +68,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Day, DensityUnit = DensityUnit.Day,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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 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}"; 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) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -52,7 +52,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -67,7 +67,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Day, DensityUnit = DensityUnit.Day,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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 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}"; 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) if (data.Count > 0)
{ {
@ -53,7 +53,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -68,7 +68,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Day, DensityUnit = DensityUnit.Day,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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 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}"; 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) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -52,7 +52,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -67,7 +67,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Day, DensityUnit = DensityUnit.Day,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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 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}"; 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) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -52,7 +52,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -67,7 +67,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Day, DensityUnit = DensityUnit.Day,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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 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}"; 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) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -52,7 +52,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -67,7 +67,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Day, DensityUnit = DensityUnit.Day,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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 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}"; 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) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -52,7 +52,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -67,7 +67,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Day, DensityUnit = DensityUnit.Day,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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 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}"; 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) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -52,7 +52,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -67,7 +67,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Day, DensityUnit = DensityUnit.Day,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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); List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
string 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}";
string timeSpan = $"{datas[0].Substring(0, 4)}-{datas[0].Substring(4, 2)}-01 00:00:00"; 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) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -51,7 +51,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -66,7 +66,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Month, DensityUnit = DensityUnit.Month,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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); List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
string 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}";
string timeSpan = $"{datas[0].Substring(0, 4)}-{datas[0].Substring(4, 2)}-01 00:00:00"; 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) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -52,7 +52,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -67,7 +67,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Month, DensityUnit = DensityUnit.Month,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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); List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
string 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}";
string timeSpan = $"{datas[0].Substring(0, 4)}-{datas[0].Substring(4, 2)}-01 00:00:00"; 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) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -52,7 +52,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -67,7 +67,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Month, DensityUnit = DensityUnit.Month,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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); List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
string 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}";
string timeSpan = $"{datas[0].Substring(0, 4)}-{datas[0].Substring(4, 2)}-01 00:00:00"; 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) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -51,7 +51,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -66,7 +66,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Month, DensityUnit = DensityUnit.Month,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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); List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
string 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}";
string timeSpan = $"{datas[0].Substring(0, 4)}-{datas[0].Substring(4, 2)}-01 00:00:00"; 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) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -52,7 +52,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -67,7 +67,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Month, DensityUnit = DensityUnit.Month,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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); List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
string 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}";
string timeSpan = $"{datas[0].Substring(0, 4)}-{datas[0].Substring(4, 2)}-01 00:00:00"; 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) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -52,7 +52,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -67,7 +67,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Month, DensityUnit = DensityUnit.Month,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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); List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
string 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}";
string timeSpan = $"{datas[0].Substring(0, 4)}-{datas[0].Substring(4, 2)}-01 00:00:00"; 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) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -51,7 +51,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -66,7 +66,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Month, DensityUnit = DensityUnit.Month,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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); List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
string 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}";
string timeSpan = $"{datas[0].Substring(0, 4)}-{datas[0].Substring(4, 2)}-01 00:00:00"; 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) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -52,7 +52,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -67,7 +67,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Month, DensityUnit = DensityUnit.Month,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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 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}"; 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) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -53,7 +53,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -68,7 +68,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Day, DensityUnit = DensityUnit.Day,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); return await Task.FromResult(true);
} }
@ -87,13 +87,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int ratingCount = hexMessageList.GetRatingCount(12, 1); int ratingCount = hexMessageList.GetRatingCount(12, 1);
values.Add(ratingCount.ToString()); values.Add(ratingCount.ToString());
int handlerNum = 13; 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; 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; 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>(); List<string> values = new List<string>();
for (int i = 0; i < ratingCount + 1; i++) 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); ArgumentNullException.ThrowIfNull(input.UnitData?.HexMessageList);
List<string> datas = await AnalysisDataUnitAsync(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, "抄表日冻结正向无功最大需量及发生时间"); AnalysisBaseDto<decimal?> data = GenerateFinalResult(datas, "抄表日冻结正向无功最大需量及发生时间", dataType);
data.DataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
// 查询电表信息 // 查询电表信息
AmmeterInfo ammeterInfo = await _dataStorage.GetMeterInfoAsync(data.DeviceType.ToString(), "15"); AmmeterInfo ammeterInfo = await _dataStorage.GetMeterInfoAsync(data.DeviceType.ToString(), "15");
@ -47,7 +46,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
data.DatabaseBusiID = ammeterInfo.DatabaseBusiID; data.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
data.DeviceAddress = 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!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -62,7 +61,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Day, DensityUnit = DensityUnit.Day,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); return await Task.FromResult(true);
} }
@ -81,18 +80,18 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int ratingCount = hexMessageList.GetRatingCount(12, 1); int ratingCount = hexMessageList.GetRatingCount(12, 1);
values.Add(ratingCount.ToString()); values.Add(ratingCount.ToString());
int handlerNum = 13; 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 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 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 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); handlerNum += 4 * (ratingCount + 1);
return values; 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>(); List<string> values = new List<string>();
for (int i = 0; i < ratingCount + 1; i++) for (int i = 0; i < ratingCount + 1; i++)
@ -112,15 +111,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
return values; 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>>(); List<AnalysisBaseDto<decimal?>> list = new List<AnalysisBaseDto<decimal?>>();
AnalysisBaseDto<decimal> meter = new AnalysisBaseDto<decimal> AnalysisBaseDto<decimal?> meter = new AnalysisBaseDto<decimal?>
{ {
DeviceType = MeterTypeEnum.Ammeter DeviceType = MeterTypeEnum.Ammeter
}; };
decimal value = 0;
var errorCode = data[3].CheckErrorCode(); var errorCode = data[3].CheckErrorCode();
if (errorCode != null) if (errorCode != null)
{ {
@ -128,15 +125,18 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
meter.ErrorCodeMsg = errorCode.Item2; meter.ErrorCodeMsg = errorCode.Item2;
} }
else else
decimal.TryParse(data[3], out value); {
meter.DataValue = value; if(decimal.TryParse(data[3], out decimal 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)}"; meter.DataValue = value;
DateTime readingDate = DateTime.Now; }
if (DateTime.TryParse(timeSpan, out readingDate)) }
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.TimeSpan = readingDate;
} }
meter.DataType = dataType;
meter.FiledDesc = filedDesc; meter.FiledDesc = filedDesc;
meter.FiledName = meter.DataType.GetDataFieldByGatherDataType() ?? string.Empty; meter.FiledName = meter.DataType.GetDataFieldByGatherDataType() ?? string.Empty;
return meter; return meter;

View File

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

View File

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

View File

@ -10,6 +10,7 @@ using System.Data;
using JiShe.CollectBus.Common.Extensions; using JiShe.CollectBus.Common.Extensions;
using JiShe.CollectBus.IotSystems.Ammeters; using JiShe.CollectBus.IotSystems.Ammeters;
using JiShe.CollectBus.Common.Helpers; using JiShe.CollectBus.Common.Helpers;
using YamlDotNet.Core.Tokens;
namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH 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); List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
string 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}";
List<AnalysisBaseDto<decimal>> data = GenerateFinalResult(datas, dataType, "月冻结电能表正向有功最大需量及发生时间"); List<AnalysisBaseDto<decimal?>> data = GenerateFinalResult(datas, dataType, "月冻结电能表正向有功最大需量及发生时间");
if (data.Count > 0) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -53,7 +54,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -68,7 +69,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Day, DensityUnit = DensityUnit.Day,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); return await Task.FromResult(true);
} }
@ -87,18 +88,18 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
int ratingCount = hexMessageList.GetRatingCount(11, 1); int ratingCount = hexMessageList.GetRatingCount(11, 1);
values.Add(ratingCount.ToString()); values.Add(ratingCount.ToString());
int handlerNum = 12; 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); 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); 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); 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); handlerNum += 4 * (ratingCount + 1);
return values; 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>(); List<string> values = new List<string>();
for (int i = 0; i < ratingCount + 1; i++) for (int i = 0; i < ratingCount + 1; i++)
@ -118,16 +119,15 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
return values; 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; int fCount = Convert.ToInt32(data[2]) + 1;
for (int i = 1; i <= 2; i++) for (int i = 1; i <= 2; i++)
{ {
AnalysisBaseDto<decimal> meter = new AnalysisBaseDto<decimal>(); AnalysisBaseDto<decimal?> meter = new AnalysisBaseDto<decimal?>();
meter.DeviceType= MeterTypeEnum.Ammeter; meter.DeviceType= MeterTypeEnum.Ammeter;
int startIndex = i == 1 ? 3 : (3 + i * fCount); int startIndex = i == 1 ? 3 : (3 + i * fCount);
decimal value = 0;
var errorCode = data[startIndex].CheckErrorCode(); var errorCode = data[startIndex].CheckErrorCode();
if (errorCode != null) if (errorCode != null)
{ {
@ -135,17 +135,18 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
meter.ErrorCodeMsg = errorCode.Item2; meter.ErrorCodeMsg = errorCode.Item2;
} }
else else
decimal.TryParse(data[startIndex], out value); {
meter.DataValue = value; if(decimal.TryParse(data[startIndex], out decimal value))
//2021 01 15 {
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"; 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 DateTime readingDate))
if (DateTime.TryParse(timeSpan, out readingDate))
{ {
meter.TimeSpan = readingDate; meter.TimeSpan = readingDate;
} }
meter.DataType = i == 1 ? dataType : $"{dataType}_{ i - 1}"; meter.DataType = i == 1 ? dataType : $"{dataType}_{ i - 1}";
filedDesc = i == 1 ? filedDesc : filedDesc.Replace("有功", "无功"); filedDesc = i == 1 ? filedDesc : filedDesc.Replace("有功", "无功");
meter.FiledDesc = filedDesc; meter.FiledDesc = filedDesc;
meter.FiledName = meter.DataType.GetDataFieldByGatherDataType() ?? string.Empty; 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"; 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) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -57,7 +57,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -72,7 +72,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Day, DensityUnit = DensityUnit.Day,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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 int ratingCount = hexMessageList.GetRatingCount(12, 1);//费率数 M1≤M≤12
values.Add(ratingCount.ToString()); values.Add(ratingCount.ToString());
int handlerNum = 13; 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 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 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 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); handlerNum += 4 * (ratingCount + 1);
return values; 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>(); List<string> values = new List<string>();
for (int i = 0; i < ratingCount + 1; i++) for (int i = 0; i < ratingCount + 1; i++)
@ -123,61 +123,52 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
return values; 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; int fCount = Convert.ToInt32(data[2]) + 1;
for (int i = 1; i <= 2; i++) for (int i = 1; i <= 2; i++)
{ {
try AnalysisBaseDto<decimal?> meter = new AnalysisBaseDto<decimal?>
{ {
AnalysisBaseDto<decimal> meter = new AnalysisBaseDto<decimal> DeviceType = MeterTypeEnum.Ammeter
{ };
DeviceType = MeterTypeEnum.Ammeter int startIndex = i == 1 ? 3 : (3 + i * fCount);
};
int startIndex = i == 1 ? 3 : (3 + i * fCount);
var errorCode = data[startIndex].CheckErrorCode(); var errorCode = data[startIndex].CheckErrorCode();
if (errorCode != null) if (errorCode != null)
meter.ValidData = false; meter.ValidData = false;
decimal.TryParse(data[startIndex], out decimal value);//decimal.TryParse(data[startIndex], out value); if(decimal.TryParse(data[startIndex], out decimal value))
meter.DataValue = value; meter.DataValue = value;
//TODO:日冻结类数据时标Td 20210824 //TODO:日冻结类数据时标Td
var dataTime = string.Empty; var dataTime = string.Empty;
errorCode = data[0].CheckErrorCode(); errorCode = data[0].CheckErrorCode();
if (data[0].Length == 8 && errorCode is null) 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"; 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)) if (DateTime.TryParse(dataTime, out DateTime readingDate))
meter.ValidData = false; meter.TimeSpan = readingDate;
meter.TimeSpan = readingDate;// else
meter.ValidData = false;
//TODO:最大需量发生时间 //TODO:最大需量发生时间
errorCode = data[startIndex + fCount].CheckErrorCode(); errorCode = data[startIndex + fCount].CheckErrorCode();
if (errorCode != null && data[startIndex + fCount].Length != 8) 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; meter.ValidData = false;
else else
{ meter.TimeSpan=tsField;
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.DataType = i == 1 ? dataType : $"{dataType}_{ i - 1}";
meter.ValidData = false; filedDesc = i == 1 ? filedDesc : filedDesc.Replace("有功", "无功");
else meter.FiledDesc = filedDesc;
meter.TimeSpan=tsField; 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; 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"; 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) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -56,7 +56,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -71,7 +71,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Day, DensityUnit = DensityUnit.Day,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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 int ratingCount = hexMessageList.GetRatingCount(12, 1);//费率数 M1≤M≤12
values.Add(ratingCount.ToString()); values.Add(ratingCount.ToString());
int handlerNum = 13; 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 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 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 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); handlerNum += 4 * (ratingCount + 1);
return values; 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>(); List<string> values = new List<string>();
for (int i = 0; i < ratingCount + 1; i++) for (int i = 0; i < ratingCount + 1; i++)
@ -122,13 +122,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
return values; 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; int fCount = Convert.ToInt32(data[2]) + 1;
for (int i = 1; i <= 2; i++) for (int i = 1; i <= 2; i++)
{ {
AnalysisBaseDto<decimal> meter = new AnalysisBaseDto<decimal> AnalysisBaseDto<decimal?> meter = new AnalysisBaseDto<decimal?>
{ {
DeviceType = MeterTypeEnum.Ammeter DeviceType = MeterTypeEnum.Ammeter
}; };
@ -140,17 +140,17 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
meter.ValidData = false; meter.ValidData = false;
meter.ErrorCodeMsg = errorCode.Item2; meter.ErrorCodeMsg = errorCode.Item2;
} }
decimal.TryParse(data[startIndex], out decimal value);//decimal.TryParse(data[startIndex], out value); if(decimal.TryParse(data[startIndex], out decimal value))
meter.DataValue = value; meter.DataValue = value;
//TODO:日冻结类数据时标Td
//TODO:日冻结类数据时标Td 20210824
var dataTime = string.Empty; var dataTime = string.Empty;
errorCode = data[0].CheckErrorCode(); errorCode = data[0].CheckErrorCode();
if (data[0].Length == 8 && errorCode is null) 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"; 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)) if (!DateTime.TryParse(dataTime, out DateTime readingDate))
meter.ValidData = false; meter.ValidData = false;
meter.TimeSpan = readingDate; else
meter.TimeSpan = readingDate;
//TODO:最大需量发生时间 //TODO:最大需量发生时间
errorCode = data[startIndex + fCount].CheckErrorCode(); errorCode = data[startIndex + fCount].CheckErrorCode();
@ -169,7 +169,6 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
meter.FiledDesc = filedDesc; meter.FiledDesc = filedDesc;
meter.FiledName = meter.DataType.GetDataFieldByGatherDataType() ?? string.Empty; meter.FiledName = meter.DataType.GetDataFieldByGatherDataType() ?? string.Empty;
list.Add(meter); list.Add(meter);
} }
return list; 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))); int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string 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}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "有功功率曲线"); List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "有功功率曲线");
if (data.Count > 0) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -54,7 +54,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -69,7 +69,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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))); int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string 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}";
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) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -55,7 +55,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -70,7 +70,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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))); int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string 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}";
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) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -55,7 +55,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -70,7 +70,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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))); int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string 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}";
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) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -54,7 +54,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -69,7 +69,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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))); int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string 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}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "无功功率曲线"); List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "无功功率曲线");
if (data.Count > 0) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -55,7 +55,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -70,7 +70,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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))); int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string 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}";
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) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -55,7 +55,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -70,7 +70,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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))); int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string 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}";
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) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -54,7 +54,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -69,7 +69,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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))); int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string 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}";
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) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -55,7 +55,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -70,7 +70,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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))); int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string 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}";
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) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -55,7 +55,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -70,7 +70,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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))); int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string 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}";
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) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -55,7 +55,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -70,7 +70,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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))); int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string 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}";
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) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -54,7 +54,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -69,7 +69,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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))); int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string 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}";
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) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -55,7 +55,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -70,7 +70,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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))); int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string 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}";
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) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -55,7 +55,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -70,7 +70,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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))); int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string 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}";
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) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -55,7 +55,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -70,7 +70,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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))); int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string 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}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "测量点零序电流曲线"); List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "测量点零序电流曲线");
if (data.Count > 0) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -55,7 +55,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -70,7 +70,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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))); int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string 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}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "正向有功总电能量曲线"); List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "正向有功总电能量曲线");
if (data.Count > 0) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -55,7 +55,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -70,7 +70,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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))); int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string 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}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "正向无功总电能量曲线"); List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "正向无功总电能量曲线");
if (data.Count > 0) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -55,7 +55,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -70,7 +70,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); 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))); int density = Convert.ToInt32(Convert.ToInt32(datas[1]).GetEnumDescription(typeof(DensityEnums)));
string 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}";
List<AnalysisBaseDto<decimal>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "反向有功总电能量曲线"); List<AnalysisBaseDto<decimal?>> data = datas.GenerateFinalResultTd_c(3, density, dataType, "反向有功总电能量曲线");
if (data.Count > 0) if (data.Count > 0)
{ {
// 查询电表信息 // 查询电表信息
@ -55,7 +55,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
}); });
} }
} }
UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -70,7 +70,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
await _dataStorage.SaveMultipleDataToIotDbAsync<decimal>(unitDataAnalysis); await _dataStorage.SaveMultipleDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); return await Task.FromResult(true);
} }

View File

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

View File

@ -199,7 +199,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData
DeviceType = $"{item.DeviceType}.{IOTDBDataType.Data}", DeviceType = $"{item.DeviceType}.{IOTDBDataType.Data}",
ProjectId = $"{item.ProjectId}", ProjectId = $"{item.ProjectId}",
Timestamps = item.TimeSpan!.Value.GetFormatTime(analysisBaseDto.DensityUnit, analysisBaseDto.TimeDensity).GetDateTimeOffset().ToUnixTimeNanoseconds(), // TODO:这里暂时格式化15分钟数据需要进行调整 Timestamps = item.TimeSpan!.Value.GetFormatTime(analysisBaseDto.DensityUnit, analysisBaseDto.TimeDensity).GetDateTimeOffset().ToUnixTimeNanoseconds(), // TODO:这里暂时格式化15分钟数据需要进行调整
SingleMeasuring = new Tuple<string, T>(item.FiledName ?? string.Empty, item.DataValue ?? default) SingleMeasuring = new Tuple<string, T>(item.FiledName ?? string.Empty, item.DataValue)
}; };
_runtimeContext.UseTableSessionPool = true; // 使用表模型池 _runtimeContext.UseTableSessionPool = true; // 使用表模型池
var taskSendInfo = await _dbProvider.QueryAsync<MeterReadingTelemetryPacketInfo>(new IoTDBQueryOptions() { TableNameOrTreePath = DevicePathBuilder.GetTableName<MeterReadingTelemetryPacketInfo>(), Conditions = conditions, PageIndex = 0, PageSize = 1 }); var taskSendInfo = await _dbProvider.QueryAsync<MeterReadingTelemetryPacketInfo>(new IoTDBQueryOptions() { TableNameOrTreePath = DevicePathBuilder.GetTableName<MeterReadingTelemetryPacketInfo>(), Conditions = conditions, PageIndex = 0, PageSize = 1 });

View File

@ -4,6 +4,7 @@ using JiShe.CollectBus.Common.Helpers;
using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto;
using NUglify.JavaScript.Syntax; using NUglify.JavaScript.Syntax;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using YamlDotNet.Core.Tokens;
namespace JiShe.CollectBus.Protocol.T37612012 namespace JiShe.CollectBus.Protocol.T37612012
{ {
@ -239,15 +240,15 @@ namespace JiShe.CollectBus.Protocol.T37612012
/// </summary> /// </summary>
/// <param name="entity"></param> /// <param name="entity"></param>
/// <returns></returns> /// <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++) for (int i = index; i < data.Count; i++)
{ {
AnalysisBaseDto<decimal> meter = new AnalysisBaseDto<decimal>(); AnalysisBaseDto<decimal?> meter = new AnalysisBaseDto<decimal?>
meter.DeviceType= MeterTypeEnum.Ammeter; {
DeviceType = MeterTypeEnum.Ammeter
decimal value = 0; };
var errorCode = data[i].CheckErrorCode(); var errorCode = data[i].CheckErrorCode();
if (errorCode != null) if (errorCode != null)
{ {
@ -255,9 +256,13 @@ namespace JiShe.CollectBus.Protocol.T37612012
meter.ErrorCodeMsg = errorCode.Item2; meter.ErrorCodeMsg = errorCode.Item2;
} }
else else
decimal.TryParse(data[i], out value); {
meter.DataValue = value; if(decimal.TryParse(data[i], out decimal value))
meter.DataType = dataType.ToUpper(); {
meter.DataValue = value;
}
}
meter.DataType = dataType;
meter.FiledDesc = filedDesc; meter.FiledDesc = filedDesc;
meter.FiledName = meter.DataType.GetDataFieldByGatherDataType() ?? string.Empty; meter.FiledName = meter.DataType.GetDataFieldByGatherDataType() ?? string.Empty;
if (DateTime.TryParse(CalculateTimeSpan(i - 3, data[0], density), out DateTime readingDate)) if (DateTime.TryParse(CalculateTimeSpan(i - 3, data[0], density), out DateTime readingDate))
@ -276,14 +281,13 @@ namespace JiShe.CollectBus.Protocol.T37612012
/// <param name="timeSpan"></param> /// <param name="timeSpan"></param>
/// <param name="filedDesc"></param> /// <param name="filedDesc"></param>
/// <returns></returns> /// <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++) for (int i = index; i < data.Count; i++)
{ {
AnalysisBaseDto<decimal> meter = new AnalysisBaseDto<decimal>(); AnalysisBaseDto<decimal?> meter = new AnalysisBaseDto<decimal?>();
meter.DeviceType = MeterTypeEnum.Ammeter; meter.DeviceType = MeterTypeEnum.Ammeter;
decimal value = 0;
var errorCode = data[i].CheckErrorCode(); var errorCode = data[i].CheckErrorCode();
if (errorCode != null) if (errorCode != null)
{ {
@ -291,8 +295,12 @@ namespace JiShe.CollectBus.Protocol.T37612012
meter.ErrorCodeMsg = errorCode.Item2; meter.ErrorCodeMsg = errorCode.Item2;
} }
else 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)) if (DateTime.TryParse(timeSpan, out DateTime readingDate))
{ {
meter.TimeSpan = readingDate; meter.TimeSpan = readingDate;
@ -312,13 +320,13 @@ namespace JiShe.CollectBus.Protocol.T37612012
/// <param name="data"></param> /// <param name="data"></param>
/// <param name="remark"></param> /// <param name="remark"></param>
/// <returns></returns> /// <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; int typeIndex = 0;
for (int i = index; i < data.Count; i++) for (int i = index; i < data.Count; i++)
{ {
AnalysisBaseDto<decimal> meter = new AnalysisBaseDto<decimal> AnalysisBaseDto<decimal?> meter = new AnalysisBaseDto<decimal?>
{ {
DeviceType = MeterTypeEnum.Ammeter DeviceType = MeterTypeEnum.Ammeter
}; };
@ -330,8 +338,12 @@ namespace JiShe.CollectBus.Protocol.T37612012
meter.ErrorCodeMsg = errorCode.Item2; meter.ErrorCodeMsg = errorCode.Item2;
} }
else 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)) if (DateTime.TryParse(timeSpan, out DateTime readingDate))
{ {
meter.TimeSpan = readingDate; meter.TimeSpan = readingDate;
@ -364,29 +376,33 @@ namespace JiShe.CollectBus.Protocol.T37612012
/// <param name="meterDatas"></param> /// <param name="meterDatas"></param>
/// <param name="mark"></param> /// <param name="mark"></param>
/// <returns></returns> /// <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; bool isUpload = false;
var jfpgSum = 0M; var jfpgSum = 0M;
var totalItem = meterDatas.Find(f => f.DataType.Equals(mark[0]));//meterDatas.Find(f => f.DataType.Equals(mark[0])); foreach (var item in meterDatas)
for (int i = 1; i <= meterDatas.Count - 1; i++)
{ {
var value = meterDatas[i];//meterDatas.Find(f => f.DataType.Equals(mark[i])); if (item.ValidData && item.DataValue.HasValue)
if (value.ValidData) jfpgSum += item.DataValue.Value;
jfpgSum += value.DataValue; }
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) if (!isUpload)
{
meterDatas.ForEach(f => meterDatas.ForEach(f =>
{ {
f.ValidData = false; f.ValidData = false;
}); });
}
return meterDatas; return meterDatas;
} }
} }

View File

@ -71,10 +71,10 @@ namespace JiShe.CollectBus.Protocol.Contracts.Protocol.Dto
public class AnalysisBaseDto<T> : AnalysisBaseDto public class AnalysisBaseDto<T> : AnalysisBaseDto
{ {
/// <summary> /// <summary>
/// 抄读值 /// 抄读值
/// </summary> /// </summary>
public T? DataValue { get; set; } public T? DataValue { get; set; } = default;
} }
} }

View File

@ -1183,10 +1183,10 @@ namespace JiShe.CollectBus.Common.Extensions
/// </summary> /// </summary>
/// <param name="hexString"></param> /// <param name="hexString"></param>
/// <returns></returns> /// <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); var decimalString = Convert.ToString(hexString, 16);
return decimalString; return isUpper? decimalString.ToUpper(): decimalString;
} }
/// <summary> /// <summary>

View File

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