夜得朦胧 hace 1 año
padre
commit
5ec8e13e38

+ 55 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/server/adapter/controller/job_manage/SimulationMageGroupController.java

@@ -0,0 +1,55 @@
+package com.css.simulation.resource.server.adapter.controller.job_manage;
+
+import api.common.pojo.common.ResponseBodyVO;
+import api.common.pojo.param.group.SimulationMageGroupParam;
+import api.common.pojo.po.group.SimulationMageGroupPO;
+import com.css.simulation.resource.server.app.service.job_manage.SimulationMageGroupService;
+import com.github.pagehelper.PageInfo;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * 工作台模块--项目运行
+ */
+@RestController
+@RequestMapping("/simulationMageGroup")
+public class SimulationMageGroupController {
+
+    @Resource
+    private SimulationMageGroupService groupService;
+
+
+    @RequestMapping("/selectAllSimulationMageGroupList")
+    public ResponseBodyVO<List<SimulationMageGroupPO>> selectAllSimulationMageGroupList(@RequestBody SimulationMageGroupParam param) {
+        return groupService.selectAllSimulationMageGroupList(param);
+    }
+
+    @RequestMapping("/selectSimulationMapList")
+    public ResponseBodyVO<PageInfo<SimulationMageGroupPO>> selectSimulationMapList(@RequestBody SimulationMageGroupParam param) {
+        return groupService.selectSimulationMageGroupList(param);
+    }
+
+    @RequestMapping("/getSimulationMageGroup")
+    public ResponseBodyVO<SimulationMageGroupPO> getSimulationMageGroup(@RequestBody SimulationMageGroupParam param) {
+        return groupService.getSimulationMageGroup(param);
+    }
+
+    @RequestMapping("/updateSimulationMageGroup")
+    public ResponseBodyVO updateSimulationMageGroup(@RequestBody SimulationMageGroupParam param) {
+        return groupService.updateSimulationMageGroup(param);
+    }
+
+    @RequestMapping("/deleteSimulationMageGroup")
+    public ResponseBodyVO deleteSimulationMageGroup(@RequestBody List<SimulationMageGroupParam> paramList) {
+        return groupService.deleteSimulationMageGroup(paramList);
+    }
+
+    @RequestMapping("/addSimulationMageGroup")
+    public ResponseBodyVO addSimulationMageGroup(@RequestBody SimulationMageGroupParam param) {
+        return groupService.addSimulationMageGroup(param);
+    }
+}

+ 29 - 3
simulation-resource-server/src/main/java/com/css/simulation/resource/server/app/impl/MultiSimulationProjectServiceImpl.java

@@ -132,10 +132,16 @@ public class MultiSimulationProjectServiceImpl implements MultiSimulationProject
             return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "添加失败,存在同名的多模式仿真任务");
         }
         String currentUserId = AuthUtil.getCurrentUserId();
-
+        if (StringUtils.isBlank(currentUserId)){
+            return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "当前角色为空");
+        }
+        if (StringUtils.isBlank(param.getSimulationMageGroupId())){
+            return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "仿真镜像组id为空");
+        }
         MultiSimulationProjectPO build = MultiSimulationProjectPO.builder()
             .id(StringUtil.getRandomUUID())
             .projectName(param.getProjectName() == null ? "" : param.getProjectName())
+            .simulationMageGroupId(param.getSimulationMageGroupId())
             .projectMaxSeconds(param.getProjectMaxSeconds() == null ? 0 : param.getProjectMaxSeconds())
             .projectKey(param.getProjectKey() == null ? "" : param.getProjectKey())
             .projectDescription(param.getProjectDescription() == null ? "" : param.getProjectDescription())
@@ -167,6 +173,11 @@ public class MultiSimulationProjectServiceImpl implements MultiSimulationProject
         if (Objects.isNull(projectVO)){
             return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "未查询到可用的任务");
         }
+        String simulationMageGroupId = projectVO.getSimulationMageGroupId();
+        if (StringUtils.isBlank(simulationMageGroupId)){
+            return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "仿真镜像组为空");
+        }
+
         Integer projectStatus = projectVO.getProjectStatus();
         Integer status = param.getProjectStatus();
         int res = 0;
@@ -198,7 +209,7 @@ public class MultiSimulationProjectServiceImpl implements MultiSimulationProject
                     return sceneCars;
                 }
             }
