浏览代码

演练bug处理

jingyuanchao 2 年之前
父节点
当前提交
38030f5c52

+ 6 - 5
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/drill/dto/CoreDrillDictionaryPageDto.java

@@ -1,10 +1,5 @@
 package com.xunmei.common.core.domain.drill.dto;
 
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableLogic;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.xunmei.common.core.web.domain.PageRequest;
@@ -14,6 +9,8 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
+import java.util.List;
+
 /**
  * @author jingyuanchao
  * @date 2023/9/8 17:03
@@ -29,4 +26,8 @@ public class CoreDrillDictionaryPageDto extends PageRequest {
 
     @ApiModelProperty(value = "演练类型,字典表关联取值")
     private String drillType;
+
+    private List<Long> orgIdList;
+
+    private Long orgParentId;
 }

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

@@ -66,7 +66,10 @@ public interface CoreDrillDictionaryMapper extends BaseMapper<CoreDrillDictionar
      */
     int deleteCoreDrillDictionaryByIds(Long[] ids);
 
-    Page<CoreDrillDictionaryPageVo> selectPageData(Page<CoreDrillDictionaryPageVo> pageRequest, @Param("request") CoreDrillDictionaryPageDto request);
+    Page<CoreDrillDictionaryPageVo> selectPageData1(Page<CoreDrillDictionaryPageVo> pageRequest, @Param("request") CoreDrillDictionaryPageDto request);
+    Page<CoreDrillDictionaryPageVo> selectPageData2(Page<CoreDrillDictionaryPageVo> pageRequest, @Param("request") CoreDrillDictionaryPageDto request);
+    Page<CoreDrillDictionaryPageVo> selectPageData3(Page<CoreDrillDictionaryPageVo> pageRequest, @Param("request") CoreDrillDictionaryPageDto request);
+    Page<CoreDrillDictionaryPageVo> selectPageData4(Page<CoreDrillDictionaryPageVo> pageRequest, @Param("request") CoreDrillDictionaryPageDto request);
 
     CoreDrillDictionaryDetailVo selectDetailData(@Param("id") Long id);
 }

+ 50 - 18
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillDictionaryServiceImpl.java

@@ -1,22 +1,20 @@
 package com.xunmei.core.drill.service.impl;
 
-import java.util.Date;
-import java.util.List;
-
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xunmei.common.core.constant.Constants;
 import com.xunmei.common.core.constant.DictConstants;
 import com.xunmei.common.core.constant.ErrorMsgConstants;
 import com.xunmei.common.core.constant.SecurityConstants;
-import com.xunmei.common.core.domain.IdName;
 import com.xunmei.common.core.domain.drill.domain.CoreDrillDictionary;
 import com.xunmei.common.core.domain.drill.dto.CoreDrillDictionaryInsertDto;
 import com.xunmei.common.core.domain.drill.dto.CoreDrillDictionaryPageDto;
 import com.xunmei.common.core.domain.drill.dto.CoreDrillDictionaryUpdateDto;
 import com.xunmei.common.core.domain.drill.vo.CoreDrillDictionaryDetailVo;
 import com.xunmei.common.core.domain.drill.vo.CoreDrillDictionaryPageVo;
-import com.xunmei.common.core.util.BeanHelper;
+import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.security.utils.DictUtils;
 import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.core.drill.mapper.CoreDrillDictionaryMapper;
@@ -28,16 +26,13 @@ import com.xunmei.system.api.function.RemoteCallHandlerExecutor;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
 import java.util.stream.Collectors;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.xunmei.common.core.web.page.TableDataInfo;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.RequestParam;
