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/monitor_record/mobile/MonitorRecord_MobileController.cs |   98 ++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 81 insertions(+), 17 deletions(-)

diff --git a/Application/IStation.Application.Run/monitor_record/mobile/MonitorRecord_MobileController.cs b/Application/IStation.Application.Run/monitor_record/mobile/MonitorRecord_MobileController.cs
index 1dfd5ce..d26e8f4 100644
--- a/Application/IStation.Application.Run/monitor_record/mobile/MonitorRecord_MobileController.cs
+++ b/Application/IStation.Application.Run/monitor_record/mobile/MonitorRecord_MobileController.cs
@@ -34,7 +34,8 @@
             if (list == null || list.Count < 1)
                 return default;
             var monitor = new Service.MonitorPoint().GetExSignalWithSignalTypeByID(corpId, monitorPointId);
-            var vm_list = list.Select(x => {
+            var vm_list = list.Select(x =>
+            {
                 var signal = monitor.SignalList.Find(t => t.ID == x.SignalID);
                 var vm = new MonitorBasicRecordSignalContentMobileDto(x, signal);
                 return vm;
@@ -71,12 +72,14 @@
                     var formulaModel = Model.Monitor.ConstCalculationFormulaParas.ToModel(analyModel.FormulaParas);
                     if (formulaModel == null)
                         continue;
+                    var signal = monitor.SignalList.First();
                     var record = new Model.MonitorBasicRecord();
-                    record.CorpID = monitor.CorpID;
+                    record.MonitorPointID = monitor.ID;
+                    record.SignalID = signal.ID;
+                    record.CorpID = input.CorpID;
                     record.DataTime = DateTime.Now;
                     record.DataValue = formulaModel.Value;
                     record.DataStatus = new List<string>();
-                    var signal = monitor.SignalList.First();
                     var vm = new MonitorBasicRecordMobileDto(record, signal);
                     list.Add(vm);
                 }
@@ -84,16 +87,16 @@
 
             var lastRecords = new Service.MonitorRecord().GetLastRecord(corpId, monitorPointIds);
             if (lastRecords == null || lastRecords.Count < 1)
-                return list; 
+                return list;
             var vm_list = lastRecords.Select(x =>
             {
                 var monitor = monitorList.Find(t => t.ID == x.MonitorPointID);
                 var signal = monitor.SignalList.Find(t => t.ID == x.SignalID);
                 var vm = new MonitorBasicRecordMobileDto(x, signal);
                 return vm;
-            }).ToList(); 
+            }).ToList();
 
-            list.AddRange(vm_list);  
+            list.AddRange(vm_list);
 
             return list;
         }
@@ -110,18 +113,48 @@
             var monitorList = new Service.MonitorPoint().GetExSignalWithSignalTypeByBelongTypeAndBelongID(corpId, ObjectType.Station, stationId);
             if (monitorList == null || monitorList.Count < 1)
                 return default;
+            var list = new List<MonitorBasicRecordMobileDto>();
+
+            var virtualMonitorPoints = monitorList.Where(x => x.SourceType == Model.Monitor.eSourceType.Virtual);
+            if (virtualMonitorPoints != null && virtualMonitorPoints.Count() > 0)
+            {
+                foreach (var monitor in virtualMonitorPoints)
+                {
+                    if (string.IsNullOrEmpty(monitor.SourceParas))
+                        continue;
+                    var analyModel = Model.Monitor.AnalyseParameters.ToModel(monitor.SourceParas);
+                    if (analyModel.FormulaType != Model.Monitor.FormulaType.Calculation_Const)
+                        continue;
+                    var formulaModel = Model.Monitor.ConstCalculationFormulaParas.ToModel(analyModel.FormulaParas);
+                    if (formulaModel == null)
+                        continue;
+                    var signal = monitor.SignalList.First();
+                    var record = new Model.MonitorBasicRecord();
+                    record.MonitorPointID = monitor.ID;
+                    record.SignalID = signal.ID;
+                    record.CorpID = input.CorpID;
+                    record.DataTime = DateTime.Now;
+                    record.DataValue = formulaModel.Value;
+                    record.DataStatus = new List<string>();
+                    var vm = new MonitorBasicRecordMobileDto(record, signal);
+                    list.Add(vm);
+                }
+            }
+
             var monitorPointIds = monitorList.Select(x => x.ID).Distinct().ToList();
