root 2 роки тому
батько
коміт
0f29e90849

+ 9 - 5
simulation-resource-server/src/main/java/com/css/simulation/resource/project/ctrl/SimulationProjectCtrl.java

@@ -6,6 +6,7 @@ import api.common.pojo.param.project.SimulationManualProjectParam;
 import api.common.pojo.vo.project.DropDownTypeVo;
 import api.common.pojo.vo.project.ProjectTaskDetailsVo;
 import api.common.pojo.vo.project.SimulationManualProjectVo;
+import api.common.util.StringUtil;
 import com.css.simulation.resource.project.service.SimulationProjectService;
 import com.css.simulation.resource.system.service.ClusterService;
 import com.github.pagehelper.PageInfo;
@@ -127,7 +128,6 @@ public class SimulationProjectCtrl {
      * 0. 算法列表
      * 1. 车辆列表
      * 2. 场景列表
-     *
      */
     @RequestMapping("selectDropDownByType")
     @ResponseBody
@@ -175,7 +175,6 @@ public class SimulationProjectCtrl {
 
     /**
      * 查询工作任务列表
-     *
      */
     @RequestMapping("selectProjectTaskList")
     @ResponseBody
@@ -186,7 +185,6 @@ public class SimulationProjectCtrl {
 
     /**
      * 导出测试报告
-     *
      */
     @RequestMapping("exportProjectReportById")
     @ResponseBody
@@ -201,8 +199,14 @@ public class SimulationProjectCtrl {
      */
     @RequestMapping("saveEvaluationLevel")
     @ResponseBody
-    public ResponseBodyVO<String> saveEvaluationLevel(@RequestBody SimulationManualProjectParam param) {
-        return service.saveEvaluationLevel(param);
+    public ResponseBodyVO<String> saveEvaluationLevel(@RequestBody SimulationManualProjectParam simulationManualProjectParam) {
+        String id = simulationManualProjectParam.getId();
+        if (StringUtil.isEmpty(id)) {
+            return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE,"id 不能为空","");
+        }else{
+            return service.saveEvaluationLevel(id);
+        }
+
     }
 
     /**

+ 31 - 52
simulation-resource-server/src/main/java/com/css/simulation/resource/project/impl/SimulationProjectServiceImpl.java

@@ -33,6 +33,7 @@ import com.css.simulation.resource.project.feign.KafkaService;
 import com.css.simulation.resource.project.mapper.*;
 import com.css.simulation.resource.project.service.SimulationProjectService;
 import com.css.simulation.resource.system.service.DictService;
+import com.css.simulation.resource.util.ProjectUtil;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.github.pagehelper.PageInfo;
 import com.google.common.collect.ImmutableMap;
@@ -103,10 +104,14 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
 
     @Resource
     AlgorithmService algorithmService;
-
     @Resource
     MonitorService monitorService;
 
+    @Resource
+    ProjectUtil projectUtil;
+
+    //* -------------------------------- Comment --------------------------------
+
     private String[] dateFmtArr = new String[]{"yyyyMMdd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd"};
 
     @Override
@@ -2229,19 +2234,6 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
 
     }
 
-    private String getEvaluationLevelReport(Double algorithmScore) {
-        String evaluationLevelReport = "";
-        if (algorithmScore >= 90) {
-            evaluationLevelReport = DictConstants.REPORT_LEVEL_G;
-        } else if (algorithmScore >= 80 && algorithmScore < 90) {
-            evaluationLevelReport = DictConstants.REPORT_LEVEL_A;
-        } else if (algorithmScore >= 70 && algorithmScore < 80) {
-            evaluationLevelReport = DictConstants.REPORT_LEVEL_M;
-        } else if (algorithmScore < 70) {
-            evaluationLevelReport = DictConstants.REPORT_LEVEL_P;
-        }
-        return evaluationLevelReport;
-    }
 
     /**
      * 获取二级场景下所有得分不为 0 的场景数量
@@ -2327,24 +2319,22 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
         String evaluationLevelReport = "";
         if (!isEmpty(scenePackageSubListVOS)) {
             //汇总数据初始化
-            Double totalScore = 0D;
-
-            for (ScenePackageSubListVO v : scenePackageSubListVOS) {
-                String weight = v.getWeight();
-                Double weightDouble = Double.valueOf(weight);
+            double totalScore = 0.0;
+            for (ScenePackageSubListVO scenePackageSubListVO : scenePackageSubListVOS) {
+                double weightDouble = Double.parseDouble(scenePackageSubListVO.getWeight());
                 SimulationMptFirstTargetScorePo simulationMptFirstTargetScorePo = new SimulationMptFirstTargetScorePo();
                 simulationMptFirstTargetScorePo.setPId(po.getId());
-                simulationMptFirstTargetScorePo.setTarget(v.getSublistId());
+                simulationMptFirstTargetScorePo.setTarget(scenePackageSubListVO.getSublistId());
                 //单个二级指标得分
                 SimulationMptFirstTargetScorePo simulationMptFirstTargetScorePo1 = simulationMptFirstTargetScoreMapper.selectFirstTargetScore(simulationMptFirstTargetScorePo);
                 if (simulationMptFirstTargetScorePo1 == null) {
                     return evaluationLevelReport;
                 }
-                Double score = simulationMptFirstTargetScorePo1.getScore();
+                double score = simulationMptFirstTargetScorePo1.getScore();
                 totalScore += score * (weightDouble / 100);
             }
 
-            evaluationLevelReport = getEvaluationLevelReport(saveTwoDecimalPlaces(totalScore));
+            evaluationLevelReport = ProjectUtil.getEvaluationLevelReport(saveTwoDecimalPlaces(totalScore));
             return evaluationLevelReport;
         }
 
@@ -3107,50 +3097,36 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
     }
 
     @Override
-    public ResponseBodyVO<String> saveEvaluationLevel(SimulationManualProjectParam param) {
-
-        String projectId = param.getId();
+    public ResponseBodyVO<String> saveEvaluationLevel(String projectId) {
 
         //1 根据 projectId 获取类型 projectType
-        String projectType = null;
-        SchedulerProjectPO manualProjectPO = manualProjectMapper.selectById(projectId);
-        SchedulerProjectPO autoSubProjectPO = autoSubProjectMapper.selectById(projectId);
-        if (manualProjectPO != null) {
-            projectType = DictConstants.PROJECT_TYPE_MANUAL;
-        } else if (autoSubProjectPO != null) {
-            projectType = DictConstants.PROJECT_TYPE_AUTO_SUB;
-        }
-
+        String projectType = projectUtil.getProjectTypeByProjectId(projectId);
+        log.info("SimulationProjectServiceImpl--saveEvaluationLevel 项目 " + projectId + " 类型为 " + projectType);
 
+        //2 查询场景包 id
         String scene = null;
-        // 手动运行
-        if (DictConstants.PROJECT_TYPE_MANUAL.equals(projectType)) {
-            SimulationManualProjectPo simulationManualProjectPo = simulationProjectMapper.selectProjectBaseById(param);
-            if (simulationManualProjectPo == null) {
-                return new ResponseBodyVO<>(ResponseBodyVO.Response.SERVER_FAILURE, "没有查到工作信息");
-            }
-            scene = simulationManualProjectPo.getScene();
+        if (DictConstants.PROJECT_TYPE_MANUAL.equals(projectType)) {    // 手动运行
+            scene = simulationProjectMapper.selectSceneById(projectId);
+        } else if (DictConstants.PROJECT_TYPE_AUTO_SUB.equals(projectType)) {// 自动运行
+            scene = simulationAutomaticSubProjectMapper.selectSceneById(projectId);
         }
-        // 自动运行
-        else if (DictConstants.PROJECT_TYPE_AUTO_SUB.equals(projectType)) {
-            SimulationManualProjectVo simulationManualProjectVo = simulationAutomaticSubProjectMapper.selectProjectInfo(param);
-            if (simulationManualProjectVo == null) {
-                return new ResponseBodyVO<>(ResponseBodyVO.Response.SERVER_FAILURE, "没有查到工作信息");
-            }
-            scene = simulationManualProjectVo.getScene();
+        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 = 0D;
+            double totalScore = 0.0;
             for (ScenePackageSubListVO v : scenePackageSubListVOS) {
                 double weightDouble = Double.parseDouble(v.getWeight());
-                //单个二级指标得分
+                // 根据一级指标计算总得分
                 SimulationMptFirstTargetScorePo simulationMptFirstTargetScorePo = new SimulationMptFirstTargetScorePo();
-                simulationMptFirstTargetScorePo.setPId(param.getId()); //直接(子)任务表id
+                simulationMptFirstTargetScorePo.setPId(projectId); //直接(子)任务表id
                 simulationMptFirstTargetScorePo.setTarget(v.getSublistId());
                 SimulationMptFirstTargetScorePo simulationMptFirstTargetScorePo1 = simulationMptFirstTargetScoreMapper.selectFirstTargetScore(simulationMptFirstTargetScorePo);
                 if (simulationMptFirstTargetScorePo1 == null) {
@@ -3159,13 +3135,16 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
                 Double score = simulationMptFirstTargetScorePo1.getScore();
                 totalScore += score * (weightDouble / 100);
             }
-            evaluationLevelReport = getEvaluationLevelReport(saveTwoDecimalPlaces(totalScore));
+            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);

+ 28 - 1
simulation-resource-server/src/main/java/com/css/simulation/resource/project/mapper/SimulationAutomaticSubProjectMapper.java

@@ -1,10 +1,11 @@
 package com.css.simulation.resource.project.mapper;
 
 import api.common.pojo.param.project.SimulationManualProjectParam;
-import api.common.pojo.po.project.SimulationAutomaticProjectPo;
 import api.common.pojo.po.project.SimulationAutomaticSubProjectPo;
 import api.common.pojo.vo.project.SimulationManualProjectVo;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
@@ -13,6 +14,32 @@ 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);
+
+     @Select("        select p.scene\n" +
+             "        from simulation_automatic_subproject s\n" +
+             "                 left join simulation_automatic_project p on s.parent_id = p.id\n" +
+             "        where s.id = #{id}")
+     String selectSceneById(@Param("id") String id);
+
      SimulationAutomaticSubProjectPo selectLastProjectId(String id);
 
      int addAutomaticSubProject(SimulationAutomaticSubProjectPo po);

+ 21 - 1
simulation-resource-server/src/main/java/com/css/simulation/resource/project/mapper/SimulationProjectMapper.java

@@ -23,6 +23,26 @@ 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" +
+            "          and id = #{id,jdbcType=VARCHAR}")
+    String selectSceneById(@Param("id") String id);
+
     int add(SimulationManualProjectPo po);
 
     int update(SimulationManualProjectPo po);
@@ -39,6 +59,7 @@ public interface SimulationProjectMapper {
 
     SimulationManualProjectPo selectProjectBaseById(SimulationManualProjectParam param);
 
+
     int deleteProject(String[] ids);
 
     int updateProjectNowRunState(SimulationManualProjectParam param);
@@ -115,5 +136,4 @@ public interface SimulationProjectMapper {
     SimulationManualProjectPo selectProjectReportIdByAlgorithmId(String algorithmId);
 
 
-
 }

+ 2 - 2
simulation-resource-server/src/main/java/com/css/simulation/resource/project/service/SimulationProjectService.java

@@ -50,8 +50,8 @@ public interface SimulationProjectService {
     //根据算法id获取最新的一条报告id
     String selectProjectReportIdByAlgorithmId(String algorithmId);
 
-    //生成保存评价等级
-    ResponseBodyVO<String> saveEvaluationLevel(SimulationManualProjectParam param);
+    // 生成保存评价等级
+    ResponseBodyVO<String> saveEvaluationLevel(String id);
 
     //仿真结果保存到数据库
     ResponseBodyVO saveTaskResult(SimulationManualProjectParam param);

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

@@ -0,0 +1,47 @@
+package com.css.simulation.resource.util;
+
+import api.common.pojo.constants.DictConstants;
+import api.common.pojo.po.project.SchedulerProjectPO;
+import com.css.simulation.resource.project.mapper.AutoSubProjectMapper;
+import com.css.simulation.resource.project.mapper.ManualProjectMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+@Slf4j
+public class ProjectUtil {
+
+    ManualProjectMapper manualProjectMapper;
+    AutoSubProjectMapper autoSubProjectMapper;
+
+    @Autowired
+    public ProjectUtil(ManualProjectMapper manualProjectMapper, AutoSubProjectMapper autoSubProjectMapper) {
+        this.manualProjectMapper = manualProjectMapper;
+        this.autoSubProjectMapper = autoSubProjectMapper;
+    }
+
+    public String getProjectTypeByProjectId(String projectId) {
+        String projectType = null;
+        SchedulerProjectPO manualProjectPO = manualProjectMapper.selectById(projectId);
+        SchedulerProjectPO autoSubProjectPO = autoSubProjectMapper.selectById(projectId);
+        if (manualProjectPO != null) {
+            projectType = DictConstants.PROJECT_TYPE_MANUAL;
+        } else if (autoSubProjectPO != null) {
+            projectType = DictConstants.PROJECT_TYPE_AUTO_SUB;
+        }
+        return projectType;
+    }
+
+    public static String getEvaluationLevelReport(double algorithmScore) {
+        if (algorithmScore >= 90) {
+            return DictConstants.EVALUATION_LEVEL_G_DESCRIPTION;
+        } else if (algorithmScore >= 80) {
+            return DictConstants.REPORT_LEVEL_A;
+        } else if (algorithmScore >= 70) {
+            return DictConstants.REPORT_LEVEL_M;
+        } else {
+            return DictConstants.REPORT_LEVEL_P;
+        }
+    }
+}

+ 1 - 2
simulation-resource-server/src/main/resources/mapper/project/SimulationProjectMapper.xml

@@ -417,8 +417,7 @@
     </select>
 
     <!--根据场景包id获取场景子集-->
-    <select id="selectSubSceneByPid" parameterType="string"
-            resultType="api.common.pojo.vo.project.ScenePackageSubListVO">
+    <select id="selectSubSceneByPid" parameterType="string" resultType="api.common.pojo.vo.project.ScenePackageSubListVO">
         select sublist_id,
                sublist_name,
                scene_num,