Browse Source

添加历史任务

wyq 1 năm trước cách đây
mục cha
commit
169c6e8e45

+ 29 - 0
XdCxRhDW.App/Controllers/SvrReportController.cs

@@ -9,7 +9,9 @@ using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using System.Web.Http;
+using DevExpress.XtraBars;
 using Serilog;
+using XdCxRhDW.App.Model;
 using XdCxRhDW.Dto;
 using XdCxRhDW.WebApi;
 
@@ -42,4 +44,31 @@ 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();
+        }
+    }
+
 }

+ 30 - 5
XdCxRhDW.App/UserControl/CtrlHome.cs

@@ -30,6 +30,9 @@ using DevExpress.XtraEditors.Controls;
 using DevExpress.Mvvm.Native;
 using XdCxRhDW.Entity;
 using XdCxRhDW.Api;
+using XdCxRhDW.App.Controllers;
+using DevExpress.XtraPrinting.Native.Properties;
+using DevExpress.Utils.Drawing.Helpers;
 
 namespace XdCxRhDW.App.UserControl
 {
@@ -41,6 +44,7 @@ namespace XdCxRhDW.App.UserControl
         public CtrlHome()
         {
             InitializeComponent();
+
         }
 
         private void PosSubEvent(PosRes posRes)
@@ -100,7 +104,7 @@ namespace XdCxRhDW.App.UserControl
                         Serilog.Log.Error(ex, "表格中删除定位点异常!");
                         DxHelper.MsgBoxHelper.ShowError("删除定位点异常!");
                     }
-                }, popupMenu2).DataSource=new List<PosRes>();
+                }, popupMenu2).DataSource = new List<PosRes>();
             layoutControl1.UseDefault();
             txtStartTime.UseDefault();
             txtEndTime.UseDefault();