-
 
 /**
  * 预案演练库Service业务层处理
@@ -54,20 +49,57 @@ public class CoreDrillDictionaryServiceImpl extends ServiceImpl<CoreDrillDiction
 
     @Override
     public TableDataInfo<CoreDrillDictionaryPageVo> selectPage(CoreDrillDictionaryPageDto request) {
-
-        if (request.getCheckSub()) {
-            SysOrg org = getOrg(request.getOrgId());
-            request.setOrgPath(org.getPath());
+        dealPageRequestParam(request);
+        Page<CoreDrillDictionaryPageVo> page = null;
+        if (ObjectUtil.equal(Constants.TOP_ORG_PARENT_ID, request.getOrgParentId())) {
+            if (!request.getCheckSub()) {
+                page = coreDrillDictionaryMapper.selectPageData1(request.getPageRequest(), request);
+            } else {
+                page = coreDrillDictionaryMapper.selectPageData2(request.getPageRequest(), request);
+            }
+        } else {
+            if (!request.getCheckSub()) {
+                page = coreDrillDictionaryMapper.selectPageData3(request.getPageRequest(), request);
+            } else {
+                page = coreDrillDictionaryMapper.selectPageData4(request.getPageRequest(), request);
+            }
         }
 
-        //获取数据
-        Page<CoreDrillDictionaryPageVo> page = coreDrillDictionaryMapper.selectPageData(request.getPageRequest(), request);
+
         //抓换为TableDataInfo适配前端
         return TableDataInfo.build(page);
 
 
     }
 
+    private void dealPageRequestParam(CoreDrillDictionaryPageDto request) {
+
+        SysOrg curOrg = getOrg(request.getOrgId());
+        request.setOrgParentId(curOrg.getParentId());
+        if (request.getCheckSub()) {
+            //顶级机构下穿 :查询所有
+            if (ObjectUtil.equal(Constants.TOP_ORG_PARENT_ID, curOrg.getParentId())) {
+                request.setOrgPath(curOrg.getPath());
+                return;
+            }
+            //普通机构下穿,查询父机构数据和下面机构所有数据
+            List<Long> collect = Arrays.stream(curOrg.getPath().split("-")).map(Long::parseLong).collect(Collectors.toList());
+            //这里如果不remove,那么根据orgIdList和path查询 实际上是重复了的
+            collect.remove(curOrg.getId());
+            request.setOrgIdList(collect);
+            request.setOrgPath(curOrg.getPath());
+        } else {
+            //顶级机构不下穿 :查询自己的数据
+            if (ObjectUtil.equal(Constants.TOP_ORG_PARENT_ID, curOrg.getParentId())) {
+                return;
+            }
+            //普通机构不下穿,查询父机构数据和自己的数据
+            List<Long> collect = Arrays.stream(curOrg.getPath().split("-")).map(Long::parseLong).collect(Collectors.toList());
+            request.setOrgIdList(collect);
+        }
+
+    }
+
     private SysOrg getOrg(Long orgId) {
         return RemoteCallHandlerExecutor.executeRemoteCall(() ->
                 orgService.selectOrgById(orgId, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
@@ -153,7 +185,7 @@ public class CoreDrillDictionaryServiceImpl extends ServiceImpl<CoreDrillDiction
         String path = org.getPath();
         List<CoreDrillDictionary> selectList = coreDrillDictionaryMapper.selectList(new LambdaQueryWrapper<CoreDrillDictionary>()
                 .eq(CoreDrillDictionary::getDeleted, 0)
-               // .likeRight(CoreDrillDictionary::getOrgPath, path)
+                // .likeRight(CoreDrillDictionary::getOrgPath, path)
                 .eq(ObjectUtil.isNotNull(dictValue), CoreDrillDictionary::getDrillType, dictValue)
                 .select(CoreDrillDictionary::getId
                         , CoreDrillDictionary::getDrillTypeName

+ 5 - 7
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/ISysLearningMaterialsService.java

@@ -1,20 +1,17 @@
 package com.xunmei.core.edu.service;
 
-import java.io.IOException;
-import java.util.List;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.xunmei.common.core.domain.edu.domain.SysLearningMaterials;
 import com.xunmei.common.core.domain.edu.dto.SysLearningMaterialsFileListPageDto;
 import com.xunmei.common.core.domain.edu.dto.SysLearningMaterialsInsertDto;
+import com.xunmei.common.core.domain.edu.dto.SysLearningMaterialsPageDto;
 import com.xunmei.common.core.domain.edu.dto.SysLearningMaterialsUpdateDto;
 import com.xunmei.common.core.domain.edu.vo.SysLearningMaterialsDetailVo;
-import com.xunmei.common.core.domain.edu.vo.SysLearningMaterialsFileListVo;
 import com.xunmei.common.core.web.page.TableDataInfo;
-import com.xunmei.common.core.domain.edu.domain.SysLearningMaterials;
-import com.xunmei.common.core.domain.edu.dto.SysLearningMaterialsPageDto;
 
 import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.List;
 
 /**
  * 学习资料Service接口
@@ -78,6 +75,7 @@ public interface ISysLearningMaterialsService extends IService<SysLearningMateri
      * @return Page
      */
     public TableDataInfo selectPage(SysLearningMaterialsPageDto sysLearningMaterials);
