✨ 新增组织机构查询其子部门的方法
This commit is contained in:
@@ -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);
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
@@ -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 组织机构实体
|
||||
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user