using DevExpress.XtraPrinting.Native.Properties; using Google.Protobuf.WellKnownTypes; using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using XdCxRhDW.Dto; namespace XdCxRhDW.X2D1TaskServer54.Service { //业务逻辑处理类 public class HistoryTaskService { private readonly string baseUrl; CancellationTokenSource cts; public HistoryTaskService() { var posPlatformAddr = ConfigurationManager.AppSettings["PosPlatformAddr"].Trim();//like http://127.0.0.1:8091 or http://127.0.0.1:8091/ if (posPlatformAddr.EndsWith("/")) this.baseUrl = posPlatformAddr + "api/"; else this.baseUrl = posPlatformAddr + "/api/"; } public void StartAsync(X2D1HistoryTaskHandleDto taskInfo) { cts = new CancellationTokenSource(); Task.Run(async () => { //点击定位平台右上角查看接口可以在浏览器中查看平台提供的所有接口详细信息 while (!cts.IsCancellationRequested) { try { #region 第1步,上传检测参估需要的数据文件执行检测 string mainFile = await HttpHelper.UploadFileAsync("E:\\1.dat", baseUrl + "File/UploadFileAsync", token: cts.Token);//主星文件 string adjaFile = await HttpHelper.UploadFileAsync("E:\\2.dat", baseUrl + "File/UploadFileAsync", token: cts.Token);//邻星文件 string cdbFile = await HttpHelper.UploadFileAsync("E:\\2.dat", baseUrl + "File/UploadFileAsync", token: cts.Token);//超短文件 string url = baseUrl + "POST/Api/DetectCg/DetectCalc";//信号检测 var httpResp1 = await HttpHelper.PostRequestAsync>(url, new DetectDto() { file1 = mainFile,//用到文件的地方必须使用先上传后返回的文件 fsHz = 96000, dmcType = DmcType.DAMA }); if (httpResp1.code == 0) { LogHelper.Error(httpResp1.msg); } var slots = httpResp1.data; #endregion #region 第2步,多时隙参估 url = baseUrl + "POST/Api/DetectCg/CpuCgMultiCalc";//CPU参估(多个时隙) var httpResp2 = await HttpHelper.PostRequestAsync>(url, new CpuCgMultiDto(), token: cts.Token); if (httpResp2.code == 0) { LogHelper.Error(httpResp2.msg); } #endregion #region 第3步,每个时隙调用定位算法 url = baseUrl + "Pos/PosX2D1NoXlNoParAsync";//两星一地无参无星历定位 foreach (var slot in slots) { if (cts.IsCancellationRequested) break; var httpResp3 = await HttpHelper.PostRequestAsync(url, new X2D1NoXlNoParlPosDto(), token: cts.Token); if (httpResp3.code == 0) { LogHelper.Error(httpResp3.msg); } } #endregion } catch (Exception ex) { LogHelper.Error("任务执行出错", ex); } } },cts.Token); } public void Stop() { cts?.Cancel(); } } }