zoulei 1 ano atrás
pai
commit
71f149ceb2

+ 15 - 25
XdCxRhDW.App/Controllers/SvrReportController.cs

@@ -45,30 +45,20 @@ namespace XdCxRhDW.App.Controllers
         }
     }
 
-    public class ItemSvrEventArgs
-    {
-        /// <summary>
-        /// 错误码
-        /// </summary>
-        public int code { get; set; }
-        /// <summary>
-        /// 消息
-        /// </summary>
-        public string msg { get; set; }
-
-        /// <summary>
-        /// 服务
-        /// </summary>
-        public ModelSvrs modelSvrs { get; set; }
-    }
-    public static class TaskSvr
-    {
-        public static event Func<ItemSvrEventArgs> EventTaskSvr;
-
-        public static ItemSvrEventArgs GetTaskSvt()
-        {
-            return EventTaskSvr?.Invoke();
-        }
-    }
+    //public class ItemSvrEventArgs
+    //{
+    //    /// <summary>
+    //    /// 错误码
+    //    /// </summary>
+    //    public int code { get; set; }
+    //    /// <summary>
+    //    /// 消息
+    //    /// </summary>
+    //    public string msg { get; set; }
 
+    //    /// <summary>
+    //    /// 服务
+    //    /// </summary>
+    //    public ModelSvr modelSvrs { get; set; }
+    //}
 }

+ 2 - 1
XdCxRhDW.App/MainForm.cs

@@ -26,6 +26,7 @@ using XdCxRhDW.Api;
 using System.Net.Http;
 using XdCxRhDW.App.App.Properties;
 using System.Windows.Documents;
