diff --git a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/entity/HrOrganization.java b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/entity/HrOrganization.java index 1e0f44208..cf3c0a5f7 100644 --- a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/entity/HrOrganization.java +++ b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/entity/HrOrganization.java @@ -147,6 +147,20 @@ public class HrOrganization extends BaseExpandFieldEntity implements AbstractTre @ChineseDescription("组织机构所属公司的名称") private String companyName; + /** + * 是否有子级:true-有子级,false-无子级 + */ + @TableField(exist = false) + @ChineseDescription("是否有子级:true-有子级,false-无子级") + private Boolean haveSubOrgFlag = false; + + /** + * 是否要展开显示:true-展开本节点显示,false-不展开显示 + */ + @TableField(exist = false) + @ChineseDescription("是否要展开显示:true-展开本节点显示,false-不展开显示") + private Boolean expandShowFlag = false; + @Override public String getNodeId() { if (this.orgId == null) { diff --git a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/service/impl/HrOrganizationServiceImpl.java b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/service/impl/HrOrganizationServiceImpl.java index f09694d0c..8e4bc3a4c 100644 --- a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/service/impl/HrOrganizationServiceImpl.java +++ b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/service/impl/HrOrganizationServiceImpl.java @@ -221,7 +221,12 @@ public class HrOrganizationServiceImpl extends ServiceImpl().doTreeBuild(newNotRepeatList); + List hrOrganizations = new DefaultTreeBuildFactory().doTreeBuild(newNotRepeatList); + + // 遍历所有节点,查询这些节点有没有子级,填充haveSubOrgFlag + this.fillHaveSubFlag(hrOrganizations); + + return hrOrganizations; } @Override @@ -435,6 +440,28 @@ public class HrOrganizationServiceImpl extends ServiceImpl totalOrgIdSet) { + // 判断业务是否和组织机构有绑定关系 + Map callbackApiMap = SpringUtil.getBeansOfType(RemoveOrgCallbackApi.class); + for (RemoveOrgCallbackApi removeOrgCallbackApi : callbackApiMap.values()) { + removeOrgCallbackApi.validateHaveOrgBind(totalOrgIdSet); + } + + // 联动删除所有和本组织机构相关其他业务数据 + for (RemoveOrgCallbackApi removeOrgCallbackApi : callbackApiMap.values()) { + removeOrgCallbackApi.removeOrgAction(totalOrgIdSet); + } + + // 批量删除所有相关节点 + this.removeBatchByIds(totalOrgIdSet); + } + /** * 创建查询wrapper * @@ -473,25 +500,40 @@ public class HrOrganizationServiceImpl extends ServiceImpl totalOrgIdSet) { - // 判断业务是否和组织机构有绑定关系 - Map callbackApiMap = SpringUtil.getBeansOfType(RemoveOrgCallbackApi.class); - for (RemoveOrgCallbackApi removeOrgCallbackApi : callbackApiMap.values()) { - removeOrgCallbackApi.validateHaveOrgBind(totalOrgIdSet); + private void fillHaveSubFlag(List organizations) { + + if (ObjectUtil.isEmpty(organizations)) { + return; } - // 联动删除所有和本组织机构相关其他业务数据 - for (RemoveOrgCallbackApi removeOrgCallbackApi : callbackApiMap.values()) { - removeOrgCallbackApi.removeOrgAction(totalOrgIdSet); + for (HrOrganization organization : organizations) { + + Long orgId = organization.getOrgId(); + + // 查询库中是否有上级包含了本orgId + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(HrOrganization::getOrgParentId, orgId); + wrapper.select(HrOrganization::getOrgId); + List hrOrganizationList = this.list(wrapper); + + if (hrOrganizationList.size() > 0) { + organization.setHaveSubOrgFlag(true); + } + + // 如果有children则将展开标识填充,并继续向下递归填充 + if (ObjectUtil.isNotEmpty(organization.getChildren())) { + organization.setExpandShowFlag(true); + + fillHaveSubFlag(organization.getChildren()); + } + } - // 批量删除所有相关节点 - this.removeBatchByIds(totalOrgIdSet); } } \ No newline at end of file