From 14fd6e296014e977ae32028dc070b5f46b005c43 Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Sun, 11 Jun 2023 17:03:34 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=907.6.0=E3=80=91=E3=80=90sys=E3=80=91?= =?UTF-8?q?=E3=80=90org=E3=80=91=E6=9B=B4=E6=96=B0=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/HrOrganizationController.java | 13 +++++ .../pojo/request/HrOrganizationRequest.java | 19 ++++--- .../org/service/HrOrganizationService.java | 8 +++ .../impl/HrOrganizationServiceImpl.java | 57 ++++++++++++++----- 4 files changed, 76 insertions(+), 21 deletions(-) diff --git a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/controller/HrOrganizationController.java b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/controller/HrOrganizationController.java index addd5fe76..4508306ea 100644 --- a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/controller/HrOrganizationController.java +++ b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/controller/HrOrganizationController.java @@ -1,6 +1,7 @@ package cn.stylefeng.roses.kernel.sys.modular.org.controller; import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; +import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest; import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData; import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData; import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource; @@ -52,6 +53,18 @@ public class HrOrganizationController { return new SuccessResponseData<>(); } + /** + * 批量删除组织机构 + * + * @author fengshuonan + * @date 2023/06/10 21:23 + */ + @PostResource(name = "批量删除组织机构", path = "/hrOrganization/batchDelete") + public ResponseData batchDelete(@RequestBody @Validated(BaseRequest.batchDelete.class) HrOrganizationRequest hrOrganizationRequest) { + hrOrganizationService.batchDelete(hrOrganizationRequest); + return new SuccessResponseData<>(); + } + /** * 编辑组织机构 * diff --git a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/pojo/request/HrOrganizationRequest.java b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/pojo/request/HrOrganizationRequest.java index 2052d8a76..feb004511 100644 --- a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/pojo/request/HrOrganizationRequest.java +++ b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/pojo/request/HrOrganizationRequest.java @@ -7,8 +7,10 @@ import lombok.Data; import lombok.EqualsAndHashCode; import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import java.math.BigDecimal; +import java.util.Set; /** * 组织机构信息封装类 @@ -58,13 +60,7 @@ public class HrOrganizationRequest extends BaseRequest { */ @NotBlank(message = "组织编码不能为空", groups = {add.class, edit.class}) @ChineseDescription("组织编码") - @TableUniqueValue( - message = "组织编码存在重复", - groups = {add.class, edit.class}, - tableName = "hr_organization", - columnName = "org_code", - idFieldName = "org_id", - excludeLogicDeleteItems = true) + @TableUniqueValue(message = "组织编码存在重复", groups = {add.class, edit.class}, tableName = "hr_organization", columnName = "org_code", idFieldName = "org_id", excludeLogicDeleteItems = true) private String orgCode; /** @@ -118,4 +114,13 @@ public class HrOrganizationRequest extends BaseRequest { @ChineseDescription("对接外部主数据的父级机构id") private String masterOrgParentId; + /** + * 组织机构id集合 + *

+ * 用在批量删除 + */ + @NotEmpty(message = "组织机构id集合不能为空", groups = {batchDelete.class}) + @ChineseDescription("组织机构id集合") + private Set orgIdList; + } diff --git a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/service/HrOrganizationService.java b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/service/HrOrganizationService.java index 426d8b710..520dfb61c 100644 --- a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/service/HrOrganizationService.java +++ b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/service/HrOrganizationService.java @@ -33,6 +33,14 @@ public interface HrOrganizationService extends IService { */ void del(HrOrganizationRequest hrOrganizationRequest); + /** + * 批量删除组织机构 + * + * @author fengshuonan + * @since 2023/6/11 16:59 + */ + void batchDelete(HrOrganizationRequest hrOrganizationRequest); + /** * 编辑 * diff --git a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/service/impl/HrOrganizationServiceImpl.java b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/service/impl/HrOrganizationServiceImpl.java index e4eb7524b..8a75e6f9f 100644 --- a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/service/impl/HrOrganizationServiceImpl.java +++ b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/service/impl/HrOrganizationServiceImpl.java @@ -53,22 +53,30 @@ public class HrOrganizationServiceImpl extends ServiceImpl totalOrgIdSet = DbOperatorContext.me().findSubListByParentId("hr_organization", "org_pids", "org_id", hrOrganizationRequest.getOrgId()); + Set totalOrgIdSet = DbOperatorContext.me().findSubListByParentId( + "hr_organization", "org_pids", "org_id", hrOrganizationRequest.getOrgId()); totalOrgIdSet.add(hrOrganizationRequest.getOrgId()); - // 判断业务是否和组织机构有绑定关系 - Map callbackApiMap = SpringUtil.getBeansOfType(RemoveOrgCallbackApi.class); - for (RemoveOrgCallbackApi removeOrgCallbackApi : callbackApiMap.values()) { - removeOrgCallbackApi.validateHaveOrgBind(totalOrgIdSet); + // 执行删除操作 + this.baseDelete(totalOrgIdSet); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void batchDelete(HrOrganizationRequest hrOrganizationRequest) { + + Set orgIdList = hrOrganizationRequest.getOrgIdList(); + + // 批量查询组织机构下的下属机构 + for (Long orgId : orgIdList) { + // 查询被删除组织机构的所有子级节点 + Set tempSubOrgIdList = DbOperatorContext.me().findSubListByParentId( + "hr_organization", "org_pids", "org_id", orgId); + orgIdList.addAll(tempSubOrgIdList); } - // 联动删除所有和本组织机构相关其他业务数据 - for (RemoveOrgCallbackApi removeOrgCallbackApi : callbackApiMap.values()) { - removeOrgCallbackApi.removeOrgAction(totalOrgIdSet); - } - - // 批量删除所有相关节点 - this.removeBatchByIds(totalOrgIdSet); + // 执行删除操作 + this.baseDelete(orgIdList); } @Override @@ -105,8 +113,7 @@ public class HrOrganizationServiceImpl extends ServiceImpl wrapper = this.createWrapper(hrOrganizationRequest); - wrapper.select(HrOrganization::getOrgId, HrOrganization::getOrgParentId, HrOrganization::getOrgPids, - HrOrganization::getOrgName, HrOrganization::getOrgSort, HrOrganization::getOrgType); + wrapper.select(HrOrganization::getOrgId, HrOrganization::getOrgParentId, HrOrganization::getOrgPids, HrOrganization::getOrgName, HrOrganization::getOrgSort, HrOrganization::getOrgType); List hrOrganizationList = this.list(wrapper); if (ObjectUtil.isEmpty(hrOrganizationList)) { @@ -173,4 +180,26 @@ 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); + } + } \ No newline at end of file