zoulei 1 year ago
parent
commit
baa4b54361

+ 2 - 7
Service/X2D1NoRefTaskServer/App.config

@@ -2,7 +2,7 @@
 <configuration>
 	<connectionStrings>
 		<!--下行频点查询卫星编号的Mysql数据库地址-->
-		<add name="MySql" connectionString="server=192.168.1.5;port=3306;database=mcms;user=root;password=123456" />
+		<add name="MySql" connectionString="server=192.168.1.5;port=3306;database=mcms;user=root;password=123456;ConnectionTimeout=5" />
 	</connectionStrings>
 	<appSettings>
 		<!--服务ID-->
@@ -16,12 +16,7 @@
 
 		<!--定位时差系数-->
 		<add key="PosDtoFactor" value="1"/>
-
-		<!--采集文件名上的时间时区-->
-		<add key="UTCValue" value="3"/>
-
-		<!--卫星转发时延配置(微秒)-->
-		<add key="SatDelay" value="[40887,39034]-[2235,0]"/>
+	
 	</appSettings>
 	<startup>
 		<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />

+ 1 - 1
Service/X2D1NoRefTaskServer/HistoryFile.cs

@@ -14,7 +14,7 @@ namespace X2D1NoRefTaskServer
         public string FilePath { get; set; }
 
         /// <summary>
-        /// 文件名上的采集时间采集时间(用户说是UTC3时间)
+        /// 文件名上的采集时间
         /// </summary>
         public DateTime CapTime { get; set; }
 

+ 19 - 51
Service/X2D1NoRefTaskServer/Service/HistoryTaskService.cs

