root 2 년 전
부모
커밋
1411f9442a

+ 31 - 62
simulation-resource-server/src/main/java/com/css/simulation/resource/project/ctrl/SimulationProjectCtrl.java

@@ -8,10 +8,9 @@ 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;
-import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
 import java.util.List;
@@ -19,22 +18,47 @@ import java.util.List;
 /**
  * 工作台模块--项目运行
  */
-@Controller
+@RestController
 @RequestMapping("/simulationProject")
 public class SimulationProjectCtrl {
 
     @Resource
     private SimulationProjectService service;
-
     @Resource
     private ClusterService clusterService;
 
+    //* -------------------------------- Comment --------------------------------
+
+    /**
+     * 1. 手动项目:第一次运行项目
+     * 2. 手动项目:重新运行项目
+     */
+    @RequestMapping("updateProjectNowRunState")
+    public ResponseBodyVO<String> updateProjectNowRunState(@RequestBody SimulationManualProjectParam param) {
+        return service.updateProjectNowRunState(param);
+    }
+    /**
+     * 修改自动运行状态
+     */
+    @RequestMapping("updateAutomaticRunState")
+    public ResponseBodyVO<String> updateAutomaticRunState(@RequestBody SimulationManualProjectParam param) {
+        return service.updateAutomaticRunState(param);
+    }
+    /**
+     * 手动运行自动项目
+     */
+    @RequestMapping("createAutomaticSubProject")
+    public ResponseBodyVO<String> createAutomaticSubProject(@RequestBody SimulationManualProjectParam param) {
+        return service.createAutomaticSubProject(param);
+    }
+
+    //* -------------------------------- Comment --------------------------------
+
 
     /**
      * 创建/修改工作
      */
     @RequestMapping("addOrUpdateProject")
-    @ResponseBody
     public ResponseBodyVO<String> addOrUpdateProject(@RequestBody SimulationManualProjectParam param) {
         return service.addOrUpdateProject(param);
     }
@@ -43,7 +67,6 @@ public class SimulationProjectCtrl {
      * 查询项目列表
      */
     @RequestMapping("selectProject")
-    @ResponseBody
     public ResponseBodyVO<PageInfo<SimulationManualProjectVo>> selectProject(@RequestBody SimulationManualProjectParam param) {
         return service.selectProject(param);
     }
@@ -52,7 +75,6 @@ public class SimulationProjectCtrl {
      * 根据id查询
      */
     @RequestMapping("selectProjectById")
-    @ResponseBody
     public ResponseBodyVO<SimulationManualProjectSingleVo> selectProjectById(@RequestBody SimulationManualProjectParam param) {
         return service.selectProjectById(param);
     }
@@ -61,26 +83,16 @@ public class SimulationProjectCtrl {
      * 删除工作(支持批量删除)
      */
     @RequestMapping("deleteProjectByids")
-    @ResponseBody
     public ResponseBodyVO<String> deleteProjectByids(@RequestBody SimulationManualProjectParam param) {
         return service.deleteProjectByids(param);
     }
 
-    /**
-     * 1. 第一次运行项目
-     * 2. 重新运行项目
-     */
-    @RequestMapping("updateProjectNowRunState")
-    @ResponseBody
-    public ResponseBodyVO<String> updateProjectNowRunState(@RequestBody SimulationManualProjectParam param) {
-        return service.updateProjectNowRunState(param);
-    }
+
 
     /**
      * 获取工作详情
      */
     @RequestMapping("selectProjectDetailsById")
-    @ResponseBody
     public ResponseBodyVO<ProjectDetailsVo> selectProjectDetailsById(@RequestBody SimulationManualProjectParam param) {
         return service.selectProjectDetailsById(param);
     }
@@ -89,7 +101,6 @@ public class SimulationProjectCtrl {
      * 获取测试报告详情
      */
     @RequestMapping("selectProjectReportById")
-    @ResponseBody
     public ResponseBodyVO<ProjectReportVo> selectProjectReportById(@RequestBody SimulationManualProjectParam param) {
         return service.selectProjectReportById(param);
     }
@@ -98,7 +109,6 @@ public class SimulationProjectCtrl {
      * 获取任务详情信息
      */
     @RequestMapping("selectProjectTaskById")
-    @ResponseBody
     public ResponseBodyVO<ProjectTaskDetailsVo> selectProjectTaskById(@RequestBody SimulationManualProjectParam param) {
         return service.selectProjectTaskById(param);
     }
@@ -110,7 +120,6 @@ public class SimulationProjectCtrl {
      * 2. 场景列表
      */
     @RequestMapping("selectDropDownByType")
-    @ResponseBody
     public ResponseBodyVO<List<DropDownTypeVo>> selectDropDownByType(@RequestBody SimulationManualProjectParam param) {
         return service.selectDropDownByType(param);
     }
@@ -122,7 +131,6 @@ public class SimulationProjectCtrl {
      * 2. 场景列表
      */
     @RequestMapping("selectDropDownByTypeNew")
-    @ResponseBody
     public ResponseBodyVO<List<DropDownTypeNewVo>> selectDropDownByTypeNew(@RequestBody SimulationManualProjectParam param) {
         return service.selectDropDownByTypeNew(param);
     }
@@ -132,7 +140,6 @@ public class SimulationProjectCtrl {
      * @return 人员可用最大并行度
      */
     @RequestMapping("selectMaxParallelism")
-    @ResponseBody
     public ResponseBodyVO<String> selectMaxParallelism() {
         Integer licenseNum = clusterService.getLicenseNum();
         return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS, null, licenseNum + "");
@@ -145,7 +152,6 @@ public class SimulationProjectCtrl {
      * @return name
      */
     @RequestMapping("getDictName")
-    @ResponseBody
     public ResponseBodyVO<String> getDictName(@RequestBody DictParam param) {
         String dictName = service.getDictName(param.getType(), param.getCode());
         return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS, null, dictName);
@@ -157,7 +163,6 @@ public class SimulationProjectCtrl {
      * 解析车辆坐标文件
      */
     @RequestMapping("analysisVehicleCoord")
-    @ResponseBody
     public ResponseBodyVO analysisVehicleCoord() throws Exception {
         return service.analysisVehicleCoord();
     }
@@ -167,7 +172,6 @@ public class SimulationProjectCtrl {
      * 查询工作任务列表
      */
     @RequestMapping("selectProjectTaskList")
-    @ResponseBody
     public ResponseBodyVO selectProjectTaskList(@RequestBody SimulationManualProjectParam param) {
         return service.selectProjectTaskList(param);
     }
@@ -177,7 +181,6 @@ public class SimulationProjectCtrl {
      * 导出测试报告
      */
     @RequestMapping("exportProjectReportById")
-    @ResponseBody
     public void exportProjectReportById(@RequestBody SimulationManualProjectParam param) {
         service.exportProjectReport(param);
     }
@@ -188,7 +191,6 @@ public class SimulationProjectCtrl {
      * @return 响应对象
      */
     @RequestMapping("saveEvaluationLevel")
-    @ResponseBody
     public ResponseBodyVO<String> saveEvaluationLevel(@RequestBody SimulationManualProjectParam simulationManualProjectParam) {
         String id = simulationManualProjectParam.getId();
         if (StringUtil.isEmpty(id)) {
@@ -203,7 +205,6 @@ public class SimulationProjectCtrl {
      * 保存仿真结果到数据库(任务结果返回时调用)
      */
     @RequestMapping("saveTaskResult")
-    @ResponseBody
     public ResponseBodyVO saveTaskResult(@RequestBody SimulationManualProjectParam param) {
         return service.saveTaskResult(param);
     }
@@ -212,7 +213,6 @@ public class SimulationProjectCtrl {
      * 导出工作任务文件包
      */
     @RequestMapping("exportProjectTaskFileById")
-    @ResponseBody
     public void exportProjectTaskFileById(@RequestBody SimulationManualProjectParam param) {
         service.exportProjectTaskFileById(param);
     }
@@ -221,7 +221,6 @@ public class SimulationProjectCtrl {
      * 同时导出工作报告和任务包
      */
     @RequestMapping("exportProjectReportAndTaskFileById")
-    @ResponseBody
     public void exportProjectReportAndTaskFileById(@RequestBody SimulationManualProjectParam param) {
         service.exportProjectReportAndTaskFileById(param);
     }
@@ -231,7 +230,6 @@ public class SimulationProjectCtrl {
      * 添加编辑自动项目
      */
     @RequestMapping("addOrUpdateAutomaticProject")
-    @ResponseBody
     public ResponseBodyVO addOrUpdateAutomaticProject(@RequestBody SimulationManualProjectParam param) {
         return service.addOrUpdateAutomaticProject(param);
     }
@@ -241,19 +239,10 @@ public class SimulationProjectCtrl {
      * 删除自动运行工作(支持批量删除)
      */
     @RequestMapping("deleteAutomaticProjectByids")
-    @ResponseBody
     public ResponseBodyVO<String> deleteAutomaticProjectByids(@RequestBody SimulationManualProjectParam param) {
         return service.deleteAutomaticProjectByids(param);
     }
 
-    /**
-     * 修改自动运行状态
-     */
-    @RequestMapping("updateAutomaticRunState")
-    @ResponseBody
-    public ResponseBodyVO<String> updateAutomaticRunState(@RequestBody SimulationManualProjectParam param) {
-        return service.updateAutomaticRunState(param);
-    }
 
     ;
 
@@ -261,25 +250,16 @@ public class SimulationProjectCtrl {
      * 查询自动运行项目列表
      */
     @RequestMapping("selectAutomaticProject")
-    @ResponseBody
     public ResponseBodyVO<PageInfo<SimulationManualProjectVo>> selectAutomaticProject(@RequestBody SimulationManualProjectParam param) {
         return service.selectAutomaticProject(param);
     }
 
-    /**
-     * 手动运行自动项目
-     */
-    @RequestMapping("createAutomaticSubProject")
-    @ResponseBody
-    public ResponseBodyVO<String> createAutomaticSubProject(@RequestBody SimulationManualProjectParam param) {
-        return service.createAutomaticSubProject(param);
-    }
+
 
     /**
      * 删除自动运行子项目(支持批量删除)
      */
     @RequestMapping("deleteAutomaticSubProjectByIds")
-    @ResponseBody
     public ResponseBodyVO deleteAutomaticSubProjectByIds(@RequestBody SimulationManualProjectParam param) {
 
         return service.deleteAutomaticSubProjectByIds(param);
@@ -287,11 +267,8 @@ public class SimulationProjectCtrl {
 
     /**
      * 查询自动运行子工作信息
-     *
-     * @return
      */
     @RequestMapping("selectSubProjectInfo")
-    @ResponseBody
     public ResponseBodyVO<AutomaticProjectVo> selectSubProjectInfo(@RequestBody SimulationManualProjectParam param) {
         return service.selectSubProjectInfo(param);
     }
@@ -299,11 +276,8 @@ public class SimulationProjectCtrl {
 
     /**
      * 查询自动运行子工作列表
-     *
-     * @return
      */
     @RequestMapping("selectSubProjectList")
-    @ResponseBody
     public ResponseBodyVO<PageInfo<SimulationManualProjectVo>> selectSubProjectList(@RequestBody SimulationManualProjectParam param) {
         return service.selectSubProjectList(param);
     }
@@ -312,19 +286,14 @@ public class SimulationProjectCtrl {
      * 根据id查询自动运行项目信息
      */
     @RequestMapping("selectAutomaticProjectById")
-    @ResponseBody
     public ResponseBodyVO<SimulationManualProjectSingleVo> selectAutomaticProjectById(@RequestBody SimulationManualProjectParam param) {
         return service.selectAutomaticProjectById(param);
     }
 
     /**
      * 修改自动运行子工作运行状态
-     *
-     * @param param
-     * @return
      */
     @RequestMapping("updateAutoProjectNowRunState")
-    @ResponseBody
     public ResponseBodyVO<String> updateAutoProjectNowRunState(@RequestBody SimulationManualProjectParam param) {
         return service.updateAutoProjectNowRunState(param);
     }

+ 48 - 57
simulation-resource-server/src/main/java/com/css/simulation/resource/project/impl/SimulationProjectServiceImpl.java

@@ -3919,17 +3919,13 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
 
         //1 修改父项目停用状态
         SimulationAutomaticProjectPo po = simulationAutomaticProjectMapper.selectById(id);  // 查询父项目信息
-        String algorithmId = po.getAlgorithm();
         if ("0".equals(param.getAutomaticRunState())) { // 启动
             //1 判断算法是否已经被删除
-            String isDeleted = algorithmMapper.selectIsDeletedById(algorithmId);
-            if (DictConstants.IS_DELETED.equals(isDeleted)) {
-                return new ResponseBodyVO<>(ResponseBodyVO.Response.SERVER_FAILURE, "算法已被删除,无法启动项目。", null);
-            }
-            String currentGitVersion = algorithmService.getGitVersion(algorithmId);
+            projectUtil.checkProject(po.getAlgorithm(), po.getVehicle(), po.getScene());
+            String currentGitVersion = algorithmService.getGitVersion(po.getAlgorithm());
             simulationAutomaticProjectMapper.updateAutomaticRunState(param);
             AlgorithmParameter algorithmParam = new AlgorithmParameter();
-            algorithmParam.setId(algorithmId);
+            algorithmParam.setId(po.getAlgorithm());
             algorithmParam.setGitVersion(currentGitVersion);
             runProject(algorithmParam, param, po);
         } else if ("1".equals(param.getAutomaticRunState())) {  // 停止
@@ -3992,58 +3988,53 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
 
 
     @Override
+    @SneakyThrows
     public ResponseBodyVO<String> createAutomaticSubProject(SimulationManualProjectParam param) {
-        try {
-            if (StringUtil.isEmpty(param.getId())) {
-                return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "id不能为空");
-            }
-            SimulationAutomaticProjectPo po = simulationAutomaticProjectMapper.selectById(param.getId());
-            String projectName = po.getProjectName();
-
-            SimulationAutomaticSubProjectPo subprojectPo = new SimulationAutomaticSubProjectPo();
-            subprojectPo.createPo(po.getCreateUserId());
-            subprojectPo.setParentId(po.getId());
-            subprojectPo.setParentProjectId(po.getProjectId());
-            subprojectPo.setProjectName(projectName);
-            subprojectPo.setStartTime(new Date());
-            subprojectPo.setNowRunState(ProjectRunStateEnum.EXECUTION.getCode());//执行中
-            SimulationAutomaticSubProjectPo sPo = simulationAutomaticSubProjectMapper.selectLastProjectId(param.getId());
-            if (StringUtil.isEmpty(sPo)) {
-                subprojectPo.setProjectNum(1);
-                subprojectPo.setProjectId(po.getProjectId() + "-1");
-            } else {
-                Integer projectNum = sPo.getProjectNum() + 1;
-                subprojectPo.setProjectNum(projectNum);
-                subprojectPo.setProjectId(po.getProjectId() + "-" + projectNum);
-            }
-            //修改自动运行次数
-            Long automaticRunTimes = po.getAutomaticRunTimes();
-            if (automaticRunTimes == null) {
-                po.setAutomaticRunTimes(1L);
-            } else {
-                po.setAutomaticRunTimes(automaticRunTimes + 1);
-            }
-            simulationAutomaticProjectMapper.updateAutomaticRunTimes(po);
-            int i = simulationAutomaticSubProjectMapper.addAutomaticSubProject(subprojectPo);
-            // 查询详情信息并保存
-            String projectId = subprojectPo.getId();
-            ProjectDetailsVo info = selectProjectDetailsByIdBackUp(SimulationManualProjectParam.builder()
-                    .id(projectId)
-                    .projectType(DictConstants.PROJECT_TYPE_AUTO_SUB).build()).getInfo();
-            String infoJson = JsonUtil.beanToJson(info);
-            log.info("updateProjectNowRunState() 项目 " + projectId + " 的详情信息为:" + infoJson);
-            autoSubProjectMapper.updateDetailsById(projectId, infoJson);
-            if (i <= 0) {
-                return new ResponseBodyVO<>(ResponseBodyVO.Response.SERVER_FAILURE, "执行失败");
-            }
-
-            //推送消息到kafka
-            autoProjectRunToKafka(po, subprojectPo.getId());
-
-            return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS, null);
-        } catch (JsonProcessingException e) {
-            throw new RuntimeException(e);
+        if (StringUtil.isEmpty(param.getId())) {
+            throw new RuntimeException("id 不能为空。");
         }
+        SimulationAutomaticProjectPo po = simulationAutomaticProjectMapper.selectById(param.getId());
+        String projectName = po.getProjectName();
+
+        SimulationAutomaticSubProjectPo subprojectPo = new SimulationAutomaticSubProjectPo();
+        subprojectPo.createPo(po.getCreateUserId());
+        subprojectPo.setParentId(po.getId());
+        subprojectPo.setParentProjectId(po.getProjectId());
+        subprojectPo.setProjectName(projectName);
+        subprojectPo.setStartTime(new Date());
+        subprojectPo.setNowRunState(ProjectRunStateEnum.EXECUTION.getCode());//执行中
+        SimulationAutomaticSubProjectPo sPo = simulationAutomaticSubProjectMapper.selectLastProjectId(param.getId());
+        if (StringUtil.isEmpty(sPo)) {
+            subprojectPo.setProjectNum(1);
+            subprojectPo.setProjectId(po.getProjectId() + "-1");
+        } else {
+            Integer projectNum = sPo.getProjectNum() + 1;
+            subprojectPo.setProjectNum(projectNum);
+            subprojectPo.setProjectId(po.getProjectId() + "-" + projectNum);
+        }
+        //修改自动运行次数
+        Long automaticRunTimes = po.getAutomaticRunTimes();
+        if (automaticRunTimes == null) {
+            po.setAutomaticRunTimes(1L);
+        } else {
+            po.setAutomaticRunTimes(automaticRunTimes + 1);
+        }
+        simulationAutomaticProjectMapper.updateAutomaticRunTimes(po);
+        int i = simulationAutomaticSubProjectMapper.addAutomaticSubProject(subprojectPo);
+        // 校验项目信息
+        // 查询详情信息并保存
+        String projectId = subprojectPo.getId();
+        ProjectDetailsVo info = selectProjectDetailsByIdBackUp(SimulationManualProjectParam.builder().id(projectId)
+                .projectType(DictConstants.PROJECT_TYPE_AUTO_SUB).build()).getInfo();
+        String infoJson = JsonUtil.beanToJson(info);
+        log.info("项目 " + projectId + " 的详情信息为:" + infoJson);
+        autoSubProjectMapper.updateDetailsById(projectId, infoJson);
+        if (i <= 0) {
+            return new ResponseBodyVO<>(ResponseBodyVO.Response.SERVER_FAILURE, "执行失败");
+        }
+        // 推送消息到 kafka
+        autoProjectRunToKafka(po, subprojectPo.getId());
+        return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS, null);
     }
 
     private void autoProjectRunToKafka(SimulationAutomaticProjectPo po, String subId) throws JsonProcessingException {