新增组织机构查询其子部门的方法

This commit is contained in:
b2baccline
2020-09-28 19:12:43 +08:00
parent a156b426e7
commit 635acf371b
4 changed files with 55 additions and 7 deletions

View File

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hccake.ballcat.admin.modules.sys.model.entity.SysOrganization;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 组织架构
*
@@ -20,4 +22,11 @@ public interface SysOrganizationMapper extends BaseMapper<SysOrganization> {
void followMoveChildNode(@Param("originHierarchy") String originHierarchy,
@Param("targetHierarchy") String targetHierarchy, @Param("depthDiff") int depthDiff);
/**
* 根据组织机构Id查询该组织下的所有子部门
* @param organizationId 组织机构ID
* @return 子部门集合
*/
List<SysOrganization> selectChildOrganization(@Param("organizationId") Integer organizationId);
}

View File

@@ -34,4 +34,18 @@ public interface SysOrganizationService extends IService<SysOrganization> {
*/
boolean update(SysOrganizationDTO sysOrganizationDTO);
/**
* 根据组织ID 查询除该组织下的所有儿子组织
* @param organizationId 组织机构ID
* @return List<SysOrganization> 该组织的儿子组织
*/
List<SysOrganization> selectSubOrganization(Integer organizationId);
/**
* 根据组织ID 查询除该组织下的所有孩子(子孙)组织
* @param organizationId 组织机构ID
* @return List<SysOrganization> 该组织的孩子组织
*/
List<SysOrganization> selectChildOrganization(Integer organizationId);
}

View File

@@ -1,6 +1,7 @@
package com.hccake.ballcat.admin.modules.sys.service.impl;
import cn.hutool.core.lang.Assert;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
import com.hccake.ballcat.admin.modules.sys.mapper.SysOrganizationMapper;
@@ -81,18 +82,32 @@ public class SysOrganizationServiceImpl extends ServiceImpl<SysOrganizationMappe
// 计算出更换父节点后的层级和深度
int depthDiff = originDepth - sysOrganization.getDepth();
// 更新其子节点的数据
// TODO 使用 xml
baseMapper.followMoveChildNode(originHierarchy, sysOrganization.getHierarchy(), depthDiff);
// baseMapper.update(null,
// new UpdateWrapper<SysOrganization>()
// .setSql("hierarchy = REPLACE(hierarchy,'" + originHierarchy + "','"
// + sysOrganization.getHierarchy() + "')")
// .setSql("depth = depth - " + depthDiff).likeRight("hierarchy", originHierarchy
// + "-"));
return SqlHelper.retBool(baseMapper.updateById(sysOrganization));
}
/**
* 根据组织ID 查询除该组织下的所有儿子组织
* @param organizationId 组织机构ID
* @return List<SysOrganization> 该组织的儿子组织
*/
@Override
public List<SysOrganization> selectSubOrganization(Integer organizationId) {
return baseMapper
.selectList(Wrappers.<SysOrganization>lambdaQuery().eq(SysOrganization::getParentId, organizationId));
}
/**
* 根据组织ID 查询除该组织下的所有孩子(子孙)组织
* @param organizationId 组织机构ID
* @return List<SysOrganization> 该组织的孩子组织
*/
@Override
public List<SysOrganization> selectChildOrganization(Integer organizationId) {
return baseMapper.selectChildOrganization(organizationId);
}
/**
* 根据父级ID填充当前组织机构实体的深度和层级
* @param sysOrganization 组织机构实体

View File

@@ -12,4 +12,14 @@
hierarchy like CONCAT(#{originHierarchy}, "-%")
</update>
<select id="selectChildOrganization">
SELECT
id, name, parent_id, hierarchy, depth, description, sort, create_by, update_by, create_time, update_time
FROM
sys_organization
WHERE
hierarchy LIKE
(SELECT CONCAT( hierarchy, '-', #{organizationId} , '%') FROM sys_organization WHERE id = #{organizationId})
</select>
</mapper>