+    int checkSelect(Boolean checkSub,Long orgId);
 
     int editOpen(Long id, Integer isOpen);
 

+ 7 - 7
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/SysLearningMaterialsServiceImpl.java

@@ -59,7 +59,7 @@ public class SysLearningMaterialsServiceImpl extends ServiceImpl<SysLearningMate
     @Override
     public TableDataInfo selectPage(SysLearningMaterialsPageDto request) {
 
-        int checkSelect = checkSelect(request);
+        int checkSelect = checkSelect(request.getCheckSub(), request.getOrgId());
         dealParam(request);
         Page<SysLearningMaterialsPageVo> page = null;
         switch (checkSelect) {
@@ -98,7 +98,8 @@ public class SysLearningMaterialsServiceImpl extends ServiceImpl<SysLearningMate
         return TableDataInfo.success(page);
     }
 
-    private int checkSelect(SysLearningMaterialsPageDto request) {
+    @Override
+    public int checkSelect(Boolean checkSub, Long orgId) {
         /**
          * 查询逻辑梳理:
          *  Q1: 不下穿:
@@ -109,23 +110,22 @@ public class SysLearningMaterialsServiceImpl extends ServiceImpl<SysLearningMate
          *          父机构:查询父机构公开数据+查询本机构公开数据及当前用户自己创建的 + 下级公开数据
          *          子机构:查询下级公开数据
          */
-        Boolean checkSub = request.getCheckSub();
         Long curOrgId = SecurityUtils.getLoginUser().getOrgId();
         if (!checkSub) {
-            if (ObjectUtil.notEqual(request.getOrgId(), curOrgId)) {
+            if (ObjectUtil.notEqual(orgId, curOrgId)) {
                 return 1;
             } else {
                 return 2;
             }
         } else {
 
-            if (ObjectUtil.equal(request.getOrgId(), curOrgId)) {
+            if (ObjectUtil.equal(orgId, curOrgId)) {
                 return 3;
             }
             Map<Long, String> map = RemoteCallHandlerExecutor.executeRemoteCall(() ->
-                            remoteOrgService.selectOrgByIdList(Arrays.asList(request.getOrgId(), curOrgId), SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR)
+                            remoteOrgService.selectOrgByIdList(Arrays.asList(orgId, curOrgId), SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR)
                     .stream().collect(Collectors.toMap(SysOrg::getId, SysOrg::getPath));
-            String queryOrgPath = map.get(request.getOrgId());
+            String queryOrgPath = map.get(orgId);
             String curOrgPath = map.get(curOrgId);
             if (curOrgPath.startsWith(queryOrgPath)) {
                 return 4;

+ 57 - 6
soc-modules/soc-modules-core/src/main/resources/mapper/drill/CoreDrillDictionaryMapper.xml

@@ -128,23 +128,74 @@
             #{id}
         </foreach>
     </delete>
-
-    <select id="selectPageData" resultType="com.xunmei.common.core.domain.drill.vo.CoreDrillDictionaryPageVo">
-        select * from core_drill_dictionary d inner join sys_dict_data dd on d.drill_type=dd.dict_value and
-        dd.dict_type='core_drill_type' WHERE deleted=0
+    <sql id="pageSql">
         <if test="request.id != null">
             and d.id like concat('%',#{request.id},'%')
         </if>
         <if test="request.drillType != null">
             and d.drill_type=#{request.drillType}
         </if>
+    </sql>
+    <select id="selectPageData" resultType="com.xunmei.common.core.domain.drill.vo.CoreDrillDictionaryPageVo">
+        select * from core_drill_dictionary d inner join sys_dict_data dd on d.drill_type=dd.dict_value and
+        dd.dict_type='core_drill_type' WHERE deleted=0
+        <include refid="pageSql"/>
         <if test="request.checkSub==false">
-            and d.org_id=#{request.orgId}
+            <choose>
+                <when test="request.orgIdList !=null and request.orgIdList.size>0">
+                    and d.org_id in
+                    <foreach item="item" collection="request.orgIdList" open="(" separator="," close=")">
+                        #{item}
+                    </foreach>
+                </when>
+                <otherwise>
+                    and d.org_id=#{request.orgId}
+                </otherwise>
+            </choose>
         </if>
         <if test="request.checkSub==true">
-            and d.org_path like concat(#{request.orgPath},'%')
+            <if test="request.orgIdList !=null and request.orgIdList.size>0">
+                and d.org_id in
+                <foreach item="item" collection="request.orgIdList" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+            or d.org_path like concat(#{request.orgPath},'%')
         </if>
+        )
+    </select>
+    <select id="selectPageData1" resultType="com.xunmei.common.core.domain.drill.vo.CoreDrillDictionaryPageVo">
+        select * from core_drill_dictionary d inner join sys_dict_data dd on d.drill_type=dd.dict_value and
+        dd.dict_type='core_drill_type' WHERE deleted=0
+        <include refid="pageSql"/>
+        and d.org_id=#{request.orgId}
     </select>
+    <select id="selectPageData2" resultType="com.xunmei.common.core.domain.drill.vo.CoreDrillDictionaryPageVo">
+        select * from core_drill_dictionary d inner join sys_dict_data dd on d.drill_type=dd.dict_value and
+        dd.dict_type='core_drill_type' WHERE deleted=0
+        <include refid="pageSql"/>
+        and d.org_path like concat(#{request.orgPath},'%')
+    </select>
+    <select id="selectPageData3" resultType="com.xunmei.common.core.domain.drill.vo.CoreDrillDictionaryPageVo">
+        select * from core_drill_dictionary d inner join sys_dict_data dd on d.drill_type=dd.dict_value and
+        dd.dict_type='core_drill_type' WHERE deleted=0
+        <include refid="pageSql"/>
+        and d.org_id in
+        <foreach item="item" collection="request.orgIdList" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </select>
+    <select id="selectPageData4" resultType="com.xunmei.common.core.domain.drill.vo.CoreDrillDictionaryPageVo">
+        select * from core_drill_dictionary d inner join sys_dict_data dd on d.drill_type=dd.dict_value and
+        dd.dict_type='core_drill_type' WHERE deleted=0
+        <include refid="pageSql"/>
+        and (d.org_id in
+        <foreach item="item" collection="request.orgIdList" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+        or d.org_path like concat(#{request.orgPath},'%'))
+    </select>
+
 
     <select id="selectDetailData" resultType="com.xunmei.common.core.domain.drill.vo.CoreDrillDictionaryDetailVo">
         select id, drill_type, default_cause, drill_projects