智慧保安后台管理-外网项目备份
Administrator
2021-11-26 9c6a2288eec3ecfd42528d5d35b7d88fe897a475
部门tree 修改
6 files modified
188 ■■■■ changed files
src/main/java/org/springblade/modules/system/controller/DeptController.java 4 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/mapper/DeptMapper.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml 138 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/service/IDeptService.java 2 ●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java 33 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/vo/DeptVO.java 1 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/controller/DeptController.java
@@ -191,8 +191,8 @@
     */
    @GetMapping("/security_lazy-tree")
    @ApiOperation(value = "懒加载树形结构", notes = "树形结构")
    public R<List<DeptVO>> securityLazyTree(String jurisdiction, Long parentId) {
        List<DeptVO> tree = deptService.securityLazyTree(jurisdiction, parentId);
    public R<List<DeptVO>> securityLazyTree(String jurisdiction, Long parentId,Long deptId) {
        List<DeptVO> tree = deptService.securityLazyTree(jurisdiction, parentId,deptId);
        return R.data(tree);
    }
src/main/java/org/springblade/modules/system/mapper/DeptMapper.java
@@ -91,7 +91,8 @@
    /**
     * 懒加载获取部门树形结构,不包含顶级管理员公安局
     */
    List<DeptVO> securityLazyTree(@Param("jurisdiction") String jurisdiction, Long parentId);
    List<DeptVO> securityLazyTree(@Param("jurisdiction") String jurisdiction,
                                  @Param("parentId")Long parentId);
    List<DeptVO>  selectInfo();
    List<DeptVO>  selectInfos();
@@ -172,4 +173,11 @@
     * @return
     */
    List<DeptVO> lazyTreeByJurisdiction();
    /**
     * 查询所有的保安公司机构信息
     * @return
     */
    List<DeptVO> securityDeptUnitList(@Param("parentId")Long parentId,
                                      @Param("deptId")Long deptId);
}
src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml
@@ -107,26 +107,64 @@
    </select>
    <!--查询保安公司列表,保安员管理-->
