Przeglądaj źródła

计算评价等级

root 2 lat temu
rodzic
commit
70a320afef

+ 1 - 2
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/manager/TaskManager.java

@@ -352,8 +352,7 @@ public class TaskManager {
         log.info("TaskManager--score 项目 " + projectId + " 的所有任务分数为:" + taskList);
         computeFirst(leafIndexList, allIndexTemplateList, projectId, maxLevel);
 
-        // 调用 server 的接口,计算评价等级
-        evaluationLevel(projectId);
+
         log.info("TaskManager--score 项目 " + projectId + " 打分完成!");
     }
 

+ 3 - 0
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/service/TaskService.java

@@ -59,6 +59,9 @@ public class TaskService {
         taskManager.prepareScore(redisPrefix.getProjectRunningKey());
         //3 打分
         taskManager.score(redisPrefix, userId, projectId, projectType, clientSession);
+
+        //4 调用 server 的接口,计算评价等级
+        taskManager.evaluationLevel(projectId);
         //4 结束
         taskManager.done(redisPrefix, sshClient, clientSession, projectId, projectType);
 

+ 62 - 40
simulation-resource-server/src/main/java/com/css/simulation/resource/project/impl/SimulationProjectServiceImpl.java

@@ -3099,57 +3099,79 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
     @Override
     public ResponseBodyVO<String> saveEvaluationLevel(String projectId) {
 
+        //1 根据 projectId 查询一级指标
+        double scoreOfProject = simulationMptFirstTargetScoreMapper.selectScoreOfProject(projectId);
+        String evaluationLevel = ProjectUtil.getEvaluationLevelReport(scoreOfProject);
+        // -------------------------------- 保存结果 --------------------------------
         //1 根据 projectId 获取类型 projectType
         String projectType = projectUtil.getProjectTypeByProjectId(projectId);
         log.info("SimulationProjectServiceImpl--saveEvaluationLevel 项目 " + projectId + " 类型为 " + projectType);
-
-        //2 查询场景包 id
-        String scene = null;
-        if (DictConstants.PROJECT_TYPE_MANUAL.equals(projectType)) {    // 手动运行
-            scene = simulationProjectMapper.selectSceneById(projectId);
-        } else if (DictConstants.PROJECT_TYPE_AUTO_SUB.equals(projectType)) {// 自动运行
-            scene = simulationAutomaticSubProjectMapper.selectSceneById(projectId);
-        }
-        if (StringUtil.isEmpty(scene)) {
-            return new ResponseBodyVO<>(ResponseBodyVO.Response.SERVER_FAILURE, "未查询到项目使用的场景测试包。");
-        }
-        log.info("SimulationProjectServiceImpl--saveEvaluationLevel 项目 " + projectId + " 使用的场景包为 " + scene);
-
-        // -------------------------------- 计算评价等级 --------------------------------
-        //TODO 该段代码可优化,有时间再优化
-        //1 查询场景报告关联的指标
-        List<ScenePackageSubListVO> scenePackageSubListVOS = simulationProjectMapper.selectSubSceneByPid(scene);
-        String evaluationLevelReport = "";
-        if (!isEmpty(scenePackageSubListVOS)) {
-            double totalScore = 0.0;
-            for (ScenePackageSubListVO v : scenePackageSubListVOS) {
-                double weightDouble = Double.parseDouble(v.getWeight());
-                // 根据一级指标计算总得分
-                SimulationMptFirstTargetScorePo simulationMptFirstTargetScorePo = new SimulationMptFirstTargetScorePo();
-                simulationMptFirstTargetScorePo.setPId(projectId); //直接(子)任务表id
-                simulationMptFirstTargetScorePo.setTarget(v.getSublistId());
-                SimulationMptFirstTargetScorePo simulationMptFirstTargetScorePo1 = simulationMptFirstTargetScoreMapper.selectFirstTargetScore(simulationMptFirstTargetScorePo);
-                if (simulationMptFirstTargetScorePo1 == null) {
-                    continue;
-                }
-                Double score = simulationMptFirstTargetScorePo1.getScore();
-                totalScore += score * (weightDouble / 100);
-            }
-            evaluationLevelReport = ProjectUtil.getEvaluationLevelReport(totalScore);
-            log.info("SimulationProjectServiceImpl--saveEvaluationLevel 项目 " + projectId + " 的总分为: " + totalScore + ",评价等级为:" + evaluationLevelReport);
-        }
-        // -------------------------------- 保存结果 --------------------------------
         if (DictConstants.PROJECT_TYPE_MANUAL.equals(projectType)) {
-            manualProjectMapper.updateEvaluationLevel(projectId, evaluationLevelReport);
+            manualProjectMapper.updateEvaluationLevel(projectId, evaluationLevel);
         } else if (DictConstants.PROJECT_TYPE_AUTO_SUB.equals(projectType)) {
-            autoSubProjectMapper.updateEvaluationLevel(projectId, evaluationLevelReport);
+            autoSubProjectMapper.updateEvaluationLevel(projectId, evaluationLevel);
         } else {
             ;
         }
+        log.info("SimulationProjectServiceImpl--saveEvaluationLevel 项目 " + projectId + " 的总分为: " + scoreOfProject + ",评价等级为:" + evaluationLevel);
 
-        return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS);
+        return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS, "评价等级为" + evaluationLevel, "");
     }
 