@@ -830,6 +834,31 @@ namespace XdCxRhDW.App.UserControl
             {
                 try
                 {
+                    if (tsk.TaskType == EnumTaskType.History)
+                    {
+                        //下发任务
+                        var svtItem = TaskSvr.GetTaskSvt();
+                        if (svtItem == null || svtItem.code <= 0)
+                        {
+                            DxHelper.MsgBoxHelper.ShowWarning($"请打开执行历史任务的服务");
+                            return;
+                        }
+                        HistoryTaskProcessingDto dto = new HistoryTaskProcessingDto();
+                        dto.ID = tsk.ID;
+                        dto.TaskName = tsk.TaskName;
+                        dto.PosType = (EnumPosTypeDto)(int)tsk.PosType;
+                        dto.SigType = (EnumSigTypeDto)(int)tsk.SigType;
+                        dto.CapDir = tsk.CapDir;
+                        dto.DateDirFormat = "yyMMdd HH";
+                        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);
+                        if (res.code != 200)
+                        {
+                            DxHelper.MsgBoxHelper.ShowWarning($"下发启动历史任务的服务失败{res.msg}");
+                        }
+                    }
                     using (RHDWContext db = new RHDWContext())
                     {
                         var settings = await db.SysSetings.FirstOrDefaultAsync();
@@ -844,10 +873,6 @@ namespace XdCxRhDW.App.UserControl
                         tsk.TaskState = EnumTaskState.Running;
                         Serilog.Log.Information($"用户启动了任务,ID={tsk.ID}");
                     }
-                    if (tsk.TaskType == EnumTaskType.History)
-                    {
-                        //下发任务
-                    }
                 }
                 catch (Exception ex)
                 {

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

@@ -12,6 +12,7 @@ using System.Threading.Tasks;
 using System.Windows.Controls;
 using System.Windows.Documents;
 using System.Windows.Forms;
+using XdCxRhDW.App.Controllers;
 using XdCxRhDW.App.EditForms;
 using XdCxRhDW.App.Model;
 using XdCxRhDW.Dto;
@@ -30,10 +31,29 @@ namespace XdCxRhDW.App.UserControl
             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;
+        }
+
+
+
         private async void CtrlSat_Load(object sender, EventArgs e)
         {
-            Messenger.Defalut.Sub<SvrStateReportDto>("服务状态改变", dto=>
+            Messenger.Defalut.Sub<SvrStateReportDto>("服务状态改变", dto =>
             {
                 try
                 {

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

@@ -415,13 +415,13 @@
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
     <None Include="packages.config" />
-    <None Include="Properties\licenses.licx" />
     <EmbeddedResource Include="PopupControl\ShowCgCtrl.resx">
       <DependentUpon>ShowCgCtrl.cs</DependentUpon>
     </EmbeddedResource>
     <EmbeddedResource Include="PopupControl\ShowCxCtrl.resx">
       <DependentUpon>ShowCxCtrl.cs</DependentUpon>
     </EmbeddedResource>
+    <EmbeddedResource Include="Properties\licenses.licx" />
     <EmbeddedResource Include="Properties\Resources.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>Resources.Designer.cs</LastGenOutput>

+ 20 - 4
XdCxRhDW.Entity/ModelEnum.cs

@@ -21,10 +21,10 @@ namespace XdCxRhDW.Entity
     }
     public enum EnumTaskType
     {
-        [Display(Name ="实时任务")]
+        [Display(Name = "实时任务")]
         Real,
 
-        [Display(Name ="历史任务")]
+        [Display(Name = "历史任务")]
         History
     }
     /// <summary>
@@ -110,15 +110,31 @@ namespace XdCxRhDW.Entity
         /// <summary>
         /// 运动
         /// </summary>
-        [Display(Name ="运动")]
+        [Display(Name = "运动")]
         Movement,
 
         /// <summary>
         /// 静止
         /// </summary>
-        [Display(Name ="静止")]
+        [Display(Name = "静止")]
         Stationary,
     }
 
+    /// <summary>
+    /// 信号类型
+    /// </summary>
+    public enum EnumSigType
+    {
+        /// <summary>
+        /// 常规
+        /// </summary>
+        [Display(Name = "常规信号")]
+        Normal,
+        /// <summary>
+        /// DAMA信号
+        /// </summary>
+       [Display(Name = "DAMA信号")]
+        DAMA,
+    }
 
 }

+ 5 - 0
XdCxRhDW.Entity/TaskInfo.cs

@@ -41,6 +41,9 @@ namespace XdCxRhDW.Entity
         [Display(Name = "上行频点")]
         public long Freq { get; set; }
 
+        [Display(Name = "信号类型")]
+        public EnumSigType SigType { get; set; }
+
         /// <summary>
         /// 历史任务采集文件的目录
         /// </summary>
@@ -53,5 +56,7 @@ namespace XdCxRhDW.Entity
         [Display(AutoGenerateField = false)]
         public string HistoryFrequpMHz { get; set; }
 
+
+
     }
 }

+ 1 - 1
XdCxRhDW.TaskServer/App.config

@@ -8,7 +8,7 @@
 		<add key="LocalHttpPort" value="8920" />
 
 		<!--融合定位平台Http地址-->
-		<add key="PosPlatformAddr" value="http://127.0.0.1:8091" />
+		<add key="PosPlatformAddr" value="http://127.0.0.1:8990" />
 
 	</appSettings>
 	<startup>

+ 36 - 7
XdCxRhDW.TaskServer/Controllers/HistoryTaskProcessingController.cs

@@ -1,14 +1,9 @@
 using System;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.Data.SqlClient;
+using System.Configuration;
 using System.IO;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
 using System.Web.Http;
-using Serilog;
 using XdCxRhDW.Dto;
+using XdCxRhDW.TaskServer.Task;
 using XdCxRhDW.WebApi;
 
 namespace XdCxRhDW.TaskServer.Controllers
