From 00bf5aa84781ae2a5a9030ff4687acdcaf681822 Mon Sep 17 00:00:00 2001 From: zbz <913734187@qq.com> Date: Wed, 8 May 2019 17:09:59 +0800 Subject: [PATCH] =?UTF-8?q?fix(ruoyi-system):=E4=BF=AE=E5=A4=8D=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E9=83=A8=E9=97=A8=E5=B1=82=E7=BA=A7BUG=20Closes=20htt?= =?UTF-8?q?ps://gitee.com/y=5Fproject/RuoYi/issues/IW1SB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/system/mapper/SysDeptMapper.java | 7 ++++ .../service/impl/SysDeptServiceImpl.java | 34 +++++++++---------- .../resources/mapper/system/SysDeptMapper.xml | 7 ++++ 3 files changed, 31 insertions(+), 17 deletions(-) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java index e5c0259a..6189c81b 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java @@ -98,4 +98,11 @@ public interface SysDeptMapper * @param dept 部门 */ public void updateDeptStatus(SysDept dept); + + /** + * 根据ID查询所有子部门 + * @param id + * @return + */ + public List selectChildrenDeptById(Long id); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java index f623c3f3..c91b6c58 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java @@ -185,15 +185,17 @@ public class SysDeptServiceImpl implements ISysDeptService * @return 结果 */ @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public int updateDept(SysDept dept) { - SysDept info = deptMapper.selectDeptById(dept.getParentId()); - if (StringUtils.isNotNull(info)) + SysDept newParentDept = deptMapper.selectDeptById(dept.getParentId()); + SysDept oldDept = selectDeptById(dept.getDeptId()); + if (StringUtils.isNotNull(newParentDept) && StringUtils.isNotNull(oldDept)) { - String ancestors = info.getAncestors() + "," + info.getDeptId(); - dept.setAncestors(ancestors); - updateDeptChildren(dept.getDeptId(), ancestors); + String newAncestors = newParentDept.getAncestors() + "," + newParentDept.getDeptId(); + String oldAncestors = oldDept.getAncestors(); + dept.setAncestors(newAncestors); + updateDeptChildren(dept.getDeptId(), newAncestors,oldAncestors); } int result = deptMapper.updateDept(dept); if (UserConstants.DEPT_NORMAL.equals(dept.getStatus())) @@ -219,22 +221,20 @@ public class SysDeptServiceImpl implements ISysDeptService /** * 修改子元素关系 - * - * @param deptId 部门ID - * @param ancestors 元素列表 + * @param deptId 被修改的部门ID + * @param newAncestors 新的父ID集合 + * @param oldAncestors 旧的父ID集合 */ - public void updateDeptChildren(Long deptId, String ancestors) + public void updateDeptChildren(Long deptId, String newAncestors,String oldAncestors) { - SysDept dept = new SysDept(); - dept.setParentId(deptId); - List childrens = deptMapper.selectDeptList(dept); - for (SysDept children : childrens) + List children = deptMapper.selectChildrenDeptById(deptId); + for (SysDept child : children) { - children.setAncestors(ancestors + "," + dept.getParentId()); + child.setAncestors(child.getAncestors().replace(oldAncestors,newAncestors)); } - if (childrens.size() > 0) + if (children.size() > 0) { - deptMapper.updateDeptChildren(childrens); + deptMapper.updateDeptChildren(children); } } diff --git a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml index 17560922..357517de 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml @@ -74,6 +74,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from sys_dept d where d.dept_id = #{deptId} + + insert into sys_dept(