martin 3 år sedan
förälder
incheckning
b1e6b3de27

+ 29 - 11
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/consumer/ManualProjectConsumer.java

@@ -33,9 +33,6 @@ import java.util.Set;
 @Slf4j
 public class ManualProjectConsumer {
 
-    private static final String USER_ID = "simulation-resource-scheduler";
-
-
     @Autowired
     KafkaTemplate<String, String> kafkaTemplate;
     @Autowired
@@ -63,6 +60,8 @@ public class ManualProjectConsumer {
     @Autowired
     AlgorithmMapper algorithmMapper;
     @Autowired
+    UserMapper userMapper;
+    @Autowired
     ManualProjectService manualProjectService;
     //    @Autowired
 //    ApiClient apiClient;
@@ -78,14 +77,33 @@ public class ManualProjectConsumer {
 
 
 
-//    /**
-//     * 任务运行前首先判断用户是否可以分配
-//     *
-//     * @param projectRecord 项目启动消息
-//     */
-//    @KafkaListener(groupId = "simulation-resource-scheduler", topics = "${scheduler.manual-project.topic}")
-//    @SneakyThrows
-//    public void dispatchManualProject(ConsumerRecord<String, String> projectRecord) {}
+    /**
+     * 任务运行前首先判断用户是否拥有可分配资源
+     *
+     * @param projectRecord 项目启动消息
+     */
+    @KafkaListener(groupId = "simulation-resource-scheduler", topics = "${scheduler.manual-project.topic}")
+    @SneakyThrows
+    public void dispatchManualProject(ConsumerRecord<String, String> projectRecord) {
+        log.info("------- ManualProjectConsumer 接收到项目开始消息为:" + projectRecord);
+        String projectJson = projectRecord.value();
+        //1 读取 kafka 的 project 信息
+        ProjectMessageDTO projectMessageDTO = JsonUtil.jsonToBean(projectJson, ProjectMessageDTO.class);
+        String projectId = projectMessageDTO.getProjectId();    // 项目 id
+        String packageId = projectMessageDTO.getScenePackageId();   // 场景测试包 id
+        int maxSimulationTime = projectMessageDTO.getMaxSimulationTime(); // 最大仿真时间,即生成视频的时间长度
+        String vehicleConfigId = projectMessageDTO.getVehicleConfigId();// 模型配置 id
+        String algorithmId = projectMessageDTO.getAlgorithmId();    // 算法 id
+        //2 根据 projectId 获取创建用户 id
+        manualProjectMapper.selectCreateUserById(projectId);
+        //3 获取用户类型(管理员账户、管理员子账户、普通账户、普通账户子账户)(独占、共享)
+        //3-1 管理员账户和管理员子账户直接执行
+        //3-2 普通独占用户,根据自己的独占节点排队
+        //3-2 普通用户
+//        if(userMapper.selectUserTypeById)
+
+        parseManualProject(projectRecord);
+    }
 
 
     /**

+ 6 - 1
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/mapper/ManualProjectMapper.java

@@ -49,9 +49,14 @@ public interface ManualProjectMapper {
 
 
 
-    @Select("select *\n" +
+    @Select("select id\n" +
             "from simulation_manual_project\n" +
             "where is_deleted = '0'\n" +
             "  and now_run_state = #{state}")
     List<String> selectIdByState(@Param("state") String state);
+
+    @Select("select create_user_id\n" +
+            "from simulation_manual_project\n" +
+            "where id = #{id}")
+    void selectCreateUserById(@Param("id") String id);
 }

+ 62 - 0
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/mapper/UserMapper.java

@@ -0,0 +1,62 @@
+package com.css.simulation.resource.scheduler.mapper;
+
+
+import com.css.simulation.resource.scheduler.pojo.po.ProjectPO;
+import org.apache.ibatis.annotations.*;
+import org.apache.ibatis.type.JdbcType;
+
+import java.sql.Timestamp;
+import java.util.List;
+
+@Mapper
+public interface UserMapper {
+
+
+    @Results(id = "project", value = {
+            @Result(column = "id", property = "id", jdbcType = JdbcType.VARCHAR),
+            @Result(column = "scene", property = "scenePackageId", jdbcType = JdbcType.VARCHAR)
+    })
+
+    @Select("select id, scene\n" +
+            "from simulation_manual_project\n" +
+            "where id = #{projectId}")
+    ProjectPO selectById(@Param("projectId")String projectId);
+
+
+    @Update("update simulation_manual_project\n" +
+            "set now_run_state  = #{state},\n" +
+            "    task_completed = '0'\n" +
+            "where id = #{id}")
+    void resetProjectState(@Param("id") String id, @Param("state") String state);
+
+    @Update("update simulation_manual_project\n" +
+            "set now_run_state  = #{state},\n" +
+            "    finish_time = #{finishTime}\n" +
+            "where id = #{id}")
+    void updateProjectState(@Param("id") String id, @Param("state") String state,@Param("finishTime") Timestamp finishTime);
+
+
+    @Update("update simulation_manual_project\n" +
+            "set task_number = #{taskNumber}, task_completed = 0\n" +
+            "where id = #{id}")
+    void updateTaskNumber(@Param("id") String id, @Param("taskNumber") int taskNumber);
+
+    @Update("update simulation_manual_project\n" +
+            "set task_completed = #{taskCompleted}\n" +
+            "where id = #{id}")
+    void updateTaskCompleted(@Param("id") String id, @Param("taskCompleted") int taskCompleted);
+
+
+
+
+    @Select("select id\n" +
+            "from simulation_manual_project\n" +
+            "where is_deleted = '0'\n" +
+            "  and now_run_state = #{state}")
+    List<String> selectIdByState(@Param("state") String state);
+
+    @Select("select create_user_id\n" +
+            "from simulation_manual_project\n" +
+            "where id = #{id}")
+    void selectCreateUserById(@Param("id") String id);
+}

+ 1 - 1
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/scheduler/ProjectScheduler.java

@@ -93,7 +93,7 @@ public class ProjectScheduler {
 
         //1 查询出正在运行中的 project
         List<String> projectIdList = projectMapper.selectIdByState("20");
-        log.info("ProjectScheduler--projectCheck 查询出正在运行中的 project" + projectIdList);
+        log.info("ProjectScheduler--projectCheck 运行中的项目有:" + projectIdList);
         //2 根据 projectId 获取 pod
         projectIdList.forEach(projectId -> {
             try {