zoulei 1 gadu atpakaļ
vecāks
revīzija
54a266cb94

+ 3 - 3
Service/X2D1NoRefTaskServer/MainForm.cs

@@ -34,7 +34,7 @@ namespace X2D1NoRefTaskServer
             var port = Convert.ToInt32(ConfigurationManager.AppSettings["LocalHttpPort"].Trim());
             var svrID = ConfigurationManager.AppSettings["SvrID"].Trim();
             var posPlatformAddr = ConfigurationManager.AppSettings["PosPlatformAddr"].Trim();
-            this.Text = EnumSvrType.X2D1NoRefHistoryTask.GetEnumDisplayName() + "-" + svrID;
+            this.Text = EnumSvrType.X2D1NoRefTask.GetEnumDisplayName() + "-" + svrID;
             var localIp = IpHelper.GetLocalIp();
 
             Startup.Start(port, $"{System.Reflection.Assembly.GetExecutingAssembly().GetName().Name}.xml", "XdCxRhDW.Dto.xml");
@@ -52,7 +52,7 @@ namespace X2D1NoRefTaskServer
                 {
                     var res = await HttpHelper.PostRequestAsync<object>(url, new SvrStateReportDto()
                     {
-                        SvrType = EnumSvrType.X2D1NoRefHistoryTask,
+                        SvrType = EnumSvrType.X2D1NoRefTask,
                         SvrID = svrID,
                         ReportType = 0,
                         BaseHttpAddr = $"http://{localIp}:{port}",
@@ -97,7 +97,7 @@ namespace X2D1NoRefTaskServer
                 _ = HttpHelper.PostRequestAsync<object>(url, new SvrStateReportDto()
                 {
                     SvrID = svrID,
-                    SvrType = EnumSvrType.X2D1NoRefHistoryTask,
+                    SvrType = EnumSvrType.X2D1NoRefTask,
                     ReportType = 1,
                     BaseHttpAddr = $"http://{localIp}:{port}",
                 });

+ 42 - 33
Service/X2D1NoRefTaskServer/Service/TaskService.cs

@@ -32,25 +32,28 @@ namespace X2D1NoRefTaskServer.Service
         public void StartHistoryAsync(X2D1NoRefTaskHandleDto dto)
         {
             var cts = new CancellationTokenSource();
-            dicCts.Add(dto.ID, cts);
-            if (!Directory.Exists(dto.CapDir))
-            {
-                StopTask(dto.ID, EnumTaskStopType.Error, $"文件路径[{dto.CapDir}]不存在,任务结束");
-                return;
-            }
-            if (dto.DateDirFormat.Contains("\\"))
-            {
-                StopTask(dto.ID, EnumTaskStopType.Error, $"子目录日期格式不能包含多级目录格式");
-                return;
-            }
-
-            LogHelper.Info($"【任务{dto.ID}】开始执行...");
-            int.TryParse(ConfigurationManager.AppSettings["PosDtoFactor"], out int posDtoFactor);
-            if (posDtoFactor == 0) posDtoFactor = 1;//定位时时差系数
-            LogHelper.Info($"【任务{dto.ID}】定位时差系数={posDtoFactor}");
+            if (dicCts.ContainsKey(dto.ID))
+                dicCts[dto.ID] = cts;
+            else
+                dicCts.Add(dto.ID, cts);
 
             Task.Run(async () =>
             {
+                if (!Directory.Exists(dto.CapDir))
+                {
+                    StopTask(dto.ID, EnumTaskStopType.Error, $"文件路径[{dto.CapDir}]不存在,任务结束");
+                    return;
+                }
+                if (dto.DateDirFormat.Contains("\\"))
+                {
+                    StopTask(dto.ID, EnumTaskStopType.Error, $"子目录日期格式不能包含多级目录格式");
+                    return;
+                }
+
+                LogHelper.Info($"【任务{dto.ID}】开始执行...");
+                int.TryParse(ConfigurationManager.AppSettings["PosDtoFactor"], out int posDtoFactor);
+                if (posDtoFactor == 0) posDtoFactor = 1;//定位时时差系数
+                LogHelper.Info($"【任务{dto.ID}】定位时差系数={posDtoFactor}");
                 bool canConnected = CanGetSatIdFromMySql();
                 DateTime preTime = dto.StartTime;
                 int formatFlag;
@@ -162,6 +165,7 @@ namespace X2D1NoRefTaskServer.Service
                                         file1 = cdbFile,//11局使用上行泄露信号进行检测
                                         dmcType = taskSig.SigType,//上行信号检测目前的算法只能使用基于能量的KY或IBS检测
                                         fsHz = minfo.FsHz,
+                                        mergeRes = true,
                                     };
                                     detectDto.dmcType = detectDto.dmcType & ~EnumSigCheckTypeDto.DAMA;//DAMA不支持上行信号检测,在这里移除掉
                                     if (detectDto.dmcType == EnumSigCheckTypeDto.DAMA)
@@ -300,25 +304,29 @@ namespace X2D1NoRefTaskServer.Service
         public void StarRealAsync(X2D1NoRefTaskHandleDto dto)
         {
             var cts = new CancellationTokenSource();
-            dicCts.Add(dto.ID, cts);
-            if (!Directory.Exists(dto.CapDir))
-            {
-                StopTask(dto.ID, EnumTaskStopType.Error, $"文件路径[{dto.CapDir}]不存在,任务结束");
-                return;
-            }
-            if (dto.DateDirFormat.Contains("\\"))
-            {
-                StopTask(dto.ID, EnumTaskStopType.Error, $"子目录日期格式不能包含多级目录格式");
-                return;
-            }
-
-            LogHelper.Info($"【任务{dto.ID}】开始执行...");
-            int.TryParse(ConfigurationManager.AppSettings["PosDtoFactor"], out int posDtoFactor);
-            if (posDtoFactor == 0) posDtoFactor = 1;//定位时时差系数
-            LogHelper.Info($"【任务{dto.ID}】定位时差系数={posDtoFactor}");
+            if (dicCts.ContainsKey(dto.ID))
+                dicCts[dto.ID] = cts;
+            else
+                dicCts.Add(dto.ID, cts);
 
             Task.Run(async () =>
             {
+                if (!Directory.Exists(dto.CapDir))
+                {
+                    StopTask(dto.ID, EnumTaskStopType.Error, $"文件路径[{dto.CapDir}]不存在,任务结束");
+                    return;
+                }
+                if (dto.DateDirFormat.Contains("\\"))
+                {
+                    StopTask(dto.ID, EnumTaskStopType.Error, $"子目录日期格式不能包含多级目录格式");
+                    return;
+                }
+
+                LogHelper.Info($"【任务{dto.ID}】开始执行...");
+                int.TryParse(ConfigurationManager.AppSettings["PosDtoFactor"], out int posDtoFactor);
+                if (posDtoFactor == 0) posDtoFactor = 1;//定位时时差系数
+                LogHelper.Info($"【任务{dto.ID}】定位时差系数={posDtoFactor}");
+
                 bool canConnected = CanGetSatIdFromMySql();
                 DateTime preTime = DateTime.Now;
                 int formatFlag;
@@ -376,6 +384,7 @@ namespace X2D1NoRefTaskServer.Service
                         {
                             LogHelper.Info($"【任务{dto.ID}】目录[{filesDir}]中没有文件,跳过此目录");
                             ResetTime(formatFlag, ref preTime);
+                            await Task.Delay(1000);
                             continue;
                         }
 
@@ -696,6 +705,7 @@ namespace X2D1NoRefTaskServer.Service
         }
         private void StopTask(int taskID, EnumTaskStopType type, string stopReason)
         {
+            Thread.Sleep(2000);
             if (type == EnumTaskStopType.Properly)
             {
                 LogHelper.Info($"【任务{taskID}】{stopReason}");
@@ -709,7 +719,6 @@ namespace X2D1NoRefTaskServer.Service
             if (stopResp.code != 200)
             {
                 LogHelper.Error($"【任务{taskID}】停止异常.{stopResp.msg}");
-                return;
             }
             if (dicCts.ContainsKey(taskID))
                 dicCts.Remove(taskID);

+ 3 - 0
XdCxRhDW.App/Controllers/TaskController.cs

@@ -14,6 +14,7 @@ using XdCxRhDW.Api;
 using XdCxRhDW.Entity;
 using XdCxRhDW.Repostory;
 using XdCxRhDW.WebApi;
+using System.Threading;
 
 namespace XdCxRhDW.App.Controllers
 {
@@ -39,6 +40,8 @@ namespace XdCxRhDW.App.Controllers
                     {
                         return Error($"任务停止失败,找不到ID={dto.ID}的任务");
                     }
+                    if (item.TaskState == EnumTaskState.Stopped)
+                        Thread.Sleep(2000);
                     item.TaskState = EnumTaskState.Stopped;
                     await db.SaveChangesAsync();
                 }

+ 19 - 11
XdCxRhDW.App/UserControl/CtrlHome.cs

@@ -61,13 +61,18 @@ namespace XdCxRhDW.App.UserControl
                     if (item == null) return;
                     find.TaskState = item.TaskState;
                 }
-                this.gridView1.RefreshData();
+                this.Invoke(new Action(() =>
+                {
+                    var idx = gridView1.FindRow(find);
+                    this.gridView1.RefreshRow(idx);
+                }));
                 if (tsk.ID != id) return;
-                var btnEdit = (layoutControlGroup1.CustomHeaderButtons[1] as GroupBoxButton);
-                var btnDel = (layoutControlGroup1.CustomHeaderButtons[2] as GroupBoxButton);
                 this.Invoke(new Action(() =>
                 {
+                    var btnEdit = (layoutControlGroup1.CustomHeaderButtons[1] as GroupBoxButton);
+                    var btnDel = (layoutControlGroup1.CustomHeaderButtons[2] as GroupBoxButton);
                     btnDel.Enabled = btnEdit.Enabled = tsk.TaskState != EnumTaskState.Running;
+
                 }));
             });
             gridHomeTask.UseDefault(list, showScrollH: true).UseEmptyText("点击+创建任务");
@@ -507,24 +512,18 @@ namespace XdCxRhDW.App.UserControl
                         if (tsk.PosType == EnumPosType.X2D1)
                         {
                             //下发任务
-                            var svtItem = ServerContext.Instance.GetRandomOne(EnumSvrType.X2D1NoRefHistoryTask);
+                            var svtItem = ServerContext.Instance.GetRandomOne(EnumSvrType.X2D1NoRefTask);
                             if (svtItem == null)
                             {
                                 DxHelper.MsgBoxHelper.ShowWarning($"未找到注册的处理服务");
                                 return;
                             }
-                            TaskHistoryTimeEditor frm = new TaskHistoryTimeEditor(tsk);
-                            if (frm.ShowDialog() != DialogResult.OK) return;
-                            var startTime = frm.start;
-                            var endTime = frm.end;
                             X2D1NoRefTaskHandleDto dto = new X2D1NoRefTaskHandleDto()
                             {
                                 MainSatCode = tsk.MainSat,
                                 TaskType = (EnumTaskTypeDto)((int)tsk.TaskType),
                                 AdjaSatCode = tsk.Adja1Sat.Value,
                                 ID = tsk.ID,
-                                StartTime = startTime,
-                                EndTime = endTime,
                                 TaskName = tsk.TaskName,
                                 CapDir = tsk.CapDir,
                                 CapLon = tx.Lon,
@@ -532,6 +531,15 @@ namespace XdCxRhDW.App.UserControl
                                 DateDirFormat = tsk.CapDirFormat,
                                 Sigs = tskSigsDto,
                             };
+                            if (tsk.TaskType == EnumTaskType.History)
+                            {
+                                TaskHistoryTimeEditor frm = new TaskHistoryTimeEditor(tsk);
+                                if (frm.ShowDialog() != DialogResult.OK) return;
+                                var startTime = frm.start;
+                                var endTime = frm.end;
+                                dto.StartTime = startTime;
+                                dto.EndTime = endTime;
+                            }
                             var res = await HttpHelper.PostRequestAsync<AjaxResult>(svtItem.BaseHttpAddr + "/api/X2D1NoRefTaskProcessing/Run", dto);
                             if (res.code != 200)
                             {
@@ -604,7 +612,7 @@ namespace XdCxRhDW.App.UserControl
                     {
                         ModelSvr svtItem = null;
                         if (tsk.PosType == EnumPosType.X2D1)
-                            svtItem = ServerContext.Instance.GetRandomOne(EnumSvrType.X2D1NoRefHistoryTask);
+                            svtItem = ServerContext.Instance.GetRandomOne(EnumSvrType.X2D1NoRefTask);
                         else if (tsk.PosType == EnumPosType.X3TwoDto)
                             svtItem = ServerContext.Instance.GetRandomOne(EnumSvrType.X3NoRefHistoryTask);
                         if (svtItem == null)

+ 3 - 3
XdCxRhDw.Dto/SvrStateDto.cs

@@ -69,10 +69,10 @@ namespace XdCxRhDW.Dto
 
 
         /// <summary>
-        /// 两星一地无参离线数据处理服务
+        /// 两星一地无参数据处理服务
         /// </summary>
-        [Display(Name = "两星一地无参离线数据处理服务")]
-        X2D1NoRefHistoryTask,
+        [Display(Name = "两星一地无参数据处理服务")]
+        X2D1NoRefTask,
 
         /// <summary>
         /// 三星无参离线数据处理服务