| | |
| | | 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 工具类 |
| | |
| | | |
| | | /** |
| | | * map 转 tree 组织机构(父子id不会重复的情况,数据查询来自同一个表) |
| | | * |
| | | * 把部门用户树遍历一遍,每个值,查询他的parentId在不在用户部门树中。如果存在,就把这个加在下级 |
| | | * 最后最上级的parentId肯定不在用户部门树中,把最上级的加到新树里。返回新树 |
| | | * |
| | | * @param treeMap |
| | | * @return |
| | | */ |
| | |
| | | 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); |
| | |
| | | } |
| | | } |
| | | }else { |
| | | //有下级 |
| | | if (treeMap.containsKey(treeNode.getParentId())) { |
| | | treeMap.get(treeNode.getParentId()).getChildren().add(treeNode); |
| | | } else { |
| | |
| | | } |
| | | }); |
| | | } |
| | | |
| | | return tree; |
| | | } |
| | | } |
| | |
| | | |
| | | |
| | | <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},'%') |
| | |
| | | <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> |
| | | |
| | | |
| | |
| | | |
| | | private String startTime; |
| | | private String endTime; |
| | | |
| | | private String userName; |
| | | } |
| | |
| | | return R.data(deptService.dataHandleCommunityByPolice()); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 查询组织机构树数据(下级包含人员信息)(懒加载) |
| | | * @param treeNode |
| | | * @return |
| | | */ |
| | | @GetMapping("/getDeptAndUserTreeLazyTree") |
| | | @ApiOperation(value = "查询组织机构树数据(下级包含人员信息)") |
| | | public R getDeptAndUserTreeLazyTree(DeptUserTreeNode treeNode) { |
| | | return R.data(deptService.getDeptAndUserTreeLazyTree(treeNode)); |
| | | } |
| | | |
| | | } |
| | |
| | | @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 |
| | |
| | | * @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); |
| | | } |
| | |
| | | </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 |
| | |
| | | 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 |
| | |
| | | * 是人还是部门 1:部门 2:人 |
| | | */ |
| | | private String isMan; |
| | | |
| | | private Boolean disabled; |
| | | } |
| | |
| | | * @return |
| | | */ |
| | | Dept getDeptByDeptIds(String deptId); |
| | | |
| | | Object getDeptAndUserTreeLazyTree(DeptUserTreeNode treeNode); |
| | | } |
| | |
| | | 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; |
| | |
| | | @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; |
| | | } |
| | | |
| | |
| | | public Dept getDeptByDeptIds(String deptId) { |
| | | return baseMapper.getDeptByDeptIds(deptId); |
| | | } |
| | | |
| | | } |