@@ -28,6 +23,38 @@ namespace XdCxRhDW.TaskServer.Controllers
         {
             try
             {
+                LogHelper.Info($"接收到历史任务:{dto.ID}");
+                dto.StartTime = new DateTime(2024, 03, 24, 12, 00, 00);
+                dto.DateDirFormat = "yyyyMMddHH";
+                dto.CapDir = @"D:\\data";
+                if (!Directory.Exists(dto.CapDir))
+                {
+                    LogHelper.Error($"采集路径:{dto.CapDir}不存在");
+                    return Error($"采集路径:{dto.CapDir}不存在");
+                }
+              
+
+
+                switch (dto.PosType)
+                {
+                    case EnumPosTypeDto.X1D1CX:
+                        X1D1CXTask x1D1 = new X1D1CXTask();
+                        x1D1.Start(dto, posPlatformAddr);
+                        break;
+                    case EnumPosTypeDto.X2D1:
+                        break;
+                    case EnumPosTypeDto.RH:
+                        break;
+                    case EnumPosTypeDto.X3TwoDto:
+                        break;
+                    case EnumPosTypeDto.X3TwoDfo:
+                        break;
+                    case EnumPosTypeDto.X2Dfo:
+                        break;
+                    default:
+                        break;
+                }
+
                 return Success();
             }
             catch (Exception ex)
@@ -37,5 +64,7 @@ namespace XdCxRhDW.TaskServer.Controllers
 
             }
         }
+
+
     }
 }

+ 4 - 0
XdCxRhDW.TaskServer/MainForm.cs

@@ -12,6 +12,7 @@ using System.Text;
 using System.Threading.Tasks;
 using System.Windows.Forms;
 using XdCxRhDW.Dto;
+using XdCxRhDW.TaskServer.Controllers;
 using XdCxRhDW.WebApi;
 
 namespace XdCxRhDW.TaskServer
