zoulei 1 年之前
父节点
当前提交
1a9147a90a

+ 16 - 7
Service/CheckServer/MainForm.cs

@@ -58,16 +58,25 @@ namespace CheckServer
             else
                 posPlatformAddr = ConfigurationManager.AppSettings["PosPlatformAddr"].Trim();
             this.Text = EnumSvrType.CheckSvr.GetEnumDisplayName() + "-" + svrID;
-            string localIp = null;
-            var rsp = await HttpHelper.GetRequestAsync<string>($"{posPlatformAddr}/api/task/getclientip", 10);
-            if (rsp.code == 0)
+            string localIp;
+            string getIpUrl = $"{posPlatformAddr}/api/task/getclientip";
+            try
             {
-                LogHelper.Error(rsp.msg);
-                return;
+                var rsp = await HttpHelper.GetRequestAsync<string>(getIpUrl, 10);
+                if (rsp.code == 0)
+                {
+                    LogHelper.Error(rsp.msg);
+                    return;
+                }
+                else
+                {
+                    localIp = rsp.data;
+                }
             }
-            else
+            catch (Exception ex)
             {
-                localIp = rsp.data;
+                LogHelper.Error($"无法连接到平台{getIpUrl},请检测地址是否正确并确保平台防火墙允许端口通过", ex);
+                return;
             }
             LogHelper.Info($"本机IP={localIp}");
             Startup.Start(port, $"{System.Reflection.Assembly.GetExecutingAssembly().GetName().Name}.xml", "XdCxRhDW.Dto.xml");

+ 16 - 7
Service/CpuCgServer/MainForm.cs

@@ -59,16 +59,25 @@ namespace CpuCgServer
                 posPlatformAddr = ConfigurationManager.AppSettings["PosPlatformAddr"].Trim();
             }
             this.Text = EnumSvrType.CpuCgSvr.GetEnumDisplayName() + "-" + svrID;
-            string localIp = null;
-            var rsp = await HttpHelper.GetRequestAsync<string>($"{posPlatformAddr}/api/task/getclientip", 10);
-            if (rsp.code == 0)
+            string localIp;
+            string getIpUrl = $"{posPlatformAddr}/api/task/getclientip";
+            try
             {
-                LogHelper.Error(rsp.msg);
-                return;
+                var rsp = await HttpHelper.GetRequestAsync<string>(getIpUrl, 10);
+                if (rsp.code == 0)
+                {
+                    LogHelper.Error(rsp.msg);
+                    return;
+                }
+                else
+                {
+                    localIp = rsp.data;
+                }
             }
-            else
+            catch (Exception ex)
             {
-                localIp = rsp.data;
+                LogHelper.Error($"无法连接到平台{getIpUrl},请检测地址是否正确并确保平台防火墙允许端口通过", ex);
+                return;
             }
             LogHelper.Info($"本机IP={localIp}");
             Startup.Start(port, $"{System.Reflection.Assembly.GetExecutingAssembly().GetName().Name}.xml", "XdCxRhDW.Dto.xml");

+ 16 - 7
Service/GpuCgServer/MainForm.cs

@@ -57,16 +57,25 @@ namespace GpuCgServer
             else
                 posPlatformAddr = ConfigurationManager.AppSettings["PosPlatformAddr"].Trim();
             this.Text = EnumSvrType.GpuCgSvr.GetEnumDisplayName() + "-" + svrID;
-            string localIp = null;
-            var rsp = await HttpHelper.GetRequestAsync<string>($"{posPlatformAddr}/api/task/getclientip", 10);
-            if (rsp.code == 0)
+            string localIp;
+            string getIpUrl = $"{posPlatformAddr}/api/task/getclientip";
+            try
             {
-                LogHelper.Error(rsp.msg);
-                return;
+                var rsp = await HttpHelper.GetRequestAsync<string>(getIpUrl, 10);
+                if (rsp.code == 0)
+                {
+                    LogHelper.Error(rsp.msg);
+                    return;
+                }
+                else
+                {
+                    localIp = rsp.data;
+                }
             }
-            else
+            catch (Exception ex)
             {
-                localIp = rsp.data;
+                LogHelper.Error($"无法连接到平台{getIpUrl},请检测地址是否正确并确保平台防火墙允许端口通过", ex);
+                return;
             }
             LogHelper.Info($"本机IP={localIp}");
             Startup.Start(port, $"{System.Reflection.Assembly.GetExecutingAssembly().GetName().Name}.xml", "XdCxRhDW.Dto.xml");

+ 16 - 7
Service/X2D1NoRefTaskServer/MainForm.cs

@@ -35,16 +35,25 @@ namespace X2D1NoRefTaskServer
             var svrID = ConfigurationManager.AppSettings["SvrID"].Trim();
             var posPlatformAddr = ConfigurationManager.AppSettings["PosPlatformAddr"].Trim();
             this.Text = EnumSvrType.X2D1NoRefTask.GetEnumDisplayName() + "-" + svrID;
-            string localIp = null;
-            var rsp = await HttpHelper.GetRequestAsync<string>($"{posPlatformAddr}/api/task/getclientip", 10);
-            if (rsp.code == 0)
+            string localIp;
+            string getIpUrl = $"{posPlatformAddr}/api/task/getclientip";
+            try
             {
-                LogHelper.Error(rsp.msg);
-                return;
+                var rsp = await HttpHelper.GetRequestAsync<string>(getIpUrl, 10);
+                if (rsp.code == 0)
+                {
+                    LogHelper.Error(rsp.msg);
+                    return;
+                }
+                else
+                {
+                    localIp = rsp.data;
+                }
             }
-            else
+            catch (Exception ex)
             {
-                localIp = rsp.data;
+                LogHelper.Error($"无法连接到平台{getIpUrl},请检测地址是否正确并确保平台防火墙允许端口通过",ex);
+                return;
             }
             LogHelper.Info($"本机IP={localIp}");
             Startup.Start(port, $"{System.Reflection.Assembly.GetExecutingAssembly().GetName().Name}.xml", "XdCxRhDW.Dto.xml");