-            var list = new Service.MonitorRecord().GetLastRecord(corpId, monitorPointIds);
-            if (list == null || list.Count < 1)
-                return default;
-            var vm_list = list.Select(x => {
+            var lastRecords = new Service.MonitorRecord().GetLastRecord(corpId, monitorPointIds);
+            if (lastRecords == null || lastRecords.Count < 1)
+                return list;
+            var vm_list = lastRecords.Select(x =>
+            {
                 var monitor = monitorList.Find(t => t.ID == x.MonitorPointID);
                 var signal = monitor.SignalList.Find(t => t.ID == x.SignalID);
                 var vm = new MonitorBasicRecordMobileDto(x, signal);
                 return vm;
             }).ToList();
 
-            return vm_list;
+            list.AddRange(vm_list);
+            return list;
         }
 
         /// <summary>
@@ -133,21 +166,52 @@
         {
             var corpId = input.CorpID;
             var stationId = input.StationID;
-            var monitorList = new Service.MonitorPoint().GetExSignalWithSignalTypeByBelongTypeAndBelongID(corpId, ObjectType.Station, stationId,eMonitorType.General);
+            var monitorList = new Service.MonitorPoint().GetExSignalWithSignalTypeByBelongTypeAndBelongID(corpId, ObjectType.Station, stationId, eMonitorType.General);
             if (monitorList == null || monitorList.Count < 1)
                 return default;
+            var list = new List<MonitorBasicRecordMobileDto>();
+
+            var virtualMonitorPoints = monitorList.Where(x => x.SourceType == Model.Monitor.eSourceType.Virtual);
+            if (virtualMonitorPoints != null && virtualMonitorPoints.Count() > 0)
+            {
+                foreach (var monitor in virtualMonitorPoints)
+                {
+                    if (string.IsNullOrEmpty(monitor.SourceParas))
+                        continue;
+                    var analyModel = Model.Monitor.AnalyseParameters.ToModel(monitor.SourceParas);
+                    if (analyModel.FormulaType != Model.Monitor.FormulaType.Calculation_Const)
+                        continue;
+                    var formulaModel = Model.Monitor.ConstCalculationFormulaParas.ToModel(analyModel.FormulaParas);
+                    if (formulaModel == null)
+                        continue;
+                    var signal = monitor.SignalList.First();
+                    var record = new Model.MonitorBasicRecord();
+                    record.MonitorPointID = monitor.ID;
+                    record.SignalID = signal.ID;
+                    record.CorpID = input.CorpID;
+                    record.DataTime = DateTime.Now;
+                    record.DataValue = formulaModel.Value;
+                    record.DataStatus = new List<string>();
+                    var vm = new MonitorBasicRecordMobileDto(record, signal);
+                    list.Add(vm);
+                }
+            }
+
             var monitorPointIds = monitorList.Select(x => x.ID).Distinct().ToList();
-            var list = new Service.MonitorRecord().GetLastRecord(corpId, monitorPointIds);
-            if (list == null || list.Count < 1)
-                return default;
-            var vm_list = list.Select(x => {
+            var lastRecords = new Service.MonitorRecord().GetLastRecord(corpId, monitorPointIds);
+            if (lastRecords == null || lastRecords.Count < 1)
+                return list;
+
+            var vm_list = lastRecords.Select(x =>
+            {
                 var monitor = monitorList.Find(t => t.ID == x.MonitorPointID);
                 var signal = monitor.SignalList.Find(t => t.ID == x.SignalID);
                 var vm = new MonitorBasicRecordMobileDto(x, signal);
                 return vm;
             }).ToList();
 
-            return vm_list;
+            list.AddRange(vm_list);
+            return list;
         }
 
     }

--
Gitblit v1.9.3