@@ -39,6 +40,9 @@ namespace XdCxRhDW.TaskServer
 
         private async void MainForm_LoadAsync(object sender, EventArgs e)
         {
+
+           // HistoryTaskProcessingController historyTask = new HistoryTaskProcessingController();
+            //historyTask.Run(new HistoryTaskProcessingDto());
             var port = Convert.ToInt32(ConfigurationManager.AppSettings["LocalHttpPort"].Trim());
             var svrID = ConfigurationManager.AppSettings["SvrID"].Trim();
             var posPlatformAddr = ConfigurationManager.AppSettings["PosPlatformAddr"].Trim();

+ 40 - 0
XdCxRhDW.TaskServer/Task/HistoryTaskI.cs

@@ -0,0 +1,40 @@
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using XdCxRhDW.Dto;
+
+namespace XdCxRhDW.TaskServer.Task
+{
+    public class HistoryTaskI
+    {
+
+        protected internal virtual string posPlatformAddr => ConfigurationManager.AppSettings["PosPlatformAddr"].Trim();
+        protected virtual void Start(HistoryTaskProcessingDto dto)
+        {
+        }
+
+        protected virtual void Stop()
+        { }
+
+        //检测
+        protected virtual void DAMA()
+        {
+        }
+
+        //CPU计算
+        protected virtual void CPUCalc()
+        {
+        }
+
+        //GPU计算
+        protected virtual void GPUCalc()
+        {
+        }
+
+
+
+    }
+}

+ 36 - 0
XdCxRhDW.TaskServer/Task/X1D1CXTask.cs

@@ -0,0 +1,36 @@
+using System;
+using System.IO;
+using XdCxRhDW.Dto;
+
+namespace XdCxRhDW.TaskServer.Task
+{
+    public class X1D1CXTask : HistoryTaskI
+    {
+        protected override void Start(HistoryTaskProcessingDto dto)
+        {
+            System.Threading.Tasks.Task.Run(() =>
+            {
+                string capfile = Path.Combine(dto.CapDir, $"{dto.StartTime.ToString(dto.DateDirFormat)}");
+                //读取采集文件
+                //2024 01 31 10 10 51 000000000ch11xxхххххххххххххххххххххххххххFs}Hz {FreqUp}Hz xxxxxxxxxxxxx.dat
+                string fs = "";
+                foreach (var FreqHz in dto.FreqsHz)
+                {
+                    var ch1 = Directory.GetDirectories(capfile, $"*{dto.StartTime:yyyyMMddHHmmss}000000000ch11{fs}Hz {FreqHz}Hz.dat");
+                    var ch2 = Directory.GetDirectories(capfile, $"*{dto.StartTime:yyyyMMddHHmmss}000000000ch22{fs}Hz {FreqHz}Hz.dat");
+
+
+
+                }
+                //根据信号类型执行检测或参数估计 
+
+
+            });
+        }
+
+        protected override void Stop()
+        {
+            throw new NotImplementedException();
+        }
+    }
+}

+ 12 - 0
XdCxRhDW.TaskServer/Task/X2D1Task.cs

@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace XdCxRhDW.TaskServer.Task
+{
+    public class X2D1Task
+    {
+    }
+}

+ 12 - 0
XdCxRhDW.TaskServer/Task/X2DfoTask.cs

@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace XdCxRhDW.TaskServer.Task
+{
+    public class X2DfoTask
+    {
+    }
+}

+ 12 - 0
XdCxRhDW.TaskServer/Task/X3TwoDfoTask.cs

@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace XdCxRhDW.TaskServer.Task
+{
+    public class X3TwoDfoTask
+    {
+    }
+}

+ 12 - 0
XdCxRhDW.TaskServer/Task/X3TwoDtoTask.cs

@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace XdCxRhDW.TaskServer.Task
+{
+    public class X3TwoDtoTask
+    {
+    }
+}

+ 6 - 0
XdCxRhDW.TaskServer/XdCxRhDW.TaskServer.csproj

@@ -158,6 +158,12 @@
     <Compile Include="MainForm.Designer.cs">
       <DependentUpon>MainForm.cs</DependentUpon>
     </Compile>
+    <Compile Include="Task\HistoryTaskI.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" />
     <None Include="packages.config" />
     <None Include="Properties\licenses.licx" />
     <EmbeddedResource Include="Properties\Resources.resx">

+ 17 - 0
XdCxRhDw.Dto/EnumPosResTypeDto.cs

@@ -144,4 +144,21 @@ namespace XdCxRhDW.Dto
         [Display(Name = "双星时频差定位")]
         X2Dfo,
     }
+
+    /// <summary>
+    /// 信号类型
+    /// </summary>
+    public enum EnumSigTypeDto
+    {
+        /// <summary>
+        /// 常规
+        /// </summary>
+        [Display(Name = "常规信号")]
+        Normal,
+        /// <summary>
+        /// DAMA信号
+        /// </summary>
+        [Display(Name = "DAMA信号")]
+        DAMA,
+    }
 }

+ 13 - 0
XdCxRhDw.Dto/HistoryTaskProcessingDto.cs

@@ -27,6 +27,16 @@ namespace XdCxRhDW.Dto
         /// </summary>
         public EnumPosTypeDto PosType { get; set; }
 
+        /// <summary>
+        /// 开始时间
+        /// </summary>
+        public DateTime StartTime { get; set; }
+
+        /// <summary>
+        /// 结束时间
+        /// </summary>
+        public DateTime EndTime { get; set; }
+
         /// <summary>
         /// 日期目录格式(yyyy-MM-dd等格式)
         /// </summary>
@@ -41,5 +51,8 @@ namespace XdCxRhDW.Dto
         /// 要处理的上行频点Hz
         /// </summary>
         public List<long> FreqsHz { get; set; }
+
+        [Display(Name = "信号类型")]
+        public EnumSigTypeDto SigType { get; set; }
     }
 }