Prechádzať zdrojové kódy

Merge branch 'V0.0.2' of http://10.87.10.227:4000/jzyd_yyds/soc into V0.0.2

jiawuxian 2 rokov pred
rodič
commit
d02863606d

+ 2 - 0
project_data/sql/0.0.2/soc/soc.sql

@@ -1334,3 +1334,5 @@ INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `order_num`, `path`, `co
 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 (00000000000000002357, '删除', 2317, 5, '', NULL, NULL, 1, 0, 'F', '0', '0', 'core:checkplan:remove', '1', NULL, NULL, '超级管理员', '2023-09-25 11:35:35', '', 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 (00000000000000002317, '检查计划', 2326, 3, 'check/plan', 'check/index', NULL, 1, 0, 'C', '0', '0', '', '1', 'documentation', NULL, '超级管理员', '2023-09-21 10:35:38', '超级管理员', '2023-09-22 09:42:15', '');
 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 (00000000000000002318, '检查任务', 2326, 4, 'check/task/index', 'check/task/index', NULL, 1, 0, 'C', '0', '0', '', '1', 'documentation', NULL, '超级管理员', '2023-09-21 10:37:52', '超级管理员', '2023-09-22 09:42:43', '');
+-- 处理自增id步长问题
+alter table core_drill_dictionary auto_increment = 10000;

+ 1 - 1
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/drill/domain/CoreDrillDictionary.java

@@ -25,7 +25,7 @@ import com.xunmei.common.core.web.domain.BaseEntity;
 public class CoreDrillDictionary extends BaseEntity {
     private static final long serialVersionUID = 1L;
 
-    @TableId
+    @TableId(value="id",type = IdType.AUTO)
     private Integer id;
 
     @TableField("org_id")

+ 2 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/edu/dto/SysLearningMaterialsPageDto.java

@@ -32,4 +32,6 @@ public class SysLearningMaterialsPageDto extends PageRequest {
 
     @ApiModelProperty(value = "当前用户id",notes = "此字段无需传递,后端自行获取")
     private Long userId;
+
+    private Long curOrgId;
 }

+ 2 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/web/page/TableDataInfo.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -83,6 +84,7 @@ public class TableDataInfo<T> implements Serializable {
     public static <T> TableDataInfo<T> build() {
         TableDataInfo<T> rspData = new TableDataInfo<>();
         rspData.setCode(HttpStatus.HTTP_OK);
+        rspData.setRows(new ArrayList<>());
         rspData.setMsg("查询成功");
         return rspData;
     }

+ 6 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/mapper/SysLearningMaterialsMapper.java

@@ -68,9 +68,13 @@ public interface SysLearningMaterialsMapper extends BaseMapper<SysLearningMateri
      */
     public int deleteSysLearningMaterialsByIds(Long[] ids);
 
-    Page<SysLearningMaterialsPageVo> selectPageData(@Param("page") Page<SysLearningMaterialsPageVo> page, @Param("request") SysLearningMaterialsPageDto sysLearningMaterials);
 
     IPage<SysLearningMaterialsFileListVo> selectFilePageList(Page<SysLearningMaterialsFileListVo> pageRequest, @Param("request") SysLearningMaterialsFileListPageDto request);
 
-    Page<SysLearningMaterialsPageVo> selectPageDataByTopOrg(Page<SysLearningMaterialsPageVo> pageRequest, @Param("request") SysLearningMaterialsPageDto request);
+
+    Page<SysLearningMaterialsPageVo> selectPageData1(Page<SysLearningMaterialsPageVo> pageRequest,@Param("request") SysLearningMaterialsPageDto request);
+    Page<SysLearningMaterialsPageVo> selectPageData2(Page<SysLearningMaterialsPageVo> pageRequest,@Param("request") SysLearningMaterialsPageDto request);
+    Page<SysLearningMaterialsPageVo> selectPageData3(Page<SysLearningMaterialsPageVo> pageRequest,@Param("request") SysLearningMaterialsPageDto request);
+    Page<SysLearningMaterialsPageVo> selectPageData4(Page<SysLearningMaterialsPageVo> pageRequest,@Param("request") SysLearningMaterialsPageDto request);
+    Page<SysLearningMaterialsPageVo> selectPageData5(Page<SysLearningMaterialsPageVo> pageRequest,@Param("request") SysLearningMaterialsPageDto request);
 }

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

@@ -40,6 +40,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.net.URLEncoder;
 import java.util.*;
+import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
 import static com.xunmei.common.core.constant.Constants.TOP_ORG_PARENT_ID;
@@ -59,49 +60,94 @@ public class SysLearningMaterialsServiceImpl extends ServiceImpl<SysLearningMate
 
     @Override
     public TableDataInfo selectPage(SysLearningMaterialsPageDto request) {
-        SysOrg sysOrg = remoteOrgService.selectSysOrgById(request.getOrgId(), SecurityConstants.INNER);
-        if (sysOrg == null || ObjectUtil.isEmpty(sysOrg.getPath())) {
-            throw new RuntimeException("机构不存在或机构信息缺失!");
-        }
-       /* final List<Long> list = dealParentOrgId(request, sysOrg);
-        boolean isTopOrg = ObjectUtil.equal(sysOrg.getParentId(), TOP_ORG_PARENT_ID);
-        list.remove(request.getOrgId());
-        request.setOrgIdList(list);*/
-        request.setUserId(SecurityUtils.getUserId());
-        //获取数据 默认查询当前及上级机构公开,当前用户创建的的数据
-        OrgTreeReq orgTreeReq = new OrgTreeReq(request.getOrgId(), request.getCheckSub());
-
 
-        R<OrgTreeResp> orgTreeRespR = RemoteCallHandlerExecutor.executeRemoteCall(() ->
-                remoteOrgService.getOrgTreeResp(orgTreeReq), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
-        OrgTreeResp orgTreeResp = orgTreeRespR.getData();
+        int checkSelect = checkSelect(request);
+        dealParam(request);
+        Page<SysLearningMaterialsPageVo> page=null;
+        switch (checkSelect){
+            case 1:
+                //不下穿查询其他机构: 仅查询目标机构公开数据
+                page = sysLearningMaterialsMapper.selectPageData1(request.getPageRequest(), request);
+                break;
+            case 2:
+                //不下穿查询本机构:查询本机构公开数据及当前用户自己创建的
+                page = sysLearningMaterialsMapper.selectPageData2(request.getPageRequest(), request);
+                break;
+            case 3:
+                //下穿查询本机构:查询本机构公开数据及当前用户自己创建的 + 下级公开数据
+                page = sysLearningMaterialsMapper.selectPageData3(request.getPageRequest(), request);
+                break;
+            case 4:
+                //下穿查询父机构:查询父机构公开数据+查询本机构公开数据及当前用户自己创建的 + 下级公开数据
+                page = sysLearningMaterialsMapper.selectPageData4(request.getPageRequest(), request);
+                break;
+            case 5:
+                //下穿查询子机构:查询下级公开数据
+                page = sysLearningMaterialsMapper.selectPageData5(request.getPageRequest(), request);
+                break;
+            default:break;
+        }
+        if (page==null){
+            return TableDataInfo.build();
+        }
 
 
-        request.setOrgId(orgTreeResp.getOrgId());
-        request.setOrgPath(orgTreeResp.getOrgPath());
-        request.setOrgIdList(orgTreeResp.getOrgIdList());
 
-        Page<SysLearningMaterialsPageVo> page;
-       /* if (isTopOrg) {
-            page = sysLearningMaterialsMapper.selectPageDataByTopOrg(request.getPageRequest(), request);
-        } else {*/
-        page = sysLearningMaterialsMapper.selectPageData(request.getPageRequest(), request);
-        // }
         for (SysLearningMaterialsPageVo record : page.getRecords()) {
             record.setNo(page.getRecords().indexOf(record));
         }
         return TableDataInfo.success(page);
     }
 
-    private List<Long> dealParentOrgId(SysLearningMaterialsPageDto request, SysOrg sysOrg) {
+    private int checkSelect(SysLearningMaterialsPageDto request) {
+        /**
+         * 查询逻辑梳理:
+         *  Q1: 不下穿:
+         *          其他机构:仅查询目标机构公开数据
+         *          本机构:查询本机构公开数据及当前用户自己创建的
+         *  Q1: 下穿:
+         *          本机构:查询本机构公开数据及当前用户自己创建的 + 下级公开数据
+         *          父机构:查询父机构公开数据+查询本机构公开数据及当前用户自己创建的 + 下级公开数据
+         *          子机构:查询下级公开数据
+         */
+        Boolean checkSub = request.getCheckSub();
+        Long curOrgId = SecurityUtils.getLoginUser().getOrgId();
+        if (!checkSub) {
+            if (ObjectUtil.notEqual(request.getOrgId(), curOrgId)) {
+                return 1;
+            } else {
+                return 2;
+            }
+        } else {
 
-        String[] split = sysOrg.getPath().split("-");
-        List<Long> list = new ArrayList<>();
-        Stream.of(split).forEach(s -> list.add(Long.valueOf(s)));
-        request.setOrgPath(sysOrg.getPath());
-        return list;
+            if (ObjectUtil.equal(request.getOrgId(), curOrgId)) {
+                return 3;
+            }
+            Map<Long, String> map = RemoteCallHandlerExecutor.executeRemoteCall(() ->
+                            remoteOrgService.selectOrgByIdList(Arrays.asList(request.getOrgId(), curOrgId), SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR)
+                    .stream().collect(Collectors.toMap(SysOrg::getId, SysOrg::getPath));
+            String queryOrgPath = map.get(request.getOrgId());
+            String curOrgPath = map.get(curOrgId);
+            if (curOrgPath.startsWith(queryOrgPath)) {
+                return 4;
+            }
+            return 5;
+        }
     }
 
+    private void dealParam(SysLearningMaterialsPageDto request) {
+        OrgTreeReq orgTreeReq = new OrgTreeReq(request.getOrgId(), request.getCheckSub());
+        R<OrgTreeResp> orgTreeRespR = RemoteCallHandlerExecutor.executeRemoteCall(() ->
+                remoteOrgService.getOrgTreeResp(orgTreeReq), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+        OrgTreeResp orgTreeResp = orgTreeRespR.getData();
+        request.setUserId(SecurityUtils.getUserId());
+        request.setOrgId(orgTreeResp.getOrgId());
+        request.setCurOrgId(SecurityUtils.getLoginUser().getOrgId());
+        request.setOrgPath(orgTreeResp.getOrgPath());
+        request.setOrgIdList(orgTreeResp.getOrgIdList());
+    }
+
+
     private List<Long> dealParentOrgId(SysLearningMaterialsFileListPageDto request) {
         Long orgId = request.getOrgId();
         SysOrg sysOrg = remoteOrgService.selectSysOrgById(orgId, SecurityConstants.INNER);

+ 6 - 3
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/AppPlanServiceImpl.java

@@ -474,7 +474,7 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
         /**
          * 验证计划是否被应用
          */
-        Long num = resumptionMapper.selectCount(new QueryWrapper<Resumption>().eq("plan_id", id));
+        Long num = resumptionMapper.selectCount(new QueryWrapper<Resumption>().eq("plan_id", id).eq("status",3));
         if (num > 0) {
             throw new RuntimeException("计划已生成任务,不能删除!");
         }
@@ -484,10 +484,12 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
         //删除子计划
         for (AppPlan ap :
                 childrens) {
-            Long nums = resumptionMapper.selectCount(new QueryWrapper<Resumption>().eq("plan_id", ap.getId()));
+            Long nums = resumptionMapper.selectCount(new QueryWrapper<Resumption>().eq("plan_id", ap.getId()).eq("status",3));
             if (nums > 0) {
                 throw new RuntimeException("子计划已生成任务,不能删除!");
             }
+            //删除计划对应的任务
+            resumptionMapper.delete(new QueryWrapper<Resumption>().eq("plan_id", ap.getId()));
             //删除对应的角色关系
             QueryWrapper<AppPlanToRole> qw = new QueryWrapper<>();
             qw.lambda().eq(AppPlanToRole::getPlanId, ap.getId());
@@ -508,7 +510,8 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
 
         }
 
-
+        //删除计划对应的任务
+        resumptionMapper.delete(new QueryWrapper<Resumption>().eq("plan_id", id));
         //删除对应的角色关系
         QueryWrapper<AppPlanToRole> qw = new QueryWrapper<>();
         qw.lambda().eq(AppPlanToRole::getPlanId, id);

+ 82 - 82
soc-modules/soc-modules-core/src/main/resources/mapper/edu/SysLearningMaterialsMapper.xml

@@ -82,89 +82,8 @@
         <include refid="selectSysLearningMaterialsVo"/>
         where id = #{id}
     </select>
-    <sql id="pageRequest">
-        <if test="request.knowledgeId != null">
-            and m.knowledge_id = #{request.knowledgeId}
-        </if>
-        <if test="request.title != null ">
-            and m.title like concat('%', #{request.title}, '%')
-        </if>
-        <if test="request.isOpen != null ">
-            and m.is_open = #{request.isOpen}
-        </if>
-    </sql>
-    <select id="selectPageData" resultType="com.xunmei.common.core.domain.edu.vo.SysLearningMaterialsPageVo">
-        select m.id,
-        title,
-        k.name as knowledgeName,
-        m.org_id,
-        m.org_name,
-        is_open,
-        m.file_list,
-        remark as remark,
-        u.name as create_by,
-        u.id as createId,
-        m.create_time,
-        m.update_time as updateTime,
-        m.file_names as fileNames
-        from sys_learning_materials m
-        inner join sys_knowledge k on m.knowledge_id = k.id
-        inner join sys_user u on u.id=m.create_by
-        where m.deleted = 0
-        and k.deleted = 0
-        and m.create_by=#{request.userId}
-        <include refid="pageRequest"/>
-        <if test="request.orgId !=null">
-           and m.org_id=#{request.orgId}
-        </if>
-
-        <if test="request.orgIdList != null and request.orgIdList.size>0">
-            <!-- 查询父机构公开资料-->
-            or ( m.org_id in
-            <foreach collection="request.orgIdList" item="item" open="(" separator="," close=")">
-                #{item}
-            </foreach>
-            and m.is_open = 1
-            <include refid="pageRequest"/>
-            )
-        </if>
-
-        order by m.org_id, m.create_time desc
-    </select>
 
 
-    <select id="selectPageDataByTopOrg" resultType="com.xunmei.common.core.domain.edu.vo.SysLearningMaterialsPageVo">
-        select m.id,
-        title,
-        k.name as knowledgeName,
-        m.org_id,
-        m.org_name,
-        is_open,
-        m.file_list,
-        remark as remark,
-        u.name as create_by,
-        u.id as createId,
-        m.create_time,
-        m.update_time as updateTime,
-        m.file_names as fileNames
-        from sys_learning_materials m
-        inner join sys_knowledge k on m.knowledge_id = k.id
-        inner join sys_user u on u.id=m.create_by
-        where m.deleted = 0
-        and k.deleted = 0
-        and (m.create_by=#{request.userId} or m.is_open = 1)
-        <include refid="pageRequest"/>
-
-        <if test="request.checkSub==false">
-            and m.org_id=#{request.orgId}
-        </if>
-        <if test="request.checkSub==true">
-            or ( m.org_path like concat(#{request.orgPath},'%') and m.is_open = 1
-            <include refid="pageRequest"/>)
-        </if>
-        order by m.org_id, m.create_time desc
-    </select>
-
     <insert id="insertSysLearningMaterials"
             parameterType="com.xunmei.common.core.domain.edu.domain.SysLearningMaterials">
         insert into sys_learning_materials
@@ -356,7 +275,7 @@
 
         from sys_learning_materials m
         where m.deleted = 0
-       <include refid="filePageList"/>
+        <include refid="filePageList"/>
         <if test="request.orgPath != null and request.orgPath != '' ">
             and m.org_path like concat(#{request.orgPath}, '%')
         </if>
@@ -370,4 +289,85 @@
         </if>
         order by m.org_id, m.create_time desc
     </select>
+    <sql id="pageRequest">
+        <if test="request.knowledgeId != null">
+            and m.knowledge_id = #{request.knowledgeId}
+        </if>
+        <if test="request.title != null ">
+            and m.title like concat('%', #{request.title}, '%')
+        </if>
+        <if test="request.isOpen != null ">
+            and m.is_open = #{request.isOpen}
+        </if>
+    </sql>
+    <sql id="pageBaseColumn">
+        m.id,
+        title,
+        k.name as knowledgeName,
+        m.org_id,
+        m.org_name,
+        is_open,
+        m.file_list,
+        remark as remark,
+        u.name as create_by,
+        u.id as createId,
+        m.create_time,
+        m.update_time as updateTime,
+        m.file_names as fileNames
+    </sql>
+    <select id="selectPageData1" resultType="com.xunmei.common.core.domain.edu.vo.SysLearningMaterialsPageVo">
+        select
+        <include refid="pageBaseColumn"/>
+        from sys_learning_materials m
+        inner join sys_knowledge k on m.knowledge_id = k.id
+        inner join sys_user u on u.id=m.create_by
+        where m.deleted = 0 and k.deleted = 0 and m.org_id=#{request.orgId} and m.is_open = 1
+        <include refid="pageRequest"/>
+    </select>
+    <select id="selectPageData2" resultType="com.xunmei.common.core.domain.edu.vo.SysLearningMaterialsPageVo">
+        select
+        <include refid="pageBaseColumn"/>
+        from sys_learning_materials m
+        inner join sys_knowledge k on m.knowledge_id = k.id
+        inner join sys_user u on u.id=m.create_by
+        where m.deleted = 0 and k.deleted = 0 and m.org_id=#{request.curOrgId} and m.is_open = 1
+        <include refid="pageRequest"/>
+        or(m.deleted = 0 and k.deleted = 0 and  m.create_by=#{request.userId})
+    </select>
+    <select id="selectPageData3" resultType="com.xunmei.common.core.domain.edu.vo.SysLearningMaterialsPageVo">
+        select
+        <include refid="pageBaseColumn"/>
+        from sys_learning_materials m
+        inner join sys_knowledge k on m.knowledge_id = k.id
+        inner join sys_user u on u.id=m.create_by
+        where( m.deleted = 0 and k.deleted = 0 and m.org_id=#{request.curOrgId} and m.is_open = 1)
+        <include refid="pageRequest"/>
+        or(m.deleted = 0 and k.deleted = 0 and m.create_by=#{request.userId})
+        or(m.deleted = 0 and k.deleted = 0 and m.org_path like concat(#{request.orgPath},'%') and m.is_open = 1<include refid="pageRequest"/>)
+    </select>
+    <select id="selectPageData4" resultType="com.xunmei.common.core.domain.edu.vo.SysLearningMaterialsPageVo">
+        select
+        <include refid="pageBaseColumn"/>
+        from sys_learning_materials m
+        inner join sys_knowledge k on m.knowledge_id = k.id
+        inner join sys_user u on u.id=m.create_by
+        where (m.deleted = 0 and k.deleted = 0 and m.org_id=#{request.curOrgId} and m.is_open = 1)
+        <include refid="pageRequest"/>
+        or(m.deleted = 0 and k.deleted = 0 and m.create_by=#{request.userId})
+        or(m.deleted = 0 and k.deleted = 0 and m.org_path like concat(#{request.orgPath},'%') and m.is_open = 1<include refid="pageRequest"/>)
+        <!--父级公开数据-->
+        or(m.deleted = 0 and k.deleted = 0 and  m.org_id in <foreach collection="request.orgIdList" item="item" open="(" separator="," close=")">
+        #{item}
+    </foreach> and m.is_open = 1<include refid="pageRequest"/>)
+    </select>
+    <select id="selectPageData5" resultType="com.xunmei.common.core.domain.edu.vo.SysLearningMaterialsPageVo">
+        select
+        <include refid="pageBaseColumn"/>
+        from sys_learning_materials m
+        inner join sys_knowledge k on m.knowledge_id = k.id
+        inner join sys_user u on u.id=m.create_by
+        where m.deleted = 0 and k.deleted = 0 and
+        m.org_path like concat(#{request.orgPath},'%') and m.is_open = 1
+        <include refid="pageRequest"/>
+    </select>
 </mapper>

+ 9 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysAreaController.java

@@ -1,7 +1,10 @@
 package com.xunmei.system.controller;
 
 
+import com.xunmei.common.core.exception.ServiceException;
 import com.xunmei.system.api.domain.SysArea;
+import com.xunmei.system.api.domain.SysOrg;
+import com.xunmei.system.mapper.SysOrgMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -33,7 +36,8 @@ import com.xunmei.common.core.web.page.TableDataInfo;
 public class SysAreaController extends BaseController {
     @Autowired
     private ISysAreaService sysAreaService;
-
+    @Autowired
+    private SysOrgMapper sysOrgMapper;
     /**
      * 查询【请填写功能名称】列表
      */
@@ -62,6 +66,10 @@ public class SysAreaController extends BaseController {
     @RequiresPermissions("system:area:query")
     @GetMapping("/getAreaByOrg/{orgId}")
     public AjaxResult getAreaByOrg(@PathVariable("orgId") Long orgId) {
+        SysOrg sysOrg = sysOrgMapper.selectSysOrgById(orgId);
+        if (null==sysOrg.getType()){
+         return error("该机构没有机构类型,请维护!");
+        }
         return success(sysAreaService.getAreaByOrg(orgId));
     }
     /**

+ 4 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysAreaServiceImpl.java

@@ -13,6 +13,7 @@ import com.xunmei.system.api.model.LoginUser;
 import com.xunmei.system.domain.SysAreaCheck;
 import com.xunmei.system.domain.SysNfcBind;
 import com.xunmei.system.mapper.*;
+import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -93,6 +94,9 @@ private SysOrgMapper sysOrgMapper;
     @Override
     public List<SysArea> getAreaByOrg(Long orgId) {
         SysOrg sysOrg = sysOrgMapper.selectSysOrgById(orgId);
+        if (null==sysOrg.getType()){
+            throw new ServiceException("该机构没有机构类型,请维护!");
+        }
         QueryWrapper queryWrapper=new QueryWrapper();
         queryWrapper.eq("org_type",sysOrg.getType());
         queryWrapper.eq("del_flag",0);

+ 5 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysOrgServiceImpl.java

@@ -1,6 +1,7 @@
 package com.xunmei.system.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.collection.ListUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -462,6 +463,10 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
             //1.如果当前机构是查询机构的上级机构,那么应查询当前机构到 查询机构之间的所有机构id,与当前机构的所有下级
             if (curOrgPath.startsWith(queryOrgPath) && ObjectUtil.notEqual(curOrgPath,queryOrgPath)){
                 List<Long> list = Arrays.stream(curOrgPath.split("-")).map(Long::valueOf).collect(Collectors.toList());
+                int queryOrgIdIdx = list.indexOf(queryOrgId);
+                int curOrgIdIdx = list.indexOf(curOrgId);
+                //移除list中queryOrgId元素 之前的数据
+                list = ListUtil.sub(list,queryOrgIdIdx, curOrgIdIdx+1);
                 //移除当前机构id,当前机构的数据以path字段查询
                 list.remove(curOrgId);
                 resp.setOrgIdList(list);