<!--    <select id="securityLazyTree" resultMap="treeNodeResultMap">-->
<!--        (-->
<!--        SELECT-->
<!--        id,-->
<!--        parent_id,-->
<!--        dept_name AS title,-->
<!--        id AS "value",-->
<!--        id AS "key",-->
<!--        0 AS "has_children"-->
<!--        FROM-->
<!--        blade_dept-->
<!--        where is_deleted = 0-->
<!--        and-->
<!--        (id = 1413470343230877697-->
<!--        or id = 1425366663452196865-->
<!--        or id = 1420222768149966850-->
<!--        or id = 1426354978959691778)-->
<!--        )-->
<!--        union-->
<!--        (-->
<!--        SELECT-->
<!--        DISTINCT-->
<!--        dept.id,-->
<!--        dept.parent_id,-->
<!--        dept.dept_name AS title,-->
<!--        dept.id AS "value",-->
<!--        dept.id AS "key",-->
<!--        (-->
<!--        SELECT-->
<!--        CASE WHEN count(1) > 0 THEN 1 ELSE 0 END-->
<!--        FROM-->
<!--        blade_dept-->
<!--        WHERE-->
<!--        parent_id = dept.id and is_deleted = 0-->
<!--        ) AS "has_children"-->
<!--        FROM-->
<!--        blade_dept dept-->
<!--        left join-->
<!--        sys_information si-->
<!--        on-->
<!--        si.departmentid = dept.id-->
<!--        left join-->
<!--        sys_jurisdiction sj-->
<!--        on-->
<!--        sj.id = si.jurisdiction-->
<!--        WHERE-->
<!--        1=1-->
<!--        and si.stats != 3 AND si.stats!=1-->
<!--        AND dept.is_deleted = 0-->
<!--        <if test="jurisdiction!=null and jurisdiction!='' and jurisdiction!='1372091709474910209'">-->
<!--            and (sj.id = #{jurisdiction} or sj.parent_id = #{jurisdiction})-->
<!--        </if>-->
<!--        )-->
<!--    </select>-->
    <!--查询保安公司列表,保安员管理-->
    <select id="securityLazyTree" resultMap="treeNodeResultMap">
        (
        SELECT
        id,
        parent_id,
        dept_name AS title,
        id AS "value",
        id AS "key",
        0 AS "has_children"
        FROM
        blade_dept
        where is_deleted = 0
        and
        (id = 1413470343230877697
        or id = 1425366663452196865
        or id = 1420222768149966850
        or id = 1426354978959691778)
        )
        union
        (
        SELECT
        DISTINCT
        dept.id,
@@ -152,13 +190,69 @@
        sys_jurisdiction sj
        on
        sj.id = si.jurisdiction
        WHERE
        1=1
        and si.stats != 3 AND si.stats!=1
        where
        dept.dept_category != 0
        AND dept.is_deleted = 0
        and dept.id!= 1420222961377357825
        and dept.parent_id!= 1420222961377357825
        and dept.id!= 1418458374477549569
        and dept.parent_id!= 1418458374477549569
        and dept.id!= 1426355050199945218
        <if test="jurisdiction!=null and jurisdiction!='' and jurisdiction!='1372091709474910209'">
            and (sj.id = #{jurisdiction} or sj.parent_id = #{jurisdiction})
        </if>
    </select>
    <!--查询所有的保安公司机构及子级信息-->
    <select id="securityDeptUnitList" resultMap="treeNodeResultMap">
        (
            SELECT
            id,
            parent_id,
            dept_name AS title,
            id AS "value",
            id AS "key",
            0 AS "has_children"
            FROM
            blade_dept
            where id = #{deptId}
        )
        union
        (
        SELECT
        dept.id,
        dept.parent_id,
        dept.dept_name AS title,
        dept.id AS "value",
        dept.id AS "key",
        (
        SELECT
        CASE WHEN count(1) > 0 THEN 1 ELSE 0 END
        FROM
        blade_dept
        WHERE
        parent_id = dept.id
        ) AS "has_children"
        FROM
        (
        SELECT
        id,parent_id,dept_name
        FROM
        (
            SELECT
            t1.id,t1.parent_id,t1.dept_name,
            IF
            ( find_in_set( parent_id, @pids ) > 0, @pids := concat( @pids, ',', id ), 0 ) AS ischild
            FROM
            ( SELECT id, parent_id,dept_name FROM blade_dept t ORDER BY parent_id, id ) t1,
            ( SELECT @pids := #{deptId} ) t2
            ) t3
            WHERE
            ischild != 0
        )
        dept
        where 1=1
        )
    </select>
src/main/java/org/springblade/modules/system/service/IDeptService.java
@@ -130,7 +130,7 @@
    /**
     * 懒加载获取部门树形结构,不包含顶级管理员公安局
     */
    List<DeptVO> securityLazyTree(String jurisdiction, Long parentId);
    List<DeptVO> securityLazyTree(String jurisdiction, Long parentId,Long deptId);
    List<DeptVO> selectInfo();
    List<DeptVO>  selectInfos();
    List<DeptVo> selDeptList();
src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java
@@ -234,10 +234,41 @@
     * 懒加载获取部门树形结构,不包含顶级管理员公安局
     */
    @Override
    public List<DeptVO> securityLazyTree(String jurisdiction, Long parentId) {
    public List<DeptVO> securityLazyTree(String jurisdiction, Long parentId,Long deptId) {
        //如果传了deptId
        if (null!=deptId){
            //递归查询
//            recursionDeptInfo(deptVOS, list);
            //tree 组装并返回
            return ForestNodeMerger.merge(baseMapper.securityDeptUnitList(null,deptId));
        }
        return ForestNodeMerger.merge(baseMapper.securityLazyTree(jurisdiction, parentId));
    }
    /**
     * 递归查询子级菜单
     * @param deptVOS
     * @param list
     * @return
     */
    private List<DeptVO> recursionDeptInfo(List<DeptVO> deptVOS,List<DeptVO> list) {
        //如果有子级
        if (list.size()>0){
            deptVOS.addAll(list);
            //遍历子级
            for (int i = 0; i < list.size(); i++) {
                //查看是否有子级
                List<DeptVO> childList = baseMapper.securityDeptUnitList(list.get(i).getId(), null);
                //如果有
                if (childList.size()>0){
                    //递归
                    recursionDeptInfo(deptVOS,childList);
                }
            }
        }
        return deptVOS;
    }
    /**
     * 懒加载获取部门树形结构(包含用户数据)
src/main/java/org/springblade/modules/system/vo/DeptVO.java
@@ -80,5 +80,4 @@
     * 机构类型名称
     */
    private String deptCategoryName;
}