|
@@ -1,5 +1,6 @@
|
|
package com.phm.manage.service.impl;
|
|
package com.phm.manage.service.impl;
|
|
|
|
|
|
|
|
+import java.io.File;
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
@@ -9,17 +10,28 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import com.phm.common.config.PHMConfig;
|
|
import com.phm.common.config.PHMConfig;
|
|
|
|
+import com.phm.common.constant.Constants;
|
|
|
|
+import com.phm.common.exception.GlobalException;
|
|
import com.phm.common.utils.file.FileUploadUtils;
|
|
import com.phm.common.utils.file.FileUploadUtils;
|
|
|
|
+import com.phm.common.utils.ip.IpUtils;
|
|
|
|
+import com.phm.common.utils.uuid.Seq;
|
|
import com.phm.manage.domain.ModelInfo;
|
|
import com.phm.manage.domain.ModelInfo;
|
|
|
|
+import com.phm.manage.domain.SortieParameter;
|
|
import com.phm.manage.domain.dto.ModelRequest;
|
|
import com.phm.manage.domain.dto.ModelRequest;
|
|
import com.phm.manage.mapper.ModelInfoMapper;
|
|
import com.phm.manage.mapper.ModelInfoMapper;
|
|
import com.phm.manage.service.IModelService;
|
|
import com.phm.manage.service.IModelService;
|
|
|
|
+import com.phm.manage.service.ISortieParameterService;
|
|
import com.phm.manage.util.CsvUtils;
|
|
import com.phm.manage.util.CsvUtils;
|
|
|
|
+import com.phm.manage.util.FileUtil;
|
|
import com.phm.manage.util.HttpClientUtils;
|
|
import com.phm.manage.util.HttpClientUtils;
|
|
import com.phm.manage.util.SnowFlakeIdGenerator;
|
|
import com.phm.manage.util.SnowFlakeIdGenerator;
|
|
|
|
|
|
|
|
+import cn.hutool.core.util.IdUtil;
|
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
|
+import cn.hutool.json.JSONArray;
|
|
import cn.hutool.json.JSONObject;
|
|
import cn.hutool.json.JSONObject;
|
|
import cn.hutool.json.JSONUtil;
|
|
import cn.hutool.json.JSONUtil;
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 深度隔离模型Service业务层处理
|
|
* 深度隔离模型Service业务层处理
|
|
@@ -28,6 +40,7 @@ import cn.hutool.json.JSONUtil;
|
|
* @date 2023-08-22
|
|
* @date 2023-08-22
|
|
*/
|
|
*/
|
|
@Service
|
|
@Service
|
|
|
|
+@Slf4j
|
|
public class ModelServiceImpl implements IModelService {
|
|
public class ModelServiceImpl implements IModelService {
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
@@ -35,6 +48,9 @@ public class ModelServiceImpl implements IModelService {
|
|
@Autowired
|
|
@Autowired
|
|
private SnowFlakeIdGenerator snowFlakeIdGenerator;
|
|
private SnowFlakeIdGenerator snowFlakeIdGenerator;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private ISortieParameterService sortieParameterService;
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public ModelInfo selectModelById(Long id) {
|
|
public ModelInfo selectModelById(Long id) {
|
|
return modelInfoMapper.selectModelById(id);
|
|
return modelInfoMapper.selectModelById(id);
|
|
@@ -68,30 +84,74 @@ public class ModelServiceImpl implements IModelService {
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public String executeModel(ModelRequest modelRequest) {
|
|
public String executeModel(ModelRequest modelRequest) {
|
|
|
|
+
|
|
// 查询对应模型参数
|
|
// 查询对应模型参数
|
|
ModelInfo modelInfo = modelInfoMapper.selectModelById(modelRequest.getModelId());
|
|
ModelInfo modelInfo = modelInfoMapper.selectModelById(modelRequest.getModelId());
|
|
- // 模型参数
|
|
|
|
- String modelParms = modelInfo.getModelParms();
|
|
|
|
- // 数据参数
|
|
|
|
- String dataParms = modelInfo.getDataParms();
|
|
|
|
- // TODO 根据数据参数获取数据,生成csv在文件,返回csv文件服务器路径
|
|
|
|
-
|
|
|
|
- // 上传文件路径
|
|
|
|
- String filePath = PHMConfig.getCsvFilePath() + CsvUtils.MODEL_DATA_PATH;
|
|
|
|
- // 上传并返回新文件名称
|
|
|
|
|
|
+ if (ObjectUtil.isEmpty(modelInfo)) {
|
|
|
|
+ throw new GlobalException("模型参数信息为空,请检查!");
|
|
|
|
+ }
|
|
|
|
+ // TODO 模型参数
|
|
|
|
+ Map<String, String> parmsMap = getParmsMap(modelInfo);
|
|
|
|
+ SortieParameter sortieParameter = sortieParameterService.selectSortieParameterById(modelRequest.getDataId());
|
|
|
|
+ if (ObjectUtil.isEmpty(sortieParameter)) {
|
|
|
|
+ throw new GlobalException("选择的架次数据为空,请检查!");
|
|
|
|
+ }
|
|
|
|
+ String url;
|
|
try {
|
|
try {
|
|
- String fileName = FileUploadUtils.upload(filePath, null);
|
|
|
|
|
|
+ url = getFileUrl(modelInfo.getDataParms(), sortieParameter.getDataPath());
|
|
} catch (IOException e) {
|
|
} catch (IOException e) {
|
|
- throw new RuntimeException(e);
|
|
|
|
|
|
+ log.error(e.getMessage());
|
|
|
|
+ throw new GlobalException("上传文件失败");
|
|
}
|
|
}
|
|
Map<String, String> parms = new HashMap<>();
|
|
Map<String, String> parms = new HashMap<>();
|
|
- parms.put("data_url", "http://127.0.0.1:8080/profile/upload/2023/11/13/origin.csv");
|
|
|
|
|
|
+ parms.put("data_url", url);
|
|
String result = HttpClientUtils.postJson(modelInfo.getUrl(), parms);
|
|
String result = HttpClientUtils.postJson(modelInfo.getUrl(), parms);
|
|
JSONObject jsonObject = JSONUtil.parseObj(result);
|
|
JSONObject jsonObject = JSONUtil.parseObj(result);
|
|
String jsonString = jsonObject.getStr("data");
|
|
String jsonString = jsonObject.getStr("data");
|
|
// CSV文件路径
|
|
// CSV文件路径
|
|
- String csvFilePath = PHMConfig.getCsvFilePath() + CsvUtils.RESULT_DATA_PATH + "result";
|
|
|
|
|
|
+ String csvFilePath = PHMConfig.getCsvFilePath() + CsvUtils.RESULT_DATA_PATH + "model_result"
|
|
|
|
+ + Seq.getId(Seq.uploadSeqType) + ".csv";
|
|
CsvUtils.jsonToFileCsv(jsonString, csvFilePath);
|
|
CsvUtils.jsonToFileCsv(jsonString, csvFilePath);
|
|
|
|
+ SortieParameter parameter = new SortieParameter();
|
|
|
|
+ parameter.setDataPath(csvFilePath).setSortieNo(sortieParameter.getSortieNo())
|
|
|
|
+ .setBatchNo(IdUtil.getSnowflakeNextIdStr());
|
|
|
|
+ sortieParameterService.insertSortieParameter(parameter);
|
|
return jsonString;
|
|
return jsonString;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private static Map<String, String> getParmsMap(ModelInfo modelInfo) {
|
|
|
|
+ String modelParms = modelInfo.getModelParms();
|
|
|
|
+ if (ObjectUtil.isEmpty(modelParms)) {
|
|
|
|
+ return new HashMap<>();
|
|
|
|
+ }
|
|
|
|
+ JSONArray modelParamsArray = new JSONArray(modelParms);
|
|
|
|
+ Map<String, String> parmsMap = new HashMap<>();
|
|
|
|
+ for (Object obj : modelParamsArray) {
|
|
|
|
+ if (obj instanceof JSONObject) {
|
|
|
|
+ JSONObject jsonObj = (JSONObject)obj;
|
|
|
|
+ String name = jsonObj.getStr("name");
|
|
|
|
+ String value = jsonObj.getStr("value");
|
|
|
|
+ if (ObjectUtil.isNotEmpty(name) && ObjectUtil.isNotEmpty(value)) {
|
|
|
|
+ parmsMap.put(name, value);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return parmsMap;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private String getFileUrl(String dataParms, String dataPath) throws IOException {
|
|
|
|
+ JSONArray jsonArray = new JSONArray(dataParms);
|
|
|
|
+ // 查询数据源
|
|
|
|
+ JSONArray dataJson = CsvUtils.getCsvDataByHeaders(dataPath, jsonArray.toList(String.class));
|
|
|
|
+ // 生成新的csv文件
|
|
|
|
+ String filePath = PHMConfig.getCsvFilePath() + CsvUtils.TEMP + "parameter_result.csv";
|
|
|
|
+ File file = CsvUtils.jsonToFileCsvByJsonArray(dataJson, filePath);
|
|
|
|
+ // 上传并返回新文件名称以及路径
|
|
|
|
+ String fileName = FileUploadUtils.upload(PHMConfig.getUploadPath(), FileUtil.fileToMultipartFile(file));
|
|
|
|
+ log.info("上传的文件名称:{}", fileName);
|
|
|
|
+ String url = Constants.HTTP + IpUtils.getIpAddr() + ":8080" + fileName;
|
|
|
|
+ log.info("上传的文件地址:{}", url);
|
|
|
|
+ return url;
|
|
}
|
|
}
|
|
}
|
|
}
|