guoshilong
2024-02-28 7f85ff7e882ed4d3d39c3261bc996af9cf656aa1
消息管理
9 files modified
181 ■■■■■ changed files
src/main/java/org/springblade/common/utils/NodeTreeUtil.java 21 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/messageRecord/mapper/MessageRecordMapper.xml 11 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/messageRecord/vo/MessageRecordVO.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/controller/DeptController.java 11 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/mapper/DeptMapper.java 13 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml 90 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/node/DeptUserTreeNode.java 2 ●●●●● 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 29 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/common/utils/NodeTreeUtil.java
@@ -8,10 +8,8 @@
import org.springblade.modules.house.vo.HouseTree;
import org.springblade.modules.system.node.DeptUserTreeNode;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
 * node tree 工具类
@@ -149,6 +147,10 @@
    /**
     * map 转 tree 组织机构(父子id不会重复的情况,数据查询来自同一个表)
     *
     * 把部门用户树遍历一遍,每个值,查询他的parentId在不在用户部门树中。如果存在,就把这个加在下级
     * 最后最上级的parentId肯定不在用户部门树中,把最上级的加到新树里。返回新树
     *
     * @param treeMap
     * @return
     */
@@ -156,18 +158,25 @@
        List<DeptUserTreeNode> tree = new ArrayList<>();
        if (treeMap.size() > 1) {
            treeMap.forEach((id, treeNode) -> {
                //是否有下级
                if (!treeNode.getHasChildren()){
                    // 判断是否有绑定多个部门
                    // 多个部门拆分
                    List<String> asList = Arrays.asList(treeNode.getParentId().split(","));
                    //有多部门
                    if (asList.size()>1){
                        for (String parentId : asList) {
                            //用户部门树中存在该部门
                            if (treeMap.containsKey(parentId)) {
                                //把该对象放在该部门下
                                treeMap.get(parentId).getChildren().add(treeNode);
                            } else {
                                //不存在该部门,在新的树中加入
                                tree.add(treeNode);
                            }
                        }
                    }else {
                        if (treeMap.containsKey(treeNode.getParentId())) {
                            DeptUserTreeNode deptUserTreeNode =treeMap.get(treeNode.getParentId());
                            deptUserTreeNode.getChildren().add(treeNode);
@@ -176,6 +185,7 @@
                        }
                    }
                }else {
                    //有下级
                    if (treeMap.containsKey(treeNode.getParentId())) {
                        treeMap.get(treeNode.getParentId()).getChildren().add(treeNode);
                    } else {
@@ -184,6 +194,7 @@
                }
            });
        }
        return tree;
    }
}
src/main/java/org/springblade/modules/messageRecord/mapper/MessageRecordMapper.xml
@@ -4,7 +4,9 @@
    <select id="selectMessageRecordPage" resultType="org.springblade.modules.messageRecord.vo.MessageRecordVO">
        select bmr.* from blade_message_record bmr
        select bmr.*,GROUP_CONCAT(bu.real_name) userName
        from blade_message_record bmr
        LEFT JOIN blade_user bu on bmr.receiver like CONCAT('%',bu.id,'%')
        where bmr.is_deleted = 0
        <if test="vo.type != null and vo.type !=''">
            and bmr.type  LIKE CONCAT('%',#{vo.type},'%')
@@ -18,6 +20,13 @@
        <if test="vo.title != null and vo.title != ''">
            and bmr.title LIKE CONCAT('%',#{vo.title},'%')
        </if>
        <if test="vo.createUser != null and vo.createUser != ''">
            and bmr.create_user = #{vo.createUser}
        </if>
        <if test="vo.messageResource != null and vo.messageResource !=''">
            and bmr.message_resource = #{vo.messageResource}
        </if>
        GROUP BY bmr.id
    </select>
src/main/java/org/springblade/modules/messageRecord/vo/MessageRecordVO.java
@@ -33,4 +33,6 @@
    private String startTime;
    private String endTime;
    private String userName;
}
src/main/java/org/springblade/modules/system/controller/DeptController.java
@@ -236,6 +236,15 @@
        return R.data(deptService.dataHandleCommunityByPolice());
    }
    /**
     * 查询组织机构树数据(下级包含人员信息)(懒加载)
     * @param treeNode
     * @return
     */
    @GetMapping("/getDeptAndUserTreeLazyTree")
    @ApiOperation(value = "查询组织机构树数据(下级包含人员信息)")
    public R getDeptAndUserTreeLazyTree(DeptUserTreeNode treeNode) {
        return R.data(deptService.getDeptAndUserTreeLazyTree(treeNode));
    }
}
src/main/java/org/springblade/modules/system/mapper/DeptMapper.java
@@ -84,6 +84,15 @@
    @MapKey(value = "id")
    Map<String, DeptUserTreeNode> getDeptMap(@Param("treeNode") DeptUserTreeNode treeNode);
    /**
     * 查询组织机构树,并且获取下级
     * @param treeNode
     * @return
     */
    @MapKey(value = "id")
    Map<String, DeptUserTreeNode> getDeptMapAndChildren(@Param("treeNode")DeptUserTreeNode treeNode);
    /**
     * 查询用户树
     * @param treeNode
@@ -105,4 +114,8 @@
     * @return
     */
    Dept getDeptByDeptIds(@Param("deptId") String deptId);
    @MapKey(value = "id")
    Map<String, DeptUserTreeNode> getDeptMapAndChild(@Param("treeNode")DeptUserTreeNode treeNode);
    @MapKey(value = "id")
    Map<String, DeptUserTreeNode> getUserMapByDeptIds(@Param("deptIds") String deptIds);
}
src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml
@@ -170,6 +170,73 @@
        </if>
    </select>
    <select id="getDeptMapAndChildren" resultType="org.springblade.modules.system.node.DeptUserTreeNode">
        SELECT
        cast(dept.id as char) as id,
        dept.parent_id parentId,
        dept.dept_name AS name,
        1 as isMan,
        0 AS phone,
        0 as email,
        (SELECT CASE WHEN count(1) > 0 THEN 1 ELSE 0 END FROM blade_dept  WHERE  parent_id = dept.id and is_deleted = 0) AS hasChildren,
        IFNULL(bu.num,0) AS userCount
        FROM
        blade_dept dept
        LEFT JOIN
        (
        SELECT COUNT(*) num,dept_id FROM blade_user where is_deleted = 0 GROUP BY dept_id
        ) bu on dept.id = bu.dept_id
        WHERE dept.is_deleted = 0
        <if test="treeNode.id!=null and treeNode.id!=''">
            and dept.id = #{treeNode.id}
        </if>
        union
        SELECT
        cast(dept.id as char) as id,
        dept.parent_id parentId,
        dept.dept_name AS name,
        1 as isMan,
        0 AS phone,
        0 as email,
        (SELECT CASE WHEN count(1) > 0 THEN 1 ELSE 0 END FROM blade_dept  WHERE  parent_id = dept.id and is_deleted = 0) AS hasChildren,
        IFNULL(bu.num,0) AS userCount
        FROM
        blade_dept dept
        LEFT JOIN
        (
        SELECT COUNT(*) num,dept_id FROM blade_user where is_deleted = 0 GROUP BY dept_id
        ) bu on dept.id = bu.dept_id
        WHERE dept.is_deleted = 0
        <if test="treeNode.id!=null and treeNode.id!=''">
            AND ancestors LIKE CONCAT( '%',  #{treeNode.id}, '%')
        </if>
    </select>
    <select id="getDeptMapAndChild" resultType="org.springblade.modules.system.node.DeptUserTreeNode">
        SELECT
            cast( dept.id AS CHAR ) AS id,
            dept.parent_id parentId,
            dept.dept_name AS NAME,
            1 AS isMan,
            0 AS phone,
            ( SELECT CASE WHEN count( 1 ) > 0 THEN 1 ELSE 0 END FROM blade_dept WHERE parent_id = dept.id AND is_deleted = 0 ) AS hasChildren
        FROM
            blade_dept dept
        WHERE
            dept.is_deleted = 0
          AND dept.parent_id = #{treeNode.id}
    </select>
    <!--查询组织机构树数据(下级包含人员信息)(排除组织机构对应不上的人员)-->
    <select id="getUserMap" resultType="org.springblade.modules.system.node.DeptUserTreeNode">
        select
@@ -183,10 +250,31 @@
        from blade_user bu join blade_dept bd on find_in_set(bu.dept_id,bd.id)
        where 1=1 and bu.is_deleted = 0 and bu.status = 1
        <if test="treeNode.id!=null and treeNode.id!=''">
            and bu.dept_id like concat(concat('%',#{treeNode.id}),'%')
            and (bu.dept_id = #{treeNode.id} or bd.ancestors LIKE CONCAT( '%',  #{treeNode.id}, '%'))
        </if>
    </select>
    <select id="getUserMapByDeptIds" resultType="org.springblade.modules.system.node.DeptUserTreeNode">
        select
        bu.id,
        bu.dept_id parentId,
        bu.real_name AS name,
        bu.phone,
        bu.email,
        2 as isMan,
        0 as hasChildren
        from blade_user bu join blade_dept bd on find_in_set(bu.dept_id,bd.id)
        where 1=1 and bu.is_deleted = 0 and bu.status = 1
        <if test="deptIds !=null and deptIds!=''">
            and bu.dept_id in
            <foreach collection="deptIds.split(',')" item="id" open="(" separator="," close=")">
                #{id}
            </foreach>
        </if>
    </select>
    <!--查询网格对应的机构信息(包含父级机构名称)-->
    <select id="getGridDeptAndParentList" resultType="org.springblade.modules.system.vo.DeptVO">
        select bd.*,bd1.dept_name as parentName from blade_dept bd
src/main/java/org/springblade/modules/system/node/DeptUserTreeNode.java
@@ -21,4 +21,6 @@
     * 是人还是部门  1:部门  2:人
     */
    private String isMan;
    private Boolean disabled;
}
src/main/java/org/springblade/modules/system/service/IDeptService.java
@@ -153,4 +153,6 @@
     * @return
     */
    Dept getDeptByDeptIds(String deptId);
    Object getDeptAndUserTreeLazyTree(DeptUserTreeNode treeNode);
}
src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java
@@ -54,6 +54,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -408,11 +409,34 @@
    @Override
    public List<DeptUserTreeNode> getDeptAndUserTree(DeptUserTreeNode treeNode) {
        // 查询数据
        Map<String, DeptUserTreeNode> deptMap = baseMapper.getDeptMap(treeNode);
//        Map<String, DeptUserTreeNode> deptMap = baseMapper.getDeptMap(treeNode);
        Map<String, DeptUserTreeNode> deptMap = baseMapper.getDeptMapAndChildren(treeNode);
        Map<String, DeptUserTreeNode> userMap = baseMapper.getUserMap(treeNode);
        deptMap.putAll(userMap);
        List<DeptUserTreeNode> deptAndUserNodeTree = NodeTreeUtil.getDeptAndUserNodeTree(deptMap);
        // 处理并返回
        return deptAndUserNodeTree;
    }
    @Override
    public Object getDeptAndUserTreeLazyTree(DeptUserTreeNode treeNode) {
        //传一个部门id,查询出该部门的下一级部门
        Map<String, DeptUserTreeNode> deptMap = baseMapper.getDeptMapAndChild(treeNode);
        String deptIds = "";
        int count = 0;
        for (String key:deptMap.keySet()){
            count++;
            deptIds += key;
            if (count<deptMap.size()){
                deptIds +=",";
            }
        }
        Map<String, DeptUserTreeNode> userMap = baseMapper.getUserMapByDeptIds(deptIds);
        deptMap.putAll(userMap);
        List<DeptUserTreeNode> deptAndUserNodeTree = NodeTreeUtil.getDeptAndUserNodeTree(deptMap);
        return deptAndUserNodeTree;
    }
@@ -460,4 +484,5 @@
    public Dept getDeptByDeptIds(String deptId) {
        return baseMapper.getDeptByDeptIds(deptId);
    }
}