yg пре 3 месеци
родитељ
комит
f177afdb62

+ 5 - 3
AdService/Controllers/AdController.cs

@@ -18,7 +18,7 @@ namespace AdService.Controllers
         /// </summary>
         /// <returns></returns>
         [HttpPost]
-        public async Task<AjaxResult<AdcResultDto>> StartAd(List<AdCard> dtos)
+        public async Task<AjaxResult<AdcResultDto>> StartAd(List<AdSatChDto> dtos)
         {
             try
             {
@@ -33,7 +33,8 @@ namespace AdService.Controllers
             }
             catch (Exception ex)
             {
-                return Error<AdcResultDto>("开始采集异常:" + ex.Message);
+                logger.LogError("开始采集异常:"+ex.Message);
+                return Error<AdcResultDto>("开始采集异常");
             }
         }
 
@@ -53,7 +54,8 @@ namespace AdService.Controllers
                 }
                 catch (Exception ex)
                 {
-                    return Error("停止采集异常:" + ex.Message);
+                    logger.LogError("停止采集异常:" + ex.Message);
+                    return Error("停止采集异常");
                 }
             });
             return res;

+ 4 - 2
AdService/Controllers/AdFileController.cs

@@ -7,6 +7,9 @@ namespace AdService.Controller.Controllers
     /// </summary>
     public class AdFileController : BaseController
     {
+
+        ILogger logger { get; set; }
+
         /// <summary>
         /// 下载采集文件
         /// </summary>
@@ -27,7 +30,6 @@ namespace AdService.Controller.Controllers
             {
                 if (!System.IO.File.Exists(localFile))
                 {
-                    //IpsLogger.Error($"下载失败,文件[{localFile}]不存在");
                     return NotFound($"文件[{fileName}]不存在");
                 }
                 var fileStream = new FileStream(localFile, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite, 4096, true);  //异步读取文件
@@ -35,7 +37,7 @@ namespace AdService.Controller.Controllers
             }
             catch (Exception ex)
             {
-                //IpsLogger.Error($"文件[{localFile}]下载失败", ex);
+                logger.LogError($"文件[{localFile}]下载失败", ex);
                 return NotFound($"文件[{fileName}]下载失败");
             }
         }

+ 10 - 0
AdService/Dto/AdConfig.cs

@@ -26,6 +26,16 @@
         /// </summary>
         public int ClearHours { get; set; }
 
+        /// <summary>
+        /// 服务Http基地址
+        /// </summary>
+        public string BaseHttpAddr { get; set; }
+
+        /// <summary>
+        /// 接口地址
+        /// </summary>
+        public string SwaggerAddr { get; set; }
+
         /// <summary>
         /// 上报地址
         /// </summary>

+ 3 - 0
AdService/Program.cs

@@ -1,3 +1,5 @@
+using AdService.Service;
+
 var builder = WebApplication.CreateBuilder(args);
 
 // Add services to the container.
@@ -6,6 +8,7 @@ builder.Services.AddControllers();
 // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
 builder.Services.AddEndpointsApiExplorer();
 builder.Services.AddSwaggerGen();
+builder.Services.AddHostedService<AdReportService>();
 
 
 var app = builder.Build();

+ 32 - 16
AdService/Service/AdReportService.cs

@@ -1,4 +1,6 @@
-using DW5S.DTO;
+using AdService.Controller.Dto;
+using DW5S.DTO;
+using Newtonsoft.Json;
 
 namespace AdService.Service
 {
@@ -8,29 +10,43 @@ namespace AdService.Service
     /// </summary>
     public class AdReportService : BackgroundService
     {
+        ILogger logger { get; set; }
+
         /// <summary>
         /// 服务上报服务
         /// </summary>
         protected override async Task ExecuteAsync(CancellationToken stoppingToken)
         {
-            
-            await Task.Run(async () =>
+            try
             {
-                while (!stoppingToken.IsCancellationRequested)
+                StreamReader sr = new StreamReader(Directory.GetCurrentDirectory() + "/appsettings.json");
+                string json = sr.ReadToEnd();
+                // 解析 JSON 字符串
+                var adConfig = JsonConvert.DeserializeObject<AdConfig>(json);
+
+
+                await Task.Run(async () =>
                 {
-                    SvrStateReportDto dto = new SvrStateReportDto()
+                    while (!stoppingToken.IsCancellationRequested)
                     {
-                        DD = TimeSpan.FromSeconds(1),
-                        SvrType = EnumSvrType.AdCgSvr,
-                        SvrID = "AdService",
-                        BaseHttpAddr = "",
-                        SwaggerAddr="",
-                        ReportType = 0,
-                    };
-                    var res = await HttpHelper.PostRequestAsync<CpuCgResDto>("" + "SvrReport/Report", dto);
-                    await Task.Delay(3 * 1000, stoppingToken);
-                }
-            }, stoppingToken);
+                        SvrStateReportDto dto = new SvrStateReportDto()
+                        {
+                            DD = TimeSpan.FromSeconds(1),
+                            SvrType = EnumSvrType.AdCgSvr,
+                            SvrID = "AdService",
+                            BaseHttpAddr = adConfig.BaseHttpAddr,
+                            SwaggerAddr = adConfig.SwaggerAddr,
+                            ReportType = 0,
+                        };
+                        var res = await HttpHelper.PostRequestAsync<CpuCgResDto>(adConfig.AdcReportAddr, dto);
+                        logger.LogInformation("服务上报");
+                        await Task.Delay(TimeSpan.FromSeconds(3));//调用间隔3秒
+                    }
+                }, stoppingToken);
+            }catch (Exception ex)
+            {
+                logger.LogError("服务上报异常:"+ex.Message);
+            }
         }
 
     }