-            MultiSimulationProjectKafkaParam multiSimulationProjectKafkaParam = buildSendKafkaParam(projectId, projectVO.getProjectMaxSeconds());
+            MultiSimulationProjectKafkaParam multiSimulationProjectKafkaParam = buildSendKafkaParam(projectId, projectVO.getProjectMaxSeconds(), simulationMageGroupId);
             projectRunToKafka(multiSimulationProjectKafkaParam);
             res = multiSimulationProjectMapper.updateMultiSimulationProjectStatus(param);
         } else if (projectStatus == MultiSimulationStatusEnum.COMPLETED_STATUS.getProjectStatus()) {
@@ -216,9 +227,10 @@ public class MultiSimulationProjectServiceImpl implements MultiSimulationProject
         return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE);
     }
 
-    public MultiSimulationProjectKafkaParam buildSendKafkaParam(String projectId, Integer defaultTime){
+    public MultiSimulationProjectKafkaParam buildSendKafkaParam(String projectId, Integer defaultTime, String simulationMageGroupId){
         MultiSimulationProjectKafkaParam multiSimulationProjectKafkaParam = new MultiSimulationProjectKafkaParam();
         multiSimulationProjectKafkaParam.setProjectId(projectId);
+        multiSimulationProjectKafkaParam.setSimulationMageGroupId(simulationMageGroupId);
         MultiSimulationSceneParam sceneParam = new MultiSimulationSceneParam();
         sceneParam.setProjectId(projectId);
         List<MultiSimulationSceneVO> multiSimulationSceneVOS = simulationSceneMapper.selectSceneList(sceneParam);
@@ -278,6 +290,9 @@ public class MultiSimulationProjectServiceImpl implements MultiSimulationProject
         String currentUserId = AuthUtil.getCurrentUserId();
         param.setProjectUserId(currentUserId);
         param.setProjectStatus(MultiSimulationStatusEnum.RUN_STATUS.getProjectStatus());
+        if (StringUtils.isBlank(param.getSimulationMageGroupId())){
+            return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "仿真镜像组为空");
+        }
         // 先更新
         multiSimulationProjectMapper.updateMultiSimulationProject(param);
         MultiSimulationProjectVO projectVO = multiSimulationProjectMapper.selectMultiSimulationProjectById(param.getProjectId());
@@ -300,11 +315,17 @@ public class MultiSimulationProjectServiceImpl implements MultiSimulationProject
         if (StringUtils.isBlank(param.getProjectId())) {
             return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "项目id不能为空");
         }
+        String simulationMageGroupId = param.getSimulationMageGroupId();
+        if (StringUtils.isBlank(simulationMageGroupId)){
+            return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "仿真镜像组id不能为空");
+        }
         String currentUserId = AuthUtil.getCurrentUserId();
+        
 
         param.setProjectName(StringUtils.isBlank(param.getProjectName()) ? "" : param.getProjectName());
         param.setProjectDescription(StringUtils.isBlank(param.getProjectDescription()) ? "" : param.getProjectDescription());
         param.setProjectMaxSeconds(Objects.isNull(param.getProjectMaxSeconds()) ? 0 : param.getProjectMaxSeconds());
+        param.setSimulationMageGroupId(StringUtils.isBlank(param.getSimulationMageGroupId()) ? "" : param.getSimulationMageGroupId());
         param.setProjectUserId(currentUserId);
         int i = multiSimulationProjectMapper.updateMultiSimulationProject(param);
         return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS, null);
@@ -639,6 +660,9 @@ public class MultiSimulationProjectServiceImpl implements MultiSimulationProject
         if (Objects.isNull(projectVO)) {
             return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "请先保存当前的多模式仿真任务");
         }
+        if (StringUtils.isBlank(projectVO.getSimulationMageGroupId())){
+            return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "仿真镜像组id为空");
+        }
         MultiSimulationProjectParam multiSimulationProjectParam = buildProjectParam(projectVO);
         multiSimulationProjectParam.setProjectName(param.getProjectNewName());
 
