|
@@ -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;
|
|
|
|