|
@@ -4,13 +4,6 @@
|
|
|
|
|
|
package com.taais.biz.service.impl;
|
|
|
|
|
|
-import java.io.File;
|
|
|
-import java.io.IOException;
|
|
|
-import java.nio.file.Path;
|
|
|
-import java.nio.file.Paths;
|
|
|
-import java.text.DecimalFormat;
|
|
|
-import java.util.*;
|
|
|
-
|
|
|
import cn.hutool.core.lang.Dict;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.alibaba.fastjson2.JSON;
|
|
@@ -25,7 +18,6 @@ import com.taais.biz.domain.vo.StartTaskConfig;
|
|
|
import com.taais.biz.domain.vo.TrackSequenceVo;
|
|
|
import com.taais.biz.mapper.TrackSequenceMapper;
|
|
|
import com.taais.biz.service.ITrackSequenceService;
|
|
|
-import com.taais.biz.utils.CsvReadUtils;
|
|
|
import com.taais.biz.utils.ZipUtils;
|
|
|
import com.taais.common.core.config.TaaisConfig;
|
|
|
import com.taais.common.core.constant.Constants;
|
|
@@ -33,16 +25,20 @@ import com.taais.common.core.core.domain.CommonResult;
|
|
|
import com.taais.common.core.core.page.PageResult;
|
|
|
import com.taais.common.core.utils.MapstructUtils;
|
|
|
import com.taais.common.core.utils.StringUtils;
|
|
|
+import com.taais.common.json.utils.JsonUtils;
|
|
|
import com.taais.common.orm.core.page.PageQuery;
|
|
|
-import com.taais.common.core.core.page.PageResult;
|
|
|
import com.taais.common.orm.core.service.impl.BaseServiceImpl;
|
|
|
import com.taais.common.websocket.utils.WebSocketUtils;
|
|
|
+import com.taais.system.domain.SysOss;
|
|
|
import com.taais.system.domain.vo.SysOssVo;
|
|
|
import com.taais.system.service.ISysOssService;
|
|
|
+import com.taais.system.service.impl.SysOssServiceImpl;
|
|
|
+
|
|
|
import jakarta.annotation.Resource;
|
|
|
+
|
|
|
+import org.apache.commons.lang3.ObjectUtils;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.core.io.FileSystemResource;
|
|
|
import org.springframework.http.HttpHeaders;
|
|
|
import org.springframework.http.HttpStatus;
|
|
@@ -50,29 +46,32 @@ import org.springframework.http.ResponseEntity;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import java.io.File;
|
|
|
+import java.io.IOException;
|
|
|
+import java.nio.file.Path;
|
|
|
+import java.nio.file.Paths;
|
|
|
+import java.text.DecimalFormat;
|
|
|
+import java.util.*;
|
|
|
+
|
|
|
import static com.taais.biz.constant.BizConstant.VideoStatus.NOT_START;
|
|
|
import static com.taais.biz.domain.table.TrackSequenceTableDef.TRACK_SEQUENCE;
|
|
|
-import static com.taais.biz.service.impl.TargetDetectionServiceImpl.getFileSize;
|
|
|
-import static com.taais.biz.service.impl.TargetDetectionServiceImpl.port;
|
|
|
+import static com.taais.biz.service.impl.TargetDetectionServiceImpl.*;
|
|
|
import static com.taais.biz.service.impl.ToInfraredServiceImpl.*;
|
|
|
import static com.taais.biz.service.impl.VideoStableServiceImpl.*;
|
|
|
-import static com.taais.biz.service.impl.VideoStableServiceImpl.makeDir;
|
|
|
|
|
|
/**
|
|
|
* 注视轨迹序列Service业务层处理
|
|
|
*
|
|
|
* @author wangkang
|
|
|
- * 2024-09-22
|
|
|
+ * 2024-09-22
|
|
|
*/
|
|
|
@Service
|
|
|
-public class TrackSequenceServiceImpl extends BaseServiceImpl<TrackSequenceMapper, TrackSequence> implements ITrackSequenceService {
|
|
|
+public class TrackSequenceServiceImpl extends BaseServiceImpl<TrackSequenceMapper, TrackSequence>
|
|
|
+ implements ITrackSequenceService {
|
|
|
|
|
|
private static final String MASC = "MASC";
|
|
|
private static final String CAT = "CAT";
|
|
|
|
|
|
- @Value("${server.task_stop_url_cat}")
|
|
|
- private String task_stop_url;
|
|
|
-
|
|
|
@Autowired
|
|
|
private AlgorithmConfigTrackServiceImpl algorithmConfigTrackService;
|
|
|
@Autowired
|
|
@@ -84,6 +83,55 @@ public class TrackSequenceServiceImpl extends BaseServiceImpl<TrackSequenceMappe
|
|
|
@Resource
|
|
|
private TrackSequenceMapper trackSequenceMapper;
|
|
|
|
|
|
+ public List<TrackSequence> getByParentTaskId(Long parentTaskId) {
|
|
|
+ QueryWrapper queryWrapper = super.buildBaseQueryWrapper();
|
|
|
+ queryWrapper.and(TRACK_SEQUENCE.PARENT_TASK_ID.eq(parentTaskId));
|
|
|
+ return this.list(queryWrapper);
|
|
|
+ }
|
|
|
+
|
|
|
+ // public String getTrainInputPath(SysOssVo ossEntity) {
|
|
|
+ // return getUnZipDirPath(ossEntity);
|
|
|
+ // }
|
|
|
+
|
|
|
+ public String getTrainOutputPath(TrackSequence entity, SysOssVo ossEntity) {
|
|
|
+ String resourcePath = getResourcePath(ossEntity);
|
|
|
+ Path path = Paths.get(resourcePath);
|
|
|
+ Path outputPath = path.resolveSibling(entity.getId().toString() + BizConstant.TRACK_SEQUENCE_SUFFIX);
|
|
|
+ return outputPath.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getPredictInputPath(SysOssVo ossEntity) {
|
|
|
+ // todo
|
|
|
+ return getUnZipDirPath(ossEntity);
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getPredictOutputPath(TrackSequence entity, SysOssVo ossEntity) {
|
|
|
+ return getTrainOutputPath(entity, ossEntity);
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getTestInputPath(SysOssVo ossEntity) {
|
|
|
+ // todo
|
|
|
+ return getUnZipDirPath(ossEntity);
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getTestOutputPath(TrackSequence entity, SysOssVo ossEntity) {
|
|
|
+ // todo
|
|
|
+ return getTrainOutputPath(entity, ossEntity);
|
|
|
+ }
|
|
|
+
|
|
|
+ private String getModelPath(Long modelId) {
|
|
|
+ if (ObjectUtil.isNull(modelId)) {
|
|
|
+ System.out.println("模型id为空");
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ AlgorithmModelTrack algorithmModelTrack = algorithmModelTrackService.getById(modelId);
|
|
|
+ if (ObjectUtil.isNull(algorithmModelTrack)) {
|
|
|
+ System.out.println("模型不存在");
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ return algorithmModelTrack.getModelAddress();
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public QueryWrapper query() {
|
|
|
return super.query().from(TRACK_SEQUENCE);
|
|
@@ -145,98 +193,167 @@ public class TrackSequenceServiceImpl extends BaseServiceImpl<TrackSequenceMappe
|
|
|
Page<TrackSequenceVo> page = this.pageAs(PageQuery.build(), queryWrapper, TrackSequenceVo.class);
|
|
|
page.getRecords().forEach(entity -> {
|
|
|
Long modelId = entity.getAlgorithmModelId();
|
|
|
- Long algorithmId = entity.getAlgorithmId();
|
|
|
- if (modelId != null) {
|
|
|
- AlgorithmModelTrackVo model = algorithmModelTrackService.selectById(modelId);
|
|
|
- if (ObjectUtil.isNotNull(model)) {
|
|
|
- entity.setModelName(model.getModelName());
|
|
|
- }
|
|
|
+ if (ObjectUtil.isNotNull(modelId)) {
|
|
|
+ AlgorithmModelTrack model = algorithmModelTrackService.getById(modelId);
|
|
|
+ entity.setModelName(model.getModelName());
|
|
|
+
|
|
|
}
|
|
|
- if (algorithmId != null) {
|
|
|
+
|
|
|
+ Long algorithmId = entity.getAlgorithmId();
|
|
|
+ if (ObjectUtil.isNotNull(algorithmId)) {
|
|
|
AlgorithmConfigTrackVo config = algorithmConfigTrackService.selectById(algorithmId);
|
|
|
- if (ObjectUtil.isNotNull(config)) {
|
|
|
- entity.setType(config.getType());
|
|
|
- entity.setSubsystem(config.getSubsystem());
|
|
|
- entity.setAlgorithmName(config.getAlgorithmName());
|
|
|
- }
|
|
|
- } else {
|
|
|
- AlgorithmModelTrackVo model = algorithmModelTrackService.selectById(modelId);
|
|
|
- if (ObjectUtil.isNotNull(model)) {
|
|
|
- AlgorithmConfigTrackVo config = algorithmConfigTrackService.selectById(model.getAlgorithmId());
|
|
|
- if (ObjectUtil.isNotNull(config)) {
|
|
|
- entity.setType(config.getType());
|
|
|
- entity.setSubsystem(config.getSubsystem());
|
|
|
- entity.setAlgorithmName(config.getAlgorithmName());
|
|
|
- }
|
|
|
- }
|
|
|
+ entity.setType(config.getType());
|
|
|
+ entity.setSubsystem(config.getSubsystem());
|
|
|
+ entity.setAlgorithmName(config.getAlgorithmName());
|
|
|
}
|
|
|
});
|
|
|
page.getRecords().sort(Comparator.comparing(TrackSequenceVo::getCreateTime).reversed());
|
|
|
return PageResult.build(page);
|
|
|
}
|
|
|
|
|
|
+ public TrackSequence packageTrackSequence(TrackSequenceBo entityBo, SysOssVo ossEntity) {
|
|
|
+ TrackSequence entity = new TrackSequence();
|
|
|
+ entity.setInputOssId(entityBo.getInputOssId());
|
|
|
+ entity.setUrl(ossEntity.getUrl());
|
|
|
+ entity.setZipFilePath(ossEntity.getFileName());
|
|
|
+ entity.setName(entityBo.getName());
|
|
|
+ entity.setStatus(NOT_START);
|
|
|
+ entity.setRemarks(entityBo.getRemarks());
|
|
|
+ entity.setAlgorithmModelId(entityBo.getAlgorithmModelId());
|
|
|
+ entity.setAlgorithmId(entityBo.getAlgorithmId());
|
|
|
+ entity.setParentTaskId(entityBo.getParentTaskId());
|
|
|
+ entity.setAlgorithmModelTargetDetectionId(entityBo.getAlgorithmModelTargetDetectionId());
|
|
|
+ entity.setInputLabelOssId(entityBo.getInputLabelOssId());
|
|
|
+ entity.setPredictTaskId(entityBo.getPredictTaskId());
|
|
|
+ return entity;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 新增注视轨迹序列
|
|
|
*
|
|
|
- * @param trackSequenceBo 注视轨迹序列Bo
|
|
|
+ * @param entityBo 注视轨迹序列Bo
|
|
|
* @return 结果:true 操作成功,false 操作失败
|
|
|
*/
|
|
|
@Override
|
|
|
- public CommonResult insert(TrackSequenceBo trackSequenceBo) {
|
|
|
- // 检查任务名称
|
|
|
- if (ObjectUtil.isEmpty(trackSequenceBo.getName()) || (!trackSequenceBo.getName().startsWith(MASC) && !trackSequenceBo.getName().startsWith(CAT))) {
|
|
|
- return CommonResult.fail("任务命名错误,需以MASC或CAT开头!");
|
|
|
+ @Transactional
|
|
|
+ public CommonResult insert(TrackSequenceBo entityBo) {
|
|
|
+ Long ossId = entityBo.getInputOssId();
|
|
|
+ if (ObjectUtil.isNotEmpty(entityBo.getPredictTaskId())) { // 如果存在预测任务id,则使用label ossId
|
|
|
+ ossId = entityBo.getInputLabelOssId();
|
|
|
}
|
|
|
|
|
|
// 检查input_oss_id是否存在
|
|
|
- if (ObjectUtil.isNull(trackSequenceBo.getInputOssId())) {
|
|
|
- return CommonResult.fail("请上传模型");
|
|
|
+ if (ObjectUtil.isNull(ossId)) {
|
|
|
+ throw new RuntimeException("oss文件不存在");
|
|
|
}
|
|
|
|
|
|
- SysOssVo ossEntity = ossService.getById(trackSequenceBo.getInputOssId());
|
|
|
+ SysOssVo ossEntity = ossService.getById(ossId);
|
|
|
if (ObjectUtil.isNull(ossEntity)) {
|
|
|
- return CommonResult.fail("找不到指定模型!");
|
|
|
+ throw new RuntimeException("oss文件不存在");
|
|
|
}
|
|
|
|
|
|
- if (trackSequenceBo.getName().startsWith(MASC)) {
|
|
|
- if (ObjectUtil.isEmpty(trackSequenceBo.getAlgorithmId())) {
|
|
|
- return CommonResult.fail("请指定算法!");
|
|
|
- }
|
|
|
+ TrackSequence entity = packageTrackSequence(entityBo, ossEntity);
|
|
|
+ boolean flag = this.save(entity);
|
|
|
|
|
|
- AlgorithmConfigTrackVo config = algorithmConfigTrackService.selectById(trackSequenceBo.getAlgorithmId());
|
|
|
- if (ObjectUtil.isNull(config)) {
|
|
|
- return CommonResult.fail("找不到指定的算法!");
|
|
|
- }
|
|
|
+ if (!flag) {
|
|
|
+ throw new RuntimeException("新增注释轨迹序列任务失败");
|
|
|
}
|
|
|
|
|
|
- TrackSequence trackSequence = new TrackSequence();
|
|
|
+ entity = updateEntity(entity, entityBo, ossEntity);
|
|
|
|
|
|
- BeanUtils.copyProperties(trackSequenceBo, trackSequence);
|
|
|
+ // 步骤 6. 保存算法参数到数据库
|
|
|
+ boolean __ = this.updateById(entity);// 使用全局配置的雪花算法主键生成器生成ID值
|
|
|
+ if (!__) {
|
|
|
+ throw new RuntimeException("新增注释轨迹序列任务失败");
|
|
|
+ }
|
|
|
+ return CommonResult.success(entity);
|
|
|
+ }
|
|
|
|
|
|
- trackSequence.setUrl(ossEntity.getUrl());
|
|
|
+ private TrackSequence updateEntity(TrackSequence entity, TrackSequenceBo entityBo, SysOssVo ossEntity) {
|
|
|
+ // 从这里开始,配置任务的algorithm_parameters参数
|
|
|
+ // 步骤 1. 首先根据算法id获取算法配置
|
|
|
+ AlgorithmConfigTrack algorithmConfig = algorithmConfigTrackService.getById(entity.getAlgorithmId());
|
|
|
+ if (ObjectUtil.isNull(algorithmConfig)) {
|
|
|
+ throw new RuntimeException("算法配置参数为空");
|
|
|
+ }
|
|
|
|
|
|
- String filePath = ossEntity.getFileName();
|
|
|
- String localPath = TaaisConfig.getProfile();
|
|
|
- String resourcePath = localPath + StringUtils.substringAfter(filePath, Constants.RESOURCE_PREFIX);
|
|
|
- trackSequence.setInputPath(resourcePath);
|
|
|
+ Map<String, Object> algorithmParameters = getAlgorithmParameters(algorithmConfig.getParameters(),
|
|
|
+ entityBo.getOtherParams());
|
|
|
+
|
|
|
+ // 步骤4. 构造可以直接传给前端的map数据结构
|
|
|
+ Map<String, Object> result = new HashMap<>();
|
|
|
+
|
|
|
+ result.put("bizId", entity.getId());
|
|
|
+ result.put("bizType", BizConstant.BizType.TRACK_SEQUENCE);
|
|
|
+
|
|
|
+ if (algorithmConfig.getType().equals(BizConstant.AlgorithmType.TRAIN)) {
|
|
|
+ String source_dir = getTrainInputPath(ossEntity);
|
|
|
+ String result_dir = getTrainOutputPath(entity, ossEntity);
|
|
|
+ String log_path = getLogFilePath(result_dir, entity.getId(), BizConstant.TRACK_SEQUENCE_SUFFIX);
|
|
|
+ result.put("source_dir", source_dir);
|
|
|
+ result.put("result_dir", result_dir);
|
|
|
+ result.put("log_path", log_path);
|
|
|
+ } else if (algorithmConfig.getType().equals(BizConstant.AlgorithmType.REASONING)) {
|
|
|
+ String source_dir = getPredictInputPath(ossEntity);
|
|
|
+ String result_dir = getPredictOutputPath(entity, ossEntity);
|
|
|
+ String log_path = getLogFilePath(result_dir, entity.getId(), BizConstant.TRACK_SEQUENCE_SUFFIX);
|
|
|
+
|
|
|
+ result.put("source_dir", source_dir);
|
|
|
+ result.put("result_dir", result_dir);
|
|
|
+ result.put("log_path", log_path);
|
|
|
+
|
|
|
+ if (ObjectUtil.isNotEmpty(entity.getAlgorithmModelId())) {
|
|
|
+ String model_path = getModelPath(entity.getAlgorithmModelId());
|
|
|
+ result.put("model_path", model_path);
|
|
|
+ }
|
|
|
|
|
|
- String fileName = StringUtils.substringAfterLast(filePath, "/");
|
|
|
- String fileName_without_suffix = removeFileExtension(fileName);
|
|
|
+ if (ObjectUtil.isNotEmpty(entity.getAlgorithmModelTargetDetectionId())) {
|
|
|
+ String model_path_TD = getModelPath(entity.getAlgorithmModelTargetDetectionId());
|
|
|
+ result.put("model_path_TD", model_path_TD);
|
|
|
+ } else {
|
|
|
+ throw new RuntimeException("目标检测模型不存在!");
|
|
|
+ }
|
|
|
+ } else if (algorithmConfig.getType().equals(BizConstant.AlgorithmType.TEST)) {
|
|
|
+ if (ObjectUtil.isEmpty(entityBo.getPredictTaskId())) {
|
|
|
+ throw new RuntimeException("预测任务id为空");
|
|
|
+ }
|
|
|
+ TrackSequence predictTask = getById(entityBo.getPredictTaskId());
|
|
|
+ if (ObjectUtil.isNull(predictTask)) {
|
|
|
+ throw new RuntimeException("预测任务不存在");
|
|
|
+ }
|
|
|
|
|
|
- Path path = Paths.get(resourcePath);
|
|
|
- Path outPath = path.resolveSibling(fileName_without_suffix + "_images" + System.currentTimeMillis());
|
|
|
- trackSequence.setOutputPath(outPath.toString());
|
|
|
+ String source_dir = predictTask.getInputPath();
|
|
|
+ String txt_dir = predictTask.getOutputPath();
|
|
|
+ String result_dir = getTestOutputPath(entity, ossEntity);
|
|
|
+ String log_path = getLogFilePath(result_dir, entity.getId(), BizConstant.TRACK_SEQUENCE_SUFFIX);
|
|
|
+ String label_dir = getResourcePath(ossEntity);
|
|
|
+ result.put("source_dir", source_dir);
|
|
|
+ result.put("result_dir", result_dir);
|
|
|
+ result.put("log_path", log_path);
|
|
|
+ result.put("label_dir", label_dir);
|
|
|
+ result.put("txt_dir", txt_dir);
|
|
|
+ } else {
|
|
|
+ throw new RuntimeException("算法类型错误");
|
|
|
+ }
|
|
|
|
|
|
- trackSequence.setZipFilePath(path.resolveSibling(fileName_without_suffix + ".zip").toString());
|
|
|
- trackSequence.setStatus(NOT_START);
|
|
|
+ result.put("otherParams", algorithmParameters);
|
|
|
|
|
|
+ entity.setInputPath((String) result.get("source_dir"));
|
|
|
+ entity.setOutputPath((String) result.get("result_dir"));
|
|
|
+ entity.setLogPath((String) result.get("log_path"));
|
|
|
+ // 步骤 5. 将算法参数map序列化为json字符串,保存到数据库中
|
|
|
+ entity.setAlgorithmParameters(JsonUtils.toJsonString(result));
|
|
|
|
|
|
- boolean __ = this.save(trackSequence);// 使用全局配置的雪花算法主键生成器生成ID值
|
|
|
- if (__) {
|
|
|
- return CommonResult.success();
|
|
|
- } else {
|
|
|
- return CommonResult.fail();
|
|
|
+ makeDir(entity.getInputPath());
|
|
|
+ makeDir(entity.getOutputPath());
|
|
|
+
|
|
|
+ File file = new File(entity.getInputPath());
|
|
|
+ if (!file.exists()) {
|
|
|
+ String resourcePath = getResourcePath(ossService.getById(entity.getInputOssId()));
|
|
|
+ ZipUtils.unzip(resourcePath, entity.getInputPath());
|
|
|
}
|
|
|
+
|
|
|
+ return entity;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -247,9 +364,27 @@ public class TrackSequenceServiceImpl extends BaseServiceImpl<TrackSequenceMappe
|
|
|
*/
|
|
|
@Override
|
|
|
public boolean update(TrackSequenceBo trackSequenceBo) {
|
|
|
- TrackSequence trackSequence = MapstructUtils.convert(trackSequenceBo, TrackSequence.class);
|
|
|
- if (ObjectUtil.isNotNull(trackSequence) && ObjectUtil.isNotNull(trackSequence.getId())) {
|
|
|
- boolean updated = this.updateById(trackSequence);
|
|
|
+ TrackSequence entity = MapstructUtils.convert(trackSequenceBo, TrackSequence.class);
|
|
|
+
|
|
|
+ Long ossId = trackSequenceBo.getInputOssId();
|
|
|
+ if (ObjectUtil.isNotEmpty(trackSequenceBo.getPredictTaskId())) { // 如果存在预测任务id,则使用label ossId
|
|
|
+ ossId = trackSequenceBo.getInputLabelOssId();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 检查input_oss_id是否存在
|
|
|
+ if (ObjectUtil.isNull(ossId)) {
|
|
|
+ throw new RuntimeException("oss文件不存在");
|
|
|
+ }
|
|
|
+
|
|
|
+ SysOssVo ossEntity = ossService.getById(ossId);
|
|
|
+ if (ObjectUtil.isNull(ossEntity)) {
|
|
|
+ throw new RuntimeException("oss文件不存在");
|
|
|
+ }
|
|
|
+
|
|
|
+ entity = updateEntity(entity, trackSequenceBo, ossEntity);
|
|
|
+
|
|
|
+ if (ObjectUtil.isNotNull(entity) && ObjectUtil.isNotNull(entity.getId())) {
|
|
|
+ boolean updated = this.updateById(entity);
|
|
|
return updated;
|
|
|
}
|
|
|
return false;
|
|
@@ -269,138 +404,13 @@ public class TrackSequenceServiceImpl extends BaseServiceImpl<TrackSequenceMappe
|
|
|
|
|
|
@Override
|
|
|
public CommonResult start(Long id) {
|
|
|
- /*
|
|
|
- * WANGKANG 望维护此代码的后来者安息。
|
|
|
- *
|
|
|
- * 不是我想写这么恶心,只是没办法,算法端的逻辑写的跟屎一样。。。。
|
|
|
- */
|
|
|
TrackSequence entity = getById(id);
|
|
|
- AlgorithmModelTrack algorithmModelTrack = algorithmModelTrackService.getById(entity.getAlgorithmModelId());
|
|
|
- AlgorithmConfigTrack algorithmConfigTrack = null;
|
|
|
- try {
|
|
|
- algorithmConfigTrack = algorithmConfigTrackService.getById(entity.getAlgorithmId());
|
|
|
- } catch (Exception e) {
|
|
|
- algorithmConfigTrack = algorithmConfigTrackService.getById(algorithmModelTrack.getAlgorithmId());
|
|
|
- }
|
|
|
-
|
|
|
- StartTaskConfig startTaskConfig = new StartTaskConfig();
|
|
|
-
|
|
|
- if (algorithmConfigTrack.getType().equals(BizConstant.AlgorithmType.TEST) && (entity.getName().startsWith(MASC) || entity.getName().startsWith(CAT))) {
|
|
|
- startTaskConfig.setBizType(BizConstant.BizType.TRACK_SEQUENCE);
|
|
|
- startTaskConfig.setBizId(entity.getId());
|
|
|
-
|
|
|
- startTaskConfig.setOtherParams(algorithmConfigTrack.getParameterConfig());
|
|
|
-
|
|
|
- startTaskConfig.setSource_dir(entity.getInputPath());
|
|
|
- startTaskConfig.setResult_dir(entity.getOutputPath());
|
|
|
- startTaskConfig.setLog_path(entity.getOutputPath() + File.separator + getLogFileName(entity));
|
|
|
- } else {
|
|
|
- SysOssVo inputOssEntity = ossService.getById(entity.getInputOssId());
|
|
|
+ entity.setStartTime(new Date());
|
|
|
|
|
|
- String filePath = inputOssEntity.getFileName();
|
|
|
- String localPath = TaaisConfig.getProfile();
|
|
|
- String resourcePath = localPath + StringUtils.substringAfter(filePath, Constants.RESOURCE_PREFIX);
|
|
|
-
|
|
|
- String fileName = StringUtils.substringAfterLast(filePath, "/");
|
|
|
- String fileName_without_suffix = removeFileExtension(fileName);
|
|
|
-
|
|
|
- Path path = Paths.get(resourcePath);
|
|
|
- Path inputPath = path.resolveSibling(fileName_without_suffix + BizConstant.UNZIP_SUFFIX);
|
|
|
- Path outputPath = path.resolveSibling(entity.getId().toString() + BizConstant.TRACK_SEQUENCE_SUFFIX);
|
|
|
-
|
|
|
-// makeDir(inputPath.toString());
|
|
|
- makeDir(outputPath.toString());
|
|
|
-
|
|
|
- File file = new File(inputPath.toString());
|
|
|
- if (!file.exists()) {
|
|
|
- ZipUtils.unzip(resourcePath, inputPath.toString());
|
|
|
- }
|
|
|
+ AlgorithmConfigTrack algorithmConfigTrack = algorithmConfigTrackService.getById(entity.getAlgorithmId());
|
|
|
+ Map<String, Object> startTaskConfig = JsonUtils.parseMap(entity.getAlgorithmParameters());
|
|
|
|
|
|
- entity.setInputPath(inputPath.toString());
|
|
|
- entity.setOutputPath(outputPath.toString());
|
|
|
-
|
|
|
- entity.setStartTime(new Date());
|
|
|
-
|
|
|
- startTaskConfig.setBizType(BizConstant.BizType.TRACK_SEQUENCE);
|
|
|
- startTaskConfig.setBizId(entity.getId());
|
|
|
-
|
|
|
- startTaskConfig.setOtherParams(algorithmConfigTrack.getParameterConfig());
|
|
|
-
|
|
|
- startTaskConfig.setSource_dir(entity.getInputPath());
|
|
|
- startTaskConfig.setResult_dir(entity.getOutputPath());
|
|
|
- startTaskConfig.setLog_path(entity.getOutputPath() + File.separator + getLogFileName(entity));
|
|
|
-
|
|
|
- if (BizConstant.AlgorithmType.REASONING.equals(algorithmConfigTrack.getType())) {
|
|
|
- String modelPath = algorithmModelTrack.getModelAddress();
|
|
|
- startTaskConfig.setModel_path(modelPath);
|
|
|
- if (entity.getName().startsWith(CAT)) {
|
|
|
- startTaskConfig.setSource_dir(startTaskConfig.getSource_dir());
|
|
|
-// File file________ = new File(startTaskConfig.getSource_dir());
|
|
|
-// if (!file________.exists()) {
|
|
|
-// return CommonResult.fail("数据集为空!");
|
|
|
-// }
|
|
|
-// if (file________.listFiles() != null && file________.listFiles().length > 0) {
|
|
|
-// for (File file___________________tmp : file________.listFiles()) {
|
|
|
-// if (file___________________tmp.isDirectory()) {
|
|
|
-// startTaskConfig.setSource_dir(file___________________tmp.getPath());
|
|
|
-// break;
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
- File file___________________________ = new File(startTaskConfig.getModel_path());
|
|
|
- if (!file___________________________.exists()) {
|
|
|
- return CommonResult.fail("模型不存在!");
|
|
|
- }
|
|
|
- if (file___________________________.listFiles() != null && file___________________________.listFiles().length > 0) {
|
|
|
- for (File file___________________tmp : file___________________________.listFiles()) {
|
|
|
- if (file___________________tmp.isDirectory()) {
|
|
|
- startTaskConfig.setModel_path(file___________________tmp.getPath());
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-// if (algorithmModelTrack.getModelName().startsWith("masc") || algorithmModelTrack.getModelName().startsWith("MASC")) {
|
|
|
-// String modelPath = algorithmModelTrack.getModelAddress() + File.separator + algorithmModelTrack.getModelName().substring(5);
|
|
|
-// startTaskConfig.setModel_path(modelPath);
|
|
|
-// } else if (algorithmModelTrack.getModelName().startsWith("cat") || algorithmModelTrack.getModelName().startsWith("CAT")) {
|
|
|
-// String modelPath = algorithmModelTrack.getModelAddress();
|
|
|
-// startTaskConfig.setModel_path(modelPath);
|
|
|
-// } else {
|
|
|
-// return CommonResult.fail("模型命名失败,请以MASC或CAT开头命名模型");
|
|
|
-// }
|
|
|
- } else if (BizConstant.AlgorithmType.TRAIN.equals(algorithmConfigTrack.getType()) && entity.getName().startsWith(CAT)) {
|
|
|
- File file________ = new File(startTaskConfig.getSource_dir());
|
|
|
- if (!file________.exists()) {
|
|
|
- return CommonResult.fail("数据集为空!");
|
|
|
- }
|
|
|
- boolean flag = false;
|
|
|
- if (file________.listFiles() != null && file________.listFiles().length > 0) {
|
|
|
- for (File file___________________tmp : file________.listFiles()) {
|
|
|
- if (file___________________tmp.isDirectory()) {
|
|
|
- startTaskConfig.setSource_dir(file___________________tmp.getPath());
|
|
|
- flag = true;
|
|
|
-// if (file___________________tmp.listFiles() != null && file___________________tmp.listFiles().length > 0) {
|
|
|
-// for (File file________________________________________________________________________________________ : file___________________tmp.listFiles()) {
|
|
|
-// if (file________________________________________________________________________________________.isDirectory() &&
|
|
|
-// file________________________________________________________________________________________.getName().equals("images")) {
|
|
|
-// startTaskConfig.setSource_dir(file________________________________________________________________________________________.getPath());
|
|
|
-// flag = true;
|
|
|
-// break;
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
-// break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if (!(flag && !false && (1 != 2) && (1 == 1))) {
|
|
|
- return CommonResult.fail("数据集错误!!!!!!");
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- HttpResponseEntity responseEntity = sendPostMsg(algorithmConfigTrack.getAlgorithmAddress(), startTaskConfig);
|
|
|
+ HttpResponseEntity responseEntity = sendPostMsg(algorithmConfigTrack.getStartApi(), startTaskConfig);
|
|
|
if (ObjectUtil.isNotNull(responseEntity) && responseEntity.getStatus() == 200) {
|
|
|
entity.setStatus(BizConstant.VideoStatus.RUNNING);
|
|
|
updateById(entity);
|
|
@@ -420,7 +430,9 @@ public class TrackSequenceServiceImpl extends BaseServiceImpl<TrackSequenceMappe
|
|
|
startTaskConfig.setBizType(BizConstant.BizType.TRACK_SEQUENCE);
|
|
|
startTaskConfig.setBizId(entity.getId());
|
|
|
|
|
|
- HttpResponseEntity responseEntity = sendPostMsg(task_stop_url, startTaskConfig);
|
|
|
+ AlgorithmConfigTrack algorithmConfigTrack = algorithmConfigTrackService.getById(entity.getAlgorithmId());
|
|
|
+
|
|
|
+ HttpResponseEntity responseEntity = sendPostMsg(algorithmConfigTrack.getTerminateApi(), startTaskConfig);
|
|
|
if (ObjectUtil.isNotNull(responseEntity) && responseEntity.getStatus() == 200) {
|
|
|
entity.setStatus(BizConstant.VideoStatus.INTERRUPTED);
|
|
|
updateById(entity);
|
|
@@ -437,33 +449,8 @@ public class TrackSequenceServiceImpl extends BaseServiceImpl<TrackSequenceMappe
|
|
|
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null);
|
|
|
}
|
|
|
|
|
|
- String outputPath = "";
|
|
|
- String zipFilePath = "";
|
|
|
-
|
|
|
- AlgorithmModelTrack algorithmModelTrack = algorithmModelTrackService.getById(entity.getAlgorithmModelId());
|
|
|
- AlgorithmConfigTrack algorithmConfigTrack = algorithmConfigTrackService.getById(algorithmModelTrack.getAlgorithmId());
|
|
|
-
|
|
|
- if (BizConstant.AlgorithmType.REASONING.equals(algorithmConfigTrack.getType())) {
|
|
|
- outputPath = entity.getOutputPath() + File.separator + "predict";
|
|
|
- File file__ = new File(outputPath);
|
|
|
- if (!file__.exists()) {
|
|
|
- outputPath = entity.getOutputPath();
|
|
|
- }
|
|
|
- zipFilePath = outputPath + ".zip";
|
|
|
- } else if (BizConstant.AlgorithmType.TEST.equals(algorithmConfigTrack.getType())) {
|
|
|
- outputPath = entity.getOutputPath() + File.separator + "evaluate";
|
|
|
- File file__ = new File(outputPath);
|
|
|
- if (!file__.exists()) {
|
|
|
- outputPath = entity.getOutputPath();
|
|
|
- }
|
|
|
- zipFilePath = outputPath + ".zip";
|
|
|
- } else if (BizConstant.AlgorithmType.TRAIN.equals(algorithmConfigTrack.getType())) {
|
|
|
- outputPath = entity.getOutputPath();
|
|
|
- zipFilePath = outputPath + ".zip";
|
|
|
- } else {
|
|
|
- System.out.println("未知算法类型!");
|
|
|
- return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null);
|
|
|
- }
|
|
|
+ String outputPath = entity.getOutputPath();
|
|
|
+ String zipFilePath = outputPath + ".zip";
|
|
|
|
|
|
File file = new File(zipFilePath);
|
|
|
if (!file.exists()) {
|
|
@@ -479,7 +466,9 @@ public class TrackSequenceServiceImpl extends BaseServiceImpl<TrackSequenceMappe
|
|
|
}
|
|
|
|
|
|
org.springframework.core.io.Resource resource = new FileSystemResource(file);
|
|
|
- return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + file.getName() + "\"").header(HttpHeaders.CONTENT_TYPE, "application/octet-stream").body(resource);
|
|
|
+ return ResponseEntity.ok()
|
|
|
+ .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + file.getName() + "\"")
|
|
|
+ .header(HttpHeaders.CONTENT_TYPE, "application/octet-stream").body(resource);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -498,42 +487,18 @@ public class TrackSequenceServiceImpl extends BaseServiceImpl<TrackSequenceMappe
|
|
|
}
|
|
|
updateById(entity);
|
|
|
|
|
|
- AlgorithmModelTrack algorithmModelTrack = algorithmModelTrackService.getById(entity.getAlgorithmModelId());
|
|
|
- algorithmModelTrack.setModelStatus("200".equals(status) ? BizConstant.ModelStatus.END : BizConstant.ModelStatus.FAILED);
|
|
|
-
|
|
|
- AlgorithmConfigTrack algorithmConfigTrack = algorithmConfigTrackService.getById(algorithmModelTrack.getAlgorithmId());
|
|
|
- String params = algorithmConfigTrack.getParameterConfig();
|
|
|
- HashMap<String, Object> parse = (HashMap<String, Object>) JSON.parse((params));
|
|
|
-
|
|
|
- if ("200".equals(status) && ObjectUtil.isNull(algorithmModelTrack.getModelAddress())) {
|
|
|
- try {
|
|
|
- algorithmModelTrack.setModelAddress(entity.getOutputPath() + File.separator + ((HashMap<String, String>) parse.get("dataset")).get("classes"));
|
|
|
- } catch (Exception e) {
|
|
|
- System.out.println("未知错误,我也不知道啥原因。。");
|
|
|
- }
|
|
|
-
|
|
|
- System.out.println(parse.get("dataset"));
|
|
|
- algorithmModelTrackService.updateById(algorithmModelTrack);
|
|
|
- }
|
|
|
WebSocketUtils.publishAll("refresh");
|
|
|
return CommonResult.success();
|
|
|
}
|
|
|
|
|
|
- private String getLogFileName(TrackSequence entity) {
|
|
|
- return entity.getId() + BizConstant.TRACK_SEQUENCE_SUFFIX + ".log";
|
|
|
- }
|
|
|
-
|
|
|
@Override
|
|
|
public CommonResult getLog(Long id) {
|
|
|
TrackSequence entity = getById(id);
|
|
|
- String outPutPath = entity.getOutputPath();
|
|
|
- String logPath = outPutPath + File.separator + getLogFileName(entity);
|
|
|
- System.out.println(logPath);
|
|
|
- File file = new File(logPath);
|
|
|
+ File file = new File(entity.getLogPath());
|
|
|
if (!file.exists()) {
|
|
|
return CommonResult.fail("日志文件不存在!");
|
|
|
}
|
|
|
- return CommonResult.success(readLogContent(logPath), "success");
|
|
|
+ return CommonResult.success(readLogContent(entity.getLogPath()), "success");
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -554,7 +519,8 @@ public class TrackSequenceServiceImpl extends BaseServiceImpl<TrackSequenceMappe
|
|
|
return CommonResult.success(res, "success");
|
|
|
} else if (entity.getName().startsWith(CAT)) {
|
|
|
AlgorithmModelTrack modelTrack = algorithmModelTrackService.getById(entity.getAlgorithmModelId());
|
|
|
- AlgorithmConfigTrack algorithmConfigTrack = algorithmConfigTrackService.getById(modelTrack.getAlgorithmId());
|
|
|
+ AlgorithmConfigTrack algorithmConfigTrack = algorithmConfigTrackService
|
|
|
+ .getById(modelTrack.getAlgorithmId());
|
|
|
|
|
|
AlgorithmModelTrackVo res = new AlgorithmModelTrackVo();
|
|
|
|
|
@@ -570,168 +536,47 @@ public class TrackSequenceServiceImpl extends BaseServiceImpl<TrackSequenceMappe
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public CommonResult addEvaluate(AddEvaluate addEvaluate) {
|
|
|
- // 检查任务名称
|
|
|
- if (ObjectUtil.isEmpty(addEvaluate.getName()) || (!addEvaluate.getName().startsWith(MASC) && !addEvaluate.getName().startsWith(CAT))) {
|
|
|
- return CommonResult.fail("任务命名错误,需以MASC或CAT开头!");
|
|
|
- }
|
|
|
-
|
|
|
- if (ObjectUtil.isEmpty(addEvaluate.getAlgorithmId())) {
|
|
|
- return CommonResult.fail("请指定算法!");
|
|
|
- }
|
|
|
-
|
|
|
- AlgorithmConfigTrackVo config = algorithmConfigTrackService.selectById(addEvaluate.getAlgorithmId());
|
|
|
- if (ObjectUtil.isNull(config)) {
|
|
|
- return CommonResult.fail("找不到指定的算法!");
|
|
|
- }
|
|
|
-
|
|
|
- TrackSequence entity = this.getById(addEvaluate.getId());
|
|
|
- TrackSequence evaluate_entity = new TrackSequence();
|
|
|
- evaluate_entity.setStatus(NOT_START);
|
|
|
- evaluate_entity.setUrl(entity.getUrl());
|
|
|
- if (addEvaluate.getName().startsWith(MASC)) {
|
|
|
- evaluate_entity.setInputPath(entity.getInputPath() + ";" + entity.getOutputPath() + File.separator + "gaze" + File.separator + "txt");
|
|
|
- } else if (addEvaluate.getName().startsWith(CAT)) {
|
|
|
- File file________ = new File(entity.getInputPath());
|
|
|
- if (!file________.exists()) {
|
|
|
- return CommonResult.fail("数据集为空!");
|
|
|
- }
|
|
|
- evaluate_entity.setInputPath(entity.getInputPath() + ";" + entity.getOutputPath() + File.separator + "txt");
|
|
|
- } else {
|
|
|
- return CommonResult.fail("命名错误!");
|
|
|
- }
|
|
|
- evaluate_entity.setZipFilePath(entity.getZipFilePath());
|
|
|
- evaluate_entity.setAlgorithmModelId(entity.getAlgorithmModelId());
|
|
|
- evaluate_entity.setInputOssId(entity.getInputOssId());
|
|
|
-
|
|
|
- evaluate_entity.setName(addEvaluate.getName());
|
|
|
- evaluate_entity.setAlgorithmId(addEvaluate.getAlgorithmId());
|
|
|
- evaluate_entity.setRemarks(addEvaluate.getRemarks());
|
|
|
-
|
|
|
- boolean flag__ = save(evaluate_entity);
|
|
|
-
|
|
|
- if (flag__) {
|
|
|
- Path path = Paths.get(entity.getOutputPath());
|
|
|
- evaluate_entity.setOutputPath(path.resolveSibling(evaluate_entity.getId().toString() + BizConstant.TRACK_SEQUENCE_SUFFIX).toString());
|
|
|
- boolean flag___ = updateById(evaluate_entity);
|
|
|
- if (flag___) {
|
|
|
- return CommonResult.success("新增评估任务成功!");
|
|
|
- } else {
|
|
|
- return CommonResult.success("新增评估任务成功! 更新输出路径失败");
|
|
|
- }
|
|
|
- } else {
|
|
|
- return CommonResult.success("新增评估任务失败!");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
@Override
|
|
|
public CommonResult getModelList(Long id) {
|
|
|
TrackSequence entity = getById(id);
|
|
|
String outPutPath = entity.getOutputPath();
|
|
|
String modelPath = outPutPath;
|
|
|
- File modelDir = new File(modelPath);
|
|
|
- if (!modelDir.exists()) {
|
|
|
- return CommonResult.fail("模型输出目录不存在!");
|
|
|
- }
|
|
|
- File[] files = modelDir.listFiles();
|
|
|
- Integer idx = 0;
|
|
|
- ArrayList<Map<String, String>> res = new ArrayList<>();
|
|
|
- for (File file : files) {
|
|
|
- if (!file.isDirectory()) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- idx += 1;
|
|
|
- Map<String, String> tmp = new HashMap<>();
|
|
|
- tmp.put("id", idx.toString());
|
|
|
- tmp.put("name", file.getName());
|
|
|
- String filePath = file.getPath();
|
|
|
- tmp.put("path", filePath);
|
|
|
- // todo 获取真正的url
|
|
|
- // http://localhost:9090/profile/upload/2024/10/27/1_1729404909511_20241027153840A001.zip
|
|
|
- String url = "http://localhost:" + port + Constants.RESOURCE_PREFIX + filePath.substring(TaaisConfig.getProfile().length());
|
|
|
- url = url.replaceAll("\\\\", "/"); // windows
|
|
|
- tmp.put("url", url);
|
|
|
-
|
|
|
- double fileSize = (getFileSize(file) / (1024.0 * 1024.0));
|
|
|
- DecimalFormat decimalFormat = new DecimalFormat("#.##");
|
|
|
- String formatFileSize = decimalFormat.format(fileSize);
|
|
|
- tmp.put("size", formatFileSize + "MB");
|
|
|
- res.add(tmp);
|
|
|
- }
|
|
|
- return CommonResult.success(res, "success");
|
|
|
+ return getModelList_(modelPath, TaaisConfig.getProfile());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public CommonResult previewPredictResult(Long id) {
|
|
|
TrackSequence entity = getById(id);
|
|
|
+ String inputPath = entity.getInputPath() + File.separator + "images";
|
|
|
+ String outputPath = entity.getOutputPath() + File.separator + "gaze" + File.separator + "images";
|
|
|
|
|
|
- SysOssVo inputOssEntity = ossService.getById(entity.getInputOssId());
|
|
|
-
|
|
|
- String filePath = inputOssEntity.getFileName();
|
|
|
- String localPath = TaaisConfig.getProfile();
|
|
|
- String resourcePath = localPath + StringUtils.substringAfter(filePath, Constants.RESOURCE_PREFIX);
|
|
|
-
|
|
|
- String fileName = StringUtils.substringAfterLast(filePath, "/");
|
|
|
- String fileName_without_suffix = removeFileExtension(fileName);
|
|
|
-
|
|
|
- Path path = Paths.get(resourcePath);
|
|
|
- Path inputPath = path.resolveSibling(fileName_without_suffix + BizConstant.UNZIP_SUFFIX + File.separator + "images");
|
|
|
- Path outputPath = path.resolveSibling(entity.getId().toString() + BizConstant.TRACK_SEQUENCE_SUFFIX + File.separator + "gaze" + File.separator + "images");
|
|
|
-
|
|
|
- File outputPathDir = new File(outputPath.toString());
|
|
|
+ File outputPathDir = new File(outputPath);
|
|
|
if (!outputPathDir.exists()) {
|
|
|
- outputPath = path.resolveSibling(entity.getId().toString() + BizConstant.TRACK_SEQUENCE_SUFFIX + File.separator + "images");
|
|
|
+ outputPath = entity.getOutputPath() + File.separator + "images";
|
|
|
}
|
|
|
|
|
|
-// String urlPrefix = inputOssEntity.getUrl().substring(0, inputOssEntity.getUrl().indexOf(Constants.RESOURCE_PREFIX) + Constants.RESOURCE_PREFIX.length());
|
|
|
String urlPrefix = Constants.RESOURCE_PREFIX;
|
|
|
- return getCompareImage(urlPrefix, inputPath.toString(), outputPath.toString());
|
|
|
+ return getCompareImage(urlPrefix, inputPath, outputPath);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public CommonResult previewEvaluateResult(Long id) {
|
|
|
- TrackSequence entity = getById(id);
|
|
|
-
|
|
|
- SysOssVo inputOssEntity = ossService.getById(entity.getInputOssId());
|
|
|
-
|
|
|
- String filePath = inputOssEntity.getFileName();
|
|
|
- String localPath = TaaisConfig.getProfile();
|
|
|
- String resourcePath = localPath + StringUtils.substringAfter(filePath, Constants.RESOURCE_PREFIX);
|
|
|
-
|
|
|
- String fileName = StringUtils.substringAfterLast(filePath, "/");
|
|
|
- String fileName_without_suffix = removeFileExtension(fileName);
|
|
|
-
|
|
|
- Path path = Paths.get(resourcePath);
|
|
|
- Path resultPath = path.resolveSibling(entity.getId().toString() + BizConstant.TRACK_SEQUENCE_SUFFIX + File.separator + BizConstant.RESULT_JSON_NAME);
|
|
|
-
|
|
|
- if (!new File(resultPath.toString()).exists()) {
|
|
|
- return CommonResult.fail("评估结果文件不存在!");
|
|
|
- }
|
|
|
-
|
|
|
- List<Dict> resultMap = parseJsonMapList(resultPath);
|
|
|
- if (ObjectUtil.isEmpty(resultMap)) {
|
|
|
- return CommonResult.fail("获取结果文件失败");
|
|
|
- }
|
|
|
-
|
|
|
- return CommonResult.success(resultMap);
|
|
|
+ return getStatisticsResult(id);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public CommonResult getStatisticsResult(Long id) {
|
|
|
TrackSequence entity = getById(id);
|
|
|
- SysOssVo inputOssEntity = ossService.getById(entity.getInputOssId());
|
|
|
|
|
|
- String filePath = inputOssEntity.getFileName();
|
|
|
- String localPath = TaaisConfig.getProfile();
|
|
|
- String resourcePath = localPath + StringUtils.substringAfter(filePath, Constants.RESOURCE_PREFIX);
|
|
|
+ String resultFilePath = entity.getOutputPath() + File.separator + BizConstant.RESULT_JSON_NAME;
|
|
|
|
|
|
- Path path = Paths.get(resourcePath);
|
|
|
- Path outputPath = path.resolveSibling(entity.getId().toString() + BizConstant.TRACK_SEQUENCE_SUFFIX);
|
|
|
+ Path resultPath = Paths.get(resultFilePath);
|
|
|
|
|
|
- Path statisticsResultPath = outputPath.resolve(BizConstant.RESULT_JSON_NAME);
|
|
|
+ if (!new File(resultPath.toString()).exists()) {
|
|
|
+ return CommonResult.fail("评估结果文件不存在!");
|
|
|
+ }
|
|
|
|
|
|
- List<Dict> resultMap = parseJsonMapList(statisticsResultPath);
|
|
|
+ List<Dict> resultMap = parseJsonMapList(resultPath);
|
|
|
if (ObjectUtil.isEmpty(resultMap)) {
|
|
|
return CommonResult.fail("获取结果文件失败");
|
|
|
}
|
|
@@ -739,5 +584,4 @@ public class TrackSequenceServiceImpl extends BaseServiceImpl<TrackSequenceMappe
|
|
|
return CommonResult.success(resultMap);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
}
|