@@ -991,6 +1015,8 @@ public class MultiSimulationProjectServiceImpl implements MultiSimulationProject
     public static MultiSimulationProjectParam buildProjectParam(MultiSimulationProjectVO projectVO) {
         MultiSimulationProjectParam multiSimulationProjectParam = new MultiSimulationProjectParam();
         multiSimulationProjectParam.setProjectId(StringUtil.getRandomUUID()).setProjectKey(projectVO.getProjectKey())
+            .setProjectUserId(projectVO.getProjectUserId())
+            .setSimulationMageGroupId(projectVO.getSimulationMageGroupId())
             .setProjectDescription(projectVO.getProjectDescription()).setProjectMaxSeconds(projectVO.getProjectMaxSeconds())
             .setProjectStatus(MultiSimulationStatusEnum.INIT_STATUS.getProjectStatus());
         return multiSimulationProjectParam;

+ 149 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/server/app/impl/SimulationMageGroupServiceImpl.java

@@ -0,0 +1,149 @@
+package com.css.simulation.resource.server.app.impl;
+
+import api.common.pojo.common.PageVO;
+import api.common.pojo.common.ResponseBodyVO;
+import api.common.pojo.constants.DictConstants;
+import api.common.pojo.param.group.SimulationMageGroupParam;
+import api.common.pojo.po.group.SimulationMageGroupPO;
+import api.common.util.StringUtil;
+import com.alibaba.cloud.commons.lang.StringUtils;
+import com.css.simulation.resource.server.app.service.job_manage.SimulationMageGroupService;
+import com.css.simulation.resource.server.infra.db.mysql.mapper.SimulationMageGroupMapper;
+import com.css.simulation.resource.server.infra.util.AuthUtil;
+import com.css.simulation.resource.server.infra.util.PageUtil;
+import com.github.pagehelper.PageInfo;
+import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Objects;
+
+@Service
+@Slf4j
+public class SimulationMageGroupServiceImpl implements SimulationMageGroupService {
+
+    @Resource
+    private SimulationMageGroupMapper mageGroupMapper;
+
+    @Override
+    @SneakyThrows
+    public ResponseBodyVO<PageInfo<SimulationMageGroupPO>> selectSimulationMageGroupList(SimulationMageGroupParam param) {
+        if (Objects.isNull(param.getPageNum())) {
+            param.setPageNum(1);
+        }
+        if (Objects.isNull(param.getPageSize())) {
+            param.setPageSize(10);
+        }
+        if (StringUtils.isBlank(param.getGroupName())) {
+            param.setGroupName(null);
+        }
+        if (StringUtils.isBlank(param.getGroupDescription())) {
+            param.setGroupDescription(null);
+        }
+
+        setPage(param.getPageNum(), param.getPageSize());
+        List<SimulationMageGroupPO> simulationMapVOS = mageGroupMapper.selectSimulationMageGroupList(param.getGroupName(), param.getGroupDescription());
+        PageInfo<SimulationMageGroupPO> pageInfo = new PageInfo<>(simulationMapVOS);
+        return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS, pageInfo);
+    }
+
+    @Override
+    @SneakyThrows
+    public ResponseBodyVO<List<SimulationMageGroupPO>> selectAllSimulationMageGroupList(SimulationMageGroupParam param) {
+        List<SimulationMageGroupPO> simulationMapVOS = mageGroupMapper.selectSimulationMageGroupList(null, null);
+        return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS, simulationMapVOS);
+    }
+
+    @Override
+    @SneakyThrows
+    public ResponseBodyVO<SimulationMageGroupPO> getSimulationMageGroup(SimulationMageGroupParam param) {
+        if (StringUtils.isBlank(param.getId())) {
+            return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "镜像组id为空");
+        }
+        SimulationMageGroupPO groupPO = mageGroupMapper.selectSimulationMageGroupById(param.getId());
+        if (Objects.isNull(groupPO)) {
+            return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "未找到有效的id");
+        }
+        return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS, groupPO);
+    }
+
+
+    public ResponseBodyVO updateSimulationMageGroup(SimulationMageGroupParam param) {
+        String currentUserRoleCode = AuthUtil.getCurrentUserRoleCode();
+        if (!StringUtils.equals(DictConstants.ROLE_CODE_ADMIN, currentUserRoleCode) && !StringUtils.equals(DictConstants.ROLE_CODE_SYSADMIN, currentUserRoleCode)) {
+            return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "当前用户无该权限");
+        }
+        if (StringUtils.isBlank(param.getId())) {
+            return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "镜像组id为空");
+        }
+        if (StringUtils.isBlank(param.getSoftwarePath()) || StringUtils.isBlank(param.getControllerPath()) || StringUtils.isBlank(param.getConnectorPath())) {
+            return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "存上为空数据");
+        }
+        if (StringUtils.isBlank(param.getGroupDescription())) {
+            param.setGroupDescription("");
+        }
+        int i = mageGroupMapper.updateSimulationMageGroupById(param);
+        if (i > 0) {
+            return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS);
+        }
+        return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE);
+
+    }
+
+    @Override
+    @Transactional
+    public ResponseBodyVO deleteSimulationMageGroup(List<SimulationMageGroupParam> paramList) {
+        String currentUserRoleCode = AuthUtil.getCurrentUserRoleCode();
+        if (!StringUtils.equals(DictConstants.ROLE_CODE_ADMIN, currentUserRoleCode) && !StringUtils.equals(DictConstants.ROLE_CODE_SYSADMIN, currentUserRoleCode)) {
+            return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "当前用户无该权限");
+        }
+        if (CollectionUtils.isEmpty(paramList)) {
+            return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "id为空");
+        }
+        for (SimulationMageGroupParam param : paramList) {
+            if (StringUtils.isBlank(param.getId())) {
+                return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "id为空");
+            }
+        }
+        for (SimulationMageGroupParam param : paramList) {
+            int i = mageGroupMapper.deleteSimulationMageGroupById(param.getId());
+            if (i <= 0) {
+                throw new RuntimeException("删除失败" + param.getId());
+            }
+        }
+        return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS);
+    }
+
+    @SneakyThrows
+    @Transactional
+    public ResponseBodyVO addSimulationMageGroup(SimulationMageGroupParam param) {
+        String currentUserRoleCode = AuthUtil.getCurrentUserRoleCode();
+        if (!StringUtils.equals(DictConstants.ROLE_CODE_ADMIN, currentUserRoleCode) && !StringUtils.equals(DictConstants.ROLE_CODE_SYSADMIN, currentUserRoleCode)) {
+            return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "当前用户无该权限");
+        }
+        if (StringUtils.isBlank(param.getSoftwarePath()) || StringUtils.isBlank(param.getControllerPath()) || StringUtils.isBlank(param.getConnectorPath())) {
+            return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "存上为空数据");
+        }
+        if (StringUtils.isBlank(param.getGroupDescription())) {
+            param.setGroupDescription("");
+        }
+        param.setId(StringUtil.getRandomUUID());
+
+        int i = mageGroupMapper.addSimulationMageGroup(param);
+        if (i <= 0) {
+            return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "添加失败");
+        }
+        return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS);
+    }
+
+    private void setPage(Integer pageNum, Integer pageSize) {
+        PageVO pageVO = new PageVO();
+        pageVO.setCurrentPage(pageNum);
+        pageVO.setPageSize(pageSize);
+        PageUtil.setPageInfo(pageVO);
+    }
+}

