|
@@ -102,6 +102,9 @@ namespace CheckServer
|
|
|
ModuleType = EnumModuleType.Soft,
|
|
|
ModuleState = EnumModuleState.正常,
|
|
|
});
|
|
|
+
|
|
|
+ Do();
|
|
|
+
|
|
|
bool preSucceed = false;
|
|
|
long id = 0;
|
|
|
while (!this.Disposing)
|
|
@@ -189,7 +192,6 @@ namespace CheckServer
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
- var port = Convert.ToInt32(ConfigurationManager.AppSettings["LocalHttpPort"].Trim());
|
|
|
var svrID = ConfigurationManager.AppSettings["SvrID"].Trim();
|
|
|
var posPlatformAddr = ConfigurationManager.AppSettings["PosPlatformAddr"].Trim();
|
|
|
string url;
|
|
@@ -202,7 +204,6 @@ namespace CheckServer
|
|
|
SvrID = svrID,
|
|
|
SvrType = svrType,
|
|
|
ReportType = 1,
|
|
|
- BaseHttpAddr = $"http://{IpHelper.GetLocalIp()}:{port}",
|
|
|
DevId = ConfigurationManager.AppSettings["DevID"].Trim(),
|
|
|
ModuleType = EnumModuleType.Soft,
|
|
|
ModuleState = EnumModuleState.Error,
|
|
@@ -214,5 +215,93 @@ namespace CheckServer
|
|
|
_ = LogHelper.Error("服务状态上报异常", ex);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ private void Do()
|
|
|
+ {
|
|
|
+ Task.Run(async () =>
|
|
|
+ {
|
|
|
+ while (true)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ string baseurl = ConfigurationManager.AppSettings["PosPlatformAddr"].Trim() + "/api/";
|
|
|
+ var taskRsp = await HttpHelper.PostRequestAsync<List<TaskQueryResDto>>(baseurl + "Result/GetRunningTasks", null);
|
|
|
+ if (taskRsp.code != 200)
|
|
|
+ {
|
|
|
+ await LogHelper.Error($"查询执行中的任务失败.{taskRsp.msg}");
|
|
|
+ await Task.Delay(10000);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ var taskIds = taskRsp.data.Select(p => p.TaskID).ToList();
|
|
|
+ if (!taskIds.Any())
|
|
|
+ {
|
|
|
+ await Task.Delay(10000);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ foreach (var taskId in taskIds)
|
|
|
+ {
|
|
|
+ var taskFreqsRsp = await HttpHelper.PostRequestAsync<List<TaskFreqResDto>>(baseurl + "Result/GetTaskFreqs", new TaskFreqQueryDto()
|
|
|
+ {
|
|
|
+ TaskInfoID = taskId
|
|
|
+ });
|
|
|
+ if (taskFreqsRsp.code != 200)
|
|
|
+ {
|
|
|
+ await LogHelper.Error($"查询任务频点信息失败.{taskFreqsRsp.msg},任务ID={taskId}");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ foreach (var item in taskFreqsRsp.data)
|
|
|
+ {
|
|
|
+ var cgResRsp = await HttpHelper.PostRequestAsync<List<CgResDto>>(baseurl + "Result/GetNoneDbScanCgRes", new DbsacnCgResQueryDto()
|
|
|
+ {
|
|
|
+ TaskInfoID = taskId,
|
|
|
+ TarFrequpHz = item.FreqUpHz,
|
|
|
+ });
|
|
|
+ if (cgResRsp.code != 200)
|
|
|
+ {
|
|
|
+ await LogHelper.Error($"查询未编批的参估结果信息失败.{taskFreqsRsp.msg},任务ID={taskId},上行频点={item.FreqUpHz}");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ var cgRes = cgResRsp.data;
|
|
|
+
|
|
|
+ var groupByData = cgRes.GroupBy(p => p.SigTime);
|
|
|
+
|
|
|
+ //重复时间的数据只取一条
|
|
|
+ List<CgResDto> listDto = new List<CgResDto>();
|
|
|
+ foreach (var groupByItem in groupByData)
|
|
|
+ {
|
|
|
+ listDto.Add(groupByItem.First());
|
|
|
+ }
|
|
|
+ if (listDto.Count < 10) continue;//至少10条记录时开始编批
|
|
|
+ var firstTime = listDto.First().SigTime;
|
|
|
+ double t1 = (firstTime - new DateTime(2020, 1, 1, 0, 0, 0)).TotalSeconds;
|
|
|
+ //将参估结果组装为编批结构
|
|
|
+ List<Dbscan.Data> list = new List<Dbscan.Data>();
|
|
|
+ foreach (var cgItem in listDto)
|
|
|
+ {
|
|
|
+ Dbscan.Data data = new Dbscan.Data()
|
|
|
+ {
|
|
|
+ ID = cgItem.ID,
|
|
|
+ Point = new Dbscan.Point(t1 + (cgItem.SigTime - firstTime).TotalSeconds, cgItem.Dto1.Value * 100 + cgItem.Dto2.Value)
|
|
|
+ };
|
|
|
+ list.Add(data);
|
|
|
+ }
|
|
|
+ var clusters = Dbscan.Dbscan.CalculateClusters(
|
|
|
+ list,
|
|
|
+ epsilon: 100,//邻域半径(需要根据实际情况调整)
|
|
|
+ minimumPointsPerCluster: 1);//每个聚合最少个数
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ await Task.Delay(5000);
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ await LogHelper.Error($"参估编批处理异常", ex);
|
|
|
+ await Task.Delay(30000);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|
|
|
}
|