Browse Source

标准化测试

LingxinMeng 2 years ago
parent
commit
dd2f4d8ef0

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

@@ -140,6 +140,17 @@ public interface SimulationProjectMapper {
             "where id = #{projectId}")
     void updateDetailsById(@Param("projectId") String projectId, @Param("details") String details);
 
+    @Update("update simulation_manual_project\n" +
+            "set details = #{details},now_run_state = #{nowRunState}\n" +
+            "where id = #{id}")
+    void updateDetailsAndNowRunStateById(@Param("id") String projectId, @Param("details") String details, @Param("nowRunState") String nowRunState);
+
+    @Update("update simulation_manual_project\n" +
+            "set id = #{newId}, details = #{details},now_run_state = #{nowRunState}\n" +
+            "where id = #{oldId}")
+    void updateIdAndDetailsAndNowRunStateById(@Param("oldId") String oldId,@Param("newId") String newId, @Param("details") String details, @Param("nowRunState") String nowRunState);
+
+
     @Update("update simulation_manual_project\n" +
             "set id = #{newId}\n" +
             "where id = #{id}")

+ 34 - 46
simulation-resource-server/src/main/java/com/css/simulation/resource/project/service/impl/SimulationProjectServiceImpl.java

@@ -261,66 +261,54 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
      * 3. 手动项目:重新运行项目 40 -> 20
      */
     @Override