+ 402 - 46
Service/X2D1NoRefTaskServer/Service/TaskService.cs

@@ -119,42 +119,42 @@ namespace X2D1NoRefTaskServer.Service
                             if (cts.IsCancellationRequested) break;
 
                             var xdgbInfos = item.GroupBy(m => m.XdIndex);
-                            foreach (var xdInfos in xdgbInfos)
+                            Parallel.ForEach(xdgbInfos, xdInfos =>
                             {
                                 var finfos = xdInfos.ToList();
                                 var capTime = finfos.First().CapTime;
-                                if (capTime < dto.StartTime) continue;
-                                if (capTime > dto.EndTime) break;
+                                if (capTime < dto.StartTime) return;
+                                if (capTime > dto.EndTime) return;
                                 if (finfos.Count < 3)
                                 {
                                     LogHelper.Warning($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻文件数量只有{finfos.Count}个,跳过此组数据");
-                                    continue;
+                                    return;
                                 }
                                 //超短波信号
                                 var dinfo = finfos.FirstOrDefault(m => m.Ch == 1);
                                 if (dinfo == null)
                                 {
                                     LogHelper.Warning($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻未找到超短波信号ch1文件,跳过此组数据");
-                                    continue;
+                                    return;
                                 }
                                 var taskSig = dto.Sigs.FirstOrDefault(p => p.FreqUp == dinfo.FreqHz);
                                 if (taskSig == null)
                                 {
-                                    continue;//跳过不是任务处理的频点
+                                    return;//跳过不是任务处理的频点
                                 }
                                 //主星
                                 var minfo = finfos.FirstOrDefault(m => m.Ch == 2);
                                 if (minfo == null)
                                 {
                                     LogHelper.Warning($"【任务{dto.ID}】信号[{taskSig.FreqUp / 1e6}],{capTime:yyyyMMddHHmmss}时刻未找到主星信号ch2文件,跳过此组数据");
-                                    continue;
+                                    return;
                                 }
                                 //邻1
                                 var ninfo = finfos.FirstOrDefault(m => m.Ch == 3);
                                 if (ninfo == null)
                                 {
                                     LogHelper.Info($"【任务{dto.ID}】信号[{taskSig.FreqUp / 1e6}],{capTime:yyyyMMddHHmmss}时刻未找到邻星信号ch3文件,跳过此组数据");
-                                    continue;
+                                    return;
                                 }
                                 try
                                 {
@@ -164,9 +164,9 @@ namespace X2D1NoRefTaskServer.Service
                                     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}],转发时延{delay2}us");
-                                    string mainFile = await HttpHelper.UploadFileAsync(minfo.FilePath, baseUrl, token: cts.Token);//主星文件
-                                    string adjaFile = await HttpHelper.UploadFileAsync(ninfo.FilePath, baseUrl, token: cts.Token);//邻星文件
-                                    string cdbFile = await HttpHelper.UploadFileAsync(dinfo.FilePath, baseUrl, token: cts.Token);//超短文件
+                                    string mainFile = HttpHelper.UploadFileAsync(minfo.FilePath, baseUrl, token: cts.Token).Result;//主星文件
+                                    string adjaFile = HttpHelper.UploadFileAsync(ninfo.FilePath, baseUrl, token: cts.Token).Result;//邻星文件
+                                    string cdbFile = HttpHelper.UploadFileAsync(dinfo.FilePath, baseUrl, token: cts.Token).Result;//超短文件
 
                                     DetectDto detectDto = new DetectDto()
                                     {
@@ -180,18 +180,18 @@ namespace X2D1NoRefTaskServer.Service
                                     if ((int)detectDto.dmcType == 0)
                                     {
                                         LogHelper.Warning($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},上行信号不支持DAMA检测,请使用能量检测");
-                                        continue;
+                                        return;
                                     }
                                     if (detectDto.dmcType == EnumSigCheckTypeDto.Normal)
                                     {
                                         LogHelper.Warning($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},上行信号不支持Normal检测");
-                                        continue;
+                                        return;
                                     }
-                                    var deteResp = await HttpHelper.PostRequestAsync<List<DetectResDto>>(baseUrl + "DetectCg/DetectCalc", detectDto, token: cts.Token);
+                                    var deteResp = HttpHelper.PostRequestAsync<List<DetectResDto>>(baseUrl + "DetectCg/DetectCalc", detectDto, token: cts.Token).Result;
                                     if (deteResp.code != 200)
                                     {
                                         LogHelper.Error($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻信号检测出错.{deteResp.msg}");
-                                        continue;
+                                        return;
                                     }
                                     LogHelper.Info($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻信号检测完成,共{deteResp.data.Count}个时隙");
                                     var smps = deteResp.data.Select(m => new SmpPosition(m.Start, m.Length)).ToList();//怎么补0?
@@ -205,11 +205,11 @@ namespace X2D1NoRefTaskServer.Service
                                         smpPositions = smps,
                                         snrThreshold = taskSig.Snr,
                                     };
-                                    var result1 = await HttpHelper.PostRequestAsync<List<CpuCgResDto>>(baseUrl + "DetectCg/CpuCgMultiCalc", cgDto, token: cts.Token);
+                                    var result1 = HttpHelper.PostRequestAsync<List<CpuCgResDto>>(baseUrl + "DetectCg/CpuCgMultiCalc", cgDto, token: cts.Token).Result;
                                     if (result1.code != 200)
                                     {
                                         LogHelper.Error($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻主星超短CPU参估出错.{result1.msg}");
-                                        continue;
+                                        return;
                                     }
                                     LogHelper.Info($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻主星超短CPU参估完成.");
                                     cgDto = new CpuCgMultiDto()
@@ -222,20 +222,20 @@ namespace X2D1NoRefTaskServer.Service
                                         smpPositions = smps,
                                         snrThreshold = taskSig.Snr,
                                     };
-                                    var result2 = await HttpHelper.PostRequestAsync<List<CpuCgResDto>>(baseUrl + "DetectCg/CpuCgMultiCalc", cgDto, token: cts.Token);
+                                    var result2 = HttpHelper.PostRequestAsync<List<CpuCgResDto>>(baseUrl + "DetectCg/CpuCgMultiCalc", cgDto, token: cts.Token).Result;
                                     if (result2.code != 200)
                                     {
                                         LogHelper.Error($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻邻星超短CPU参估出错.{result2.msg}");
-                                        continue;
+                                        return;
                                     }
                                     LogHelper.Info($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻邻星超短CPU参估完成");
-                                    await HttpHelper.DeleteFileAsync(baseUrl, mainFile, adjaFile, cdbFile);
+                                    HttpHelper.DeleteFileAsync(baseUrl, mainFile, adjaFile, cdbFile).Wait();
                                     var data1 = result1.data;
                                     var data2 = result2.data;
                                     if (data1.Count != data2.Count || data1.Count != deteResp.data.Count)
                                     {
                                         LogHelper.Error($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻参估结果个数和检测结果个数不匹配");
-                                        continue;
+                                        return;
                                     }
                                     for (int i = 0; i < data1.Count; i++)
                                     {
@@ -276,7 +276,7 @@ namespace X2D1NoRefTaskServer.Service
                                                 x2D1.SxSnr = Math.Min(data1[i].Snr, data2[i].Snr);
                                                 x2D1.XdDto = data1[i].Dt * posDtoFactor - delay1.Value;
                                             }
-                                            var result = await HttpHelper.PostRequestAsync<PosResDto>(baseUrl + "Pos/PosX2D1NoXlNoParAsync", x2D1);
+                                            var result = HttpHelper.PostRequestAsync<PosResDto>(baseUrl + "Pos/PosX2D1NoXlNoParAsync", x2D1).Result;
                                             if (result.code != 200)
                                             {
                                                 LogHelper.Error($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻时隙位置{data1[i].Smpstart}定位异常.{result.msg}");
@@ -296,11 +296,190 @@ namespace X2D1NoRefTaskServer.Service
                                 catch (Exception ex)
                                 {
                                     LogHelper.Error($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻文件处理异常", ex);
-                                    continue;
+                                    return;
                                 }
+                            });
+                            //foreach (var xdInfos in xdgbInfos)
+                            //{
 
-                            }
+                            //    var finfos = xdInfos.ToList();
+                            //    var capTime = finfos.First().CapTime;
+                            //    if (capTime < dto.StartTime) continue;
+                            //    if (capTime > dto.EndTime) break;
+                            //    if (finfos.Count < 3)
+                            //    {
+                            //        LogHelper.Warning($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻文件数量只有{finfos.Count}个,跳过此组数据");
+                            //        continue;
+                            //    }
+                            //    //超短波信号
+                            //    var dinfo = finfos.FirstOrDefault(m => m.Ch == 1);
+                            //    if (dinfo == null)
+                            //    {
+                            //        LogHelper.Warning($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻未找到超短波信号ch1文件,跳过此组数据");
+                            //        continue;
+                            //    }
+                            //    var taskSig = dto.Sigs.FirstOrDefault(p => p.FreqUp == dinfo.FreqHz);
+                            //    if (taskSig == null)
+                            //    {
+                            //        continue;//跳过不是任务处理的频点
+                            //    }
+                            //    //主星
+                            //    var minfo = finfos.FirstOrDefault(m => m.Ch == 2);
+                            //    if (minfo == null)
+                            //    {
+                            //        LogHelper.Warning($"【任务{dto.ID}】信号[{taskSig.FreqUp / 1e6}],{capTime:yyyyMMddHHmmss}时刻未找到主星信号ch2文件,跳过此组数据");
+                            //        continue;
+                            //    }
+                            //    //邻1
+                            //    var ninfo = finfos.FirstOrDefault(m => m.Ch == 3);
+                            //    if (ninfo == null)
+                            //    {
+                            //        LogHelper.Info($"【任务{dto.ID}】信号[{taskSig.FreqUp / 1e6}],{capTime:yyyyMMddHHmmss}时刻未找到邻星信号ch3文件,跳过此组数据");
+                            //        continue;
+                            //    }
+                            //    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}],转发时延{delay2}us");
+                            //        string mainFile = await HttpHelper.UploadFileAsync(minfo.FilePath, baseUrl, token: cts.Token);//主星文件
+                            //        string adjaFile = await HttpHelper.UploadFileAsync(ninfo.FilePath, baseUrl, token: cts.Token);//邻星文件
+                            //        string cdbFile = await HttpHelper.UploadFileAsync(dinfo.FilePath, baseUrl, token: cts.Token);//超短文件
 
+                            //        DetectDto detectDto = new DetectDto()
+                            //        {
+                            //            file1 = cdbFile,//11局使用上行泄露信号进行检测
+                            //            dmcType = taskSig.SigType,//上行信号检测目前的算法只能使用基于能量的KY或IBS检测
+                            //            fsHz = minfo.FsHz,
+                            //            mergeRes = true,
+                            //            SigProc = true,
+                            //        };
+                            //        detectDto.dmcType = detectDto.dmcType & ~EnumSigCheckTypeDto.DAMA;//DAMA不支持上行信号检测,在这里移除掉
+                            //        if ((int)detectDto.dmcType == 0)
+                            //        {
+                            //            LogHelper.Warning($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},上行信号不支持DAMA检测,请使用能量检测");
+                            //            continue;
+                            //        }
+                            //        if (detectDto.dmcType == EnumSigCheckTypeDto.Normal)
+                            //        {
+                            //            LogHelper.Warning($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},上行信号不支持Normal检测");
+                            //            continue;
+                            //        }
+                            //        var deteResp = await HttpHelper.PostRequestAsync<List<DetectResDto>>(baseUrl + "DetectCg/DetectCalc", detectDto, token: cts.Token);
+                            //        if (deteResp.code != 200)
+                            //        {
+                            //            LogHelper.Error($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻信号检测出错.{deteResp.msg}");
+                            //            continue;
+                            //        }
+                            //        LogHelper.Info($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻信号检测完成,共{deteResp.data.Count}个时隙");
+                            //        var smps = deteResp.data.Select(m => new SmpPosition(m.Start, m.Length)).ToList();//怎么补0?
+                            //        var cgDto = new CpuCgMultiDto()
+                            //        {
+                            //            dtCenter = 260000,
+                            //            dtRange = 50000,
+                            //            file1 = cdbFile,
+                            //            file2 = mainFile,
+                            //            samplingRate = minfo.FsHz,
+                            //            smpPositions = smps,
+                            //            snrThreshold = taskSig.Snr,
+                            //        };
+                            //        var result1 = await HttpHelper.PostRequestAsync<List<CpuCgResDto>>(baseUrl + "DetectCg/CpuCgMultiCalc", cgDto, token: cts.Token);
+                            //        if (result1.code != 200)
+                            //        {
+                            //            LogHelper.Error($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻主星超短CPU参估出错.{result1.msg}");
+                            //            continue;
+                            //        }
+                            //        LogHelper.Info($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻主星超短CPU参估完成.");
+                            //        cgDto = new CpuCgMultiDto()
+                            //        {
+                            //            dtCenter = 260000,
+                            //            dtRange = 50000,
+                            //            file1 = cdbFile,
+                            //            file2 = adjaFile,
+                            //            samplingRate = minfo.FsHz,
+                            //            smpPositions = smps,
+                            //            snrThreshold = taskSig.Snr,
+                            //        };
+                            //        var result2 = await HttpHelper.PostRequestAsync<List<CpuCgResDto>>(baseUrl + "DetectCg/CpuCgMultiCalc", cgDto, token: cts.Token);
+                            //        if (result2.code != 200)
+                            //        {
+                            //            LogHelper.Error($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻邻星超短CPU参估出错.{result2.msg}");
+                            //            continue;
+                            //        }
+                            //        LogHelper.Info($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻邻星超短CPU参估完成");
+                            //        await HttpHelper.DeleteFileAsync(baseUrl, mainFile, adjaFile, cdbFile);
+                            //        var data1 = result1.data;
+                            //        var data2 = result2.data;
+                            //        if (data1.Count != data2.Count || data1.Count != deteResp.data.Count)
+                            //        {
+                            //            LogHelper.Error($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻参估结果个数和检测结果个数不匹配");
+                            //            continue;
+                            //        }
+                            //        for (int i = 0; i < data1.Count; i++)
+                            //        {
+                            //            try
+                            //            {
+                            //                if (cts.IsCancellationRequested) break;
+                            //                X2D1NoXlNoParlPosDto x2D1 = new X2D1NoXlNoParlPosDto()
+                            //                {
+                            //                    TaskID = dto.ID,
+                            //                    SigTime = minfo.CapTime.AddSeconds(data1[i].Smpstart / minfo.FsHz),
+                            //                    MainCode = minfo.SatId,
+                            //                    AdjaCode = ninfo.SatId,
+                            //                    XdDfo = data2[i].Df,
+                            //                    XdSnr = data2[i].Snr,
+                            //                    SatTxLon = dto.CapLon,
+                            //                    SatTxLat = dto.CapLat,
+                            //                    CdbTxLon = dto.CapLon,
+                            //                    CdbTxLat = dto.CapLat,
+                            //                    FreqDown = minfo.FreqHz,
+                            //                    FreqUp = dinfo.FreqHz,
+                            //                    CheckRes = new CheckResDto()
+                            //                    {
+                            //                        FileName = Path.GetFileName(dinfo.FilePath),
+                            //                        ModRate = deteResp.data[i].ModRate,
+                            //                        ModType = deteResp.data[i].ModType,
+                            //                        SmpCount = deteResp.data[i].Length,
+                            //                        SmpStart = deteResp.data[i].Start,
+                            //                        UserName = deteResp.data[i].UserName,
+                            //                        PosCheckType = deteResp.data[i].DmcType.GetEnumByDisplayName<EnumPosCheckTypeDto>(),
+                            //                        FfcHz = deteResp.data[i].FfcHz,
+                            //                    }
+                            //                };
+                            //                if (data1[i].Snr > 0 && data2[i].Snr > 0)
+                            //                {
+                            //                    //卫星转发某些频点可能有时延,无参定位由于不能抵消需要减去这个时延
+                            //                    x2D1.SxDto = data1[i].Dt * posDtoFactor - data2[i].Dt * posDtoFactor - delay1.Value + delay2.Value;
+                            //                    x2D1.SxDfo = data1[i].Df - data2[i].Df;
+                            //                    x2D1.SxSnr = Math.Min(data1[i].Snr, data2[i].Snr);
+                            //                    x2D1.XdDto = data1[i].Dt * posDtoFactor - delay1.Value;
+                            //                }
+                            //                var result = await HttpHelper.PostRequestAsync<PosResDto>(baseUrl + "Pos/PosX2D1NoXlNoParAsync", x2D1);
+                            //                if (result.code != 200)
+                            //                {
+                            //                    LogHelper.Error($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻时隙位置{data1[i].Smpstart}定位异常.{result.msg}");
+                            //                }
+                            //            }
+                            //            catch (Exception ex)
+                            //            {
+                            //                LogHelper.Error($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻时隙位置{data1[i].Smpstart}定位异常", ex);
+                            //            }
+                            //        }
+                            //        LogHelper.Info($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻定位完成");
+                            //        LogHelper.Info($"-----------------------------------------------------------------");
+                            //    }
+                            //    catch (TaskCanceledException)
+                            //    {
+                            //    }
+                            //    catch (Exception ex)
+                            //    {
+                            //        LogHelper.Error($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻文件处理异常", ex);
+                            //        continue;
+                            //    }
+                            //}
 
                         }
                         ResetTime(formatFlag, ref preTime);
@@ -443,40 +622,40 @@ namespace X2D1NoRefTaskServer.Service
                                 continue;//文件无法打开
                             hasFile = true;
                             var xdgbInfos = sameTimeFiles.GroupBy(m => m.XdIndex);
-                            foreach (var xdInfos in xdgbInfos)
+                            Parallel.ForEach(xdgbInfos, xdInfos =>
                             {
                                 if (cts.IsCancellationRequested) return;
                                 var finfos = xdInfos.ToList();
                                 if (finfos.Count < 3)
                                 {
                                     LogHelper.Warning($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻文件数量只有{finfos.Count}个,跳过此组数据");
-                                    continue;
+                                    return;
                                 }
                                 //超短波信号
                                 var dinfo = finfos.FirstOrDefault(m => m.Ch == 1);
                                 if (dinfo == null)
                                 {
                                     LogHelper.Warning($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻未找到超短波信号ch1文件,跳过此组数据");
-                                    continue;
+                                    return;
                                 }
                                 var taskSig = dto.Sigs.FirstOrDefault(p => p.FreqUp == dinfo.FreqHz);
                                 if (taskSig == null)
                                 {
-                                    continue;//跳过不是任务处理的频点
+                                    return;//跳过不是任务处理的频点
                                 }
                                 //主星
                                 var minfo = finfos.FirstOrDefault(m => m.Ch == 2);
                                 if (minfo == null)
                                 {
                                     LogHelper.Warning($"【任务{dto.ID}】信号[{taskSig.FreqUp / 1e6}],{capTime:yyyyMMddHHmmss}时刻未找到主星信号ch2文件,跳过此组数据");
-                                    continue;
+                                    return;
                                 }
                                 //邻1
                                 var ninfo = finfos.FirstOrDefault(m => m.Ch == 3);
                                 if (ninfo == null)
                                 {
                                     LogHelper.Info($"【任务{dto.ID}】信号[{taskSig.FreqUp / 1e6}],{capTime:yyyyMMddHHmmss}时刻未找到邻星信号ch3文件,跳过此组数据");
-                                    continue;
+                                    return;
                                 }
                                 try
                                 {
@@ -486,9 +665,9 @@ namespace X2D1NoRefTaskServer.Service
                                     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}],转发时延{delay2}us");
-                                    string mainFile = await HttpHelper.UploadFileAsync(minfo.FilePath, baseUrl, token: cts.Token);//主星文件
-                                    string adjaFile = await HttpHelper.UploadFileAsync(ninfo.FilePath, baseUrl, token: cts.Token);//邻星文件
-                                    string cdbFile = await HttpHelper.UploadFileAsync(dinfo.FilePath, baseUrl, token: cts.Token);//超短文件
+                                    string mainFile = HttpHelper.UploadFileAsync(minfo.FilePath, baseUrl, token: cts.Token).Result;//主星文件
+                                    string adjaFile = HttpHelper.UploadFileAsync(ninfo.FilePath, baseUrl, token: cts.Token).Result;//邻星文件
+                                    string cdbFile = HttpHelper.UploadFileAsync(dinfo.FilePath, baseUrl, token: cts.Token).Result;//超短文件
                                     DetectDto detectDto = new DetectDto()
                                     {
                                         file1 = cdbFile,//11局使用上行泄露信号进行检测
@@ -501,18 +680,18 @@ namespace X2D1NoRefTaskServer.Service
                                     if ((int)detectDto.dmcType == 0)
                                     {
                                         LogHelper.Warning($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},上行信号不支持DAMA检测");
-                                        continue;
+                                        return;
                                     }
                                     if (detectDto.dmcType == EnumSigCheckTypeDto.Normal)
                                     {
                                         LogHelper.Warning($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},上行信号不支持Normal检测");
-                                        continue;
+                                        return;
                                     }
-                                    var deteResp = await HttpHelper.PostRequestAsync<List<DetectResDto>>(baseUrl + "DetectCg/DetectCalc", detectDto, token: cts.Token);
+                                    var deteResp = HttpHelper.PostRequestAsync<List<DetectResDto>>(baseUrl + "DetectCg/DetectCalc", detectDto, token: cts.Token).Result;
                                     if (deteResp.code != 200)
                                     {
                                         LogHelper.Error($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻信号检测出错.{deteResp.msg}");
-                                        continue;
+                                        return;
                                     }
                                     LogHelper.Info($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻信号检测完成,共{deteResp.data.Count}个时隙");
                                     var smps = deteResp.data.Select(m => new SmpPosition(m.Start, m.Length)).ToList();//怎么补0?
@@ -526,11 +705,11 @@ namespace X2D1NoRefTaskServer.Service
                                         smpPositions = smps,
                                         snrThreshold = taskSig.Snr,
                                     };
-                                    var result1 = await HttpHelper.PostRequestAsync<List<CpuCgResDto>>(baseUrl + "DetectCg/CpuCgMultiCalc", cgDto, token: cts.Token);
+                                    var result1 = HttpHelper.PostRequestAsync<List<CpuCgResDto>>(baseUrl + "DetectCg/CpuCgMultiCalc", cgDto, token: cts.Token).Result;
                                     if (result1.code != 200)
                                     {
                                         LogHelper.Error($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻主星超短CPU参估出错.{result1.msg}");
-                                        continue;
+                                        return;
                                     }
                                     LogHelper.Info($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻主星超短CPU参估完成.");
                                     cgDto = new CpuCgMultiDto()
@@ -543,20 +722,20 @@ namespace X2D1NoRefTaskServer.Service
                                         smpPositions = smps,
                                         snrThreshold = taskSig.Snr,
                                     };
-                                    var result2 = await HttpHelper.PostRequestAsync<List<CpuCgResDto>>(baseUrl + "DetectCg/CpuCgMultiCalc", cgDto, token: cts.Token);
+                                    var result2 = HttpHelper.PostRequestAsync<List<CpuCgResDto>>(baseUrl + "DetectCg/CpuCgMultiCalc", cgDto, token: cts.Token).Result;
                                     if (result2.code != 200)
                                     {
                                         LogHelper.Error($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻邻星超短CPU参估出错.{result2.msg}");
-                                        continue;
+                                        return;
                                     }
                                     LogHelper.Info($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻邻星超短CPU参估完成");
-                                    await HttpHelper.DeleteFileAsync(baseUrl, mainFile, adjaFile, cdbFile);
+                                    HttpHelper.DeleteFileAsync(baseUrl, mainFile, adjaFile, cdbFile).Wait();
                                     var data1 = result1.data;
                                     var data2 = result2.data;
                                     if (data1.Count != data2.Count || data1.Count != deteResp.data.Count)
                                     {
                                         LogHelper.Error($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻参估结果个数和检测结果个数不匹配");
-                                        continue;
+                                        return;
                                     }
                                     for (int i = 0; i < data1.Count; i++)
                                     {
@@ -596,7 +775,7 @@ namespace X2D1NoRefTaskServer.Service
                                                 x2D1.SxSnr = Math.Min(data1[i].Snr, data2[i].Snr);
                                                 x2D1.XdDto = data1[i].Dt * posDtoFactor - delay1.Value;
                                             }
-                                            var result = await HttpHelper.PostRequestAsync<PosResDto>(baseUrl + "Pos/PosX2D1NoXlNoParAsync", x2D1);
+                                            var result = HttpHelper.PostRequestAsync<PosResDto>(baseUrl + "Pos/PosX2D1NoXlNoParAsync", x2D1).Result;
                                             if (result.code != 200)
                                             {
                                                 LogHelper.Error($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻时隙位置{data1[i].Smpstart}定位异常.{result.msg}");
@@ -617,10 +796,187 @@ namespace X2D1NoRefTaskServer.Service
                                 catch (Exception ex)
                                 {
                                     LogHelper.Error($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻文件处理异常", ex);
-                                    continue;
+                                    return;
                                 }
+                            });
+                            //foreach (var xdInfos in xdgbInfos)
+                            //{
+                            //    if (cts.IsCancellationRequested) return;
+                            //    var finfos = xdInfos.ToList();
+                            //    if (finfos.Count < 3)
+                            //    {
+                            //        LogHelper.Warning($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻文件数量只有{finfos.Count}个,跳过此组数据");
+                            //        continue;
+                            //    }
+                            //    //超短波信号
+                            //    var dinfo = finfos.FirstOrDefault(m => m.Ch == 1);
+                            //    if (dinfo == null)
+                            //    {
+                            //        LogHelper.Warning($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻未找到超短波信号ch1文件,跳过此组数据");
+                            //        continue;
+                            //    }
+                            //    var taskSig = dto.Sigs.FirstOrDefault(p => p.FreqUp == dinfo.FreqHz);
+                            //    if (taskSig == null)
+                            //    {
+                            //        continue;//跳过不是任务处理的频点
+                            //    }
+                            //    //主星
+                            //    var minfo = finfos.FirstOrDefault(m => m.Ch == 2);
+                            //    if (minfo == null)
+                            //    {
+                            //        LogHelper.Warning($"【任务{dto.ID}】信号[{taskSig.FreqUp / 1e6}],{capTime:yyyyMMddHHmmss}时刻未找到主星信号ch2文件,跳过此组数据");
+                            //        continue;
+                            //    }
+                            //    //邻1
+                            //    var ninfo = finfos.FirstOrDefault(m => m.Ch == 3);
+                            //    if (ninfo == null)
+                            //    {
+                            //        LogHelper.Info($"【任务{dto.ID}】信号[{taskSig.FreqUp / 1e6}],{capTime:yyyyMMddHHmmss}时刻未找到邻星信号ch3文件,跳过此组数据");
+                            //        continue;
+                            //    }
+                            //    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}],转发时延{delay2}us");
+                            //        string mainFile = await HttpHelper.UploadFileAsync(minfo.FilePath, baseUrl, token: cts.Token);//主星文件
+                            //        string adjaFile = await HttpHelper.UploadFileAsync(ninfo.FilePath, baseUrl, token: cts.Token);//邻星文件
+                            //        string cdbFile = await HttpHelper.UploadFileAsync(dinfo.FilePath, baseUrl, token: cts.Token);//超短文件
+                            //        DetectDto detectDto = new DetectDto()
+                            //        {
+                            //            file1 = cdbFile,//11局使用上行泄露信号进行检测
+                            //            dmcType = taskSig.SigType,//上行信号检测目前的算法只能使用基于能量的KY或IBS检测
+                            //            fsHz = minfo.FsHz,
+                            //            mergeRes = true,
+                            //            SigProc = true,
+                            //        };
+                            //        detectDto.dmcType = detectDto.dmcType & ~EnumSigCheckTypeDto.DAMA;//DAMA不支持上行信号检测,在这里移除掉
+                            //        if ((int)detectDto.dmcType == 0)
+                            //        {
+                            //            LogHelper.Warning($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},上行信号不支持DAMA检测");
+                            //            continue;
+                            //        }
+                            //        if (detectDto.dmcType == EnumSigCheckTypeDto.Normal)
+                            //        {
+                            //            LogHelper.Warning($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},上行信号不支持Normal检测");
+                            //            continue;
+                            //        }
+                            //        var deteResp = await HttpHelper.PostRequestAsync<List<DetectResDto>>(baseUrl + "DetectCg/DetectCalc", detectDto, token: cts.Token);
+                            //        if (deteResp.code != 200)
+                            //        {
+                            //            LogHelper.Error($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻信号检测出错.{deteResp.msg}");
+                            //            continue;
+                            //        }
+                            //        LogHelper.Info($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻信号检测完成,共{deteResp.data.Count}个时隙");
+                            //        var smps = deteResp.data.Select(m => new SmpPosition(m.Start, m.Length)).ToList();//怎么补0?
+                            //        var cgDto = new CpuCgMultiDto()
+                            //        {
+                            //            dtCenter = 260000,
+                            //            dtRange = 50000,
+                            //            file1 = cdbFile,
+                            //            file2 = mainFile,
+                            //            samplingRate = minfo.FsHz,
+                            //            smpPositions = smps,
+                            //            snrThreshold = taskSig.Snr,
+                            //        };
+                            //        var result1 = await HttpHelper.PostRequestAsync<List<CpuCgResDto>>(baseUrl + "DetectCg/CpuCgMultiCalc", cgDto, token: cts.Token);
+                            //        if (result1.code != 200)
+                            //        {
+                            //            LogHelper.Error($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻主星超短CPU参估出错.{result1.msg}");
+                            //            continue;
+                            //        }
+                            //        LogHelper.Info($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻主星超短CPU参估完成.");
+                            //        cgDto = new CpuCgMultiDto()
+                            //        {
+                            //            dtCenter = 260000,
+                            //            dtRange = 50000,
+                            //            file1 = cdbFile,
+                            //            file2 = adjaFile,
+                            //            samplingRate = minfo.FsHz,
+                            //            smpPositions = smps,
+                            //            snrThreshold = taskSig.Snr,
+                            //        };
+                            //        var result2 = await HttpHelper.PostRequestAsync<List<CpuCgResDto>>(baseUrl + "DetectCg/CpuCgMultiCalc", cgDto, token: cts.Token);
+                            //        if (result2.code != 200)
+                            //        {
+                            //            LogHelper.Error($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻邻星超短CPU参估出错.{result2.msg}");
+                            //            continue;
+                            //        }
+                            //        LogHelper.Info($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻邻星超短CPU参估完成");
+                            //        await HttpHelper.DeleteFileAsync(baseUrl, mainFile, adjaFile, cdbFile);
+                            //        var data1 = result1.data;
+                            //        var data2 = result2.data;
+                            //        if (data1.Count != data2.Count || data1.Count != deteResp.data.Count)
+                            //        {
+                            //            LogHelper.Error($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻参估结果个数和检测结果个数不匹配");
+                            //            continue;
+                            //        }
+                            //        for (int i = 0; i < data1.Count; i++)
+                            //        {
+                            //            try
+                            //            {
+                            //                if (cts.IsCancellationRequested) return;
+                            //                X2D1NoXlNoParlPosDto x2D1 = new X2D1NoXlNoParlPosDto()
+                            //                {
+                            //                    TaskID = dto.ID,
+                            //                    SigTime = minfo.CapTime.AddSeconds(data1[i].Smpstart / minfo.FsHz),
+                            //                    MainCode = minfo.SatId,
+                            //                    AdjaCode = ninfo.SatId,
+                            //                    XdDfo = data2[i].Df,
+                            //                    XdSnr = data2[i].Snr,
+                            //                    SatTxLon = dto.CapLon,
+                            //                    SatTxLat = dto.CapLat,
+                            //                    CdbTxLon = dto.CapLon,
+                            //                    CdbTxLat = dto.CapLat,
+                            //                    FreqDown = minfo.FreqHz,
+                            //                    FreqUp = dinfo.FreqHz,
+                            //                    CheckRes = new CheckResDto()
+                            //                    {
+                            //                        FileName = Path.GetFileName(dinfo.FilePath),
+                            //                        ModRate = deteResp.data[i].ModRate,
+                            //                        ModType = deteResp.data[i].ModType,
+                            //                        SmpCount = deteResp.data[i].Length,
+                            //                        SmpStart = deteResp.data[i].Start,
+                            //                        UserName = deteResp.data[i].UserName,
+                            //                        PosCheckType = deteResp.data[i].DmcType.GetEnumByDisplayName<EnumPosCheckTypeDto>(),
+                            //                    }
+                            //                };
+                            //                if (data1[i].Snr > 0 && data2[i].Snr > 0)
+                            //                {
+                            //                    //卫星转发某些频点可能有时延,无参定位由于不能抵消需要减去这个时延
+                            //                    x2D1.SxDto = data1[i].Dt * posDtoFactor - data2[i].Dt * posDtoFactor - delay1.Value + delay2.Value;
+                            //                    x2D1.SxDfo = data1[i].Df - data2[i].Df;
+                            //                    x2D1.SxSnr = Math.Min(data1[i].Snr, data2[i].Snr);
+                            //                    x2D1.XdDto = data1[i].Dt * posDtoFactor - delay1.Value;
+                            //                }
+                            //                var result = await HttpHelper.PostRequestAsync<PosResDto>(baseUrl + "Pos/PosX2D1NoXlNoParAsync", x2D1);
+                            //                if (result.code != 200)
+                            //                {
+                            //                    LogHelper.Error($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻时隙位置{data1[i].Smpstart}定位异常.{result.msg}");
+                            //                }
+                            //            }
+                            //            catch (Exception ex)
+                            //            {
+                            //                LogHelper.Error($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻时隙位置{data1[i].Smpstart}定位异常", ex);
+                            //            }
+                            //        }
+                            //        LogHelper.Info($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻定位完成");
+                            //        LogHelper.Info($"-----------------------------------------------------------------");
 
-                            }
+                            //    }
+                            //    catch (TaskCanceledException)
+                            //    {
+                            //    }
+                            //    catch (Exception ex)
+                            //    {
+                            //        LogHelper.Error($"【任务{dto.ID}】信号{taskSig.FreqUp / 1e6:f3},{capTime:yyyyMMddHHmmss}时刻文件处理异常", ex);
+                            //        continue;
+                            //    }
+
+                            //}
                             ResetTime(formatFlag, ref preTime);
                             preTime = capTime;
 

+ 16 - 7
Service/X2D1TaskServer54/MainForm.cs

@@ -33,16 +33,25 @@ namespace X3TaskServer54
             var svrID = ConfigurationManager.AppSettings["SvrID"].Trim();
             var posPlatformAddr = ConfigurationManager.AppSettings["PosPlatformAddr"].Trim();
             this.Text = EnumSvrType.X3NoRefHistoryTask.GetEnumDisplayName() + "-" + svrID;
-            string localIp = null;
-            var rsp = await HttpHelper.GetRequestAsync<string>($"{posPlatformAddr}/api/task/getclientip", 10);
-            if (rsp.code == 0)
+            string localIp;
+            string getIpUrl = $"{posPlatformAddr}/api/task/getclientip";
+            try
             {
-                LogHelper.Error(rsp.msg);
-                return;
+                var rsp = await HttpHelper.GetRequestAsync<string>(getIpUrl, 10);
+                if (rsp.code == 0)
+                {
+                    LogHelper.Error(rsp.msg);
+                    return;
+                }
+                else
+                {
+                    localIp = rsp.data;
+                }
             }
-            else
+            catch (Exception ex)
             {
-                localIp = rsp.data;
+                LogHelper.Error($"无法连接到平台{getIpUrl},请检测地址是否正确并确保平台防火墙允许端口通过", ex);
+                return;
             }
             LogHelper.Info($"本机IP={localIp}");
             Startup.Start(port, $"{System.Reflection.Assembly.GetExecutingAssembly().GetName().Name}.xml", "XdCxRhDW.Dto.xml");

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

@@ -107,6 +107,7 @@ public static class GridControlEx
         string name = GetLayoutName();
         void SaveLayoutAction()
         {
+
             Form frm = null;
             if (view.Tag is SearchLookUpEdit edit)
                 frm = edit.FindForm();

+ 2 - 1
XdCxRhDW.App/ServerContext.cs

@@ -54,8 +54,9 @@ namespace XdCxRhDW.App
                             if (find == null) return;
                             list.Remove(find);
                         }
+
+                        Messenger.Defalut.Pub("服务集合改变", list);
                     }
-                    Messenger.Defalut.Pub("服务集合改变", list);
                 }
                 catch (Exception ex)
                 {

+ 15 - 7
XdCxRhDW.App/UserControl/CtrlSvrs.cs

@@ -1,4 +1,5 @@
-using DevExpress.Utils.Html;
+using DevExpress.Mvvm.Native;
+using DevExpress.Utils.Html;
 using DevExpress.XtraEditors;
 using System;
 using System.Collections.Generic;
@@ -8,6 +9,7 @@ using System.Data.Entity;
 using System.Drawing;
 using System.Linq;
 using System.Text;
+using System.Threading;
 using System.Threading.Tasks;
 using System.Windows.Controls;
 using System.Windows.Documents;
@@ -16,6 +18,7 @@ using XdCxRhDW.App.Controllers;
 using XdCxRhDW.App.EditForms;
 using XdCxRhDW.App.Model;
 using XdCxRhDW.Dto;
+using XdCxRhDW.Repostory;
 
 namespace XdCxRhDW.App.UserControl
 {
@@ -25,20 +28,25 @@ namespace XdCxRhDW.App.UserControl
         public CtrlSvrs()
         {
             InitializeComponent();
-            gridSvrs.UseDefault(list).UseGroup().UseRowNumber();
-            gridSvrs.UseEdit();
-            var linkEdit = new DevExpress.XtraEditors.Repository.RepositoryItemHyperLinkEdit();
-            this.gridSvrs.RepositoryItems.Add(linkEdit);
-            gridView1.Columns[nameof(ModelSvr.SwaggerAddr)].ColumnEdit = linkEdit;
-            gridView1.Columns[nameof(ModelSvr.SwaggerAddr)].OptionsColumn.AllowEdit = true;
         }
 
 
         private void CtrlSvrs_Load(object sender, EventArgs e)
         {
+            gridSvrs.UseDefault(list).UseGroup().UseRowNumber();
+            gridSvrs.UseEdit();
+            var linkEdit = new DevExpress.XtraEditors.Repository.RepositoryItemHyperLinkEdit();
+            this.gridSvrs.RepositoryItems.Add(linkEdit);
+            if (gridView1.Columns.Count > 0)
+            {
+                gridView1.Columns[nameof(ModelSvr.SwaggerAddr)].ColumnEdit = linkEdit;
+                gridView1.Columns[nameof(ModelSvr.SwaggerAddr)].OptionsColumn.AllowEdit = true;
+            }
             this.list.AddRange(ServerContext.Instance.GetAll());
             gridView1.RefreshData();
             Messenger.Defalut.Sub<List<ModelSvr>>("服务集合改变", RefreshSvr);
+            if (SysConfig.Config != null)
+                this.simpleLabelItem2.Text = $"如果服务无法注册到平台需要到平台所在设备允许防火墙通过平台端口{SysConfig.Config.HttpPort}";
 
         }
         private void RefreshSvr(List<ModelSvr> items)

+ 1 - 1
XdCxRhDW.Sender/XdCxRhDW.Sender.csproj

@@ -91,7 +91,7 @@
     <EmbeddedResource Include="Form1.resx">
       <DependentUpon>Form1.cs</DependentUpon>
     </EmbeddedResource>
-    <EmbeddedResource Include="Properties\licenses.licx" />
+    <None Include="Properties\licenses.licx" />
     <EmbeddedResource Include="Properties\Resources.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>Resources.Designer.cs</LastGenOutput>