+ 23 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/server/app/service/job_manage/SimulationMageGroupService.java

@@ -0,0 +1,23 @@
+package com.css.simulation.resource.server.app.service.job_manage;
+
+import api.common.pojo.common.ResponseBodyVO;
+import api.common.pojo.param.group.SimulationMageGroupParam;
+import api.common.pojo.po.group.SimulationMageGroupPO;
+import com.github.pagehelper.PageInfo;
+
+import java.util.List;
+
+public interface SimulationMageGroupService {
+    ResponseBodyVO<List<SimulationMageGroupPO>> selectAllSimulationMageGroupList(SimulationMageGroupParam param);
+
+    ResponseBodyVO<PageInfo<SimulationMageGroupPO>> selectSimulationMageGroupList(SimulationMageGroupParam param);
+
+    ResponseBodyVO<SimulationMageGroupPO> getSimulationMageGroup(SimulationMageGroupParam param);
+
+    ResponseBodyVO updateSimulationMageGroup(SimulationMageGroupParam param);
+
+    ResponseBodyVO deleteSimulationMageGroup(List<SimulationMageGroupParam> param);
+
+    ResponseBodyVO addSimulationMageGroup(SimulationMageGroupParam param);
+
+}

+ 4 - 4
simulation-resource-server/src/main/java/com/css/simulation/resource/server/infra/db/mysql/mapper/MultiSimulationProjectMapper.java

