Explorar el Código

预案演练代码提交

jingyuanchao hace 2 años
padre
commit
3544298015

+ 5 - 4
project_data/sql/0.0.2/soc/soc.sql

@@ -381,7 +381,7 @@ INSERT INTO sys_menu (id, menu_name, parent_id, order_num, path, component, quer
 INSERT INTO sys_menu (id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, platform_type, icon, image_path, create_by, create_time, update_by, update_time, remark) VALUES (2228, '演练计划编辑', 2321, 4, '', null, null, 1, 0, 'F', '0', '0', 'core:drillPlan:edit', '1', null, null, '超级管理员', now(), '', null, '');
 INSERT INTO sys_menu (id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, platform_type, icon, image_path, create_by, create_time, update_by, update_time, remark) VALUES (2229, '演练计划删除', 2321, 5, '', null, null, 1, 0, 'F', '0', '0', 'core:drillPlan:remove', '1', null, null, '超级管理员', now(), '', null, '');
 
---检查任务表
+-- 检查任务表
 DROP TABLE IF EXISTS `core_safety_task`;
 CREATE TABLE `core_safety_task` (
                                     `id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
@@ -498,7 +498,7 @@ CREATE TABLE `core_message_send`  (
 ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '消息发送配置' ROW_FORMAT = Dynamic;
 
 SET FOREIGN_KEY_CHECKS = 1;
---消息发送配置end
+-- 消息发送配置end
 
 -- ----------------------------
 -- Table structure for core_message_center
@@ -520,7 +520,7 @@ CREATE TABLE `core_message_center`  (
 ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '消息中心' ROW_FORMAT = Dynamic;
 
 SET FOREIGN_KEY_CHECKS = 1;
---消息中心end
+-- 消息中心end
 DROP TABLE IF EXISTS `core_safety_task_data_remark`;
 CREATE TABLE `core_safety_task_data_remark` (
                                                 `id` bigint NOT NULL DEFAULT '0',
@@ -542,7 +542,8 @@ CREATE TABLE `core_safety_task_data_remarkimg` (
                                                    KEY `data_id` (`remark_id`) USING BTREE
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='安全检查产生图片表';
 
---调整安全检查字段
+-- 调整core_safecheck_plan字段
+-- 调整安全检查字段
 DELIMITER $$
 CREATE PROCEDURE add_column_if_not_exists()
 BEGIN

+ 0 - 1
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/drill/dto/CoreDrillTaskDoRec.java

@@ -12,7 +12,6 @@ public class CoreDrillTaskDoRec {
     @ApiModelProperty(value = "演练任务Id")
     private Long drillTaskId;
 
-    @NotNull(message = "请选择具体类型进行查推荐!")
     @ApiModelProperty(value = "推荐状态")
     private Integer recStatus;
 

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/mapper/CoreDrillTaskMapper.java

@@ -33,7 +33,7 @@ public interface CoreDrillTaskMapper extends BaseMapper<CoreDrillTask> {
 
     Integer checkHasTaskIsDoneByPlanParentId(@Param("planId") Long planId);
 
-    IPage<CoreDrillTaskRecPageVo> selectRecPage(Page<CoreDrillTaskRecPageVo> pageRequest, @Param("request") CoreDrillTaskRecPageDto request, @Param("recStatus") Integer recStatus);
+    IPage<CoreDrillTaskRecPageVo> selectRecPage(Page<CoreDrillTaskRecPageVo> pageRequest, @Param("request") CoreDrillTaskRecPageDto request, @Param("recStatusList") List<Integer> recStatus);
 
     IPage<CoreDrillTaskRecTaskPageVo> selectRecTaskListPage(Page<Object> pageRequest, @Param("request") CoreDrillTaskRecPageDto request);
 

+ 36 - 10
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillTaskServiceImpl.java

@@ -625,7 +625,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         dealRecListParam(request);
         IPage<CoreDrillTaskRecPageVo> page;
         if (request.getRecStatus() != null) {
-            page = coreDrillTaskMapper.selectRecPage(request.getPageRequest(), request, request.getRecStatus());
+            page = coreDrillTaskMapper.selectRecPage(request.getPageRequest(), request, Arrays.asList(request.getRecStatus()));
         } else {
             page = coreDrillTaskMapper.selectRecPage(request.getPageRequest(), request, getRecStatus());
         }
@@ -678,23 +678,23 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         request.setOrgPath(sysOrg.getPath());
     }
 
-    private Integer getRecStatus() {
+    private List<Integer> getRecStatus() {
         Long orgId = SecurityUtils.getLoginUser().getOrgId();
         SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgById(orgId, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
         if (ObjectUtil.isNull(sysOrg.getType())) {
             throw new SystemException("当前登陆用户机构信息异常!");
         }
-        Integer recStatus = null;
+        List<Integer> recStatus = null;
         OrgTypeEnum orgTypeEnum = OrgTypeEnum.getOrgTypeEnum(sysOrg.getType());
         switch (orgTypeEnum) {
             case SHEGN_LIAN_SHE:
-                recStatus = 4;
+                recStatus = Arrays.asList(4, 5);
                 break;
             case BAN_SHI_CHU:
-                recStatus = 2;
+                recStatus = Arrays.asList(2, 3, 4);
                 break;
             case HANG_SHE:
-                recStatus = 0;
+                recStatus = Arrays.asList(0, 1, 2);
                 break;
             default:
                 throw new RuntimeException("暂不支持该用户所在机构查看数据!");
@@ -709,12 +709,24 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         if (drillTask == null) {
             throw new SystemException("获取预案演练数据失败!");
         }
-        if (request.getRecStatus() > drillTask.getRecStatus()) {
-            //说明是向上级推荐优秀案例,需要判断是否已达上限
-            checkRecNum(drillTask, request.getRecStatus());
+
+        if (request.getRecStatus() == null) {
+            //取消推荐
+            int recStatus = checkRecStatus(drillTask);
+            if (recStatus > 0) {
+                return coreDrillTaskMapper.updateStatusById(request.getDrillTaskId(), recStatus);
+            }
+            return 0;
+        }
+
+
+        //判断是否已达上限
+        checkRecNum(drillTask, request.getRecStatus());
+        if (drillTask.getRecStatus().equals(request.getRecStatus())) {
+            throw new SystemException("该预案演练任务已推荐!");
         }
         //判断是否越级推荐
-        if (ObjectUtil.notEqual(drillTask.getRecStatus(), request.getRecStatus() - 1)) {
+        if (ObjectUtil.notEqual(drillTask.getRecStatus(), request.getRecStatus() - 1) && ObjectUtil.notEqual(drillTask.getRecStatus(), request.getRecStatus() - 2)) {
             throw new SystemException("推荐状态异常!");
         }
         if (ObjectUtil.notEqual(DrillDoStatus.DONE.getCode(), drillTask.getStatus())) {
@@ -723,6 +735,20 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         return coreDrillTaskMapper.updateStatusById(request.getDrillTaskId(), request.getRecStatus());
     }
 
+    private int checkRecStatus(CoreDrillTask drillTask) {
+        //前端传null,说明页面两个复选框都没勾选
+        //如果当前是正常案例/行社优秀案例/已推荐地区优秀案例 取消推荐后状态为正常案例
+        if (drillTask.getRecStatus() == 0 || drillTask.getRecStatus() == 1 || drillTask.getRecStatus() == 2) {
+            return 0;
+        }
+        //如果当前是地区优秀案例/已推荐省级优秀案例  取消推荐后状态为行社优秀案例
+        if (drillTask.getRecStatus() == 3 || drillTask.getRecStatus() == 4) {
+            return 1;
+        }
+        //走到这说明当前推荐状态为省级优秀案例,取消推荐后状态为地区优秀案例
+        return 3;
+    }
+
     private void checkRecNum(CoreDrillTask drillTask, Integer recStatus) {
 
         DrillRecStatus drillRecStatus = DrillRecStatus.getDrillRecStatus(recStatus);

+ 7 - 2
soc-modules/soc-modules-core/src/main/resources/mapper/drill/CoreDrillTaskMapper.xml

@@ -209,7 +209,10 @@
     </select>
 
     <select id="selectRecPage" resultType="com.xunmei.common.core.domain.drill.vo.CoreDrillTaskRecPageVo">
-        select * from core_drill_task t where (t.rec_status=#{recStatus} or t.rec_status=#{recStatus}+1)
+        select * from core_drill_task t where t.rec_status in
+        <foreach collection="recStatusList" item="item" index="index" open="(" close=")" separator=",">
+            #{item}
+        </foreach>
         and t.org_path like concat(#{request.orgPath},'%')
         <if test="request.startTime != null and request.endTime != null">
             and (
@@ -255,6 +258,8 @@
     </select>
 
     <update id="updateStatusById">
-        update core_drill_task set rec_status=#{recStatus} where id=#{drillTaskId}
+        update core_drill_task
+        set rec_status=#{recStatus}
+        where id = #{drillTaskId}
     </update>
 </mapper>