From 7f85ff7e882ed4d3d39c3261bc996af9cf656aa1 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Wed, 28 Feb 2024 14:26:19 +0800
Subject: [PATCH] 消息管理
---
src/main/java/org/springblade/common/utils/NodeTreeUtil.java | 21 ++++-
src/main/java/org/springblade/modules/messageRecord/mapper/MessageRecordMapper.xml | 11 ++
src/main/java/org/springblade/modules/system/mapper/DeptMapper.java | 13 +++
src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml | 90 ++++++++++++++++++++++
src/main/java/org/springblade/modules/system/controller/DeptController.java | 11 ++
src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java | 29 ++++++
src/main/java/org/springblade/modules/messageRecord/vo/MessageRecordVO.java | 2
src/main/java/org/springblade/modules/system/service/IDeptService.java | 2
src/main/java/org/springblade/modules/system/node/DeptUserTreeNode.java | 2
9 files changed, 171 insertions(+), 10 deletions(-)
diff --git a/src/main/java/org/springblade/common/utils/NodeTreeUtil.java b/src/main/java/org/springblade/common/utils/NodeTreeUtil.java
index efc38be..3a58bbc 100644
--- a/src/main/java/org/springblade/common/utils/NodeTreeUtil.java
+++ b/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;
}
}
diff --git a/src/main/java/org/springblade/modules/messageRecord/mapper/MessageRecordMapper.xml b/src/main/java/org/springblade/modules/messageRecord/mapper/MessageRecordMapper.xml
index 7d3242d..f508b36 100644
--- a/src/main/java/org/springblade/modules/messageRecord/mapper/MessageRecordMapper.xml
+++ b/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>
diff --git a/src/main/java/org/springblade/modules/messageRecord/vo/MessageRecordVO.java b/src/main/java/org/springblade/modules/messageRecord/vo/MessageRecordVO.java
index b0d7821..d8326a8 100644
--- a/src/main/java/org/springblade/modules/messageRecord/vo/MessageRecordVO.java
+++ b/src/main/java/org/springblade/modules/messageRecord/vo/MessageRecordVO.java
@@ -33,4 +33,6 @@
private String startTime;
private String endTime;
+
+ private String userName;
}
diff --git a/src/main/java/org/springblade/modules/system/controller/DeptController.java b/src/main/java/org/springblade/modules/system/controller/DeptController.java
index a23c600..8e786a4 100644
--- a/src/main/java/org/springblade/modules/system/controller/DeptController.java
+++ b/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));
+ }
}
diff --git a/src/main/java/org/springblade/modules/system/mapper/DeptMapper.java b/src/main/java/org/springblade/modules/system/mapper/DeptMapper.java
index c52324e..56a16d3 100644
--- a/src/main/java/org/springblade/modules/system/mapper/DeptMapper.java
+++ b/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);
}
diff --git a/src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml b/src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml
index c22b69a..5211eec 100644
--- a/src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml
+++ b/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
diff --git a/src/main/java/org/springblade/modules/system/node/DeptUserTreeNode.java b/src/main/java/org/springblade/modules/system/node/DeptUserTreeNode.java
index 95e4d44..4cb7d83 100644
--- a/src/main/java/org/springblade/modules/system/node/DeptUserTreeNode.java
+++ b/src/main/java/org/springblade/modules/system/node/DeptUserTreeNode.java
@@ -21,4 +21,6 @@
* 是人还是部门 1:部门 2:人
*/
private String isMan;
+
+ private Boolean disabled;
}
diff --git a/src/main/java/org/springblade/modules/system/service/IDeptService.java b/src/main/java/org/springblade/modules/system/service/IDeptService.java
index 8a8aab9..ed6347d 100644
--- a/src/main/java/org/springblade/modules/system/service/IDeptService.java
+++ b/src/main/java/org/springblade/modules/system/service/IDeptService.java
@@ -153,4 +153,6 @@
* @return
*/
Dept getDeptByDeptIds(String deptId);
+
+ Object getDeptAndUserTreeLazyTree(DeptUserTreeNode treeNode);
}
diff --git a/src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java b/src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java
index 027413b..3127d74 100644
--- a/src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java
+++ b/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);
}
+
}
--
Gitblit v1.9.3