Ver Fonte

feat: 初步完成新增任务

WANGKANG há 5 meses atrás
pai
commit
a7ac94a69b

+ 157 - 33
taais-modules/taais-biz/src/main/java/com/taais/biz/service/impl/AlgorithmTaskTrackServiceImpl.java

@@ -1,24 +1,36 @@
 package com.taais.biz.service.impl;
 
-import java.util.Arrays;
-import java.util.List;
-
 import cn.hutool.core.util.ObjectUtil;
 import com.mybatisflex.core.paginate.Page;
 import com.mybatisflex.core.query.QueryWrapper;
+import com.taais.biz.domain.AlgorithmTaskTrack;
+import com.taais.biz.domain.ToInfrared;
+import com.taais.biz.domain.TrackSequence;
+import com.taais.biz.domain.bo.AlgorithmTaskTrackBo;
+import com.taais.biz.domain.bo.ToInfraredBo;
+import com.taais.biz.domain.bo.TrackSequenceBo;
+import com.taais.biz.domain.vo.AlgorithmTaskTrackVo;
+import com.taais.biz.mapper.AlgorithmTaskTrackMapper;
+import com.taais.biz.service.IAlgorithmTaskTrackService;
+import com.taais.common.core.config.TaaisConfig;
+import com.taais.common.core.constant.Constants;
+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.orm.core.page.PageQuery;
-import com.taais.common.core.core.page.PageResult;
 import com.taais.common.orm.core.service.impl.BaseServiceImpl;
+import com.taais.system.domain.SysOss;
+import com.taais.system.service.impl.SysOssServiceImpl;
 import jakarta.annotation.Resource;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import com.taais.biz.mapper.AlgorithmTaskTrackMapper;
