From c6c912c9a0b1235805dea4fbb471e26a7f13a47d Mon Sep 17 00:00:00 2001 From: lixiaojun <1287241240@qq.com> Date: 星期二, 21 三月 2023 14:14:10 +0800 Subject: [PATCH] 解决众毅连续两次调用计算保持方案接口问题 --- Calculation/IStation.Calculation.Handle/MonitorHandleHelper.cs | 183 +++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 180 insertions(+), 3 deletions(-) diff --git a/Calculation/IStation.Calculation.Handle/MonitorHandleHelper.cs b/Calculation/IStation.Calculation.Handle/MonitorHandleHelper.cs index 52f4222..c9b80ba 100644 --- a/Calculation/IStation.Calculation.Handle/MonitorHandleHelper.cs +++ b/Calculation/IStation.Calculation.Handle/MonitorHandleHelper.cs @@ -36,7 +36,7 @@ dataStatus = new List<string>(); var dataValue = receiveRecord.SrcValue;//鏁版嵁鍊� - #region 瀹炴椂璁板綍 鍜屾渶鍚庝竴娆¤褰曞姣旓紝鍒ゆ柇鏄惁瀹屽叏涓�鏍凤紝骞舵牴鎹潯浠跺垽鏂槸鍚﹂渶瑕佽ˉ鍏呯偣 + #region 瀹炴椂璁板綍 鍜� 鏈�鍚庝竴娆¤褰曞姣旓紝鍒ゆ柇鏄惁瀹屽叏涓�鏍凤紝骞舵牴鎹潯浠跺垽鏂槸鍚﹂渶瑕佽ˉ鍏呯偣 if (monitor.CronType == Model.Monitor.eCronType.Real) { @@ -366,6 +366,183 @@ break; default: break; } + + #endregion + + return record; + + } + + /// <summary> + /// 澶勭悊鍘嗗彶鏁版嵁 + /// </summary> + /// <param name="monitor">娴嬬偣</param> + /// <param name="signal">淇″彿</param> + /// <param name="receiveRecord">鎺ユ敹璁板綍</param> + /// <param name="dataTime">鏁版嵁鏃堕棿</param> + /// <returns>涓簄ull鍒欎笉闇�瑕佸悗缁鐞�</returns> + public static Model.MonitorBasicRecord HandleHistory + ( + Model.MonitorPoint monitor, + Model.Signal_SignalType signal, + Model.MonitorDataDockingReceiveRecord receiveRecord, + DateTime dataTime + ) + { + Model.MonitorBasicRecord record = null;//鐩戞祴璁板綍 + var dataStatus = receiveRecord.DataStatus;//鏁版嵁鐘舵�� + if (dataStatus == null) + dataStatus = new List<string>(); + var dataValue = receiveRecord.SrcValue;//鏁版嵁鍊� + + + #region 閫氳繃淇″彿绫诲瀷鐨勫�肩被鍨嬪拰淇″彿鐨勬暟鎹被鍨嬭繘琛岀浉鍏崇殑鎹㈢畻 + + switch (signal.SignalType.ValueType) + { + case Model.Monitor.eValueType.Numeric: + { + //鏁板�奸獙璇� + if (!double.TryParse(dataValue, out double dataValueNumeric)) + { + dataStatus.Add(MonitorRecord.Status_DataFormatError); + break; + } + + //鏁版嵁杞崲 + if (signal.ConvertParas != null) + { + dataValueNumeric = signal.ConvertParas.Convert(dataValueNumeric, out bool succed); + if (!succed) + { + dataStatus.Add(MonitorRecord.Status_ConvertFailed); + } + } + + //鏁版嵁淇 + if (signal.CorrectParas != null) + { + dataValueNumeric = signal.CorrectParas.Correct(dataValueNumeric); + } + + + //鏁版嵁杩囨护 + if (signal.FilterParas != null) + { + if (!signal.FilterParas.Filter(dataValueNumeric, null)) + { + dataStatus.Add(MonitorRecord.Status_FilterFailed); + } + } + + //淇濈暀灏忔暟浣嶆暟 + if (signal.SignalType.DecimalPlaces != null) + { + dataValueNumeric = Math.Round(dataValueNumeric, signal.SignalType.DecimalPlaces.Value); + } + + dataValue = dataValueNumeric.ToString(); + } + break; + case Model.Monitor.eValueType.Enum: + { + //鏁板�艰浆鎹� + if (!double.TryParse(dataValue, out double dataValueEnum)) + { + dataStatus.Add(MonitorRecord.Status_DataFormatError); + break; + } + + //鏁版嵁杞崲 + if (signal.ConvertParas != null) + { + dataValueEnum = signal.ConvertParas.Convert(dataValueEnum, out bool succed); + if (!succed) + { + dataStatus.Add(MonitorRecord.Status_ConvertFailed); + } + } + + //鏁版嵁淇 + if (signal.CorrectParas != null) + { + dataValueEnum = signal.CorrectParas.Correct(dataValueEnum); + } + + //鏁版嵁杩囨护 + if (signal.FilterParas != null) + { + if (!signal.FilterParas.Filter(dataValueEnum, null)) + { + dataStatus.Add(MonitorRecord.Status_FilterFailed); + } + } + + //淇濈暀灏忔暟浣嶆暟 + if (signal.SignalType.DecimalPlaces != null) + { + dataValueEnum = Math.Round(dataValueEnum, signal.SignalType.DecimalPlaces.Value); + } + + dataValue = dataValueEnum.ToString(); + } + break; + case Model.Monitor.eValueType.Array: + { + //鏁版嵁鏍煎紡楠岃瘉 + var dataValueArray = DoubleListHelper.ToList(dataValue); + if (dataValueArray == null || dataValueArray.Count < 1) + { + dataStatus.Add(MonitorRecord.Status_DataFormatError); + break; + } + + //鏁版嵁杞崲銆佷慨姝c�佷繚鐣欏皬鏁颁綅鏁� + var dataValueArrayNew = new List<double>(); + foreach (var dataValueNumeric in dataValueArray) + { + var dataValueNumericNew = dataValueNumeric; + + //鏁版嵁杞崲 + if (signal.ConvertParas != null) + { + dataValueNumericNew = signal.ConvertParas.Convert(dataValueNumericNew, out bool succed); + if (!succed) + { + dataStatus.Add(MonitorRecord.Status_ConvertFailed); + } + } + + //鏁板�间慨姝� + if (signal.CorrectParas != null) + { + dataValueNumericNew = signal.CorrectParas.Correct(dataValueNumericNew); + } + + //淇濈暀灏忔暟浣嶆暟 + if (signal.SignalType.DecimalPlaces != null) + { + dataValueNumericNew = Math.Round(dataValueNumericNew, signal.SignalType.DecimalPlaces.Value); + } + + dataValueArrayNew.Add(dataValueNumericNew); + } + dataValue = DoubleListHelper.ToString(dataValueArrayNew); + } + break; + case Model.Monitor.eValueType.Integration: + { + + } + break; + default: break; + } + + #endregion + + #region 鐩戞祴璁板綍鐢熸垚 + + record = BuildMonitorRecord(monitor,signal,receiveRecord.SrcTime,receiveRecord.SrcValue,dataTime,dataValue,dataStatus); #endregion @@ -1052,10 +1229,10 @@ } /// <summary> - /// 鐢熸垚鏈�杩戜竴鏉¤褰� + /// 鐢熸垚鐩戞祴璁板綍 /// </summary> /// <returns></returns> - public static Model.MonitorBasicRecord BuildLastRecord + public static Model.MonitorBasicRecord BuildMonitorRecord ( Model.MonitorPoint monitor, Model.Signal_SignalType signal, -- Gitblit v1.9.3