LingxinMeng 2 سال پیش
والد
کامیت
3b49b71c91

+ 3 - 3
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/application/service/ProjectApplicationService.java

@@ -72,7 +72,7 @@ public class ProjectApplicationService {
     @Resource
     private IndexMapper indexMapper;
     @Resource
-    private TaskMapper taskMapper;
+    private SimulationManualProjectTaskMapper simulationManualProjectTaskMapper;
     @Resource
     private TaskDomainService taskDomainService;
     @Resource
@@ -134,7 +134,7 @@ public class ProjectApplicationService {
             String projectPath = linuxTempPath + "project/" + projectId + "/";
             FileUtil.mkdir(projectPath);
             //5 将该 project 下所有旧的指标得分删除。
-            taskMapper.deleteByProject(projectId);
+            simulationManualProjectTaskMapper.deleteByProject(projectId);
             indexMapper.deleteFirstTargetScoreByProjectId(projectId);
             indexMapper.deleteLastTargetScoreByProjectId(projectId);
             // -------------------------------- 1 查询场景 --------------------------------
@@ -814,7 +814,7 @@ public class ProjectApplicationService {
         //3 删除 kafka 消息
         KafkaUtil.deleteTopic(kafkaAdminClient, projectId);
         //4 删除项目所有任务
-        taskMapper.deleteByProject(projectId);
+        simulationManualProjectTaskMapper.deleteByProject(projectId);
 
         //5 根据 pod 前缀删除所有 pod
         modelType = projectDomainService.getModelTypeByProjectIdAndProjectType(projectId, projectType);

+ 7 - 7
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/application/service/TaskApplicationService.java

@@ -13,7 +13,7 @@ import com.css.simulation.resource.scheduler.infrastructure.db.redis.CustomRedis
 import com.css.simulation.resource.scheduler.infrastructure.entity.PrefixEntity;
 import com.css.simulation.resource.scheduler.infrastructure.entity.ProjectEntity;
 import com.css.simulation.resource.scheduler.infrastructure.entity.TaskEntity;
-import com.css.simulation.resource.scheduler.infrastructure.db.mysql.mapper.TaskMapper;
+import com.css.simulation.resource.scheduler.infrastructure.db.mysql.mapper.SimulationManualProjectTaskMapper;
 import com.css.simulation.resource.scheduler.infrastructure.db.redis.RedisUtil;
 import io.kubernetes.client.openapi.ApiClient;
 import io.minio.MinioClient;
@@ -36,7 +36,7 @@ public class TaskApplicationService {
     @Resource
     private StringRedisTemplate stringRedisTemplate;
     @Resource
-    private TaskMapper taskMapper;
+    private SimulationManualProjectTaskMapper simulationManualProjectTaskMapper;
     @Resource
     private MinioClient minioClient;
     @Resource
@@ -64,7 +64,7 @@ public class TaskApplicationService {
      */
     @Async
     public void state(String taskId, String state, String podName) {
-        TaskEntity taskEntity = taskMapper.selectById(taskId);
+        TaskEntity taskEntity = simulationManualProjectTaskMapper.selectById(taskId);
         if (taskEntity == null) {
             log.debug("收到不存在的任务的状态消息:" + taskId);
             return;
@@ -88,7 +88,7 @@ public class TaskApplicationService {
                 // 将运行中的任务的 pod 名称放入 redis
                 stringRedisTemplate.opsForValue().set(redisPrefix.getTaskPodKey(), podName);
                 log.info("修改任务 " + taskId + " 的状态为 " + state + ",pod 名称为:" + podName);
-                taskMapper.updateStateWithStartTime(taskId, state, TimeUtil.getNowForMysql());
+                simulationManualProjectTaskMapper.updateStateWithStartTime(taskId, state, TimeUtil.getNowForMysql());
                 return;
             } else { // 结束的 pod 都直接删除,并判断项目是否完成
                 // -------------------------------- 处理状态 --------------------------------
@@ -114,11 +114,11 @@ public class TaskApplicationService {
                     } else {
                         targetEvaluate = DictConstants.TASK_ERROR_REASON_2;
                     }
-                    taskMapper.updateFailStateWithStopTime(taskId, state, TimeUtil.getNowForMysql(), targetEvaluate);
+                    simulationManualProjectTaskMapper.updateFailStateWithStopTime(taskId, state, TimeUtil.getNowForMysql(), targetEvaluate);
                 } else if (DictConstants.TASK_TERMINATED.equals(state)) {
-                    taskMapper.updateFailStateWithStopTime(taskId, state, TimeUtil.getNowForMysql(), DictConstants.TASK_ERROR_REASON_3);
+                    simulationManualProjectTaskMapper.updateFailStateWithStopTime(taskId, state, TimeUtil.getNowForMysql(), DictConstants.TASK_ERROR_REASON_3);
                 } else if (DictConstants.TASK_ANALYSIS.equals(state)) { // 该状态只会获得一次
-                    taskMapper.updateSuccessStateWithStopTime(taskId, state, TimeUtil.getNowForMysql());
+                    simulationManualProjectTaskMapper.updateSuccessStateWithStopTime(taskId, state, TimeUtil.getNowForMysql());
                     // 查询项目是否使用 CPU 生成视频
                     if (DictConstants.VIDEO_CPU.equals(isChoiceGpu)) {
                         String generateVideoKey = "task:" + taskId + ":generateVideo";

+ 11 - 9
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/domain/service/TaskDomainService.java

@@ -43,7 +43,7 @@ public class TaskDomainService {
     @Resource
     private StringRedisTemplate stringRedisTemplate;
     @Resource
-    private TaskMapper taskMapper;
+    private SimulationManualProjectTaskMapper simulationManualProjectTaskMapper;
     @Resource
     private MinioClient minioClient;
     @Resource
@@ -67,9 +67,9 @@ public class TaskDomainService {
 
     public void batchInsertTask(List<TaskEntity> taskEntityList) {
         try (SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false)) {
-            TaskMapper taskMapper1 = sqlSession.getMapper(TaskMapper.class);
+            SimulationManualProjectTaskMapper simulationManualProjectTaskMapper1 = sqlSession.getMapper(SimulationManualProjectTaskMapper.class);
             for (TaskEntity taskEntity : taskEntityList) {
-                taskMapper1.insert(taskEntity);
+                simulationManualProjectTaskMapper1.insert(taskEntity);
             }
             sqlSession.commit();
         }
@@ -95,7 +95,7 @@ public class TaskDomainService {
         }
         String packageId = projectEntity.getScenePackageId();  // 场景测试包 id,指标的rootId
         TimeUnit.SECONDS.sleep(3); // 先等一下数据库更新
-        List<TaskEntity> taskList = taskMapper.selectTaskListByProjectId(projectId);  // 所有任务信息
+        List<TaskEntity> taskList = simulationManualProjectTaskMapper.selectTaskListByProjectId(projectId);  // 所有任务信息
         if (CollectionUtil.isEmpty(taskList)) {
             log.error("项目 {} 下没有查询到任务!", projectId);
             return;
@@ -150,7 +150,7 @@ public class TaskDomainService {
                 String runState = taskOfLeaf.getRunState();
                 log.debug("任务 " + task2Id + " 的运行状态为:" + runState);
                 if (DictConstants.TASK_ANALYSIS.equals(runState)) {
-                    taskMapper.updateSuccessStateWithStopTime(task2Id, DictConstants.TASK_ANALYSING, TimeUtil.getNowForMysql());
+                    simulationManualProjectTaskMapper.updateSuccessStateWithStopTime(task2Id, DictConstants.TASK_ANALYSING, TimeUtil.getNowForMysql());
                     // 计算每个任务的得分
                     final String runResultFilePath = taskOfLeaf.getRunResultFilePath();
                     final ArrayList<String> csvResultFilePaths = CollectionUtil.createArrayList(
@@ -192,6 +192,8 @@ public class TaskDomainService {
                         taskOfLeaf.setReturnSceneId(score.getUnit_scene_ID());
                         taskOfLeaf.setTargetEvaluate(score.getEvaluate_item());
                         taskOfLeaf.setScoreExplain(score.getScore_description());
+                        taskOfLeaf.setTimeActual(score.getTime_actual());
+                        taskOfLeaf.setTimeCorrection(score.getTime_correction());
                         taskOfLeaf.setModifyUserId(projectUserId);
                         taskOfLeaf.setModifyTime(TimeUtil.getNowForMysql());
                         scoreExplain = score.getScore_description();
@@ -204,13 +206,13 @@ public class TaskDomainService {
                             taskOfLeaf.setScore(NumberUtil.cut(taskScore, 2));
                             taskOfLeaf.setScored(true);
                         }
-                        taskMapper.updateSuccessState(taskOfLeaf, DictConstants.TASK_COMPLETED);
+                        simulationManualProjectTaskMapper.updateSuccessState(taskOfLeaf, DictConstants.TASK_COMPLETED);
                     } else {
                         //1 修改任务状态为 aborted
                         taskOfLeaf.setRunState(DictConstants.TASK_ABORTED);
                         taskOfLeaf.setScore(0.0);
                         taskOfLeaf.setScored(false);
-                        taskMapper.updateFailStateWithStopTime(task2Id, DictConstants.TASK_ABORTED, TimeUtil.getNowForMysql(), DictConstants.TASK_ERROR_REASON_5);
+                        simulationManualProjectTaskMapper.updateFailStateWithStopTime(task2Id, DictConstants.TASK_ABORTED, TimeUtil.getNowForMysql(), DictConstants.TASK_ERROR_REASON_5);
                     }
                 }
             }
@@ -324,13 +326,13 @@ public class TaskDomainService {
     }
 
     public Boolean taskConfirm(String taskId) {
-        String state = taskMapper.selectStateById(taskId);
+        String state = simulationManualProjectTaskMapper.selectStateById(taskId);
         return !DictConstants.TASK_COMPLETED.equals(state);
     }
 
     public void taskTick(String taskId) {
         log.debug("收到任务 " + taskId + " 的心跳。");
-        TaskEntity taskEntity = taskMapper.selectById(taskId);
+        TaskEntity taskEntity = simulationManualProjectTaskMapper.selectById(taskId);
         if (taskEntity == null) {
             return;
         }

+ 1 - 59
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/infrastructure/db/mysql/mapper/TaskMapper.java → simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/infrastructure/db/mysql/mapper/SimulationManualProjectTaskMapper.java

@@ -4,17 +4,12 @@ package com.css.simulation.resource.scheduler.infrastructure.db.mysql.mapper;
 import com.css.simulation.resource.scheduler.infrastructure.entity.TaskEntity;
 import org.apache.ibatis.annotations.*;
 import org.apache.ibatis.type.JdbcType;
-import org.springframework.context.annotation.Scope;
 
 import java.sql.Timestamp;
 import java.util.List;
 
-/**
- * simulation_manual_project_task
- */
 @Mapper
-@Scope
-public interface TaskMapper {
+public interface SimulationManualProjectTaskMapper {
 
     @Results(id = "task", value = {
             @Result(column = "id", property = "id", jdbcType = JdbcType.VARCHAR),
@@ -46,17 +41,6 @@ public interface TaskMapper {
             "where id = #{taskId}")
     TaskEntity selectById(@Param("taskId")String taskId);
 
-    @ResultMap("task")
-    @Select("select smpt.id, smpt.p_id, smpt.create_user_id\n" +
-            "from simulation_manual_project_task smpt\n" +
-            "         left join simulation_manual_project smp on smpt.p_id = smp.id\n" +
-            "         left join simulation_automatic_subproject sas on smpt.p_id = sas.id\n" +
-            "where smpt.is_deleted = '0'\n" +
-            "  and run_state = 'Running'\n" +
-            "  and (smp.is_deleted = 0 or sas.is_deleted = 0)")
-    List<TaskEntity> selectByRunStateAndProjectIsNotDeleted(@Param("runState") String runState);
-
-
 
     @Update("update simulation_manual_project_task\n" +
             "set run_state = #{runState},run_start_time = #{runStartTime}\n" +
@@ -94,51 +78,9 @@ public interface TaskMapper {
             "where id = #{id}")
     String selectStateById(@Param("id") String id);
 
-    @Update("update simulation_manual_project_task\n" +
-            "set run_state = #{runState}," +
-            "    run_end_time = #{runStopTime}," +
-            "    run_result = 'Success'," +
-            "    return_scene_id = #{task.returnSceneId},\n" +
-            "    score           = #{task.score},\n" +
-            "    target_evaluate = #{task.targetEvaluate},\n" +
-            "    score_explain   = #{task.scoreExplain},\n" +
-            "    modify_user_id  = #{task.modifyUserId},\n" +
-            "    modify_time     = #{task.modifyTime}\n" +
-            "  where id = #{task.id}")
-    void updateSuccessStateAndScoreResultWithStopTime(@Param("task") TaskEntity task, @Param("runState") String runState, @Param("runStopTime") Timestamp runStopTime);
 
-    @Update("update simulation_manual_project_task\n" +
-            "set run_state = #{runState}," +
-            "    run_result = 'Success'," +
-            "    return_scene_id = #{task.returnSceneId},\n" +
-            "    score           = #{task.score},\n" +
-            "    target_evaluate = #{task.targetEvaluate},\n" +
-            "    score_explain   = #{task.scoreExplain},\n" +
-            "    modify_user_id  = #{task.modifyUserId},\n" +
-            "    modify_time     = #{task.modifyTime}\n" +
-            "  where id = #{task.id}")
     void updateSuccessState(@Param("task") TaskEntity task, @Param("runState") String runState);
 
-
-
-    @Update("update simulation_manual_project_task\n" +
-            "set run_state = #{runState}\n" +
-            "where id = #{taskId}")
-    void updateStateById(@Param("runState") String runState, @Param("taskId") String taskId);
-
-
     @Delete("delete from simulation_manual_project_task where p_id = #{projectId}")
     void deleteByProject(@Param("projectId") String projectId);
-
-
-    @Select("select count(1)\n" +
-            "from simulation_manual_project_task\n" +
-            "where p_id = #{projectId}")
-    int selectTaskNumByProjectId(@Param("projectId") String projectId);
-
-    @Select("select count(1)\n" +
-            "from simulation_manual_project_task\n" +
-            "where run_state in ('Aborted', 'Terminated')\n" +
-            "  and p_id = #{projectId}")
-    int selectErrorTaskNumByProjectId(@Param("projectId") String projectId);
 }

+ 2 - 0
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/infrastructure/entity/ScoreEntity.java

@@ -11,6 +11,8 @@ import lombok.NoArgsConstructor;
 @AllArgsConstructor
 public class ScoreEntity {
     private String unit_scene_ID;
+    private String time_actual; // 实际用时
+    private String time_correction; // 修正时间
     private Double unit_scene_score;
     private String evaluate_item;
     private String score_description;

+ 4 - 2
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/infrastructure/entity/TaskEntity.java

@@ -4,9 +4,9 @@ import api.common.pojo.common.CommonPO;
 import lombok.*;
 import lombok.experimental.SuperBuilder;
 
-@EqualsAndHashCode(callSuper = true)
-@Data                                                                                                            
+@Data
 @SuperBuilder
+@EqualsAndHashCode(callSuper = true)
 @NoArgsConstructor
 @AllArgsConstructor
 public class TaskEntity extends CommonPO {
@@ -25,4 +25,6 @@ public class TaskEntity extends CommonPO {
     private Long maxSimulationTime;
     private String lastTargetId;
     private String createUserId;
+    private String timeActual; // 实际用时
+    private String timeCorrection; // 修正时间
 }

+ 20 - 0
simulation-resource-scheduler/src/main/resources/mysql/mapper/SimulationManualProjectTaskMapper.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.css.simulation.resource.scheduler.infrastructure.db.mysql.mapper.SimulationManualProjectTaskMapper">
+
+
+    <update id="updateSuccessState">
+        update simulation_manual_project_task
+        set run_state       = #{runState},
+            run_result      = 'Success',
+            return_scene_id = #{task.returnSceneId},
+            score           = #{task.score},
+            target_evaluate = #{task.targetEvaluate},
+            score_explain   = #{task.scoreExplain},
+            time_actual     = #{task.timeActual},
+            score_explain   = #{task.timeCorrection},
+            modify_user_id  = #{task.modifyUserId},
+            modify_time     = #{task.modifyTime}
+        where id = #{task.id}
+    </update>
+</mapper>