-import com.taais.biz.domain.AlgorithmTaskTrack;
-import com.taais.biz.domain.bo.AlgorithmTaskTrackBo;
-import com.taais.biz.domain.vo.AlgorithmTaskTrackVo;
-import com.taais.biz.service.IAlgorithmTaskTrackService;
+
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
 import static com.taais.biz.domain.table.AlgorithmTaskTrackTableDef.ALGORITHM_TASK_TRACK;
 
 /**
@@ -29,6 +41,20 @@ import static com.taais.biz.domain.table.AlgorithmTaskTrackTableDef.ALGORITHM_TA
  */
 @Service
 public class AlgorithmTaskTrackServiceImpl extends BaseServiceImpl<AlgorithmTaskTrackMapper, AlgorithmTaskTrack> implements IAlgorithmTaskTrackService {
+    @Autowired
+    private AlgorithmConfigTrackServiceImpl algorithmConfigTrackService;
+    @Autowired
+    private AlgorithmModelTrackServiceImpl algorithmModelTrackService;
+    @Autowired
+    private SysOssServiceImpl ossService;
+    @Autowired
+    private ToInfraredServiceImpl toInfraredService;
+    @Autowired
+    private TargetDetectionServiceImpl targetDetectionService;
+    @Autowired
+    private TrackSequenceServiceImpl trackSequenceService;
+
+
     @Resource
     private AlgorithmTaskTrackMapper algorithmTaskTrackMapper;
 
@@ -39,22 +65,16 @@ public class AlgorithmTaskTrackServiceImpl extends BaseServiceImpl<AlgorithmTask
 
     private QueryWrapper buildQueryWrapper(AlgorithmTaskTrackBo algorithmTaskTrackBo) {
         QueryWrapper queryWrapper = super.buildBaseQueryWrapper();
-        queryWrapper.and(ALGORITHM_TASK_TRACK.NAME.like
-        (algorithmTaskTrackBo.getName()));
-        queryWrapper.and(ALGORITHM_TASK_TRACK.STATUS.eq
-        (algorithmTaskTrackBo.getStatus()));
-        queryWrapper.and(ALGORITHM_TASK_TRACK.START_TIME.eq
-        (algorithmTaskTrackBo.getStartTime()));
-        queryWrapper.and(ALGORITHM_TASK_TRACK.END_TIME.eq
-        (algorithmTaskTrackBo.getEndTime()));
-        queryWrapper.and(ALGORITHM_TASK_TRACK.COST_SECOND.eq
-        (algorithmTaskTrackBo.getCostSecond()));
-        queryWrapper.and(ALGORITHM_TASK_TRACK.LOG.eq
-        (algorithmTaskTrackBo.getLog()));
-        queryWrapper.and(ALGORITHM_TASK_TRACK.REMARKS.eq
-        (algorithmTaskTrackBo.getRemarks()));
-        queryWrapper.and(ALGORITHM_TASK_TRACK.SYSTEM.eq
-        (algorithmTaskTrackBo.getSystem()));
+        queryWrapper.and(ALGORITHM_TASK_TRACK.NAME.like(algorithmTaskTrackBo.getName()));
+        queryWrapper.and(ALGORITHM_TASK_TRACK.STATUS.eq(algorithmTaskTrackBo.getStatus()));
+        queryWrapper.and(ALGORITHM_TASK_TRACK.START_TIME.eq(algorithmTaskTrackBo.getStartTime()));
+        queryWrapper.and(ALGORITHM_TASK_TRACK.END_TIME.eq(algorithmTaskTrackBo.getEndTime()));
+        queryWrapper.and(ALGORITHM_TASK_TRACK.COST_SECOND.eq(algorithmTaskTrackBo.getCostSecond()));
+        queryWrapper.and(ALGORITHM_TASK_TRACK.LOG.eq(algorithmTaskTrackBo.getLog()));
+        queryWrapper.and(ALGORITHM_TASK_TRACK.REMARKS.eq(algorithmTaskTrackBo.getRemarks()));
+        queryWrapper.and(ALGORITHM_TASK_TRACK.SYSTEM.eq(algorithmTaskTrackBo.getSystem()));
+
+        queryWrapper.orderBy(ALGORITHM_TASK_TRACK.CREATE_TIME.desc());
 
         return queryWrapper;
     }
@@ -67,7 +87,7 @@ public class AlgorithmTaskTrackServiceImpl extends BaseServiceImpl<AlgorithmTask
      */
     @Override
     public AlgorithmTaskTrackVo selectById(Long id) {
-            return this.getOneAs(query().where(ALGORITHM_TASK_TRACK.ID.eq(id)), AlgorithmTaskTrackVo.class);
+        return this.getOneAs(query().where(ALGORITHM_TASK_TRACK.ID.eq(id)), AlgorithmTaskTrackVo.class);
 
     }
 
@@ -80,7 +100,7 @@ public class AlgorithmTaskTrackServiceImpl extends BaseServiceImpl<AlgorithmTask
     @Override
     public List<AlgorithmTaskTrackVo> selectList(AlgorithmTaskTrackBo algorithmTaskTrackBo) {
         QueryWrapper queryWrapper = buildQueryWrapper(algorithmTaskTrackBo);
-            return this.listAs(queryWrapper, AlgorithmTaskTrackVo.class);
+        return this.listAs(queryWrapper, AlgorithmTaskTrackVo.class);
     }
 
     /**
@@ -92,10 +112,61 @@ public class AlgorithmTaskTrackServiceImpl extends BaseServiceImpl<AlgorithmTask
     @Override
     public PageResult<AlgorithmTaskTrackVo> selectPage(AlgorithmTaskTrackBo algorithmTaskTrackBo) {
         QueryWrapper queryWrapper = buildQueryWrapper(algorithmTaskTrackBo);
-            Page<AlgorithmTaskTrackVo> page = this.pageAs(PageQuery.build(), queryWrapper, AlgorithmTaskTrackVo.class);
+        Page<AlgorithmTaskTrackVo> page = this.pageAs(PageQuery.build(), queryWrapper, AlgorithmTaskTrackVo.class);
         return PageResult.build(page);
     }
 
+    public ToInfraredBo cteateToInfraredTaskBo(Map<String, Object> params) {
+        ToInfraredBo toInfraredBo = new ToInfraredBo();
+        toInfraredBo.setName("ToInfrared_" + (String) params.get("name"));
+        toInfraredBo.setInputOssId((Long) params.get("inputDatasetOssId"));
+        toInfraredBo.setRemarks((String) params.get("remarks"));
+        toInfraredBo.setParentTaskId((Long) params.get("parentTaskId"));
+
+        toInfraredBo.setAlgorithmModelId((Long) params.get("toInfraredModelId"));
+        toInfraredBo.setAlgorithmId((Long) params.get("toInfraredAlgorithmId"));
+
+        toInfraredBo.setOtherParams((Map<String, Object>) params.get("toInfraredAlgorithmParams"));
+
+        return toInfraredBo;
+    }
+
+    public TrackSequenceBo createTrackSequencePredictBo(Map<String, Object> params) {
+        TrackSequenceBo trackSequenceBo = new TrackSequenceBo();
+        trackSequenceBo.setName("TrackSequence_predict_" + (String) params.get("name"));
+        trackSequenceBo.setInputOssId((Long) params.get("inputDatasetOssId"));
+        trackSequenceBo.setRemarks((String) params.get("remarks"));
+        trackSequenceBo.setParentTaskId((Long) params.get("parentTaskId"));
+
+        trackSequenceBo.setAlgorithmModelId((Long) params.get("trackSequenceModelId"));
+        trackSequenceBo.setAlgorithmId((Long) params.get("trackSequenceAlgorithmId"));
+
+        Map<String, Object> otherParams = (Map<String, Object>) params.get("trackSequenceAlgorithmParams");
+        otherParams.put("algorithmModelTargetDetectionId", (Long) params.get("TD_modelId"));
+        trackSequenceBo.setOtherParams(otherParams);
+
+        return trackSequenceBo;
+    }
+
+    public TrackSequenceBo createTrackSequenceEvaluateBo(Map<String, Object> params) {
+        TrackSequenceBo trackSequenceBo = new TrackSequenceBo();
+        trackSequenceBo.setName("TrackSequence_evaluate_" + (String) params.get("name"));
+        trackSequenceBo.setInputOssId((Long) params.get("inputDatasetOssId"));
+        trackSequenceBo.setRemarks((String) params.get("remarks"));
+        trackSequenceBo.setParentTaskId((Long) params.get("parentTaskId"));
+
+//        trackSequenceBo.setAlgorithmModelId((Long) params.get("trackSequenceEvaluateModelId"));
+        trackSequenceBo.setAlgorithmId((Long) params.get("trackSequenceEvaluateAlgorithmId"));
+
+        Map<String, Object> otherParams = (Map<String, Object>) params.get("trackSequenceEvaluateAlgorithmParams");
+        otherParams.put("algorithmModelTargetDetectionId", (Long) params.get("TD_modelId"));
+        otherParams.put("trackSequencePredictTaskId", (Long) params.get("trackSequencePredictTaskId"));
+        otherParams.put("inputLabelOssId", (Long) params.get("inputEvaluateLabelOssId"));
+        trackSequenceBo.setOtherParams(otherParams);
+
+        return trackSequenceBo;
+    }
+
     /**
      * 新增可辨识性分析总任务
      *
@@ -103,12 +174,65 @@ public class AlgorithmTaskTrackServiceImpl extends BaseServiceImpl<AlgorithmTask
      * @return 结果:true 操作成功,false 操作失败
      */
     @Override
+    @Transactional
     public boolean insert(AlgorithmTaskTrackBo algorithmTaskTrackBo) {
-    AlgorithmTaskTrack algorithmTaskTrack =MapstructUtils.convert(algorithmTaskTrackBo, AlgorithmTaskTrack. class);
+        // 这里估计还是得用save手动构造entity了,如果用entityBo太麻烦了
+        AlgorithmTaskTrack algorithmTaskTrack = MapstructUtils.convert(algorithmTaskTrackBo, AlgorithmTaskTrack.class);
+        boolean flag = this.save(algorithmTaskTrack);
+        if (!flag) {
+            return false;
+        }
+        // 步骤
+        // 创建可见光转红外预测任务
+        Map<String, Object> params = algorithmTaskTrackBo.getOtherParams();
+        params.put("name", algorithmTaskTrackBo.getName());
+        params.put("remarks", algorithmTaskTrackBo.getRemarks());
+        params.put("parentTaskId", algorithmTaskTrack.getId());
+
+        if (params.containsKey("ifToInfrared") && params.get("ifToInfrared").equals(true)) {
+            ToInfraredBo toInfraredBo = cteateToInfraredTaskBo(params);
+            ToInfrared toInfraredTask = toInfraredService.insert2(toInfraredBo);
+
+            // 需要更新一下inputDatasetOssId,以便于创建trackSequencePredictTask任务
+            Long inputDatasetOssId_new = getNewOssId(toInfraredTask);
+            params.put("inputDatasetOssId", inputDatasetOssId_new);
+        }
+
+        // 创建可辨识性预测任务
+        TrackSequenceBo trackSequencePredictBo = createTrackSequencePredictBo(params);
+        TrackSequence trackSequencePredictTask = trackSequenceService.insert2(trackSequencePredictBo);
+        // 创建可辨识性分析评估任务
+        if (params.containsKey("ifEvaluate") && params.get("ifEvaluate").equals(true)) {
+            params.put("trackSequencePredictTaskId", trackSequencePredictTask.getId());
+            TrackSequenceBo trackSequenceEvaluateBo = createTrackSequenceEvaluateBo(params);
+            TrackSequence trackSequenceEvaluateTask = trackSequenceService.insert2(trackSequenceEvaluateBo);
+        }
 
         return this.save(algorithmTaskTrack);//使用全局配置的雪花算法主键生成器生成ID值
     }
 
+    private Long getNewOssId(ToInfrared toInfraredTask) {
+        String outputPath = toInfraredTask.getOutputPath();
+        Path path = Paths.get(outputPath);
+        String dirName = path.getFileName().toString();
+        String fileName = Constants.RESOURCE_PREFIX + outputPath.substring(TaaisConfig.getProfile().length());
+
+        SysOss oss = new SysOss();
+        oss.setUrl("no url");
+        oss.setFileSuffix("no suffix");
+        oss.setFileName(fileName);
+        oss.setOriginalName(dirName);
+        oss.setService("Local");
+        boolean flag = ossService.save(oss);
+
+        if(flag) {
+            return oss.getOssId();
+        }
+        else {
+            throw new RuntimeException("save oss failed");
+        }
+    }
+
     /**
      * 修改可辨识性分析总任务
      *
@@ -117,10 +241,10 @@ public class AlgorithmTaskTrackServiceImpl extends BaseServiceImpl<AlgorithmTask
      */
     @Override
     public boolean update(AlgorithmTaskTrackBo algorithmTaskTrackBo) {
-        AlgorithmTaskTrack algorithmTaskTrack =MapstructUtils.convert(algorithmTaskTrackBo, AlgorithmTaskTrack. class);
-        if (ObjectUtil.isNotNull(algorithmTaskTrack) && ObjectUtil.isNotNull(algorithmTaskTrack.getId())){
+        AlgorithmTaskTrack algorithmTaskTrack = MapstructUtils.convert(algorithmTaskTrackBo, AlgorithmTaskTrack.class);
+        if (ObjectUtil.isNotNull(algorithmTaskTrack) && ObjectUtil.isNotNull(algorithmTaskTrack.getId())) {
             boolean updated = this.updateById(algorithmTaskTrack);
-                return updated;
+            return updated;
         }
         return false;
     }