@@ -16,7 +16,6 @@ namespace X2D1NoRefTaskServer.Service
     {
         private readonly string baseUrl;
         CancellationTokenSource cts;
-        Dictionary<int, double> dicSatDelay = new Dictionary<int, double>();
         public HistoryTaskService()
         {
             var posPlatformAddr = ConfigurationManager.AppSettings["PosPlatformAddr"].Trim();//like http://127.0.0.1:8091 or http://127.0.0.1:8091/
@@ -24,25 +23,6 @@ namespace X2D1NoRefTaskServer.Service
                 this.baseUrl = posPlatformAddr + "api/";
             else
                 this.baseUrl = posPlatformAddr + "/api/";
-
-            try
-            {
-                var satDelay = ConfigurationManager.AppSettings["SatDelay"]?.Trim();
-                if (!string.IsNullOrWhiteSpace(satDelay))
-                {
-                    var arr = satDelay.Split("-".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
-                    var sats = arr[0].Replace("[", "").Replace("]", "").Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
-                    var delays = arr[1].Replace("[", "").Replace("]", "").Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
-                    for (int i = 0; i < sats.Length; i++)
-                    {
-                        dicSatDelay.Add(Convert.ToInt32(sats[i]), Convert.ToDouble(delays[i]));
-                    }
-                }
-            }
-            catch (Exception ex)
-            {
-                throw new Exception("解析配置文件SatDelay出错", ex);
-            }
         }
         public void StartAsync(X2D1HistoryTaskHandleDto dto)
         {
@@ -63,21 +43,9 @@ namespace X2D1NoRefTaskServer.Service
             if (posDtoFactor == 0) posDtoFactor = 1;//定位时时差系数
             LogHelper.Info($"【任务{dto.ID}】定位时差系数={posDtoFactor}");
 
-            bool parseSucceed = int.TryParse(ConfigurationManager.AppSettings["UTCValue"], out int utcValue);
-            if (!parseSucceed)
-                utcValue = 8;
-            LogHelper.Info($"【任务{dto.ID}】文件名时间时区=UTC{utcValue}");
-            int hours = 8 - utcValue;
-            dto.StartTime = dto.StartTime.AddHours(-hours);//UTC8转UTC3
-            dto.EndTime = dto.EndTime.AddHours(-hours);//UTC8转UTC3
-            //点击定位平台右上角查看接口可以在浏览器中查看平台提供的所有接口详细信息
             Task.Run(async () =>
             {
                 bool canConnected = CanGetSatIdFromMySql();
-                if (!canConnected)
-                {
-                    LogHelper.Warning("无法连接MySql查询卫星编号,将使用任务中提供的卫星");
-                }
                 DateTime preTime = dto.StartTime;
                 int formatFlag;
                 if (string.IsNullOrWhiteSpace(dto.DateDirFormat))
@@ -131,6 +99,7 @@ namespace X2D1NoRefTaskServer.Service
                         foreach (var item in groups)
                         {
                             if (cts.IsCancellationRequested) break;
+
                             var finfos = item.ToList();
                             var capTime = finfos.First().CapTime;
                             if (capTime < dto.StartTime) continue;
@@ -147,8 +116,8 @@ namespace X2D1NoRefTaskServer.Service
                                 LogHelper.Warning($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻未找到超短波信号ch1文件,跳过此组数据");
                                 continue;
                             }
-                            var freqInfo = dto.Freqs.FirstOrDefault(p => p.FreqUp == dinfo.FreqHz);
-                            if (freqInfo == null)
+                            var taskSig = dto.Sigs.FirstOrDefault(p => p.FreqUp == dinfo.FreqHz);
+                            if (taskSig == null)
                             {
                                 continue;//跳过不是任务处理的频点
                             }
@@ -168,6 +137,12 @@ namespace X2D1NoRefTaskServer.Service
                             }
                             try
                             {
+                                var delay1 = taskSig.SigDelay.FirstOrDefault(p => p.SatInfoSatCode == minfo.SatId)?.Delay;
+                                var delay2 = taskSig.SigDelay.FirstOrDefault(p => p.SatInfoSatCode == ninfo.SatId)?.Delay;
+                                if (delay1 == null) delay1 = 0;
+                                if (delay2 == null) delay2 = 0;
+                                LogHelper.Info($"【任务{dto.ID}】信号[{taskSig.FreqUp / 1e6}],主星[{minfo.SatId}],转发时延{delay1}us");
+                                LogHelper.Info($"【任务{dto.ID}】信号[{taskSig.FreqUp / 1e6}],邻星[{ninfo.SatId}],转发时延{delay1}us");
                                 string mainFile = await HttpHelper.UploadFileAsync(minfo.FilePath, baseUrl + "File/UploadFileAsync", token: cts.Token);//主星文件
                                 string adjaFile = await HttpHelper.UploadFileAsync(ninfo.FilePath, baseUrl + "File/UploadFileAsync", token: cts.Token);//邻星文件
                                 string cdbFile = await HttpHelper.UploadFileAsync(dinfo.FilePath, baseUrl + "File/UploadFileAsync", token: cts.Token);//超短文件
@@ -175,7 +150,7 @@ namespace X2D1NoRefTaskServer.Service
                                 DetectDto detectDto = new DetectDto()
                                 {
                                     file1 = cdbFile,//11局使用上行泄露信号进行检测
-                                    dmcType =freqInfo.SigType,//上行信号检测目前的算法只能使用基于能量的KY或IBS检测
+                                    dmcType = taskSig.SigType,//上行信号检测目前的算法只能使用基于能量的KY或IBS检测
                                     fsHz = minfo.FsHz,
                                 };
                                 detectDto.dmcType = detectDto.dmcType & ~EnumSigCheckTypeDto.DAMA;//DAMA不支持上行信号检测,在这里移除掉
@@ -233,18 +208,20 @@ namespace X2D1NoRefTaskServer.Service
                                     try
                                     {
                                         if (cts.IsCancellationRequested) break;
+
+
+
                                         X2D1NoXlNoParlPosDto x2D1 = new X2D1NoXlNoParlPosDto()
                                         {
                                             TaskID = dto.ID,
-                                            SigTime = minfo.CapTime.AddHours(hours).AddSeconds(data1[i].Smpstart / minfo.FsHz),
+                                            SigTime = minfo.CapTime.AddSeconds(data1[i].Smpstart / minfo.FsHz),
                                             MainCode = minfo.SatId,
                                             AdjaCode = ninfo.SatId,
                                             //卫星转发某些频点可能有时延,无参定位由于不能抵消需要减去这个时延
-                                            SxDto = data1[i].Dt * posDtoFactor - data2[i].Dt * posDtoFactor
-                                                - GetSatDelay(minfo.SatId) + GetSatDelay(ninfo.SatId),
+                                            SxDto = data1[i].Dt * posDtoFactor - data2[i].Dt * posDtoFactor - delay1.Value + delay2.Value,
                                             SxDfo = data1[i].Df,
                                             SxSnr = data1[i].Snr,
-                                            XdDto = data1[i].Dt * posDtoFactor - GetSatDelay(minfo.SatId),
+                                            XdDto = data1[i].Dt * posDtoFactor - delay1.Value,
                                             XdDfo = data2[i].Df,
                                             XdSnr = data2[i].Snr,
                                             SatTxLon = dto.CapLon,
@@ -352,30 +329,21 @@ namespace X2D1NoRefTaskServer.Service
             {
                 if (historyFile.SatId == 0)
                 {
-                    LogHelper.Warning($"【任务{dto.ID}】主星使用任务中的卫星[{dto.MainSatCode}]");
+                    LogHelper.Warning($"【任务{dto.ID}】主星无法通过MySql查询到卫星编号,使用任务中的卫星[{dto.MainSatCode}]");
                     historyFile.SatId = dto.MainSatCode;
                 }
-                LogHelper.Info($"【任务{dto.ID}】主星{dto.MainSatCode}转发时延{GetSatDelay(dto.MainSatCode)}us");
-
             }
             else if (ch == 3)
             {
                 if (historyFile.SatId == 0)
                 {
-                    LogHelper.Warning($"【任务{dto.ID}】邻星使用任务中的卫星[{dto.AdjaSatCode}]");
+                    LogHelper.Warning($"【任务{dto.ID}】邻星无法通过MySql查询到卫星编号,邻星使用任务中的卫星[{dto.AdjaSatCode}]");
                     historyFile.SatId = dto.AdjaSatCode;
                 }
-                LogHelper.Info($"【任务{dto.ID}】邻星{dto.AdjaSatCode}转发时延{GetSatDelay(dto.AdjaSatCode)}us");
             }
             return historyFile;
         }
-        double GetSatDelay(int satCode)
-        {
-            if (dicSatDelay.ContainsKey(satCode))
-                return dicSatDelay[satCode];
-            else
-                return 0;
-        }
+
         int GetSatId(double freqdown)
         {
             int satId = 0;

+ 0 - 1
XdCxRhDW.App/EditForms/TaskEditorSignal.Designer.cs

@@ -70,7 +70,6 @@
             // 
             this.gridViewTaskSignal.GridControl = this.gridTaskSignal;
             this.gridViewTaskSignal.Name = "gridViewTaskSignal";
-            this.gridViewTaskSignal.SelectionChanged += new DevExpress.Data.SelectionChangedEventHandler(this.gridViewTaskSignal_SelectionChanged);
             // 
             // layoutControl1
             // 

+ 9 - 38
XdCxRhDW.App/EditForms/TaskEditorSignal.cs

@@ -37,7 +37,7 @@ namespace XdCxRhDW.App.EditForms
         public TaskEditorSignal()
         {
             InitializeComponent();
-            this.Text = "添加任务频点";
+            this.Text = "任务信号选择";
             info = new TaskInfo();
             this.StartPosition = FormStartPosition.CenterParent;
 
@@ -45,7 +45,7 @@ namespace XdCxRhDW.App.EditForms
         public TaskEditorSignal(TaskInfo info, List<SigInfo> listSigInfoSelected)
            : this()
         {
-            this.Text = $"编辑任务[{info.TaskName}]频点";
+            this.Text = $"任务[{info.TaskName}]信号选择";
             this.info = info;
             this.listSigInfoSelected = listSigInfoSelected.Skip(0).ToList();
 
@@ -58,25 +58,14 @@ namespace XdCxRhDW.App.EditForms
                 gridTaskSignal.UseDefault(listSigInfo).UseMultiSelect().UseRowNumber().DrawGridColumnHeaderCheckBox();
                 using (var db = new RHDWContext())
                 {
-                    var items = await db.SigInfos.ToListAsync();
+                    var items = await db.SigInfos.OrderBy(p => p.FreqUp).ToListAsync();
                     listSigInfo.AddRange(items);
-                    if (this.Text.StartsWith("编辑"))
-                    {
-                        for (int i = 0; i < listSigInfo.Count; i++)
-                        {
-                            for (int j = 0; j < this.listSigInfoSelected.Count; j++)
-                            {
-                                if (listSigInfo[i].ID == this.listSigInfoSelected[j].ID)
-                                {
-                                    this.gridViewTaskSignal.SelectRow(i);
-                                }
-                            }
-                        }                      
-                        //for (int i = 0; i < listSigInfo.Count; i++)
-                        //{
-                        //    gridViewTaskSignal.SetRowCellValue(i, gridViewTaskSignal.Columns[0], true);
-                        //}
-                    }
+                }
+                foreach (var item in listSigInfoSelected)
+                {
+                    var selectedIdx = listSigInfo.FindIndex(p => p.ID == item.ID);
+                    if (selectedIdx >= 0)
+                        this.gridViewTaskSignal.SelectRow(selectedIdx);
                 }
             }
             catch (Exception ex)
@@ -86,20 +75,6 @@ namespace XdCxRhDW.App.EditForms
             }
         }
 
-        private void gridViewTaskSignal_SelectionChanged(object sender, DevExpress.Data.SelectionChangedEventArgs e)
-        {
-            //var selectedRows = gridViewTaskSignal.GetSelectedRows();
-            //listSigInfoSelected.Clear();
-            //for (int i = 0; i < selectedRows.Count(); i++)
-            //{
-            //    //var signalValue = gridViewTaskSignal.GetRowCellValue(selectedRows[i], nameof(FileResEntity.Signal));
-            //    var res = gridViewTaskSignal.GetRow(selectedRows[i]) as SigInfo;
-            //    listSigInfoSelected.Add(res);
-            //}
-            //gridViewTaskSignal.ClearSelection();//全不选
-            //gridViewTaskSignal.SelectAll();//全选
-        }
-
         private void btnCancle_Click(object sender, EventArgs e)
         {
             this.DialogResult = DialogResult.Cancel;
@@ -108,16 +83,12 @@ namespace XdCxRhDW.App.EditForms
         private void btnOk_Click(object sender, EventArgs e)
         {
             var selectedRows = gridViewTaskSignal.GetSelectedRows();
-            // List <SigInfo> ress= new List <SigInfo>();
             listSigInfoSelected.Clear();
             for (int i = 0; i < selectedRows.Count(); i++)
             {
-                //var signalValue = gridViewTaskSignal.GetRowCellValue(selectedRows[i], nameof(FileResEntity.Signal));
                 var res = gridViewTaskSignal.GetRow(selectedRows[i]) as SigInfo;
                 listSigInfoSelected.Add(res);
             }
-            //listSigInfoSelected.Clear();
-            //listSigInfoSelected.AddRange(ress);
             this.DialogResult = DialogResult.OK;
         }
 

+ 5 - 0
XdCxRhDW.App/ExtensionsDev/GridControlEx.cs

@@ -134,6 +134,11 @@ public static class GridControlEx
         if (name != null && File.Exists($"Layout\\{name}.xml"))
         {
             view.RestoreLayoutFromXml($"Layout\\{name}.xml", OptionsLayoutBase.FullLayout);
+            view.ClearColumnsFilter();
+            view.ClearFindFilter();
+            view.ClearInHeaderSearchText();
+            view.ClearSorting();
+            view.ClearSelection();
         }
         view.KeyUp += View_KeyUp;
         grid.Tag = new GridTag();

+ 29 - 14
XdCxRhDW.App/UserControl/CtrlHome.cs

@@ -175,7 +175,7 @@ namespace XdCxRhDW.App.UserControl
                 {
                     this.txtFrequpMHz.Properties.Items.Add(new ImageComboBoxItem((item.FreqUp / 1e6).ToString("f3"), item.FreqUp));
                 }
-                   
+
             }
             WaitHelper.CloseForm();
         }
@@ -240,8 +240,8 @@ namespace XdCxRhDW.App.UserControl
             {
                 gridView2.Columns[nameof(ModelPosRes.CxResID)].Visible = false;
             }
-          
-          
+
+
             txtFrequpMHz.SelectedIndex = 0;
             var btnEdit = (layoutControlGroup1.CustomHeaderButtons[1] as GroupBoxButton);
             var btnDel = (layoutControlGroup1.CustomHeaderButtons[2] as GroupBoxButton);
@@ -371,11 +371,13 @@ namespace XdCxRhDW.App.UserControl
                         List<TaskSig> sigList = new List<TaskSig>();
                         foreach (var item in addItemSignal)
                         {
-                            TaskSig taskSig = new TaskSig();
-                            taskSig.TaskInfoID = taskInfo.ID;
-                            taskSig.SigInfoID = item.ID;
-                            taskSig.FreqUp = item.FreqUp;
-                            taskSig.FreqDown = item.FreqDown;
+                            TaskSig taskSig = new TaskSig
+                            {
+                                TaskInfoID = taskInfo.ID,
+                                SigInfoID = item.ID,
+                                FreqUp = item.FreqUp,
+                                FreqDown = item.FreqDown,
+                            };
                             sigList.Add(taskSig);
                         }
                         db.TaskSigs.AddRange(sigList);
@@ -402,7 +404,7 @@ namespace XdCxRhDW.App.UserControl
                         var taskSigID = taskSig.Select(s => s.SigInfoID);
                         var items = await db.SigInfos.ToListAsync();
                         var taskSigInfo = items.Where(w => taskSigID.Contains(w.ID)).ToList();
-                          TaskEditor frm = new TaskEditor(editItem, taskSigInfo);
+                        TaskEditor frm = new TaskEditor(editItem, taskSigInfo);
                         if (frm.ShowDialog() != DialogResult.OK) return;
                         editItem = frm.info;
                         List<SigInfo> editItemSig = frm.selectedItem;
@@ -445,7 +447,7 @@ namespace XdCxRhDW.App.UserControl
                             sigList.Add(taskSigEdit);
                         }
                         db.TaskSigs.AddRange(sigList);
-                       await db.SaveChangesAsync();
+                        await db.SaveChangesAsync();
                     }
                     gridView1.RefreshData();
                 }
@@ -491,16 +493,29 @@ namespace XdCxRhDW.App.UserControl
                     if (tsk.TaskType == EnumTaskType.History)
                     {
                         TxInfo tx;
-                        List<TaskSigDto> tskSig = new List<TaskSigDto>();
+                        List<TaskSigDto> tskSigsDto = new List<TaskSigDto>();
                         using (RHDWContext db = new RHDWContext())
                         {
+                            var dbSigs = await db.TaskSigs.Where(w => w.TaskInfoID == tsk.ID).ToListAsync() ;
+                            if (!dbSigs.Any())
+                            {
+                                DxHelper.MsgBoxHelper.ShowWarning($"请添加任务信号");
+                                return;
+                            }
+                            foreach (var item in dbSigs)
+                            {
+                                TaskSigDto sigDto = item.MapTo<TaskSigDto>();
+                                var sigDelay =await db.SigDelays.Where(p => p.SigInfoId == item.ID).ToListAsync();
+                                sigDto.SigDelay.Add(sigDelay.MapTo<SigDelayDto>());
+                                tskSigsDto.Add(sigDto);
+                            }
+                          
                             tx = db.TxInfos.FirstOrDefault();
                             if (tx == null)
                             {
                                 DxHelper.MsgBoxHelper.ShowWarning($"未配置天线信息");
                                 return;
                             }
-                            tskSig = db.TaskSigs.Where(w=>w.TaskInfoID == tsk.ID).MapTo<List<TaskSigDto>>();
                         }
                         if (tsk.PosType == EnumPosType.X2D1)
                         {
@@ -527,7 +542,7 @@ namespace XdCxRhDW.App.UserControl
                                 CapLon = tx.Lon,
                                 CapLat = tx.Lat,
                                 DateDirFormat = tsk.CapDirFormat,
-                                Freqs = tskSig.ToList()
+                                Sigs = tskSigsDto,
                             };
                             var res = await HttpHelper.PostRequestAsync<AjaxResult>(svtItem.BaseHttpAddr + "/api/HistoryTaskProcessing/Run", dto);
                             if (res.code != 200)
@@ -562,7 +577,7 @@ namespace XdCxRhDW.App.UserControl
                                 DateDirFormat = tsk.CapDirFormat,
                                 CapLon = tx.Lon,
                                 CapLat = tx.Lat,
-                                Freqs = tskSig.ToList()
+                                Sigs = tskSigsDto.ToList()
                             };
                             var res = await HttpHelper.PostRequestAsync<AjaxResult>(svtItem.BaseHttpAddr + "/api/HistoryTaskProcessing/Run", dto);
                             if (res.code != 200)

+ 7 - 3
XdCxRhDW.App/UserControl/CtrlSignal.cs

@@ -40,12 +40,13 @@ namespace XdCxRhDW.App.UserControl
 
                 using (var db = new RHDWContext())
                 {
-                    var items = await db.SigInfos.ToListAsync();
+                    var items = await db.SigInfos.OrderBy(p=>p.FreqUp).ToListAsync();
                     listSigInfo.AddRange(items);
                     //var delayItems = await db.SigDelays.ToListAsync();
                     //var delayRes = delayItems.Where(w => w.SigInfoID == items.FirstOrDefault().ID);
                     //listSigDelay.AddRange(delayRes);
                 }
+                gridViewSignal.RefreshData();
             }
             catch (Exception ex)
             {
@@ -199,13 +200,16 @@ namespace XdCxRhDW.App.UserControl
             if (sigInfoId == null) return;
             using (var db = new RHDWContext())
             {
-                var delayItems = await db.SigDelays.Where(w => w.SigInfoId == sigInfoId.ID).ToListAsync();
+                var delayItems = await db.SigDelays.Where(w => w.SigInfoId == sigInfoId.ID).OrderBy(p=>p.SatInfo.SatName).ToListAsync();
                 var sats = await db.SatInfos.ToListAsync();
                 foreach (var delayItem in delayItems)
                 {
                     SigDelay sigDelay = delayItem as SigDelay;
                     var satInfo = sats.FirstOrDefault(f => f.SatCode == sigDelay.SatInfoSatCode);
-                    sigDelay.Sat = $"[{satInfo.SatLon}°]{satInfo.SatName}({satInfo.SatCode})";
+                    if (satInfo != null)
+                    {
+                        sigDelay.Sat = $"[{satInfo.SatLon}°]{satInfo.SatName}({satInfo.SatCode})";
+                    }
                     listSigDelay.Add(sigDelay);
                 }
                 gridViewSigDelay.RefreshData();

+ 1 - 0
XdCxRhDw.Dto/02.XdCxRhDW.Dto.csproj

@@ -57,6 +57,7 @@
     <Compile Include="CafResultDto.cs" />
     <Compile Include="CpuCgMultiDto.cs" />
     <Compile Include="ImageResultDto.cs" />
+    <Compile Include="SigDelayDto.cs" />
     <Compile Include="SignalProcResDto.cs" />
     <Compile Include="SignalProcDto.cs" />
     <Compile Include="GpuCgDto.cs" />

+ 32 - 0
XdCxRhDw.Dto/SigDelayDto.cs

@@ -0,0 +1,32 @@
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Runtime.Remoting.Metadata.W3cXsd2001;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace XdCxRhDW.Dto
+{
+    /// <summary>
+    /// 信号转发延迟
+    /// </summary>
+    public class SigDelayDto
+    {
+
+        /// <summary>
+        /// 卫星编号
+        /// </summary>
+        public int SatInfoSatCode { get; set; }
+
+
+        /// <summary>
+        /// 转发延迟(us)
+        /// </summary>
+        public double Delay { get; set; }
+
+       
+    }
+}

+ 1 - 1
XdCxRhDw.Dto/TaskHandleDto/X2D1HistoryTaskHandleDto.cs

@@ -55,7 +55,7 @@ namespace XdCxRhDW.Dto
         /// <summary>
         /// 要处理的信号
         /// </summary>
-        public List<TaskSigDto> Freqs { get; set; }
+        public List<TaskSigDto> Sigs { get; set; }
 
         /// <summary>
         /// 采集站经度

+ 8 - 6
XdCxRhDw.Dto/TaskSigDto.cs

@@ -22,27 +22,29 @@ namespace XdCxRhDW.Dto
         public int TaskInfoID { get; set; }
 
         /// <summary>
-        /// 上行频点(MHz)
+        /// 上行频点(Hz)
         /// </summary>
-        [Display(Name = "上行频点(Hz")]
         public long FreqUp { get; set; }
 
         /// <summary>
-        /// 下行频点(MHz)
+        /// 下行频点(Hz)
         /// </summary>
-        [Display(Name = "下行频点(Hz)")]
         public long FreqDown { get; set; }
 
         /// <summary>
         /// 信号类型
         /// </summary>
-        [Display(Name = "信号类型")]
         public EnumSigCheckTypeDto SigType { get; set; }
 
         /// <summary>
         /// 参估信噪比门限
         /// </summary>
-        [Display(Name = "门限(dB)")]
         public double Snr { get; set; }
+
+        /// <summary>
+        /// 信号卫星转发延迟
+        /// </summary>
+        public List<SigDelayDto> SigDelay { get; set; } = new List<SigDelayDto>();
+
     }
 }