@@ -34,8 +34,8 @@ public interface MultiSimulationProjectMapper {
     List<MultiSimulationProjectVO> selectProjectList(MultiSimulationProjectParam param);
 
 
-    @Insert("insert into multi_simulation_project (id,project_key,project_name,project_description,project_max_seconds,project_status,project_user_id) values" +
-        "(#{id},#{projectKey},#{projectName},#{projectDescription},#{projectMaxSeconds},#{projectStatus},#{projectUserId})")
+    @Insert("insert into multi_simulation_project (id,project_key,project_name,project_description,project_max_seconds,project_status,project_user_id,simulation_mage_group_id) values" +
+        "(#{id},#{projectKey},#{projectName},#{projectDescription},#{projectMaxSeconds},#{projectStatus},#{projectUserId},#{simulationMageGroupId})")
     int  addMultiSimulationProject(MultiSimulationProjectPO projectPO);
 
     @Select("select id,project_key,project_name,project_status,create_time from multi_simulation_project where deleted = 0 " +
@@ -46,14 +46,14 @@ public interface MultiSimulationProjectMapper {
     int deleteMultiSimulationProject(@Param("id") String id);
 
     @Update("update multi_simulation_project set project_name = #{projectName}, project_description = #{projectDescription}," +
-        "project_max_seconds = #{projectMaxSeconds}, project_user_id = #{projectUserId} where id = #{projectId}")
+        "project_max_seconds = #{projectMaxSeconds}, project_user_id = #{projectUserId}, simulation_mage_group_id = #{simulationMageGroupId} where id = #{projectId}")
     int updateMultiSimulationProject(MultiSimulationProjectParam param);
 
     @Update("update multi_simulation_project set project_status = #{projectStatus} " +
         "where id = #{projectId}")
     int updateMultiSimulationProjectStatus(MultiSimulationProjectParam param);
 
-    @Select("select id,project_key,project_name,project_status,create_time,project_description,project_max_seconds from multi_simulation_project where deleted = 0 " +
+    @Select("select id,project_key,project_name,project_status,create_time,project_description,project_max_seconds,simulation_mage_group_id from multi_simulation_project where deleted = 0 " +
         "and id = #{id} limit 1")
     MultiSimulationProjectVO selectMultiSimulationProjectById(@Param("id") String projectId);
 }

+ 37 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/server/infra/db/mysql/mapper/SimulationMageGroupMapper.java

@@ -0,0 +1,37 @@
+package com.css.simulation.resource.server.infra.db.mysql.mapper;
+
+import api.common.pojo.param.group.SimulationMageGroupParam;
+import api.common.pojo.po.group.SimulationMageGroupPO;
+import org.apache.ibatis.annotations.*;
+
+import java.util.List;
+
+@Mapper
+public interface SimulationMageGroupMapper {
+    @Insert("insert into simulation_mage_group (id,group_name,software_path,controller_path,connector_path,group_description) values" +
+        "(#{id},#{groupName},#{softwarePath},#{controllerPath},#{connectorPath},#{groupDescription})")
+    int addSimulationMageGroup(SimulationMageGroupParam scene);
+
+    @Select("<script>" +
+        "select id,group_name,software_path,controller_path,connector_path,group_description,create_time,update_time from simulation_mage_group where deleted = 0 " +
+        "<if test='groupName != null'> " +
+        " AND group_name like CONCAT('%',#{groupName},'%') " +
+        "</if>" +
+        "<if test='groupDescription != null'> " +
+        " AND group_description like CONCAT('%',#{groupDescription},'%') " +
+        "</if>" +
+        "order by create_time desc" +
+        "</script>")
+    List<SimulationMageGroupPO> selectSimulationMageGroupList(@Param("groupName") String groupName, @Param("groupDescription") String groupDescription);
+
+    @Select("select id,group_name,software_path,controller_path,connector_path,group_description,create_time,update_time from simulation_mage_group where id = #{id} and deleted = 0")
+    SimulationMageGroupPO selectSimulationMageGroupById(@Param("id") String id);
+
+    @Update("update simulation_mage_group set deleted = 1 where id = #{id}")
+    int deleteSimulationMageGroupById(@Param("id") String id);
+
+    @Update("update simulation_mage_group set software_path = #{softwarePath},controller_path = #{controllerPath},connector_path = #{connectorPath},group_description = #{groupDescription}" +
+        " where id = #{id}")
+    int updateSimulationMageGroupById(SimulationMageGroupParam param);
+
+}