组织人员树修改

This commit is contained in:
mashuai 2024-10-24 18:07:54 +08:00
parent b555eb2773
commit ac50102555
3 changed files with 81 additions and 19 deletions

View File

@ -57,6 +57,16 @@ public class SysDept extends BaseEntity
private List<SysUser> sysUsers; private List<SysUser> sysUsers;
private Integer level;
public Integer getLevel() {
return level;
}
public void setLevel(Integer level) {
this.level = level;
}
public Long getDeptId() public Long getDeptId()
{ {
return deptId; return deptId;
@ -208,6 +218,7 @@ public class SysDept extends BaseEntity
.append("createTime", getCreateTime()) .append("createTime", getCreateTime())
.append("updateBy", getUpdateBy()) .append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime()) .append("updateTime", getUpdateTime())
.append("level", getLevel())
.toString(); .toString();
} }
} }

View File

@ -32,6 +32,8 @@ public class TreeSelect implements Serializable {
private String status; private String status;
private Integer level;
private List<SysUser> sysUsers; private List<SysUser> sysUsers;
@ -51,6 +53,7 @@ public class TreeSelect implements Serializable {
this.status = dept.getStatus(); this.status = dept.getStatus();
this.label = dept.getDeptName(); this.label = dept.getDeptName();
this.sysUsers = dept.getSysUsers(); this.sysUsers = dept.getSysUsers();
this.level = dept.getLevel();
this.children = dept.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList()); this.children = dept.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList());
} }
@ -61,6 +64,14 @@ public class TreeSelect implements Serializable {
this.children = menu.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList()); this.children = menu.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList());
} }
public Integer getLevel() {
return level;
}
public void setLevel(Integer level) {
this.level = level;
}
public Long getId() { public Long getId() {
return id; return id;
} }

View File

@ -207,26 +207,66 @@
</select> </select>
<select id="getTree" resultType="com.bonus.system.api.domain.SysDept"> <select id="getTree" resultType="com.bonus.system.api.domain.SysDept">
WITH RECURSIVE DeptHierarchy AS (
SELECT SELECT
* deptId,
FROM parentId,
( deptName,
SELECT 0 AS level -- 初始级别为 0
d.dept_id AS deptId, FROM (
d.parent_id AS parentId, SELECT
d.dept_name AS deptName d.dept_id AS deptId,
FROM sys_dept d d.parent_id AS parentId,
WHERE d.del_flag = '0' d.dept_name AS deptName
AND d.STATUS = '0' FROM sys_dept d
UNION WHERE d.del_flag = '0'
SELECT AND d.STATUS = '0'
su.user_id AS deptId,
su.dept_id AS parentId, UNION
su.nick_name AS deptName
FROM sys_user su SELECT
LEFT JOIN sys_dept sd ON su.dept_id = sd.dept_id su.user_id AS deptId,
WHERE su.del_flag = '0' su.dept_id AS parentId,
) AS combined_results su.nick_name AS deptName
FROM sys_user su
LEFT JOIN sys_dept sd ON su.dept_id = sd.dept_id
WHERE su.del_flag = '0'
) AS combined_results
WHERE parentId = 0 -- 选择根级别parentId 为 0
UNION ALL
SELECT
cr.deptId,
cr.parentId,
cr.deptName,
ch.level + 1 -- 级别递增
FROM DeptHierarchy ch
JOIN (
SELECT
d.dept_id AS deptId,
d.parent_id AS parentId,
d.dept_name AS deptName
FROM sys_dept d
WHERE d.del_flag = '0'
AND d.STATUS = '0'
UNION
SELECT
su.user_id AS deptId,
su.dept_id AS parentId,
su.nick_name AS deptName
FROM sys_user su
LEFT JOIN sys_dept sd ON su.dept_id = sd.dept_id
WHERE su.del_flag = '0'
) AS cr ON cr.parentId = ch.deptId -- 根据父级进行连接
)
SELECT * FROM DeptHierarchy
WHERE level &lt;= 3 -- 只选择前 3 级
ORDER BY level, deptId; -- 根据级别和部门ID排序
</select> </select>
<insert id="insertUser" parameterType="SysUser" useGeneratedKeys="true" keyProperty="userId"> <insert id="insertUser" parameterType="SysUser" useGeneratedKeys="true" keyProperty="userId">