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