+//    @Override
+//    public ResponseBodyVO<String> saveEvaluationLevel(String projectId) {
+//
+//        //1 根据 projectId 获取类型 projectType
+//        String projectType = projectUtil.getProjectTypeByProjectId(projectId);
+//        log.info("SimulationProjectServiceImpl--saveEvaluationLevel 项目 " + projectId + " 类型为 " + projectType);
+//
+//        //2 查询场景包 id
+//        String scene = null;
+//        if (DictConstants.PROJECT_TYPE_MANUAL.equals(projectType)) {    // 手动运行
+//            scene = simulationProjectMapper.selectSceneById(projectId);
+//        } else if (DictConstants.PROJECT_TYPE_AUTO_SUB.equals(projectType)) {// 自动运行
+//            scene = simulationAutomaticSubProjectMapper.selectSceneById(projectId);
+//        }
+//        if (StringUtil.isEmpty(scene)) {
+//            return new ResponseBodyVO<>(ResponseBodyVO.Response.SERVER_FAILURE, "未查询到项目使用的场景测试包。");
+//        }
+//        log.info("SimulationProjectServiceImpl--saveEvaluationLevel 项目 " + projectId + " 使用的场景包为 " + scene);
+//
+//        // -------------------------------- 计算评价等级 --------------------------------
+//        //TODO 该段代码可优化,有时间再优化
+//        //1 查询场景报告关联的指标
+//        List<ScenePackageSubListVO> scenePackageSubListVOS = simulationProjectMapper.selectSubSceneByPid(scene);
+//        String evaluationLevelReport = "";
+//        if (!isEmpty(scenePackageSubListVOS)) {
+//            double totalScore = 0.0;
+//            for (ScenePackageSubListVO v : scenePackageSubListVOS) {
+//                double weightDouble = Double.parseDouble(v.getWeight());
+//                // 根据一级指标计算总得分
+//                SimulationMptFirstTargetScorePo simulationMptFirstTargetScorePo = new SimulationMptFirstTargetScorePo();
+//                simulationMptFirstTargetScorePo.setPId(projectId); //直接(子)任务表id
+//                simulationMptFirstTargetScorePo.setTarget(v.getSublistId());
+//                SimulationMptFirstTargetScorePo simulationMptFirstTargetScorePo1 = simulationMptFirstTargetScoreMapper.selectFirstTargetScore(simulationMptFirstTargetScorePo);
+//                if (simulationMptFirstTargetScorePo1 == null) {
+//                    continue;
+//                }
+//                Double score = simulationMptFirstTargetScorePo1.getScore();
+//                totalScore += score * (weightDouble / 100);
+//            }
+//            evaluationLevelReport = ProjectUtil.getEvaluationLevelReport(totalScore);
+//            log.info("SimulationProjectServiceImpl--saveEvaluationLevel 项目 " + projectId + " 的总分为: " + totalScore + ",评价等级为:" + evaluationLevelReport);
+//        }
+//        // -------------------------------- 保存结果 --------------------------------
+//        if (DictConstants.PROJECT_TYPE_MANUAL.equals(projectType)) {
+//            manualProjectMapper.updateEvaluationLevel(projectId, evaluationLevelReport);
+//        } else if (DictConstants.PROJECT_TYPE_AUTO_SUB.equals(projectType)) {
+//            autoSubProjectMapper.updateEvaluationLevel(projectId, evaluationLevelReport);
+//        } else {
+//            ;
+//        }
+//
+//        return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS);
+//    }
+
     @Override
     public ResponseBodyVO saveTaskResult(SimulationManualProjectParam param) {
 

+ 2 - 20
simulation-resource-server/src/main/java/com/css/simulation/resource/project/mapper/SimulationAutomaticSubProjectMapper.java

@@ -14,25 +14,7 @@ import java.util.List;
 @Repository
 public interface SimulationAutomaticSubProjectMapper {
 
-     @Select("        select s.id,\n" +
-             "               p.scene,\n" +
-             "               s.project_id,\n" +
-             "               p.project_name,\n" +
-             "               p.algorithm,\n" +
-             "               p.algorithm_type,\n" +
-             "               p.vehicle,\n" +
-             "               p.project_describe,\n" +
-             "               s.start_time,\n" +
-             "               s.finish_time,\n" +
-             "               s.now_run_state,\n" +
-             "               p.parallelism,\n" +
-             "               p.max_simulation_time,\n" +
-             "               p.is_choice_gpu,\n" +
-             "               s.evaluation_level\n" +
-             "        from simulation_automatic_subproject s\n" +
-             "                 left join simulation_automatic_project p on s.parent_id = p.id\n" +
-             "        where s.id = #{id}")
-     SimulationManualProjectVo selectById(@Param("id") String id);
+     SimulationAutomaticSubProjectPo selectById(SimulationManualProjectParam param);
 
      @Select("        select p.scene\n" +
              "        from simulation_automatic_subproject s\n" +
@@ -50,7 +32,7 @@ public interface SimulationAutomaticSubProjectMapper {
 
      List<SimulationManualProjectVo> selectList(SimulationManualProjectParam param);
 
-     SimulationAutomaticSubProjectPo selectById(SimulationManualProjectParam param);
+
 
      SimulationManualProjectVo selectProjectInfo(SimulationManualProjectParam param);
 

+ 7 - 9
simulation-resource-server/src/main/java/com/css/simulation/resource/project/mapper/SimulationMptFirstTargetScoreMapper.java

@@ -1,19 +1,11 @@
 package com.css.simulation.resource.project.mapper;
 
-import api.common.pojo.param.project.ProjectTaskParam;
-import api.common.pojo.param.project.SceneScoreParam;
-import api.common.pojo.po.project.ManualProjectTaskPo;
 import api.common.pojo.po.project.SimulationMptFirstTargetScorePo;
-import api.common.pojo.po.project.SimulationMptSceneScorePo;
-import api.common.pojo.vo.project.ManualProjectTaskVo;
-import api.common.pojo.vo.project.ProjectRunResultRatioNumVo;
-import api.common.pojo.vo.project.ProjectRunStateNumVo;
-import api.common.pojo.vo.project.SceneScoreVo;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
-import java.util.Map;
 
 @Mapper
 @Repository
@@ -21,6 +13,12 @@ public interface SimulationMptFirstTargetScoreMapper {
 
     SimulationMptFirstTargetScorePo selectFirstTargetScore(SimulationMptFirstTargetScorePo po);
 
+    @Select("select sum(score * weight / 100.0)\n" +
+            "from simulation_mpt_first_target_score\n" +
+            "where is_deleted = '0'\n" +
+            "  and p_id = #{pId,jdbcType=VARCHAR}")
+    Double selectScoreOfProject(String projectId);
+
     List<SimulationMptFirstTargetScorePo> selectFirstTargetByPid(SimulationMptFirstTargetScorePo po);
 
 

+ 0 - 14
simulation-resource-server/src/main/java/com/css/simulation/resource/project/mapper/SimulationProjectMapper.java

@@ -23,20 +23,6 @@ import java.util.Map;
 @Repository
 public interface SimulationProjectMapper {
 
-    @Select("select id,\n" +
-            "               algorithm,\n" +
-            "               scene,\n" +
-            "               algorithm_score,\n" +
-            "               project_name,\n" +
-            "               project_id,\n" +
-            "               algorithm_type,\n" +
-            "               evaluation_level\n" +
-            "        from simulation_manual_project\n" +
-            "        where is_deleted = '0'\n" +
-            "          and id = #{id,jdbcType=VARCHAR}")
-    SimulationManualProjectPo selectById(@Param("id") String id);
-
-
     @Select("select scene\n" +
             "        from simulation_manual_project\n" +
             "        where is_deleted = '0'\n" +

+ 1 - 1
simulation-resource-server/src/main/java/com/css/simulation/resource/util/ProjectUtil.java

@@ -35,7 +35,7 @@ public class ProjectUtil {
 
     public static String getEvaluationLevelReport(double algorithmScore) {
         if (algorithmScore >= 90) {
-            return DictConstants.EVALUATION_LEVEL_G_DESCRIPTION;
+            return DictConstants.REPORT_LEVEL_G;
         } else if (algorithmScore >= 80) {
             return DictConstants.REPORT_LEVEL_A;
         } else if (algorithmScore >= 70) {