From f00f5455999503a97b981d161a7564da23b6793f Mon Sep 17 00:00:00 2001 From: tangxu <76880903@qq.com> Date: 星期二, 21 三月 2023 13:30:03 +0800 Subject: [PATCH] 成行 增加 速度修正,昨天遗忘了 --- Application/IStation.Application.Run/data_docking/DataDocking_StandardController.cs | 143 +++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 119 insertions(+), 24 deletions(-) diff --git a/Application/IStation.Application.Run/data_docking/DataDocking_StandardController.cs b/Application/IStation.Application.Run/data_docking/DataDocking_StandardController.cs index 1c0f469..e9a0a7c 100644 --- a/Application/IStation.Application.Run/data_docking/DataDocking_StandardController.cs +++ b/Application/IStation.Application.Run/data_docking/DataDocking_StandardController.cs @@ -13,6 +13,7 @@ using Furion.DataEncryption; using AutoMapper; using System.Text; +using IStation.Calculation; namespace IStation.Application { @@ -24,23 +25,26 @@ [ApiDescriptionSettings("Run", Name = "鏍囧噯鏁版嵁瀵规帴", Order = 1100)] public class DataDocking_StandardController : IDynamicApiController { + //閰嶇疆鍒楄〃 + private static List<Model.DataDockingConfigureExStandard> _standardConfigureList = null; + /// <summary> /// 鎻掑叆 /// </summary> [Route("Insert@V1.0")] [HttpPost] - public bool Insert([Required] DataDockingStandardCorpRecordInput input) + public bool Insert([Required] DataDockingStandardInput input) { - LogHelper.Info($"瀹㈡埛:{input.CorpId},娉ㄥ唽鐮�:{input.RegisterCode},鎻掑叆鏁版嵁璁板綍:{input.Records.Count}."); - var corpration = new Service.Corpration().GetByTerminalId(input.CorpId); - if (corpration == null) + LogHelper.Info($"鏁版嵁鏍囧噯瀵规帴鎺ュ彛涓紝娉ㄥ唽鐮�:{input.RegisterCode},鎻掑叆鏁版嵁璁板綍鏁伴噺:{input.Records.Count}."); + + var corpIds = DataDockingCorpHelper.GetCorpIds(); + if (corpIds == null || corpIds.Count < 1) { - throw new Exception("鏈绱㈠埌瀹㈡埛淇℃伅锛�"); + throw new Exception("鏈绱㈠埌瀹㈡埛鏍囪瘑閰嶇疆淇℃伅锛�"); } - var standardConfigureList = DataDockingStandardCacheHelper.GetCache(corpration.ID); - if (standardConfigureList == null||standardConfigureList.Count<1) + if (_standardConfigureList == null) { - var configureList = new Service.DataDockingConfigure().GetByCorpID(corpration.ID); + var configureList = new Service.DataDockingConfigure().GetByCorpIds(corpIds); if (configureList == null || configureList.Count < 1) { throw new Exception("鏈绱㈠埌鏁版嵁瀵规帴閰嶇疆淇℃伅锛�"); @@ -50,11 +54,9 @@ { throw new Exception("鏈绱㈠埌鏁版嵁瀵规帴鏍囧噯閰嶇疆淇℃伅锛�"); } - standardConfigureList = configureList.Select(x => new Model.DataDockingConfigureExStandard(x)).ToList(); - DataDockingStandardCacheHelper.SetCache(corpration.ID, standardConfigureList); + _standardConfigureList = configureList.Select(x => new Model.DataDockingConfigureExStandard(x)).ToList(); } - - var standardConfigure = standardConfigureList.Find(x => x.ConfigureParas != null && x.ConfigureParas.RegisterCode == input.RegisterCode); + var standardConfigure = _standardConfigureList.Find(x => x.ConfigureParas != null && x.ConfigureParas.RegisterCode == input.RegisterCode); if (standardConfigure == null) { throw new Exception("鏈绱㈠埌鏁版嵁瀵规帴鏍囧噯閰嶇疆淇℃伅锛�"); @@ -62,20 +64,23 @@ if (standardConfigure.Mappers == null || standardConfigure.Mappers.Count < 1) { throw new Exception("鏁版嵁瀵规帴鏍囧噯閰嶇疆淇℃伅涓紝鏈厤缃湁鏁堟槧灏勫叧绯伙紒"); - } + } var records = new List<Model.MonitorDataDockingReceiveRecord>(); + var inputRecords = input.Records.OrderByDescending(x=>x.RecordTime).ToList(); foreach (var mapper in standardConfigure.Mappers) { - var inputRecord = input.Records.Find(x=>x.RecordId==mapper.SignId); + var inputRecord = inputRecords.Find(x => x.RecordId == mapper.SignId); if (inputRecord != null) { - var record = new Model.MonitorDataDockingReceiveRecord(); - record.SysId = mapper.SysId; - record.RecordType = inputRecord.RecordType; - record.SrcTime = inputRecord.RecordTime; - record.SrcValue = inputRecord.RecordValue; - record.DataStatus = new List<string>(); + var record = new Model.MonitorDataDockingReceiveRecord + { + SysId = mapper.SysId, + RecordType = inputRecord.RecordType, + SrcTime = inputRecord.RecordTime, + SrcValue = inputRecord.RecordValue, + DataStatus = new List<string>() + }; records.Add(record); } } @@ -86,25 +91,115 @@ } var queueHelper = new RabbitMqQueueHelper(); - var bol = queueHelper.Push(ConfigHelper.DataDockingQueueName, new Model.MonitorDataDockingCorpRecord() + var bol = queueHelper.Push(Settings.Queue.DataDockingQueueName, new Model.MonitorDataDockingCorpRecord() { - CorpID = corpration.ID, + CorpID = standardConfigure.CorpID, ConfigureID = standardConfigure.ID, Records = records }); if (bol) { - LogHelper.Info($"瀹㈡埛:{corpration.ID},鏍囧噯鏁版嵁瀵规帴閰嶇疆:{standardConfigure.ID},鎺ㄥ叆閫氶亾璁板綍鏁伴噺:{records.Count}."); + LogHelper.Info($"鏁版嵁鏍囧噯瀵规帴鎺ュ彛涓紝瀹㈡埛:{standardConfigure.CorpID},鏍囧噯鏁版嵁瀵规帴閰嶇疆:{standardConfigure.ID},鎺ㄥ叆閫氶亾璁板綍鏁伴噺:{records.Count}."); return true; } return false; } + /// <summary> + /// 琛ュ綍 + /// </summary> + [Route("Supplement@V1.0")] + [HttpPost] + public bool Supplement([Required] DataDockingStandardInput input) + { + LogHelper.Info($"鏁版嵁鏍囧噯瀵规帴鎺ュ彛涓紝娉ㄥ唽鐮�:{input.RegisterCode},琛ュ綍鏁版嵁璁板綍鏁伴噺:{input.Records.Count}."); + + var corpIds = DataDockingCorpHelper.GetCorpIds(); + if (corpIds == null || corpIds.Count < 1) + { + throw new Exception("鏈绱㈠埌瀹㈡埛鏍囪瘑閰嶇疆淇℃伅锛�"); + } + if (_standardConfigureList == null) + { + var configureList = new Service.DataDockingConfigure().GetByCorpIds(corpIds); + if (configureList == null || configureList.Count < 1) + { + throw new Exception("鏈绱㈠埌鏁版嵁瀵规帴閰嶇疆淇℃伅锛�"); + } + configureList = configureList.Where(x => x.DockingMode == Model.DataDockingConfigure.eDockingMode.Standard).ToList(); + if (configureList == null || configureList.Count < 1) + { + throw new Exception("鏈绱㈠埌鏁版嵁瀵规帴鏍囧噯閰嶇疆淇℃伅锛�"); + } + _standardConfigureList = configureList.Select(x => new Model.DataDockingConfigureExStandard(x)).ToList(); + } + var standardConfigure = _standardConfigureList.Find(x => x.ConfigureParas != null && x.ConfigureParas.RegisterCode == input.RegisterCode); + if (standardConfigure == null) + { + throw new Exception("鏈绱㈠埌鏁版嵁瀵规帴鏍囧噯閰嶇疆淇℃伅锛�"); + } + if (standardConfigure.Mappers == null || standardConfigure.Mappers.Count < 1) + { + throw new Exception("鏁版嵁瀵规帴鏍囧噯閰嶇疆淇℃伅涓紝鏈厤缃湁鏁堟槧灏勫叧绯伙紒"); + } + + //鐢熸垚璁板綍 + var recordList = new List<Model.MonitorBasicRecord>(); + foreach (var mapper in standardConfigure.Mappers) + { + var inputRecordList = input.Records.Where(t => t.RecordId == mapper.SignId).ToList(); + if (inputRecordList != null && inputRecordList.Count > 0) + { + var inputGroupList = inputRecordList.GroupBy(x => new { x.RecordId, x.RecordTime }).ToList(); + foreach (var inputGroup in inputGroupList) + { + var inputFirstRecord = inputGroup.First(); + var monitor = new Service.MonitorPoint().GetExSignalWithSignalTypeByID(standardConfigure.CorpID, mapper.SysId); + if (monitor == null) + { + continue; + } + switch (inputFirstRecord.RecordType) + { + case Model.eMonitorType.General: + { + var receiveRecord = new Model.MonitorDataDockingReceiveRecord(); + receiveRecord.SysId = mapper.SysId; + receiveRecord.RecordType = inputFirstRecord.RecordType; + receiveRecord.SrcTime = inputFirstRecord.RecordTime; + receiveRecord.SrcValue = inputFirstRecord.RecordValue; + var record = MonitorHandleHelper.HandleHistory(monitor, monitor.SignalList.First(),receiveRecord,inputFirstRecord.RecordTime); + if (record != null) + { + recordList.Add(record); + } + } + break; + case Model.eMonitorType.Vibration: + { + + } + break; + default: break; + } + } + } + } + + if (recordList.Count < 1) + { + return false; + } + + //涓存椂 + var bol = new Service.MonitorRealRecord().InsertsSupplement(recordList.Select(x=>x as Model.MonitorRealRecordPure).ToList()); + return bol; + + } - -- Gitblit v1.9.3