martin 3 rokov pred
rodič
commit
3ae1f0c9c6

+ 9 - 13
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/consumer/ManualProjectConsumer.java

@@ -79,8 +79,8 @@ public class ManualProjectConsumer {
      */
     @KafkaListener(groupId = "simulation-resource-scheduler", topics = "${scheduler.manual-project.topic}")
     @SneakyThrows
-    public void dispatchManualProject(ConsumerRecord<String, String> projectRecord) {
-        log.info("------- ManualProjectConsumer 接收到项目开始消息为:" + projectRecord);
+    public void cacheManualProject(ConsumerRecord<String, String> projectRecord) {
+        log.info("------- ManualProjectConsumer--cacheManualProject 接收到项目开始消息为:" + projectRecord);
         String projectJson = projectRecord.value();
         //1 读取 kafka 的 project 信息
         ProjectMessageDTO projectMessageDTO = JsonUtil.jsonToBean(projectJson, ProjectMessageDTO.class);
@@ -95,18 +95,16 @@ public class ManualProjectConsumer {
         UserPO userPO = userMapper.selectById(userId);
         String roleCode = userPO.getRoleCode();
         String useType = userPO.getUseType();
-
-
         if (DictConstants.ROLE_CODE_SYSADMIN.equals(roleCode) || DictConstants.ROLE_CODE_ADMIN.equals(roleCode)) {  //3-1 管理员账户和管理员子账户直接执行
             parseManualProject(projectRecord);
         } else if (DictConstants.ROLE_CODE_UESR.equals(roleCode)) {
-            if (DictConstants.USE_TYPE_EXCLUSIVE.equals(useType)) {   //3-2 普通独占账户,根据自己的独占节点排队
-                // 获取独占数量
-                // 获取该用户正在运行的项目数量
-                // 获取
-            } else {
-
-            }
+//            if (DictConstants.USE_TYPE_EXCLUSIVE.equals(useType)) {   //3-2 普通独占账户,根据自己的独占节点排队
+//                // 获取独占数量
+//                // 获取该用户正在运行的项目数量
+//                // 获取
+//            } else {
+//
+//            }
             parseManualProject(projectRecord);
         } else if (DictConstants.ROLE_CODE_SUBUESR.equals(roleCode)) {
             if (DictConstants.USE_TYPE_EXCLUSIVE.equals(useType)) {   //3-2 普通独占子账户,根据自己的独占节点排队
@@ -119,7 +117,6 @@ public class ManualProjectConsumer {
             parseManualProject(projectRecord);
         }
 
-
     }
 
 
@@ -128,7 +125,6 @@ public class ManualProjectConsumer {
      *
      * @param projectRecord 项目启动消息
      */
-    @KafkaListener(groupId = "simulation-resource-scheduler", topics = "${scheduler.manual-project.topic}")
     @SneakyThrows
     public void parseManualProject(ConsumerRecord<String, String> projectRecord) {
 

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

@@ -18,12 +18,12 @@ public interface ManualProjectMapper {
             @Result(column = "create_user_id", property = "createUserId", jdbcType = JdbcType.VARCHAR)
     })
 
-    @Select("select id, scene\n" +
+    @Select("select id, scene, create_user_id\n" +
             "from simulation_manual_project\n" +
             "where id = #{projectId}")
     ProjectPO selectById(@Param("projectId")String projectId);
 
-    @Select("select id, create_user_id\n" +
+    @Select("select id, scene, create_user_id\n" +
             "from simulation_manual_project\n" +
             "where is_deleted = '0'\n" +
             "  and now_run_state = #{nowRunState}")

+ 24 - 27
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/service/TaskService.java

@@ -168,22 +168,21 @@ public class TaskService {
         indexMapper.deleteFirstByProjectId(projectId);
         indexMapper.deleteLastByProjectId(projectId);
         //1 查询场景包对应指标
-        List<IndexTemplatePO> allIndexList = JsonUtil.jsonToList(stringRedisTemplate.opsForValue().get(manualProjectTopic + ":" + userId + ":" + projectId + ":package:" + packageId + ":all"), IndexTemplatePO.class);
-        List<IndexTemplatePO> leafIndexList = JsonUtil.jsonToList(stringRedisTemplate.opsForValue().get(manualProjectTopic + ":" + userId + ":" + projectId + ":package:" + packageId + ":leaf"), IndexTemplatePO.class);
+        List<IndexTemplatePO> allIndexTemplateList = JsonUtil.jsonToList(stringRedisTemplate.opsForValue().get(manualProjectTopic + ":" + userId + ":" + projectId + ":package:" + packageId + ":all"), IndexTemplatePO.class);
+        List<IndexTemplatePO> leafIndexTemplateList = JsonUtil.jsonToList(stringRedisTemplate.opsForValue().get(manualProjectTopic + ":" + userId + ":" + projectId + ":package:" + packageId + ":leaf"), IndexTemplatePO.class);
         int maxLevel = 1; // 用于计算指标得分
-        List<LeafIndexPO> leafTaskIndexList = new ArrayList<>();
-        log.info("TaskService--state 共有 " + leafIndexList.size() + "个叶子节点!");
-
-        for (int i = 0; i < leafIndexList.size(); i++) {
+        List<LeafIndexPO> leafIndexList = new ArrayList<>();
+        log.info("TaskService--state 共有 " + leafIndexTemplateList.size() + "个叶子节点!");
+        for (int i = 0; i < leafIndexTemplateList.size(); i++) {
             AtomicReference<String> scoreExplain = new AtomicReference<>(); // 每个叶子指标下的任务的得分说明一样和叶子指标一致
-            IndexTemplatePO leafIndex = leafIndexList.get(i);
-            String indexId = leafIndex.getIndexId();
-            String parentId = leafIndex.getParentId(); // 父 id
-            String rootId = leafIndex.getRootId(); // 包 id
-            String weight = leafIndex.getWeight(); // 权重
-            Integer packageLevel = leafIndex.getPackageLevel(); // 几级指标
-            String ruleName = leafIndex.getRuleName();    // 打分脚本名称,例如 AEB_1-1
-            String ruleDetails = leafIndex.getRuleDetails();    // 打分脚本内容
+            IndexTemplatePO leafIndexTemplate = leafIndexTemplateList.get(i);
+            String indexId = leafIndexTemplate.getIndexId();
+            String parentId = leafIndexTemplate.getParentId(); // 父 id
+            String rootId = leafIndexTemplate.getRootId(); // 包 id
+            String weight = leafIndexTemplate.getWeight(); // 权重
+            Integer packageLevel = leafIndexTemplate.getPackageLevel(); // 几级指标
+            String ruleName = leafIndexTemplate.getRuleName();    // 打分脚本名称,例如 AEB_1-1
+            String ruleDetails = leafIndexTemplate.getRuleDetails();    // 打分脚本内容
             if (packageLevel > maxLevel) {
                 maxLevel = packageLevel;
             }
@@ -265,12 +264,12 @@ public class TaskService {
             // 计算叶子指标得分(任务得分总和 / 任务数量)
             double leafIndexScore = resultNumberOfCurrentIndex == 0 ? 0 : NumberUtil.cut(leafSum / resultNumberOfCurrentIndex, 2);
             // 创建叶子指标对象
-            leafIndex.setTempScore(leafIndexScore);
+            leafIndexTemplate.setTempScore(leafIndexScore);
 
-            LeafIndexPO leafTaskIndex = LeafIndexPO.builder()
+            LeafIndexPO leafIndex = LeafIndexPO.builder()
                     .id(StringUtil.getRandomUUID())
                     .pId(projectId)
-                    .target(leafIndex.getIndexId())
+                    .target(leafIndexTemplate.getIndexId())
                     .notStandardSceneNum((int) notStandardSceneNumber)
                     .score(leafIndexScore)
                     .indexId(indexId)
@@ -280,21 +279,19 @@ public class TaskService {
                     .scoreExplain(scoreExplain.get())
                     .packageLevel(packageLevel)
                     .build();
-            leafTaskIndex.setCreateUserId(userId);
-            leafTaskIndex.setCreateTime(TimeUtil.getNowForMysql());
-            leafTaskIndex.setModifyUserId(userId);
-            leafTaskIndex.setModifyTime(TimeUtil.getNowForMysql());
-            leafTaskIndex.setIsDeleted("0");
+            leafIndex.setCreateUserId(userId);
+            leafIndex.setCreateTime(TimeUtil.getNowForMysql());
+            leafIndex.setModifyUserId(userId);
+            leafIndex.setModifyTime(TimeUtil.getNowForMysql());
+            leafIndex.setIsDeleted("0");
 
-            leafTaskIndexList.add(leafTaskIndex);
+            leafIndexList.add(leafIndex);
         }
-
         // 保存叶子指标得分
-        taskIndexManager.batchInsertLeafIndex(leafTaskIndexList);
+        taskIndexManager.batchInsertLeafIndex(leafIndexList);
         // 保存一级指标分数
         log.info("TaskService--state 项目 " + projectId + " 的所有任务分数为:" + taskList);
-        log.info("TaskService--state 根据每个指标的得分和权重算出各个一级指标的得分(即 project 对应的场景测试包下的一级指标)!");
-        computeFirst(leafTaskIndexList, allIndexList, projectId, maxLevel);
+        computeFirst(leafIndexList, allIndexTemplateList, projectId, maxLevel);
 
         // 调用 server 的接口,计算评价等级
         evaluationLevel(projectId);