diff --git a/snowy-plugin-api/snowy-plugin-sys-api/src/main/java/vip/xiaonuo/sys/api/SysOrgApi.java b/snowy-plugin-api/snowy-plugin-sys-api/src/main/java/vip/xiaonuo/sys/api/SysOrgApi.java index 42fce25a..40b9adae 100644 --- a/snowy-plugin-api/snowy-plugin-sys-api/src/main/java/vip/xiaonuo/sys/api/SysOrgApi.java +++ b/snowy-plugin-api/snowy-plugin-sys-api/src/main/java/vip/xiaonuo/sys/api/SysOrgApi.java @@ -57,4 +57,20 @@ public interface SysOrgApi { * @date 2022/7/22 14:45 **/ Page orgListSelector(String parentId); + + /** + * 获取某组织的所有父级id集合 + * + * @author yubaoshan + * @date 2025/5/10 12:13 + */ + List getParentIdListByOrgId(String orgId); + + /** + * 根据组织id获取组织列表 + * + * @author wangshuo + * @date 2025/01/10 14:45 + **/ + List getOrgListByIdListWithoutException(List orgIdList); } diff --git a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/org/provider/SysOrgApiProvider.java b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/org/provider/SysOrgApiProvider.java index 2b240a0d..ef21bfde 100644 --- a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/org/provider/SysOrgApiProvider.java +++ b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/org/provider/SysOrgApiProvider.java @@ -16,6 +16,7 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.util.ObjectUtil; import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; @@ -25,6 +26,7 @@ import vip.xiaonuo.sys.modular.org.param.SysOrgSelectorOrgListParam; import vip.xiaonuo.sys.modular.org.service.SysOrgService; import java.util.List; +import java.util.stream.Collectors; /** * 组织API接口提供者 @@ -64,4 +66,14 @@ public class SysOrgApiProvider implements SysOrgApi { sysOrgSelectorOrgListParam.setParentId(parentId); return BeanUtil.toBean(sysOrgService.orgListSelector(sysOrgSelectorOrgListParam), Page.class); } + + @Override + public List getParentIdListByOrgId(String orgId) { + return sysOrgService.getParentIdListByOrgId(orgId); + } + + @Override + public List getOrgListByIdListWithoutException(List orgIdList) { + return sysOrgService.listByIds(orgIdList).stream().map(JSONUtil::parseObj).collect(Collectors.toList()); + } } diff --git a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/org/service/SysOrgService.java b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/org/service/SysOrgService.java index 0d9a77d1..25a2d03c 100644 --- a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/org/service/SysOrgService.java +++ b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/org/service/SysOrgService.java @@ -172,4 +172,12 @@ public interface SysOrgService extends IService { * @date 2022/4/24 20:08 */ Page userSelector(SysOrgSelectorUserParam sysOrgSelectorUserParam); + + /** + * 获取某组织的所有父级id集合 + * + * @author yubaoshan + * @date 2025/5/10 12:13 + */ + List getParentIdListByOrgId(String orgId); } diff --git a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/org/service/impl/SysOrgServiceImpl.java b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/org/service/impl/SysOrgServiceImpl.java index ae19f769..752868d5 100644 --- a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/org/service/impl/SysOrgServiceImpl.java +++ b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/org/service/impl/SysOrgServiceImpl.java @@ -331,6 +331,25 @@ public class SysOrgServiceImpl extends ServiceImpl impleme } } + @Override + public List getParentIdListByOrgId(String orgId) { + List sysOrgList = this.getAllOrgList(); + List resultList = CollectionUtil.newArrayList(); + if(ObjectUtil.isNotEmpty(sysOrgList)) { + execRecursionFindParentByList(orgId, sysOrgList, resultList); + } + return resultList; + } + + private List execRecursionFindParentByList(String id, List list,List resultList) { + SysOrg parentById = list.stream().filter(sysOrg -> sysOrg.getId().equals(id)).findFirst().orElse(null); + if(ObjectUtil.isNotEmpty(parentById)) { + resultList.add(parentById.getParentId()); + execRecursionFindParentByList(parentById.getParentId(), list, resultList); + } + return resultList; + } + /* ====以下为各种递归方法==== */ @Override