Ver código fonte

配置取参考时间

wyq 10 meses atrás
pai
commit
b7884f0d3e

+ 3 - 0
XdCxRhDW.App/App.config

@@ -26,6 +26,9 @@
 		<!--GDOP使用最新的版本  1:使用-->
 		<add key="UseNewGDOP" value="1" />
 
+		<!--取参考时间 单位:分钟-->
+		<add key="TakeRefTime" value="10" />
+
 	</appSettings>
 	<startup>
 		<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />

+ 7 - 6
XdCxRhDW.App/X2D1PosRef/X2D1PosHandle.cs

@@ -21,13 +21,14 @@ namespace XdCxRhDW.App
     {
 
         public int TaskId;
-        //十分钟时间内的数据
-        private int TimeSeconds = 30 * 60;//十分钟
+        //多少分钟时间内的参考信号数据
+        private double takeRefTimeSeconds;
         private bool isRuning = true;
 
         BlockingCollection<X2D1NoXlNoParlPosDto> posItems = new BlockingCollection<X2D1NoXlNoParlPosDto>();
-        public X2D1PosHandle(int taskId)
+        public X2D1PosHandle(int taskId,double takeRefTime)
         {
+            takeRefTimeSeconds = takeRefTime * 60;//秒
             TaskId = taskId;
             StartMonitor();
         }
@@ -55,15 +56,15 @@ namespace XdCxRhDW.App
                         }
                         using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime, true))
                         {
-                            DateTime min = dto.SigTime.AddSeconds(-TimeSeconds);
-                            DateTime max = dto.SigTime.AddSeconds(TimeSeconds);
+                            DateTime min = dto.SigTime.AddSeconds(-takeRefTimeSeconds);
+                            DateTime max = dto.SigTime.AddSeconds(takeRefTimeSeconds);
                             //获取设定分钟之内的固定站数据
                             var cgResRefs = await db.CgRes.Where(m => m.TaskID == dto.TaskID && m.FixedStationID == dto.FixedStationId && m.SigTime >= min && m.SigTime <= max).OrderBy(d => d.SigTime).ToListAsync();
 
                             List<CgRes> matchCgList = new List<CgRes>();
                             cgResRefs.ForEach(c =>
                             {
-                                if ((dto.SigTime - c.SigTime).TotalSeconds <= TimeSeconds)
+                                if ((dto.SigTime - c.SigTime).TotalSeconds <= takeRefTimeSeconds)
                                 {
                                     matchCgList.Add(c);
                                 }

+ 9 - 1
XdCxRhDW.App/X2D1PosRef/X2D1PosRefService.cs

@@ -1,6 +1,7 @@
 using System;
 using System.Collections.Concurrent;
 using System.Collections.Generic;
+using System.Configuration;
 using System.Data.Entity;
 using System.Linq;
 using System.Threading;
@@ -19,8 +20,15 @@ namespace XdCxRhDW.App
 
         readonly List<X2D1PosHandle> handles = new List<X2D1PosHandle>();
 
+        public double TakeRefTime;
+
         public X2D1PosRefService()
         {
+            double.TryParse(ConfigurationManager.AppSettings["TakeRefTime"], out TakeRefTime);
+            if (TakeRefTime < 0)
+            {
+                TakeRefTime = 30;
+            }
             StartMonitor();
         }
         public void StartMonitor()
@@ -75,7 +83,7 @@ namespace XdCxRhDW.App
                     var firstDto = handles.FirstOrDefault(m => m.TaskId == dto.TaskID);
                     if (firstDto == null)
                     {
-                        firstDto = new X2D1PosHandle(dto.TaskID.Value);
+                        firstDto = new X2D1PosHandle(dto.TaskID.Value,TakeRefTime);
                         handles.Add(firstDto);
                     }
                     firstDto.Append(dto);