|
@@ -5,6 +5,7 @@ import cn.hutool.json.JSONObject;
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
import jakarta.annotation.Resource;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.eco.als.domain.Warning;
|
|
|
import org.eco.als.domain.bo.AlgorithmBo;
|
|
|
import org.eco.als.domain.bo.PreProcessingBo;
|
|
|
import org.eco.als.domain.vo.DataImportVo;
|
|
@@ -14,8 +15,8 @@ import org.eco.als.service.IAlgorithmService;
|
|
|
import org.eco.als.service.IDataImportService;
|
|
|
import org.eco.als.service.IModelService;
|
|
|
import org.eco.als.service.IPreProcessingService;
|
|
|
+import org.eco.als.service.IWarningService;
|
|
|
import org.eco.als.utils.CsvUtils;
|
|
|
-import org.eco.common.core.config.EcoConfig;
|
|
|
import org.eco.common.core.exception.BusinessException;
|
|
|
import org.eco.common.core.utils.HttpUtils;
|
|
|
import org.eco.system.domain.vo.SysOssVo;
|
|
@@ -24,7 +25,9 @@ import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.io.File;
|
|
|
import java.io.InputStream;
|
|
|
+import java.util.Arrays;
|
|
|
import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
/**
|
|
@@ -47,6 +50,9 @@ public class AlgorithmService implements IAlgorithmService {
|
|
|
@Resource
|
|
|
private IPreProcessingService processingService;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private IWarningService warningService;
|
|
|
+
|
|
|
/**
|
|
|
* executePro 预处理
|
|
|
*
|
|
@@ -73,18 +79,127 @@ public class AlgorithmService implements IAlgorithmService {
|
|
|
Map<String, Object> map = new HashMap<>(JSONUtil.parseObj(param));
|
|
|
try (InputStream inputStream = ossService.getFileStream(dataVo.getOssId())) {
|
|
|
File file = CsvUtils.excelToFileCsvByColumns(inputStream, algorithmBo.getColumnData());
|
|
|
- SysOssVo sysOssVo = ossService.upload(file);
|
|
|
+ SysOssVo sysOssVo1 = ossService.upload(file);
|
|
|
+ // 请求
|
|
|
+ map.put("url", sysOssVo1.getUrl());
|
|
|
+ ModelHttpVo httpVo = sendHttp(modelVo, map);
|
|
|
+ PreProcessingBo bo = new PreProcessingBo();
|
|
|
+ if (httpVo != null && httpVo.getStatus() == 200) {
|
|
|
+ File resultFile = CsvUtils.jsonToFileCsv(httpVo.getData(), CsvUtils.extractFilename("model_result"));
|
|
|
+ SysOssVo sysOssVo2 = ossService.upload(resultFile);
|
|
|
+ bo.setOssId(sysOssVo2.getOssId());
|
|
|
+ } else {
|
|
|
+ bo.setStatus("0");
|
|
|
+ }
|
|
|
+ bo.setAircraftNo(dataVo.getAircraftNo()).setSortieNo(dataVo.getSortieNo());
|
|
|
+ processingService.insert(bo);
|
|
|
+ return httpVo != null ? httpVo.getData() : null;
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error(e.getMessage());
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * executeFalseAlarm 虚警抑制
|
|
|
+ *
|
|
|
+ * @param algorithmBo 参数
|
|
|
+ * @return java.lang.String
|
|
|
+ **/
|
|
|
+ @Override
|
|
|
+ public String executeFalseAlarm(AlgorithmBo algorithmBo) {
|
|
|
+ // 模型相关信息
|
|
|
+ ModelVo modelVo = modelService.selectById(algorithmBo.getModelId());
|
|
|
+ if (ObjectUtil.isNull(modelVo)) {
|
|
|
+ throw new BusinessException("模型信息为空,请检查!");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 虚警抑制校验警告列表
|
|
|
+ if (ObjectUtil.isNull(algorithmBo.getWarningIds())) {
|
|
|
+ throw new BusinessException("警告信息不能为空,请检查!");
|
|
|
+ }
|
|
|
+ // 警告列表
|
|
|
+ List<Warning> warnings = warningService.listByIds(Arrays.asList(algorithmBo.getWarningIds()));
|
|
|
+
|
|
|
+ warnings.forEach(el -> {
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ // 数据相关信息
|
|
|
+ DataImportVo dataVo = dataImportService.selectById(algorithmBo.getDataId());
|
|
|
+ if (ObjectUtil.isNull(dataVo)) {
|
|
|
+ throw new BusinessException("数据为空,请检查!");
|
|
|
+ }
|
|
|
+ // 参数
|
|
|
+ String param = algorithmBo.getParam();
|
|
|
+ Map<String, Object> map = new HashMap<>(JSONUtil.parseObj(param));
|
|
|
+ try (InputStream inputStream = ossService.getFileStream(dataVo.getOssId())) {
|
|
|
+ File file = CsvUtils.excelToFileCsvByColumns(inputStream, algorithmBo.getColumnData());
|
|
|
+ SysOssVo sysOssVo1 = ossService.upload(file);
|
|
|
+ // 请求
|
|
|
+ map.put("url", sysOssVo1.getUrl());
|
|
|
+ ModelHttpVo httpVo = sendHttp(modelVo, map);
|
|
|
+ PreProcessingBo bo = new PreProcessingBo();
|
|
|
+ if (httpVo != null && httpVo.getStatus() == 200) {
|
|
|
+ File resultFile = CsvUtils.jsonToFileCsv(httpVo.getData(), CsvUtils.extractFilename("model_result"));
|
|
|
+ SysOssVo sysOssVo2 = ossService.upload(resultFile);
|
|
|
+ bo.setOssId(sysOssVo2.getOssId());
|
|
|
+ } else {
|
|
|
+ bo.setStatus("0");
|
|
|
+ }
|
|
|
+ bo.setAircraftNo(dataVo.getAircraftNo()).setSortieNo(dataVo.getSortieNo());
|
|
|
+ processingService.insert(bo);
|
|
|
+ return httpVo != null ? httpVo.getData() : null;
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error(e.getMessage());
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * executeFault 故障诊断
|
|
|
+ *
|
|
|
+ * @param algorithmBo 参数
|
|
|
+ * @return java.lang.String
|
|
|
+ **/
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String executeFault(AlgorithmBo algorithmBo) {
|
|
|
+ // 模型相关信息
|
|
|
+ ModelVo modelVo = modelService.selectById(algorithmBo.getModelId());
|
|
|
+ if (ObjectUtil.isNull(modelVo)) {
|
|
|
+ throw new BusinessException("模型信息为空,请检查!");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 数据相关信息
|
|
|
+ DataImportVo dataVo = dataImportService.selectById(algorithmBo.getDataId());
|
|
|
+ if (ObjectUtil.isNull(dataVo)) {
|
|
|
+ throw new BusinessException("数据为空,请检查!");
|
|
|
+ }
|
|
|
+ // 参数
|
|
|
+ String param = algorithmBo.getParam();
|
|
|
+ Map<String, Object> map = new HashMap<>(JSONUtil.parseObj(param));
|
|
|
+ try (InputStream inputStream = ossService.getFileStream(dataVo.getOssId())) {
|
|
|
+ File file = CsvUtils.excelToFileCsvByColumns(inputStream, algorithmBo.getColumnData());
|
|
|
+ SysOssVo sysOssVo1 = ossService.upload(file);
|
|
|
// 请求
|
|
|
- map.put("url", sysOssVo.getUrl());
|
|
|
+ map.put("url", sysOssVo1.getUrl());
|
|
|
ModelHttpVo httpVo = sendHttp(modelVo, map);
|
|
|
- String csvFilePath = "resultData" + CsvUtils.extractFilename("model_result");
|
|
|
- // 将csv文件持久化到磁盘
|
|
|
- CsvUtils.jsonToFileCsv(httpVo.getData(), EcoConfig.getUploadPath() + csvFilePath);
|
|
|
- File resultFile = CsvUtils.jsonToFileCsv(httpVo.getData(), "model_result.csv");
|
|
|
- sysOssVo = ossService.upload(resultFile);
|
|
|
PreProcessingBo bo = new PreProcessingBo();
|
|
|
- bo.setAircraftNo(dataVo.getAircraftNo()).setSortieNo(dataVo.getSortieNo()).setOssId(sysOssVo.getOssId());
|
|
|
+ if (httpVo != null && httpVo.getStatus() == 200) {
|
|
|
+ File resultFile = CsvUtils.jsonToFileCsv(httpVo.getData(), CsvUtils.extractFilename("model_result"));
|
|
|
+ SysOssVo sysOssVo2 = ossService.upload(resultFile);
|
|
|
+ bo.setOssId(sysOssVo2.getOssId());
|
|
|
+ } else {
|
|
|
+ bo.setStatus("0");
|
|
|
+ }
|
|
|
+ bo.setAircraftNo(dataVo.getAircraftNo()).setSortieNo(dataVo.getSortieNo());
|
|
|
processingService.insert(bo);
|
|
|
+ return httpVo != null ? httpVo.getData() : null;
|
|
|
} catch (Exception e) {
|
|
|
log.error(e.getMessage());
|
|
|
}
|
|
@@ -92,11 +207,16 @@ public class AlgorithmService implements IAlgorithmService {
|
|
|
}
|
|
|
|
|
|
private static ModelHttpVo sendHttp(ModelVo modelVo, Map<String, Object> map) {
|
|
|
- String result = HttpUtils.postJson(modelVo.getUrl(), map);
|
|
|
- JSONObject jsonObject = JSONUtil.parseObj(result);
|
|
|
- String data = jsonObject.getStr("data");
|
|
|
- String status = jsonObject.getStr("status");
|
|
|
- String msg = jsonObject.getStr("msg");
|
|
|
- return ModelHttpVo.builder().data(data).status(Integer.valueOf(status)).msg(msg).build();
|
|
|
+ try {
|
|
|
+ String result = HttpUtils.postJson(modelVo.getUrl(), map);
|
|
|
+ JSONObject jsonObject = JSONUtil.parseObj(result);
|
|
|
+ String data = jsonObject.getStr("data");
|
|
|
+ String status = jsonObject.getStr("status");
|
|
|
+ String msg = jsonObject.getStr("msg");
|
|
|
+ return ModelHttpVo.builder().data(data).status(Integer.valueOf(status)).msg(msg).build();
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error(e.getMessage());
|
|
|
+ throw new BusinessException("算法服务连接异常,请联系管理员!");
|
|
|
+ }
|
|
|
}
|
|
|
}
|