+ 27 - 19
AdService/Service/AdcService.cs

@@ -1,4 +1,7 @@
 
+using AdService.Controller.Dto;
+using Newtonsoft.Json;
+
 namespace AdService.Service
 {
     /// <summary>
@@ -16,12 +19,15 @@ namespace AdService.Service
         //是否持续采集
         private bool isSustain = true;
 
+        ILogger logger { get; set; }
+
+
         /// <summary>
         /// 启动采集(无采集卡)
         /// </summary>
         /// <param name="dtos"></param>
         /// <returns></returns>
-        public async Task<AdcResultDto> StartTestAsync(List<AdCard> dtos)
+        public async Task<AdcResultDto> StartTestAsync(List<AdSatChDto> dtos)
         {
             if (isBusy)
             {
@@ -29,38 +35,40 @@ namespace AdService.Service
             }
             try
             {
+                StreamReader sr = new StreamReader(Directory.GetCurrentDirectory() + "/appsettings.json");
+                string json = sr.ReadToEnd();
+                // 解析 JSON 字符串
+                var adConfig = JsonConvert.DeserializeObject<AdConfig>(json);
                 isBusy = true;
                 string test = Path.Combine(Directory.GetCurrentDirectory(), "test.dat");//测试数据
                 var bytes = File.ReadAllBytes(test);
                 AdcResultDto adcResult = new AdcResultDto(DateTime.Now);
+
                 await Task.Run(() =>
                 {
                     while (isSustain)
                     {
                         List<SignalFile> signalFiles = new List<SignalFile>();
-                        string addate = Path.Combine("D:\\work\\data", DateTime.Now.ToString("yyyyMMdd_HH"));//20250307_10
+                        string addate = Path.Combine(adConfig.DataDir, DateTime.Now.ToString("yyyyMMdd_HH"));//20250307_10
                         Directory.CreateDirectory(addate);
+
                         foreach (var item in dtos)
                         {
-                            for (int i = 0; i < item.AdChannels.Count; i++)
+                            var fsad = item.ClockFreq / item.Mutil;
+                            SignalFile signal = new SignalFile()
                             {
-                                var fsad = item.ClockFreq / item.Mutil;
-                                SignalFile signal = new SignalFile()
-                                {
-                                    AdCardID = item.AdChannels[i].AdCardID.ToString(),
-                                    ChNum = item.AdChannels[i].ChNum,
-                                    Fs = (int)fsad,
-                                    SatInfoID = item.AdChannels[i].SatInfoID.ToString(),
-                                    SigTime = DateTime.Now,
-                                    DirName = "D:\\work\\data",
-                                };
-                                File.WriteAllBytes(Path.Combine("D:\\work\\data", signal.DateDirName, signal.FileName), bytes);
-                              
-                                signalFiles.Add(signal);
-                            }
-                            adcResult.FileList = signalFiles;
-                        }
+                                ChNum = item.Channel,
+                                Fs = (int)fsad,
+                                SatInfoID = item.SatCode.ToString(),
+                                SigTime = DateTime.Now,
+                                DirName = adConfig.DataDir,
+                            };
+                            var fileName = String.Concat(signal.DateDirName+"_Sat",item.SatCode+"_CH",item.Channel+"_freq",fsad+".dat");
 
+                            File.WriteAllBytes(Path.Combine(adConfig.DataDir, signal.DateDirName, fileName), bytes);
+
+                            signalFiles.Add(signal);
+                        }
                         Thread.Sleep(1000 * 15);
                     }
 

+ 164 - 156
AdService/Service/CearDirService.cs

@@ -9,167 +9,175 @@ namespace AdService.Service
     /// </summary>
     public class CearDirService : BackgroundService
     {
+
+        ILogger logger { get; set; }
+
         /// <summary>
         /// 数据清理服务
         /// </summary>
         protected override async Task ExecuteAsync(CancellationToken stoppingToken)
         {
-
-            await Task.Delay(5000, stoppingToken);//延迟一会儿让webbapi先启动
-                                                  //IpsLogger.Info($"启动采集专用目录数据清理功能...");
-            /* await Task.Run(async () =>
-             {
-                 #region 读取清理目录配置信息
-                 StreamReader sr = new StreamReader(Directory.GetCurrentDirectory()+"appsettings.json");
-                 string json = sr.ReadToEnd();
-                 // 解析 JSON 字符串
-                 var adConfig = JsonConvert.DeserializeObject<AdConfig>(json);
-                 string dataClearStr = adConfig.ClearDir;
-                 var dataClears = dataClearStr.Split(new string[] { ";", ";" }, StringSplitOptions.RemoveEmptyEntries)
-                 .Select(p => p.ToLower()).ToList();
-                 if (!dataClears.Contains(adConfig.DataDir))
-                     dataClears.Add(adConfig.DataDir);
-                 #endregion
-
-                 #region 检测有效的清理目录并读取清理条件
-                 List<string> list = new List<string>();
-                 foreach (var item in dataClears)
-                 {
-                     var root = Path.GetPathRoot(item);
-                     DriveInfo drive = new DriveInfo(root);
-                     if (!drive.IsReady)
-                     {
-                         continue;
-                     }
-                     if (Directory.Exists(item))
-                     {
-                         list.Add(item);
-                     }
-                 }
-                 if (!list.Any())
-                 {
-                     //IpsLogger.Warn($"配置文件中的数据清理目录无效");
-                     return;
-                 }
-                 float maxPercent = adConfig.ClearCondition;
-                 var clearHours = adConfig.ClearHours;
-                 if (clearHours < 1)
-                 {
-                     clearHours = 1;
-                 }
-                 //IpsLogger.Info($"已启动目录[{string.Join(";", list)}]自动清理,清理条件=可用空间不足{(int)(maxPercent * 100)}%");
-                 #endregion
-
-
-                 //缓存每个目录上次清理的文件最大的一个写入时间
-                 var prevClearTime = new Dictionary<string, DateTime>();
-                 foreach (var item in list)
-                 {
-                     prevClearTime[item] = DateTime.MinValue;
-
-                 }
-                 while (!stoppingToken.IsCancellationRequested)
-                 {
-                    // IpsLogger.Info($"开始数据清理...");
-
-                     #region 从上次开始每个目录清理一定的数据(ClearHours)
-                     int delFileCount = 0;
-                     try
-                     {
-                         var driveFolders = list.GroupBy(m => Path.GetPathRoot(m).ToUpper());
-                         foreach (var driveFolder in driveFolders)//like D:\ E:\
-                         {
-                             if (stoppingToken.IsCancellationRequested) break;
-                             DriveInfo drive = new DriveInfo(driveFolder.Key);
-
-                             while (drive.TotalFreeSpace / (drive.TotalSize * 1.0f) <= maxPercent)
-                             {
-                                 foreach (var item in driveFolder)//like D:\data E:\data
-                                 {
-                                     //IpsLogger.Info($"正在清理[{item}]中的数据...");
-                                     var fsList = Directory.EnumerateFiles(item, "*", SearchOption.AllDirectories).Select(p => new FileInfo(p));
-                                     if (!fsList.Any())
-                                     {
-                                      // IpsLogger.Warn($"{drive.ToString().Substring(0, 1)}盘空间不足,但目录{item}没有数据,跳过此目录");
-                                     }
-                                     else
-                                     {
-                                         if (prevClearTime[item] == DateTime.MinValue)
-                                             prevClearTime[item] = fsList.Min(p => p.LastWriteTime);
-                                         var maxTime = prevClearTime[item].AddHours(clearHours);
-                                         if (maxTime <= prevClearTime[item])
-                                         {
-                                             //clearHours配置为0或负数时一次删所有文件
-                                             maxTime = DateTime.MaxValue;
-                                         }
-                                         //每次清理从上次清理结束时间开始,防止有些删不掉的文件阻止删除文件
-                                         var clearFiles = fsList.Where(m => m.LastWriteTime >= prevClearTime[item] && m.LastWriteTime <= maxTime).OrderBy(m => m.LastWriteTime);
-                                         foreach (var fsItem in clearFiles)
-                                         {
-                                             try
-                                             {
-                                                 if (stoppingToken.IsCancellationRequested) break;
-                                                 fsItem.Delete();
-                                                 delFileCount++;
-                                             }
-                                             catch (Exception ex)
-                                             {
-                                                // IpsLogger.Error($"删除文件{fsItem.Name}出错", ex);
-                                             }
-                                         }
-                                         prevClearTime[item] = maxTime;
-
-                                     }
-                                 }
-                             }
-                         }
-                     }
-                     catch (Exception ex)
-                     {
-                         //IpsLogger.Error($"清理数据异常", ex);
-                     }
-                     #endregion
-
-                     #region 清理空目录
-                     int delDirCount = 0;
-                     foreach (var name in list)
-                     {
-                         string clearDir = Path.Combine(AppContext.BaseDirectory, name);
-                         try
-                         {
-                             var dirs = Directory.EnumerateDirectories(clearDir, "*", SearchOption.AllDirectories);
-                             foreach (var item in dirs)
-                             {
-                                 DirectoryInfo dir = new DirectoryInfo(item);
-                                 if (dir.EnumerateFiles().Any()) continue;
-                                 //删除5分钟以前创建的空目录
-                                 if ((DateTime.Now - dir.CreationTime).TotalMinutes > 5)
-                                 {
-
-                                     try
-                                     {
-                                         dir.Delete();
-                                         delDirCount++;
-                                     }
-                                     catch (Exception ex)
-                                     {
-                                         //IpsLogger.Error($"删除空目录{dir.Name}异常", ex);
-                                     }
-                                 }
-                             }
-                         }
-                         catch (Exception ex)
-                         {
-                             //IpsLogger.Error($"删除{name}目录中的空目录出错", ex);
-                         }
-                     }
-                     #endregion
-
-                    // IpsLogger.Info($"本次清理数据结束,删除{delFileCount}个文件,删除{delDirCount}个空目录");
-
-                     await Task.Delay(5 * 60 * 1000, stoppingToken);
-                 }
-             }, stoppingToken);*/
+            try
+            {
+                await Task.Delay(5000, stoppingToken);//延迟一会儿让webbapi先启动
+                                                    
+                await Task.Run(async () =>
+                {
+                    #region 读取清理目录配置信息
+                    StreamReader sr = new StreamReader(Directory.GetCurrentDirectory() + "appsettings.json");
+                    string json = sr.ReadToEnd();
+                    // 解析 JSON 字符串
+                    var adConfig = JsonConvert.DeserializeObject<AdConfig>(json);
+                    string dataClearStr = adConfig.ClearDir;
+                    var dataClears = dataClearStr.Split(new string[] { ";", ";" }, StringSplitOptions.RemoveEmptyEntries)
+                    .Select(p => p.ToLower()).ToList();
+                    if (!dataClears.Contains(adConfig.DataDir))
+                        dataClears.Add(adConfig.DataDir);
+                    #endregion
+
+                    #region 检测有效的清理目录并读取清理条件
+                    List<string> list = new List<string>();
+                    foreach (var item in dataClears)
+                    {
+                        var root = Path.GetPathRoot(item);
+                        DriveInfo drive = new DriveInfo(root);
+                        if (!drive.IsReady)
+                        {
+                            continue;
+                        }
+                        if (Directory.Exists(item))
+                        {
+                            list.Add(item);
+                        }
+                    }
+                    if (!list.Any())
+                    {
+                        logger.LogWarning($"配置文件中的数据清理目录无效");
+                        return;
+                    }
+                    float maxPercent = adConfig.ClearCondition;
+                    var clearHours = adConfig.ClearHours;
+                    if (clearHours < 1)
+                    {
+                        clearHours = 1;
+                    }
+                    logger.LogInformation($"已启动目录[{string.Join(";", list)}]自动清理,清理条件=可用空间不足{(int)(maxPercent * 100)}%");
+                    #endregion
+
+
+                    //缓存每个目录上次清理的文件最大的一个写入时间
+                    var prevClearTime = new Dictionary<string, DateTime>();
+                    foreach (var item in list)
+                    {
+                        prevClearTime[item] = DateTime.MinValue;
+
+                    }
+                    while (!stoppingToken.IsCancellationRequested)
+                    {
+                        logger.LogInformation($"开始数据清理...");
+
+                        #region 从上次开始每个目录清理一定的数据(ClearHours)
+                        int delFileCount = 0;
+                        try
+                        {
+                            var driveFolders = list.GroupBy(m => Path.GetPathRoot(m).ToUpper());
+                            foreach (var driveFolder in driveFolders)//like D:\ E:\
+                            {
+                                if (stoppingToken.IsCancellationRequested) break;
+                                DriveInfo drive = new DriveInfo(driveFolder.Key);
+
+                                while (drive.TotalFreeSpace / (drive.TotalSize * 1.0f) <= maxPercent)
+                                {
+                                    foreach (var item in driveFolder)//like D:\data E:\data
+                                    {
+                                        logger.LogInformation($"正在清理[{item}]中的数据...");
+                                        var fsList = Directory.EnumerateFiles(item, "*", SearchOption.AllDirectories).Select(p => new FileInfo(p));
+                                        if (!fsList.Any())
+                                        {
+                                            logger.LogWarning($"{drive.ToString().Substring(0, 1)}盘空间不足,但目录{item}没有数据,跳过此目录");
+                                        }
+                                        else
+                                        {
+                                            if (prevClearTime[item] == DateTime.MinValue)
+                                                prevClearTime[item] = fsList.Min(p => p.LastWriteTime);
+                                            var maxTime = prevClearTime[item].AddHours(clearHours);
+                                            if (maxTime <= prevClearTime[item])
+                                            {
+                                                //clearHours配置为0或负数时一次删所有文件
+                                                maxTime = DateTime.MaxValue;
+                                            }
+                                            //每次清理从上次清理结束时间开始,防止有些删不掉的文件阻止删除文件
+                                            var clearFiles = fsList.Where(m => m.LastWriteTime >= prevClearTime[item] && m.LastWriteTime <= maxTime).OrderBy(m => m.LastWriteTime);
+                                            foreach (var fsItem in clearFiles)
+                                            {
+                                                try
+                                                {
+                                                    if (stoppingToken.IsCancellationRequested) break;
+                                                    fsItem.Delete();
+                                                    delFileCount++;
+                                                }
+                                                catch (Exception ex)
+                                                {
+                                                    logger.LogError($"删除文件{fsItem.Name}出错", ex);
+                                                }
+                                            }
+                                            prevClearTime[item] = maxTime;
+
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                        catch (Exception ex)
+                        {
+                            logger.LogError("清理数据异常"+ex);
+                        }
+                        #endregion
+
+                        #region 清理空目录
+                        int delDirCount = 0;
+                        foreach (var name in list)
+                        {
+                            string clearDir = Path.Combine(AppContext.BaseDirectory, name);
+                            try
+                            {
+                                var dirs = Directory.EnumerateDirectories(clearDir, "*", SearchOption.AllDirectories);
+                                foreach (var item in dirs)
+                                {
+                                    DirectoryInfo dir = new DirectoryInfo(item);
+                                    if (dir.EnumerateFiles().Any()) continue;
+                                    //删除5分钟以前创建的空目录
+                                    if ((DateTime.Now - dir.CreationTime).TotalMinutes > 5)
+                                    {
+
+                                        try
+                                        {
+                                            dir.Delete();
+                                            delDirCount++;
+                                        }
+                                        catch (Exception ex)
+                                        {
+                                            logger.LogError($"删除空目录{dir.Name}异常", ex);
+                                        }
+                                    }
+                                }
+                            }
+                            catch (Exception ex)
+                            {
+                                logger.LogError ($"删除{name}目录中的空目录出错", ex);
+                            }
+                        }
+                        #endregion
+
+                        logger.LogInformation($"本次清理数据结束,删除{delFileCount}个文件,删除{delDirCount}个空目录");
+
+                        await Task.Delay(5 * 60 * 1000, stoppingToken);
+                    }
+                }, stoppingToken);
+            }catch (Exception ex)
+            {
+                logger.LogError("数据清理服务异常" + ex.Message);
+            }
         }
 
 

+ 21 - 7
AdService/appsettings.json

@@ -1,9 +1,23 @@
 {
-  "Logging": {
-    "LogLevel": {
-      "Default": "Information",
-      "Microsoft.AspNetCore": "Warning"
-    }
-  },
-  "AllowedHosts": "*"
+  //数据存储目录
+  "DataDir": "D:\\data",
+
+  //数据清理目录
+  "ClearDir": "D:\\data",
+
+  //磁盘可用空间百分比不足此数时开始清理
+  "ClearCondition": "0.2",
+
+  //每次达到清理条件时删除小时
+  "ClearHours": "1",
+
+  //服务Http基地址
+  "BaseHttpAddr": "http://192.168.1.34:5284",
+
+  //接口地址
+  "SwaggerAddr": "http://192.168.1.34:5284/swagger/index.html",
+
+  //上报地址
+  "AdcReportAddr": "http://192.168.1.111:8888/SvrReport/Report"
+
 }

+ 0 - 1
AdService/globalusings.cs

@@ -1,4 +1,3 @@
 global using Microsoft.AspNetCore.Mvc;
 global using DW5S.DTO;
-global using DW5S.Entity;
 global using DW5S.WebApi;

+ 51 - 38
DW5S.App/UserControl/CtrlADTask.Designer.cs

@@ -1,4 +1,6 @@
-namespace DW5S.App.UserControl
+using System.Drawing.Drawing2D;
+
+namespace DW5S.App.UserControl
 {
     partial class CtrlADTask
     {
@@ -57,17 +59,21 @@
             // 
             // gridRefTask
             // 
-            gridRefTask.Location = new System.Drawing.Point(12, 36);
+            gridRefTask.EmbeddedNavigator.Margin = new System.Windows.Forms.Padding(11, 12, 11, 12);
+            gridRefTask.Location = new System.Drawing.Point(23, 75);
             gridRefTask.MainView = gridView1;
+            gridRefTask.Margin = new System.Windows.Forms.Padding(6, 6, 6, 6);
             gridRefTask.Name = "gridRefTask";
-            gridRefTask.Size = new System.Drawing.Size(623, 374);
-            gridRefTask.TabIndex = 0;
+            gridRefTask.Size = new System.Drawing.Size(1156, 774);
+            gridRefTask.TabIndex = 4;
             gridRefTask.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] { gridView1 });
             // 
             // gridView1
             // 
+            gridView1.DetailHeight = 725;
             gridView1.GridControl = gridRefTask;
             gridView1.Name = "gridView1";
+            gridView1.OptionsEditForm.PopupEditFormWidth = 1486;
             // 
             // layoutControl1
             // 
@@ -77,53 +83,59 @@
             layoutControl1.Controls.Add(btnSerach);
             layoutControl1.Dock = System.Windows.Forms.DockStyle.Fill;
             layoutControl1.Location = new System.Drawing.Point(0, 0);
+            layoutControl1.Margin = new System.Windows.Forms.Padding(6, 6, 6, 6);
             layoutControl1.Name = "layoutControl1";
             layoutControl1.Root = Root;
-            layoutControl1.Size = new System.Drawing.Size(647, 422);
+            layoutControl1.Size = new System.Drawing.Size(1202, 874);
             layoutControl1.TabIndex = 1;
             layoutControl1.Text = "layoutControl1";
             // 
             // txtSig
             // 
             txtSig.EditValue = 1;
-            txtSig.Location = new System.Drawing.Point(41, 12);
+            txtSig.Location = new System.Drawing.Point(76, 25);
+            txtSig.Margin = new System.Windows.Forms.Padding(6, 6, 6, 6);
             txtSig.Name = "txtSig";
             txtSig.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo) });
             txtSig.Properties.NullText = "";
             txtSig.Properties.PopupSizeable = false;
             txtSig.Properties.PopupView = searchLookUpEdit1View;
-            txtSig.Size = new System.Drawing.Size(217, 20);
+            txtSig.Size = new System.Drawing.Size(403, 44);
             txtSig.StyleController = layoutControl1;
-            txtSig.TabIndex = 11;
+            txtSig.TabIndex = 0;
             // 
             // searchLookUpEdit1View
             // 
+            searchLookUpEdit1View.DetailHeight = 725;
             searchLookUpEdit1View.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus;
             searchLookUpEdit1View.Name = "searchLookUpEdit1View";
+            searchLookUpEdit1View.OptionsEditForm.PopupEditFormWidth = 1486;
             searchLookUpEdit1View.OptionsSelection.EnableAppearanceFocusedCell = false;
             searchLookUpEdit1View.OptionsView.ShowGroupPanel = false;
             // 
             // btnStart
             // 
-            btnStart.Location = new System.Drawing.Point(549, 12);
-            btnStart.MaximumSize = new System.Drawing.Size(0, 21);
-            btnStart.MinimumSize = new System.Drawing.Size(0, 21);
+            btnStart.Location = new System.Drawing.Point(1020, 25);
+            btnStart.Margin = new System.Windows.Forms.Padding(6, 6, 6, 6);
+            btnStart.MaximumSize = new System.Drawing.Size(0, 44);
+            btnStart.MinimumSize = new System.Drawing.Size(0, 44);
             btnStart.Name = "btnStart";
-            btnStart.Size = new System.Drawing.Size(86, 21);
+            btnStart.Size = new System.Drawing.Size(159, 44);
             btnStart.StyleController = layoutControl1;
-            btnStart.TabIndex = 9;
+            btnStart.TabIndex = 3;
             btnStart.Text = "启动任务";
             btnStart.Click += btnStartaAD_Click;
             // 
             // btnSerach
             // 
-            btnSerach.Location = new System.Drawing.Point(262, 12);
-            btnSerach.MaximumSize = new System.Drawing.Size(0, 21);
-            btnSerach.MinimumSize = new System.Drawing.Size(0, 21);
+            btnSerach.Location = new System.Drawing.Point(487, 25);
+            btnSerach.Margin = new System.Windows.Forms.Padding(6, 6, 6, 6);
+            btnSerach.MaximumSize = new System.Drawing.Size(0, 44);
+            btnSerach.MinimumSize = new System.Drawing.Size(0, 44);
             btnSerach.Name = "btnSerach";
-            btnSerach.Size = new System.Drawing.Size(86, 21);
+            btnSerach.Size = new System.Drawing.Size(159, 44);
             btnSerach.StyleController = layoutControl1;
-            btnSerach.TabIndex = 9;
+            btnSerach.TabIndex = 2;
             btnSerach.Text = "查询";
             btnSerach.Click += btnSerach_Click;
             // 
@@ -133,15 +145,15 @@
             Root.GroupBordersVisible = false;
             Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1, layoutControlItem3, emptySpaceItem1, layoutControlItem6, layoutControlItem2 });
             Root.Name = "Root";
-            Root.Size = new System.Drawing.Size(647, 422);
+            Root.Size = new System.Drawing.Size(1202, 874);
             Root.TextVisible = false;
             // 
             // layoutControlItem1
             // 
             layoutControlItem1.Control = gridRefTask;
-            layoutControlItem1.Location = new System.Drawing.Point(0, 24);
+            layoutControlItem1.Location = new System.Drawing.Point(0, 50);
             layoutControlItem1.Name = "layoutControlItem1";
-            layoutControlItem1.Size = new System.Drawing.Size(627, 378);
+            layoutControlItem1.Size = new System.Drawing.Size(1164, 782);
             layoutControlItem1.TextSize = new System.Drawing.Size(0, 0);
             layoutControlItem1.TextVisible = false;
             // 
@@ -151,23 +163,23 @@
             layoutControlItem3.ControlAlignment = System.Drawing.ContentAlignment.TopLeft;
             layoutControlItem3.CustomizationFormText = "时间选择";
             layoutControlItem3.Location = new System.Drawing.Point(0, 0);
-            layoutControlItem3.MaxSize = new System.Drawing.Size(250, 24);
-            layoutControlItem3.MinSize = new System.Drawing.Size(250, 24);
+            layoutControlItem3.MaxSize = new System.Drawing.Size(464, 50);
+            layoutControlItem3.MinSize = new System.Drawing.Size(464, 50);
             layoutControlItem3.Name = "layoutControlItem3";
-            layoutControlItem3.Size = new System.Drawing.Size(250, 24);
+            layoutControlItem3.Size = new System.Drawing.Size(464, 50);
             layoutControlItem3.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
             layoutControlItem3.Text = "频点";
             layoutControlItem3.TextAlignMode = DevExpress.XtraLayout.TextAlignModeItem.AutoSize;
-            layoutControlItem3.TextSize = new System.Drawing.Size(24, 14);
+            layoutControlItem3.TextSize = new System.Drawing.Size(48, 29);
             layoutControlItem3.TextToControlDistance = 5;
             // 
             // emptySpaceItem1
             // 
             emptySpaceItem1.AllowHotTrack = false;
-            emptySpaceItem1.Location = new System.Drawing.Point(340, 0);
-            emptySpaceItem1.MinSize = new System.Drawing.Size(104, 24);
+            emptySpaceItem1.Location = new System.Drawing.Point(631, 0);
+            emptySpaceItem1.MinSize = new System.Drawing.Size(193, 50);
             emptySpaceItem1.Name = "emptySpaceItem1";
-            emptySpaceItem1.Size = new System.Drawing.Size(197, 24);
+            emptySpaceItem1.Size = new System.Drawing.Size(366, 50);
             emptySpaceItem1.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
             emptySpaceItem1.TextSize = new System.Drawing.Size(0, 0);
             // 
@@ -176,11 +188,11 @@
             layoutControlItem6.Control = btnStart;
             layoutControlItem6.ControlAlignment = System.Drawing.ContentAlignment.TopLeft;
             layoutControlItem6.CustomizationFormText = "layoutControlItemSearch";
-            layoutControlItem6.Location = new System.Drawing.Point(537, 0);
-            layoutControlItem6.MaxSize = new System.Drawing.Size(90, 24);
-            layoutControlItem6.MinSize = new System.Drawing.Size(90, 24);
+            layoutControlItem6.Location = new System.Drawing.Point(997, 0);
+            layoutControlItem6.MaxSize = new System.Drawing.Size(167, 50);
+            layoutControlItem6.MinSize = new System.Drawing.Size(167, 50);
             layoutControlItem6.Name = "layoutControlItem6";
-            layoutControlItem6.Size = new System.Drawing.Size(90, 24);
+            layoutControlItem6.Size = new System.Drawing.Size(167, 50);
             layoutControlItem6.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
             layoutControlItem6.Text = "layoutControlItemSearch";
             layoutControlItem6.TextSize = new System.Drawing.Size(0, 0);
@@ -191,11 +203,11 @@
             layoutControlItem2.Control = btnSerach;
             layoutControlItem2.ControlAlignment = System.Drawing.ContentAlignment.TopLeft;
             layoutControlItem2.CustomizationFormText = "layoutControlItemSearch";
-            layoutControlItem2.Location = new System.Drawing.Point(250, 0);
-            layoutControlItem2.MaxSize = new System.Drawing.Size(90, 24);
-            layoutControlItem2.MinSize = new System.Drawing.Size(90, 24);
+            layoutControlItem2.Location = new System.Drawing.Point(464, 0);
+            layoutControlItem2.MaxSize = new System.Drawing.Size(167, 50);
+            layoutControlItem2.MinSize = new System.Drawing.Size(167, 50);
             layoutControlItem2.Name = "layoutControlItem2";
-            layoutControlItem2.Size = new System.Drawing.Size(90, 24);
+            layoutControlItem2.Size = new System.Drawing.Size(167, 50);
             layoutControlItem2.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
             layoutControlItem2.Text = "layoutControlItemSearch";
             layoutControlItem2.TextSize = new System.Drawing.Size(0, 0);
@@ -203,11 +215,12 @@
             // 
             // CtrlADTask
             // 
-            AutoScaleDimensions = new System.Drawing.SizeF(7F, 14F);
+            AutoScaleDimensions = new System.Drawing.SizeF(13F, 29F);
             AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
             Controls.Add(layoutControl1);
+            Margin = new System.Windows.Forms.Padding(6, 6, 6, 6);
             Name = "CtrlADTask";
-            Size = new System.Drawing.Size(647, 422);
+            Size = new System.Drawing.Size(1202, 874);
             Load += CtrlRefTask_Load;
             ((System.ComponentModel.ISupportInitialize)gridRefTask).EndInit();
             ((System.ComponentModel.ISupportInitialize)gridView1).EndInit();

+ 9 - 5
DW5S.App/UserControl/CtrlADTask.cs

@@ -141,16 +141,20 @@ namespace DW5S.App.UserControl
         {
             try
             {
-                List<AdCard> adCard = new List<AdCard>();
-
-                var res = await HttpHelper.PostRequestAsync<List<AdCard>>("http://127.0.0.1:7070/api/Ad/StartAd", adCard);
-                IocContainer.Logger.Information("启动采集任务成功");
+                if (!AdSatChViews.Any())
+                {
+                    DxHelper.MsgBoxHelper.ShowWarning("未有采集任务,启动关闭");
+                }
+                else
+                {
+                    var res = await HttpHelper.PostRequestAsync<List<AdCard>>("http://127.0.0.1:5248/api/Ad/StartAd", AdSatChViews);
+                    DxHelper.MsgBoxHelper.ShowWarning("启动采集任务成功");
+                }
             }
             catch (Exception ex)
             {
                 IocContainer.Logger.Error(ex, "启动采集任务异常");
                 DxHelper.MsgBoxHelper.ShowError("启动采集任务异常");
-
             }
 
         }

+ 111 - 0
DW5S.DTO/AdSatChDto.cs

@@ -0,0 +1,111 @@
+
+using System.ComponentModel;
+using System.ComponentModel.DataAnnotations;
+
+namespace DW5S.DTO
+{
+    /// <summary>
+    /// 采集结果
+    /// </summary>
+    [Serializable]
+    public class AdSatChDto
+    {
+         /// <summary>
+         /// 触发模式
+         /// </summary>
+        [Display(Name = "触发模式")]
+        public EnumAdTriggerMode TriggerMode { get; set; }
+
+        /// <summary>
+        /// 时钟类型
+        /// </summary>
+        [Display(Name = "时钟类型")]
+        public EnumAdClockType ClockerType { get; set; }
+
+        /// <summary>
+        /// 时钟频率(MHz)
+        /// </summary>
+        [Display(Name = "时钟频率(MHz)")]
+        public double ClockFreq { get; set; }
+
+        /// <summary>
+        /// DDC频率(MHz)
+        /// </summary>
+        [Display(Name = "DDC频率(MHz)")]
+        public double DdcFreq { get; set; }
+
+        /// <summary>
+        /// 抽取倍数
+        /// </summary>
+        [Display(Name = "抽取倍数")]
+        public int Mutil { get; set; }
+
+        /// <summary>
+        /// 通道数
+        /// </summary>
+        [Display(Name = "通道数")]
+        public int Channel { get; set; }
+
+        /// <summary>
+        /// 卫星编号
+        /// </summary>
+        [Display(Name = "卫星编号")]
+        public int SatCode { get; set; }
+
+        /// <summary>
+        /// 卫星名称
+        /// </summary>
+        [Display(Name = "卫星名称")]
+        public string SatName { get; set; }
+
+        /// <summary>
+        /// 轨道经度
+        /// </summary>
+        [Display(Name = "轨道经度")]
+        public double? SatLon { get; set; }
+
+        /// <summary>
+        /// 卫星
+        /// </summary>
+        [Display(Name = "卫星")]
+        public string Sat { get; set; }
+    }
+
+    /// <summary>
+    /// 触发模式
+    /// </summary>
+    public enum EnumAdTriggerMode
+    {
+        /// <summary>
+        /// 内触发
+        /// </summary>
+        [Description("内触发")]
+        In = 1,
+        /// <summary>
+        /// 外触发
+        /// </summary>
+        [Description("外触发")]
+        Out = 2
+    }
+    /// <summary>
+    /// 时钟类型
+    /// </summary>
+    public enum EnumAdClockType
+    {
+        /// <summary>
+        /// 内时钟
+        /// </summary>
+        [Description("内时钟")]
+        In = 1,
+        /// <summary>
+        /// 外时钟
+        /// </summary>
+        [Description("外时钟")]
+        Out = 2,
+        /// <summary>
+        /// 外参考
+        /// </summary>
+        [Description("外参考")]
+        OutRef = 3
+    }
+}