+using XdCxRhDW.App;
 
 namespace XdCxRhDW
 {
@@ -50,7 +51,7 @@ namespace XdCxRhDW
             ctrlTypes.Add("星历推算", typeof(XlCalculateForm));
             ctrlTypes.Add("服务状态", typeof(CtrlSvrs));
             btn_ItemClick(null, null);
-
+            ServerContext.Instance.Init();
         }
         private async void MainForm_Load(object sender, EventArgs e)
         {

+ 1 - 1
XdCxRhDW.App/Model/ModelSvrs.cs

@@ -12,7 +12,7 @@ namespace XdCxRhDW.App.Model
     /// <summary>
     /// 服务状态信息
     /// </summary>
-    public class ModelSvrs
+    public class ModelSvr
     {
         /// <summary>
         /// 服务类型

+ 128 - 0
XdCxRhDW.App/ServerContext.cs

@@ -0,0 +1,128 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Windows.Documents;
+using XdCxRhDW.App.Model;
+using XdCxRhDW.Dto;
+
+namespace XdCxRhDW.App
+{
+    class ServerContext
+    {
+        public static ServerContext Instance { get; private set; } = new ServerContext();
+
+        List<ModelSvr> list = new List<ModelSvr>();
+        public void Init()
+        {
+            Messenger.Defalut.Sub<SvrStateReportDto>("服务状态改变", dto =>
+            {
+                try
+                {
+                    lock (this)
+                    {
+                        if (dto.ReportType == 0)
+                        {
+
+                            var find = list.Find(p => p.BaseHttpAddr == dto.BaseHttpAddr);
+                            if (find == null)
+                            {
+                                list.Add(new ModelSvr()
+                                {
+                                    SvrType = dto.SvrType,
+                                    SvrID = dto.SvrID,
+                                    BaseHttpAddr = dto.BaseHttpAddr,
+                                    SwaggerAddr = dto.SwaggerAddr,
+                                    ReportTime = DateTime.Now,
+                                });
+                            }
+                            else
+                            {
+                                find.BaseHttpAddr = dto.BaseHttpAddr;
+                                find.SwaggerAddr = dto.SwaggerAddr;
+                                find.SvrType = dto.SvrType;
+                                find.SvrID = dto.SvrID;
+                                find.ReportTime = DateTime.Now;
+                            }
+                        }
+                        else
+                        {
+                            var find = list.Find(p => p.BaseHttpAddr == dto.BaseHttpAddr);
+                            if (find == null) return;
+                            list.Remove(find);
+                        }
+                    }
+                    Messenger.Defalut.Pub("服务集合改变", list);
+                }
+                catch (Exception ex)
+                {
+                    Serilog.Log.Error(ex, "处理服务状态上报异常");
+                }
+            });
+
+
+            CheckSvrState();
+        }
+
+        public List<ModelSvr> GetAll()
+        {
+            return list.Skip(0).ToList();
+        }
+        public List<ModelSvr> GetAll(EnumSvrType type)
+        {
+            lock (this)
+            {
+                return list.FindAll(p => p.SvrType == type);
+            }
+        }
+        public ModelSvr GetOne(EnumSvrType type,string svrID)
+        {
+            lock (this)
+            {
+                return list.FirstOrDefault(p => p.SvrType == type && p.SvrID == svrID);
+            }
+        }
+        public ModelSvr GetOne(EnumSvrType type)
+        {
+            lock (this)
+            {
+               return list.FirstOrDefault(p => p.SvrType == type);
+            }
+        }
+
+
+        private void CheckSvrState()
+        {
+            Task.Run(() =>
+            {
+                while (true)
+                {
+                    try
+                    {
+                        lock (this)
+                        {
+                            List<string> tmp = new List<string>();
+                            list.ForEach(t =>
+                            {
+                                if ((DateTime.Now - t.ReportTime).TotalSeconds > 20)
+                                {
+                                    tmp.Add(t.BaseHttpAddr);
+                                }
+                            });
+                            list.RemoveAll(p => tmp.Contains(p.BaseHttpAddr));
+                        }
+
+                    }
+                    catch (Exception ex)
+                    {
+                        Serilog.Log.Error(ex, "服务状态检测异常");
+                    }
+                    Thread.Sleep(10000);
+                }
+            });
+
+        }
+    }
+}

+ 8 - 8
XdCxRhDW.App/UserControl/CtrlHome.cs

@@ -141,7 +141,7 @@ namespace XdCxRhDW.App.UserControl
                 catch (Exception ex)
                 {
                     mapControl1.UseLocalDb();
-                    Serilog.Log.Error(ex,"MapControl使用WMS出现异常,强制使用本地地图");
+                    Serilog.Log.Error(ex, "MapControl使用WMS出现异常,强制使用本地地图");
                 }
             }
             gridView1.FocusedRowObjectChanged += GridView1_FocusedRowObjectChanged;
@@ -480,10 +480,10 @@ namespace XdCxRhDW.App.UserControl
                     if (tsk.TaskType == EnumTaskType.History)
                     {
                         //下发任务
-                        var svtItem = TaskSvr.GetTaskSvt();
-                        if (svtItem == null || svtItem.code <= 0)
+                        var svtItem =ServerContext.Instance.GetOne(EnumSvrType.X2D1HistoryTask);
+                        if (svtItem == null)
                         {
-                            DxHelper.MsgBoxHelper.ShowWarning($"请打开执行历史任务的服务");
+                            DxHelper.MsgBoxHelper.ShowWarning($"未找到注册的处理服务");
                             return;
                         }
                         TaskHistoryTimeEditor frm = new TaskHistoryTimeEditor();
@@ -503,7 +503,7 @@ namespace XdCxRhDW.App.UserControl
                         var strs = tsk.HistoryFrequpMHz.Split(',');
                         var freqs = strs.Select(f => ((long)(Convert.ToDouble(f) * 1e6)));
                         dto.FreqsHz = freqs.ToList();
-                        var res = await HttpHelper.PostRequestAsync<AjaxResult>(svtItem.modelSvrs.BaseHttpAddr + "/api/HistoryTaskProcessing/Run", dto);
+                        var res = await HttpHelper.PostRequestAsync<AjaxResult>(svtItem.BaseHttpAddr + "/api/HistoryTaskProcessing/Run", dto);
                         if (res.code != 200)
                         {
                             DxHelper.MsgBoxHelper.ShowWarning($"下发启动历史任务的服务失败{res.msg}");
@@ -538,15 +538,15 @@ namespace XdCxRhDW.App.UserControl
                     if (tsk.TaskType == EnumTaskType.History)
                     {
                         //下发任务
-                        var svtItem = TaskSvr.GetTaskSvt();
-                        if (svtItem == null || svtItem.code <= 0)
+                        var svtItem = ServerContext.Instance.GetOne(EnumSvrType.X2D1HistoryTask);
+                        if (svtItem == null)
                         {
                             DxHelper.MsgBoxHelper.ShowWarning($"请打开执行历史任务的服务");
                             return;
                         }
                         HistoryTaskStopDto dto = new HistoryTaskStopDto();
                         dto.ID = tsk.ID;
-                        var res = await HttpHelper.PostRequestAsync<AjaxResult>(svtItem.modelSvrs.BaseHttpAddr + "/api/HistoryTaskProcessing/Stop", dto);
+                        var res = await HttpHelper.PostRequestAsync<AjaxResult>(svtItem.BaseHttpAddr + "/api/HistoryTaskProcessing/Stop", dto);
                         if (res.code != 200)
                         {
                             DxHelper.MsgBoxHelper.ShowWarning($"停止历史任务的服务失败{res.msg}");

+ 1 - 1
XdCxRhDW.App/UserControl/CtrlSvrs.Designer.cs

@@ -57,7 +57,7 @@
             this.Controls.Add(this.gridSvrs);
             this.Name = "CtrlSvrs";
             this.Size = new System.Drawing.Size(647, 422);
-            this.Load += new System.EventHandler(this.CtrlSat_Load);
+            this.Load += new System.EventHandler(this.CtrlSvrs_Load);
             ((System.ComponentModel.ISupportInitialize)(this.gridSvrs)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.gridView1)).EndInit();
             this.ResumeLayout(false);

+ 27 - 64
XdCxRhDW.App/UserControl/CtrlSvrs.cs

@@ -21,7 +21,7 @@ namespace XdCxRhDW.App.UserControl
 {
     public partial class CtrlSvrs : DevExpress.XtraEditors.XtraUserControl
     {
-        List<ModelSvrs> list = new List<ModelSvrs>();
+        List<ModelSvr> list = new List<ModelSvr>();
         public CtrlSvrs()
         {
             InitializeComponent();
@@ -29,63 +29,51 @@ namespace XdCxRhDW.App.UserControl
             gridSvrs.UseEdit();
             var linkEdit = new DevExpress.XtraEditors.Repository.RepositoryItemHyperLinkEdit();
             this.gridSvrs.RepositoryItems.Add(linkEdit);
-            gridView1.Columns[nameof(ModelSvrs.SwaggerAddr)].ColumnEdit = linkEdit;
-            gridView1.Columns[nameof(ModelSvrs.SwaggerAddr)].OptionsColumn.AllowEdit = true;
-            TaskSvr.EventTaskSvr += TaskSvr_EventTaskSvr;
-        }
-
-        private ItemSvrEventArgs TaskSvr_EventTaskSvr()
-        {
-            ItemSvrEventArgs itemSvr = new ItemSvrEventArgs();
-            itemSvr.code = -1;
-            itemSvr.msg = "没有服务";
-            if (list.Count == 0)
-            {
-                return itemSvr;
-            }
-            itemSvr.code = 1;
-            itemSvr.msg = string.Empty;
-            itemSvr.modelSvrs = list.OrderByDescending(s => s.ReportTime).First();
-            return itemSvr;
+            gridView1.Columns[nameof(ModelSvr.SwaggerAddr)].ColumnEdit = linkEdit;
+            gridView1.Columns[nameof(ModelSvr.SwaggerAddr)].OptionsColumn.AllowEdit = true;
         }
 
 
-
-        private async void CtrlSat_Load(object sender, EventArgs e)
+        private void CtrlSvrs_Load(object sender, EventArgs e)
         {
-            Messenger.Defalut.Sub<SvrStateReportDto>("服务状态改变", dto =>
+            this.list.AddRange(ServerContext.Instance.GetAll());
+            gridView1.RefreshData();
+           Messenger.Defalut.Sub<List<ModelSvr>>("服务集合改变", items =>
             {
                 try
                 {
-                    if (dto.ReportType == 0)
+                    var listCopy = list.Skip(0).ToList();
+                    foreach (var item in listCopy)
                     {
-                        var find = list.Find(p => p.BaseHttpAddr == dto.BaseHttpAddr);
+                        var find = items.Find(p => p.BaseHttpAddr == item.BaseHttpAddr);
                         if (find == null)
                         {
-                            list.Add(new ModelSvrs()
+                            list.Remove(item);
+                        }
+                    }
+                    foreach (var item in items)
+                    {
+                        var find = list.Find(p => p.BaseHttpAddr == item.BaseHttpAddr);
+                        if (find == null)
+                        {
+                            list.Add(new ModelSvr()
                             {
-                                SvrType = dto.SvrType,
-                                SvrID = dto.SvrID,
-                                BaseHttpAddr = dto.BaseHttpAddr,
-                                SwaggerAddr = dto.SwaggerAddr,
+                                SvrType = item.SvrType,
+                                SvrID = item.SvrID,
+                                BaseHttpAddr = item.BaseHttpAddr,
+                                SwaggerAddr = item.SwaggerAddr,
                                 ReportTime = DateTime.Now,
                             });
                         }
                         else
                         {
-                            find.BaseHttpAddr = dto.BaseHttpAddr;
-                            find.SwaggerAddr = dto.SwaggerAddr;
-                            find.SvrType = dto.SvrType;
-                            find.SvrID = dto.SvrID;
+                            find.BaseHttpAddr = item.BaseHttpAddr;
+                            find.SwaggerAddr = item.SwaggerAddr;
+                            find.SvrType = item.SvrType;
+                            find.SvrID = item.SvrID;
                             find.ReportTime = DateTime.Now;
                         }
                     }
-                    else
-                    {
-                        var find = list.Find(p => p.BaseHttpAddr == dto.BaseHttpAddr);
-                        if (find == null) return;
-                        list.Remove(find);
-                    }
                     this.BeginInvoke(new Action(() =>
                     {
                         gridView1.RefreshData();
@@ -97,31 +85,6 @@ namespace XdCxRhDW.App.UserControl
                 }
             });
 
-            while (true)
-            {
-                try
-                {
-                    List<string> tmp = new List<string>();
-                    list.ForEach(t =>
-                    {
-                        if ((DateTime.Now - t.ReportTime).TotalSeconds > 20)
-                        {
-                            tmp.Add(t.BaseHttpAddr);
-                        }
-                    });
-                    var count = list.RemoveAll(p => tmp.Contains(p.BaseHttpAddr));
-                    if (count > 0)
-                    {
-                        gridView1.RefreshData();
-                    }
-                }
-                catch (Exception ex)
-                {
-                    Serilog.Log.Error(ex, "Error");
-                }
-                await Task.Delay(10000);
-            }
-
         }
     }
 }

+ 1 - 0
XdCxRhDW.App/XdCxRhDW.App.csproj

@@ -314,6 +314,7 @@
     </Compile>
     <Compile Include="Program.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="ServerContext.cs" />
     <Compile Include="UserControl\CtrlCgRes.cs">
       <SubType>UserControl</SubType>
     </Compile>

+ 1 - 0
XdCxRhDW.Framework/Messenger.cs

@@ -3,6 +3,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using System.Reflection;
 
 /// <summary>
 /// 消息发布订阅(非线程安全)

+ 5 - 5
XdCxRhDW.X2D1TaskServer/MainForm.cs

@@ -31,7 +31,7 @@ namespace XdCxRhDW.X2D1TaskServer
             var port = Convert.ToInt32(ConfigurationManager.AppSettings["LocalHttpPort"].Trim());
             var svrID = ConfigurationManager.AppSettings["SvrID"].Trim();
             var posPlatformAddr = ConfigurationManager.AppSettings["PosPlatformAddr"].Trim();
-            this.Text = EnumSvrType.HistoryTask.GetEnumDisplayName() + "-" + svrID;
+            this.Text = EnumSvrType.X2D1HistoryTask.GetEnumDisplayName() + "-" + svrID;
             var localIp = IpHelper.GetLocalIp();
             Startup.Start(port, "两星一地离线数据定位服务.Xml", "XdCxRhDW.Dto.xml");
             LogHelper.Info($"服务启动成功.接口地址http://{localIp}:{port}/swagger");
@@ -48,7 +48,7 @@ namespace XdCxRhDW.X2D1TaskServer
                 {
                     var res = await HttpHelper.PostRequestAsync<object>(url, new SvrStateReportDto()
                     {
-                        SvrType = EnumSvrType.HistoryTask,
+                        SvrType = EnumSvrType.X2D1HistoryTask,
                         SvrID = svrID,
                         ReportType = 0,
                         BaseHttpAddr = $"http://{localIp}:{port}",
@@ -62,13 +62,13 @@ namespace XdCxRhDW.X2D1TaskServer
                     else
                     {
                         if (!preSucceed)
-                            LogHelper.Info("状态上报成功![url={url}]");
+                            LogHelper.Info($"状态上报成功![url={url}]");
                         preSucceed = true;
                     }
                 }
                 catch (Exception ex)
                 {
-                    LogHelper.Error("状态上报异常[url={url}]", ex);
+                    LogHelper.Error($"状态上报异常[url={url}]", ex);
                     preSucceed = false;
                 }
                 await System.Threading.Tasks.Task.Delay(10000);
@@ -93,7 +93,7 @@ namespace XdCxRhDW.X2D1TaskServer
                 _ = HttpHelper.PostRequestAsync<object>(url, new SvrStateReportDto()
                 {
                     SvrID = svrID,
-                    SvrType = EnumSvrType.HistoryTask,
+                    SvrType = EnumSvrType.X2D1HistoryTask,
                     ReportType = 1,
                     BaseHttpAddr = $"http://{localIp}:{port}",
                 });

+ 1 - 1
XdCxRhDW.X2D1TaskServer/Service/HistoryTaskService.cs

@@ -3,7 +3,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
-using XdCxRhDW.X2D1TaskServer.Task;
+using XdCxRhDW.X2D1TaskServer.Tasks;
 
 namespace XdCxRhDW.X2D1TaskServer.Service
 {

+ 1 - 1
XdCxRhDW.X2D1TaskServer/Task/ExtractRes.cs → XdCxRhDW.X2D1TaskServer/Tasks/ExtractRes.cs

@@ -5,7 +5,7 @@ using System.Text;
 using System.Threading.Tasks;
 using XdCxRhDW.Dto;
 
-namespace XdCxRhDW.X2D1TaskServer.Task
+namespace XdCxRhDW.X2D1TaskServer.Tasks
 {
     public class ExtractRes
     {

+ 1 - 1
XdCxRhDW.X2D1TaskServer/Task/HistoryFile.cs → XdCxRhDW.X2D1TaskServer/Tasks/HistoryFile.cs

@@ -4,7 +4,7 @@ using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 
-namespace XdCxRhDW.X2D1TaskServer.Task
+namespace XdCxRhDW.X2D1TaskServer.Tasks
 {
     public class HistoryFile
     {

+ 1 - 1
XdCxRhDW.X2D1TaskServer/Task/HistoryTaskI.cs → XdCxRhDW.X2D1TaskServer/Tasks/HistoryTaskI.cs

@@ -8,7 +8,7 @@ using System.Threading.Tasks;
 using XdCxRhDW;
 using XdCxRhDW.Dto;
 
-namespace XdCxRhDW.X2D1TaskServer.Task
+namespace XdCxRhDW.X2D1TaskServer.Tasks
 {
     public class HistoryTaskI
     {

+ 1 - 1
XdCxRhDW.X2D1TaskServer/Task/TxInfo.cs → XdCxRhDW.X2D1TaskServer/Tasks/TxInfo.cs

@@ -5,7 +5,7 @@ using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 
-namespace XdCxRhDW.X2D1TaskServer.Task
+namespace XdCxRhDW.X2D1TaskServer.Tasks
 {
     public class TxInfo 
     {

+ 1 - 1
XdCxRhDW.X2D1TaskServer/Task/X1D1CXTask.cs → XdCxRhDW.X2D1TaskServer/Tasks/X1D1CXTask.cs

@@ -2,7 +2,7 @@
 using System.IO;
 using XdCxRhDW.Dto;
 
-namespace XdCxRhDW.X2D1TaskServer.Task
+namespace XdCxRhDW.X2D1TaskServer.Tasks
 {
     public class X1D1CXTask
     {

+ 86 - 81
XdCxRhDW.X2D1TaskServer/Task/X2D1Task.cs → XdCxRhDW.X2D1TaskServer/Tasks/X2D1Task.cs

@@ -1,4 +1,5 @@
-using System;
+using MySqlX.XDevAPI.Common;
+using System;
 using System.Collections.Generic;
 using System.Globalization;
 using System.IO;
@@ -7,7 +8,7 @@ using System.Threading;
 using System.Threading.Tasks;
 using XdCxRhDW.Dto;
 
-namespace XdCxRhDW.X2D1TaskServer.Task
+namespace XdCxRhDW.X2D1TaskServer.Tasks
 {
     public class X2D1Task : HistoryTaskI
     {
@@ -26,15 +27,29 @@ namespace XdCxRhDW.X2D1TaskServer.Task
                     IEnumerable<string> files;
                     try
                     {
+                        if (!Directory.Exists(capfile))
+                        {
+                            LogHelper.Error($"【任务{dto.ID}】执行异常,路径[{capfile}]不存在!");
+                            await Task.Delay(5000);
+                            continue;
+                        }
                         files = Directory.EnumerateFiles(capfile, "*.dat");
                     }
                     catch (Exception ex)
                     {
-                        LogHelper.Info($"查询历史任务:{dto.ID}采集数据异常:{ex.Message}");
-                        Thread.Sleep(1000);
+                        LogHelper.Error($"【任务{dto.ID}】执行异常.{ex.Message}", ex);
+                        await Task.Delay(5000);
                         continue;
                     }
-                    var groups = files.Select(f => FileToHistoryFile(f)).GroupBy(m => m.CapTime).OrderBy(m => m.Key);
+                    IOrderedEnumerable<IGrouping<DateTime, HistoryFile>> groups = null;
+                    try
+                    {
+                        groups = files.Select(f => FileToHistoryFile(f)).GroupBy(m => m.CapTime).OrderBy(m => m.Key);
+                    }
+                    catch (Exception ex)
+                    {
+                        LogHelper.Error($"【任务{dto.ID}】执行异常", ex);
+                    }
                     foreach (var item in groups)
                     {
                         if (!IsRuning)
@@ -44,40 +59,39 @@ namespace XdCxRhDW.X2D1TaskServer.Task
                         var finfos = item.ToList();
                         if (finfos.Count < 3)
                         {
-                            LogHelper.Info($"历史任务:{dto.ID}采集时刻:{finfos.First().CapTime:yyyy-MM-dd HH:mm:ss}文件数量只有{finfos.Count}个,不满足");
+                            LogHelper.Warning($"【任务{dto.ID}】{finfos.First().CapTime:yyyyMMddHHmmss}时刻文件数量只有{finfos.Count}个,跳过此组数据");
                             continue;
                         }
                         //超短波信号
                         var dinfo = finfos.FirstOrDefault(m => m.Ch == 1);
                         if (dinfo == null)
                         {
-                            LogHelper.Info($"历史任务:{dto.ID}采集时刻:{finfos.First().CapTime:yyyy-MM-dd HH:mm:ss}未找到超短波信号ch1文件,不满足");
+                            LogHelper.Warning($"【任务{dto.ID}】{finfos.First().CapTime:yyyyMMddHHmmss}时刻未找到超短波信号ch1文件,跳过此组数据");
                             continue;
                         }
                         //主星
                         var minfo = finfos.FirstOrDefault(m => m.Ch == 2);
                         if (minfo == null)
                         {
-                            LogHelper.Info($"历史任务:{dto.ID}采集时刻:{finfos.First().CapTime:yyyy-MM-dd HH:mm:ss}未找到主星信号ch2文件,不满足");
+                            LogHelper.Warning($"【任务{dto.ID}】{finfos.First().CapTime:yyyyMMddHHmmss}时刻未找到主星信号ch2文件,跳过此组数据");
                             continue;
                         }
                         //邻1
                         var ninfo = finfos.FirstOrDefault(m => m.Ch == 3);
                         if (ninfo == null)
                         {
-                            LogHelper.Info($"历史任务:{dto.ID}采集时刻:{finfos.First().CapTime:yyyy-MM-dd HH:mm:ss}未找到邻星信号ch3文件,不满足");
+                            LogHelper.Info($"【任务{dto.ID}】{finfos.First().CapTime:yyyyMMddHHmmss}时刻未找到邻星信号ch3文件,跳过此组数据");
                             continue;
                         }
                         try
                         {
-                            var txInfos = await GetTxInfoAsync();
+                            var txInfos = await GetTxInfoAsync(dto);
                             var satTx = txInfos.First(t => t.TxType == EnumTxType.Rec);
                             var cdbTx = txInfos.First(t => t.TxType == EnumTxType.Cdb);
                             var refTx = txInfos.First(t => t.TxType == EnumTxType.Ref);
                             //根据信号类型执行检测或参数估计 
                             if (dto.SigType == EnumSigTypeDto.Normal)
                             {
-
                                 var xd = await GPUCalcAsync(minfo.FilePath, dinfo.FilePath, minfo.FsHz, 260000, 40000);
                                 var sx = await GPUCalcAsync(minfo.FilePath, ninfo.FilePath, minfo.FsHz, 0, 40000);
                                 X2D1NoXlPosDto x2D1 = new X2D1NoXlPosDto()
@@ -111,7 +125,7 @@ namespace XdCxRhDW.X2D1TaskServer.Task
 
                                 if (mDetect.Count() <= 0)
                                 {
-                                    LogHelper.Info($"历史任务:{dto.ID}文件{minfo.FilePath}未检测出结果");
+                                    LogHelper.Warning($"【任务{dto.ID}】文件[{minfo.FilePath}]无检测结果");
                                     continue;
                                 }
                                 //主星文件
@@ -121,17 +135,6 @@ namespace XdCxRhDW.X2D1TaskServer.Task
                                 var smps = mDetect.Select(m => new SmpPosition() { smpStart = m.Start, smpCount = m.Length }).ToList();
 
                                 int dtRange = 40000;
-
-                                //提取时隙有效数据
-                                //var mdfile = await ExtractMergeAsync(mfile, nfile.OutFsHz, smps, 0, dtRange, minfo.Ch);
-                                //var ddfile = await ExtractMergeAsync(dfile.File, nfile.OutFsHz, smps, -260000, dtRange, dinfo.Ch);
-                                //var ndfile = await ExtractMergeAsync(nfile.File, nfile.OutFsHz, smps, 0, dtRange, ninfo.Ch);
-
-                                //var xds = await CPUCalcAsync(mdfile.file, ddfile.file, dfile.OutFsHz, ddfile.positions, -260000, dtRange);
-                                //var sxs = await CPUCalcAsync(mdfile.file, ndfile.file, nfile.OutFsHz, ndfile.positions, 0, dtRange);
-
-
-
                                 var xds = await CPUCalcAsync(mfile, dfile.File, dfile.OutFsHz, smps, -260000, dtRange);
                                 var sxs = await CPUCalcAsync(mfile, nfile.File, nfile.OutFsHz, smps, 0, dtRange);
 
@@ -143,53 +146,46 @@ namespace XdCxRhDW.X2D1TaskServer.Task
                                     {
                                         break;
                                     }
-                                    try
+
+                                    X2D1NoXlPosDto x2D1 = new X2D1NoXlPosDto()
                                     {
-                                        X2D1NoXlPosDto x2D1 = new X2D1NoXlPosDto()
+                                        TaskID = dto.ID,
+                                        SigTime = minfo.CapTime.AddSeconds(sxitem.Smpstart / nfile.OutFsHz),
+                                        MainCode = minfo.SatId,
+                                        AdjaCode = ninfo.SatId,
+                                        SxDto = sxitem.Dt,
+                                        XdDto = xd == null ? 0 : xd.Dt,
+                                        SatTxLon = satTx.Lon,
+                                        SatTxLat = satTx.Lat,
+                                        CdbTxLon = cdbTx.Lon,
+                                        CdbTxLat = cdbTx.Lat,
+                                        RefLon = refTx.Lon,
+                                        RefLat = refTx.Lat,
+                                        FreqDown = minfo.FreqHz * 1e-6,
+                                        FreqUp = dinfo.FreqHz * 1e-6,
+                                        XdDfo = xd == null ? 0 : xd.Df,
+                                        XdSnr = xd == null ? 0 : xd.Snr,
+                                        SxDfo = sxitem.Df,
+                                        SxSnr = sxitem.Snr,
+                                        CheckRes = new CheckResDto()
                                         {
-                                            TaskID = dto.ID,
-                                            SigTime = minfo.CapTime.AddSeconds(sxitem.Smpstart / nfile.OutFsHz),
-                                            MainCode = minfo.SatId,
-                                            AdjaCode = ninfo.SatId,
-                                            SxDto = sxitem.Dt,
-                                            XdDto = xd == null ? 0 : xd.Dt,
-                                            SatTxLon = satTx.Lon,
-                                            SatTxLat = satTx.Lat,
-                                            CdbTxLon = cdbTx.Lon,
-                                            CdbTxLat = cdbTx.Lat,
-                                            RefLon = refTx.Lon,
-                                            RefLat = refTx.Lat,
-                                            FreqDown = minfo.FreqHz * 1e-6,
-                                            FreqUp = dinfo.FreqHz * 1e-6,
-                                            XdDfo = xd == null ? 0 : xd.Df,
-                                            XdSnr = xd == null ? 0 : xd.Snr,
-                                            SxDfo = sxitem.Df,
-                                            SxSnr = sxitem.Snr,
-                                            CheckRes = new CheckResDto()
-                                            {
-                                                FileName = deitem.File1,
-                                                ModRate = deitem.ModRate,
-                                                ModType = deitem.ModType,
-                                                SmpCount = deitem.Length,
-                                                SmpStart = deitem.Start,
-                                                UserName = deitem.UserName,
-                                                PosCheckType = deitem.DmcType.GetEnumByDisplayName<EnumPosCheckTypeDto>(),
-                                            }
-                                        };
-                                        await X2D1NoXlAsync(x2D1);
-                                    }
-                                    catch (Exception ex)
-                                    {
-                                        LogHelper.Info($"历史任务:{dto.ID}异常:{ex.Message}");
-                                        continue;
-                                    }
+                                            FileName = deitem.File1,
+                                            ModRate = deitem.ModRate,
+                                            ModType = deitem.ModType,
+                                            SmpCount = deitem.Length,
+                                            SmpStart = deitem.Start,
+                                            UserName = deitem.UserName,
+                                            PosCheckType = deitem.DmcType.GetEnumByDisplayName<EnumPosCheckTypeDto>(),
+                                        }
+                                    };
+                                    await X2D1NoXlAsync(x2D1);
                                 }
 
                             }
                         }
                         catch (Exception ex)
                         {
-                            LogHelper.Info($"执行历史任务:{dto.ID}异常:{ex.Message}");
+                            LogHelper.Info($"【任务{dto.ID}】执行异常:{ex.Message}");
                             continue;
                         }
 
@@ -201,35 +197,44 @@ namespace XdCxRhDW.X2D1TaskServer.Task
         }
 
 
-        private async Task<bool> X2D1NoXlAsync(X2D1NoXlPosDto x2D1)
+        private async Task X2D1NoXlAsync(X2D1NoXlPosDto x2D1)
         {
-            var result = await HttpHelper.PostRequestAsync<PosResDto>(baseUrl + "Pos/PosX2D1NoXlAsync", x2D1);
-            if (result.code != 200)
+            try
+            {
+                var result = await HttpHelper.PostRequestAsync<PosResDto>(baseUrl + "Pos/PosX2D1NoXlAsync", x2D1);
+                if (result.code != 200)
+                {
+                    LogHelper.Error($"【任务{x2D1.TaskID}】定位异常.{result.msg}");
+                }
+            }
+            catch (Exception ex)
             {
-                LogHelper.Error($"推送历史任务定位结果:{x2D1.TaskID}异常:{result.msg}");
-                return false;
+                LogHelper.Error($"【任务{x2D1.TaskID}】定位异常.", ex);
             }
-            return true;
         }
 
-        private async Task<List<TxInfo>> GetTxInfoAsync()
+        private async Task<List<TxInfo>> GetTxInfoAsync(HistoryTaskProcessingDto dto)
         {
             List<TxInfo> infos = new List<TxInfo>();
-            var result = await HttpHelper.GetRequestAsync<(TxInfo recTx, TxInfo cdbTx, TxInfo cxTx, TxInfo refLoc)>(baseUrl + "Tx/GetTxInfoAsync");
-            if (result.code != 200)
+            try
+            {
+                var result = await HttpHelper.GetRequestAsync<(TxInfo recTx, TxInfo cdbTx, TxInfo cxTx, TxInfo refLoc)>(baseUrl + "Tx/GetTxInfoAsync");
+                if (result.code != 200)
+                {
+                    LogHelper.Error($"【任务{dto.ID}】获取天线信息异常.{result.msg}");
+                    return infos;
+                }
+                infos.Add(result.data.recTx == null ? new TxInfo() { TxType = EnumTxType.Rec } : result.data.recTx);
+                infos.Add(result.data.cdbTx == null ? new TxInfo() { TxType = EnumTxType.Cdb } : result.data.cdbTx);
+                infos.Add(result.data.cxTx == null ? new TxInfo() { TxType = EnumTxType.Cx } : result.data.cxTx);
+                infos.Add(result.data.refLoc == null ? new TxInfo() { TxType = EnumTxType.Ref } : result.data.refLoc);
+                return infos;
+            }
+            catch (Exception ex)
             {
-                infos.Add(new TxInfo() { TxType = EnumTxType.Rec });
-                infos.Add(new TxInfo() { TxType = EnumTxType.Cdb });
-                infos.Add(new TxInfo() { TxType = EnumTxType.Cx });
-                infos.Add(new TxInfo() { TxType = EnumTxType.Ref });
-                LogHelper.Error($"历史任务获取天线信息失败");
+                LogHelper.Error($"【任务{dto.ID}】获取天线信息异常.", ex);
                 return infos;
             }
-            infos.Add(result.data.recTx == null ? new TxInfo() { TxType = EnumTxType.Rec } : result.data.recTx);
-            infos.Add(result.data.cdbTx == null ? new TxInfo() { TxType = EnumTxType.Cdb } : result.data.cdbTx);
-            infos.Add(result.data.cxTx == null ? new TxInfo() { TxType = EnumTxType.Cx } : result.data.cxTx);
-            infos.Add(result.data.refLoc == null ? new TxInfo() { TxType = EnumTxType.Ref } : result.data.refLoc);
-            return infos;
         }
 
         /// <summary>

+ 1 - 1
XdCxRhDW.X2D1TaskServer/Task/X2DfoTask.cs → XdCxRhDW.X2D1TaskServer/Tasks/X2DfoTask.cs

@@ -4,7 +4,7 @@ using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 
-namespace XdCxRhDW.X2D1TaskServer.Task
+namespace XdCxRhDW.X2D1TaskServer.Tasks
 {
     public class X2DfoTask
     {

+ 1 - 1
XdCxRhDW.X2D1TaskServer/Task/X3TwoDfoTask.cs → XdCxRhDW.X2D1TaskServer/Tasks/X3TwoDfoTask.cs

@@ -4,7 +4,7 @@ using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 
-namespace XdCxRhDW.X2D1TaskServer.Task
+namespace XdCxRhDW.X2D1TaskServer.Tasks
 {
     public class X3TwoDfoTask
     {

+ 1 - 1
XdCxRhDW.X2D1TaskServer/Task/X3TwoDtoTask.cs → XdCxRhDW.X2D1TaskServer/Tasks/X3TwoDtoTask.cs

@@ -4,7 +4,7 @@ using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 
-namespace XdCxRhDW.X2D1TaskServer.Task
+namespace XdCxRhDW.X2D1TaskServer.Tasks
 {
     public class X3TwoDtoTask
     {

+ 9 - 9
XdCxRhDW.X2D1TaskServer/XdCxRhDW.X2D1TaskServer.csproj

@@ -162,15 +162,15 @@
       <DependentUpon>MainForm.cs</DependentUpon>
     </Compile>
     <Compile Include="Service\HistoryTaskService.cs" />
-    <Compile Include="Task\ExtractRes.cs" />
-    <Compile Include="Task\HistoryFile.cs" />
-    <Compile Include="Task\HistoryTaskI.cs" />
-    <Compile Include="Task\TxInfo.cs" />
-    <Compile Include="Task\X1D1CXTask.cs" />
-    <Compile Include="Task\X2D1Task.cs" />
-    <Compile Include="Task\X2DfoTask.cs" />
-    <Compile Include="Task\X3TwoDfoTask.cs" />
-    <Compile Include="Task\X3TwoDtoTask.cs" />
+    <Compile Include="Tasks\ExtractRes.cs" />
+    <Compile Include="Tasks\HistoryFile.cs" />
+    <Compile Include="Tasks\HistoryTaskI.cs" />
+    <Compile Include="Tasks\TxInfo.cs" />
+    <Compile Include="Tasks\X1D1CXTask.cs" />
+    <Compile Include="Tasks\X2D1Task.cs" />
+    <Compile Include="Tasks\X2DfoTask.cs" />
+    <Compile Include="Tasks\X3TwoDfoTask.cs" />
+    <Compile Include="Tasks\X3TwoDtoTask.cs" />
     <None Include="packages.config" />
     <None Include="Properties\licenses.licx" />
     <EmbeddedResource Include="Properties\Resources.resx">

+ 1 - 1
XdCxRhDW.X2D1TaskServer54/Controllers/HistoryTaskProcessingController.cs

@@ -38,7 +38,7 @@ namespace XdCxRhDW.X2D1TaskServer54.Controllers
             try
             {
                 LogHelper.Info($"接收到历史任务编号:{dto.ID}");
-                _service.StartAsync();
+                _service.StartAsync(dto);
                 return Success();
             }
             catch (Exception ex)

+ 5 - 5
XdCxRhDW.X2D1TaskServer54/MainForm.cs

@@ -30,7 +30,7 @@ namespace XdCxRhDW.X2D1TaskServer54
             var port = Convert.ToInt32(ConfigurationManager.AppSettings["LocalHttpPort"].Trim());
             var svrID = ConfigurationManager.AppSettings["SvrID"].Trim();
             var posPlatformAddr = ConfigurationManager.AppSettings["PosPlatformAddr"].Trim();
-            this.Text = EnumSvrType.HistoryTask.GetEnumDisplayName() + "-" + svrID;
+            this.Text = EnumSvrType.X2D1HistoryTask.GetEnumDisplayName() + "-" + svrID;
             var localIp = IpHelper.GetLocalIp();
             Startup.Start(port, "两星一地离线数据定位服务.Xml", "XdCxRhDW.Dto.xml");
             LogHelper.Info($"服务启动成功.接口地址http://{localIp}:{port}/swagger");
@@ -47,7 +47,7 @@ namespace XdCxRhDW.X2D1TaskServer54
                 {
                     var res = await HttpHelper.PostRequestAsync<object>(url, new SvrStateReportDto()
                     {
-                        SvrType = EnumSvrType.HistoryTask,
+                        SvrType = EnumSvrType.X2D1HistoryTask,
                         SvrID = svrID,
                         ReportType = 0,
                         BaseHttpAddr = $"http://{localIp}:{port}",
@@ -61,13 +61,13 @@ namespace XdCxRhDW.X2D1TaskServer54
                     else
                     {
                         if (!preSucceed)
-                            LogHelper.Info("状态上报成功![url={url}]");
+                            LogHelper.Info($"状态上报成功![url={url}]");
                         preSucceed = true;
                     }
                 }
                 catch (Exception ex)
                 {
-                    LogHelper.Error("状态上报异常[url={url}]", ex);
+                    LogHelper.Error($"状态上报异常[url={url}]", ex);
                     preSucceed = false;
                 }
                 await System.Threading.Tasks.Task.Delay(10000);
@@ -92,7 +92,7 @@ namespace XdCxRhDW.X2D1TaskServer54
                 _ = HttpHelper.PostRequestAsync<object>(url, new SvrStateReportDto()
                 {
                     SvrID = svrID,
-                    SvrType = EnumSvrType.HistoryTask,
+                    SvrType = EnumSvrType.X2D1HistoryTask,
                     ReportType = 1,
                     BaseHttpAddr = $"http://{localIp}:{port}",
                 });

+ 9 - 3
XdCxRhDw.Dto/SvrStateDto.cs

@@ -45,9 +45,15 @@ namespace XdCxRhDW.Dto
     public enum EnumSvrType
     {
         /// <summary>
-        /// 离线数据处理服务
+        /// 两星一地离线数据处理服务
         /// </summary>
-        [Display(Name ="离线数据处理服务")]
-        HistoryTask
+        [Display(Name ="两星一地离线数据处理服务")]
+        X2D1HistoryTask,
+
+        /// <summary>
+        /// 三星离线数据处理服务
+        /// </summary>
+        [Display(Name = "三星离线数据处理服务")]
+        X3HistoryTask,
     }
 }