-    public ResponseBodyVO<String> updateProjectNowRunState(SimulationManualProjectParam param) {
+    public ResponseBodyVO<String> updateProjectNowRunState(SimulationManualProjectParam oldProjectParam) {
         //1 查询项目详细信息,即使是新创建的任务也是保存了信息后再执行
-        SimulationManualProjectPO projectPO = projectUtil.getProjectInfo(param);
-        final String oldState = projectPO.getNowRunState();
-        final String newState = param.getNowRunState();
-        final String projectId = param.getId();
+        SimulationManualProjectPO oldProjectPO = projectUtil.getProjectInfo(oldProjectParam);
+        final String oldState = oldProjectPO.getNowRunState();
+        final String newState = oldProjectParam.getNowRunState();
+        final String oldProjectId = oldProjectParam.getId();
         //2 查询项目详情信息,固定项目最原始的运行数据
-        ProjectDetailsVO projectDetailsVO = selectProjectDetailsByIdBeforeRunning(SimulationManualProjectParam.builder().id(projectId).projectType(DictConstants.PROJECT_TYPE_MANUAL).build()).getInfo();
+        ProjectDetailsVO projectDetailsVO = selectProjectDetailsByIdBeforeRunning(SimulationManualProjectParam.builder().id(oldProjectId).projectType(DictConstants.PROJECT_TYPE_MANUAL).build()).getInfo();
+        projectDetailsVO.setFinishTime("");
         projectDetailsVO.setAlgorithmScoreList(new ArrayList<>());
-        log.info("项目 " + projectId + " 的详情信息为:" + projectDetailsVO);
+        log.info("项目 " + oldProjectId + " 的详情信息为:" + projectDetailsVO);
 
         if (DictConstants.PROJECT_TERMINATED.equals(newState)) {
-            param.setStartTime(new Date());
             projectDetailsVO.setNowRunState(DictConstants.PROJECT_TERMINATED);
             projectDetailsVO.setNowRunStateName(DictConstants.PROJECT_TERMINATED_NAME);
-            projectDetailsVO.setStartTime(TimeUtil.dateToString(new Date()));
-            projectDetailsVO.setFinishTime("");
             String projectDetailsVOJson = JsonUtil.beanToJson(projectDetailsVO);
-            projectPO.setDetails(projectDetailsVOJson);
-            simulationProjectMapper.updateDetailsById(projectId, projectDetailsVOJson);
+            oldProjectPO.setDetails(projectDetailsVOJson);
+            simulationProjectMapper.updateDetailsAndNowRunStateById(oldProjectId, projectDetailsVOJson, DictConstants.PROJECT_TERMINATED);
+            projectStopToKafka(oldProjectPO);
         } else if (DictConstants.PROJECT_RUNNING.equals(newState)) {
             projectDetailsVO.setNowRunState(DictConstants.PROJECT_RUNNING);
             projectDetailsVO.setNowRunStateName(DictConstants.PROJECT_RUNNING_NAME);
-            projectDetailsVO.setFinishTime("");
             //1 校验项目的信息是否可用
-            projectUtil.checkProject(projectPO.getAlgorithm(), projectPO.getVehicle(), projectPO.getScene());
-            if (DictConstants.PROJECT_COMPLETED.equals(oldState)) {  // 已经完成的项目再次运行
-                param.setStartTime(new Date());
+            projectUtil.checkProject(oldProjectPO.getAlgorithm(), oldProjectPO.getVehicle(), oldProjectPO.getScene());
+            if (DictConstants.PROJECT_COMPLETED.equals(oldState)) {  // 根据已完成的项目创建新项目
+                SimulationManualProjectPO newProjectPO = new SimulationManualProjectPO();
+                BeanUtils.copyProperties(oldProjectPO, newProjectPO);
                 projectDetailsVO.setStartTime(TimeUtil.dateToString(new Date()));
                 //1 初始化数据
-                projectPO.setNowRunState(DictConstants.PROJECT_RUNNING);
-                projectPO.setEvaluationLevel("");
-                projectPO.setStartTime(new Date());
-                projectPO.setFinishTime(null);
-                projectPO.createPo(AuthUtil.getCurrentUserId());
-                createProjectId(projectPO);
-                //2 保存
-                simulationProjectMapper.add(projectPO);
-                //3 创建新的项目不能修改旧项目的状态
-                param.setNowRunState(DictConstants.PROJECT_COMPLETED);
-            } else { // 创建新的项目或者重新运行被终止的项目
-                if (DictConstants.PROJECT_TERMINATED.equals(oldState)) { //重新运行被终止的项目需要修改新的ID
-                    // 如果是重新运行的项目,修改项目ID
-                    SimulationManualProjectPO simulationManualProjectPO = new SimulationManualProjectPO();
-                    simulationManualProjectPO.setId(projectId);
-                    // 生成新ID
-                    String newId = StringUtil.getRandomUUID();
-                    simulationManualProjectPO.setNewId(newId);
-                    projectPO.setId(newId);
-                    param.setId(newId);
-                    simulationProjectMapper.updateIdById(simulationManualProjectPO);    //此处注意事务
-                }
-            }
-        }
-        String projectDetailsVOJson = JsonUtil.beanToJson(projectDetailsVO);
-        projectPO.setDetails(projectDetailsVOJson);
-        simulationProjectMapper.updateDetailsById(projectId, projectDetailsVOJson);
-        // 推送消息
-        simulationProjectMapper.updateProjectNowRunState(param);
-        projectRunToKafka(projectPO); // 项目终止信息直接推送
+                newProjectPO.createPo(AuthUtil.getCurrentUserId()); // 创建新ID
+                createProjectId(newProjectPO);
+                newProjectPO.setNowRunState(DictConstants.PROJECT_RUNNING);
+                newProjectPO.setEvaluationLevel("");
+                newProjectPO.setStartTime(new Date());
+                newProjectPO.setFinishTime(null);
+                String projectDetailsVOJson = JsonUtil.beanToJson(projectDetailsVO);
+                newProjectPO.setDetails(projectDetailsVOJson);
+                simulationProjectMapper.add(newProjectPO);
+            } else if (DictConstants.PROJECT_TERMINATED.equals(oldState)) { //重新运行被终止的项目需要修改新的ID
+                // 如果是重新运行的项目,修改项目ID
+                String newProjectId = StringUtil.getRandomUUID();
+                String projectDetailsVOJson = JsonUtil.beanToJson(projectDetailsVO);
+                simulationProjectMapper.updateIdAndDetailsAndNowRunStateById(oldProjectId, newProjectId, projectDetailsVOJson, DictConstants.RUNNING);
+            } else { // 启动已保存的新项目
+                log.info("启动已保存的新项目");
+            }
+            projectRunToKafka(oldProjectPO);
+        }
         return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS);
     }