From 1ca76cb6f62674025c1e4d669fca409772d2ee38 Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Sun, 11 Jun 2023 17:40:15 +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=90position=E3=80=91=E6=9B=B4=E6=96=B0=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E8=81=8C=E4=BD=8D=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../callback/RemovePositionCallbackApi.java | 31 +++++++++++++ .../pojo/request/HrPositionRequest.java | 7 ++- .../service/impl/HrPositionServiceImpl.java | 45 ++++++++++++++++++- 3 files changed, 78 insertions(+), 5 deletions(-) create mode 100644 kernel-s-sys/sys-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/callback/RemovePositionCallbackApi.java diff --git a/kernel-s-sys/sys-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/callback/RemovePositionCallbackApi.java b/kernel-s-sys/sys-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/callback/RemovePositionCallbackApi.java new file mode 100644 index 000000000..9079ea2a6 --- /dev/null +++ b/kernel-s-sys/sys-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/callback/RemovePositionCallbackApi.java @@ -0,0 +1,31 @@ +package cn.stylefeng.roses.kernel.sys.api.callback; + +import java.util.Set; + +/** + * 删掉职位的回调方法 + * + * @author fengshuonan + * @since 2023/6/11 17:33 + */ +public interface RemovePositionCallbackApi { + + /** + * 校验是否绑定了职位相关的信息,如果绑定了则报错 + * + * @param beRemovedPositionIdList 被删除的职位id集合 + * @author fengshuonan + * @since 2023/6/11 17:34 + */ + void validateHavePositionBind(Set beRemovedPositionIdList); + + /** + * 删除职位后的回调 + * + * @param beRemovedPositionIdList 被删除的职位id集合 + * @author fengshuonan + * @since 2023/6/11 17:34 + */ + void removePositionAction(Set beRemovedPositionIdList); + +} diff --git a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/position/pojo/request/HrPositionRequest.java b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/position/pojo/request/HrPositionRequest.java index 48fa886ee..f28013c75 100644 --- a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/position/pojo/request/HrPositionRequest.java +++ b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/position/pojo/request/HrPositionRequest.java @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.math.BigDecimal; -import java.util.List; +import java.util.Set; /** * 职位信息封装类 @@ -23,7 +23,7 @@ public class HrPositionRequest extends BaseRequest { /** * 主键 */ - @NotNull(message = "主键不能为空", groups = {edit.class, delete.class}) + @NotNull(message = "主键不能为空", groups = {edit.class, delete.class, detail.class}) @ChineseDescription("主键") private Long positionId; @@ -51,7 +51,6 @@ public class HrPositionRequest extends BaseRequest { /** * 状态:1-启用,2-禁用 */ - @NotNull(message = "状态:1-启用,2-禁用不能为空", groups = {add.class, edit.class}) @ChineseDescription("状态:1-启用,2-禁用") private Integer statusFlag; @@ -68,6 +67,6 @@ public class HrPositionRequest extends BaseRequest { */ @NotNull(message = "职位id集合不能为空", groups = {batchDelete.class}) @ChineseDescription("职位id集合") - private List positionIdList; + private Set positionIdList; } diff --git a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/position/service/impl/HrPositionServiceImpl.java b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/position/service/impl/HrPositionServiceImpl.java index 937541d89..3efe9b4a6 100644 --- a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/position/service/impl/HrPositionServiceImpl.java +++ b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/position/service/impl/HrPositionServiceImpl.java @@ -1,12 +1,16 @@ package cn.stylefeng.roses.kernel.sys.modular.position.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.extra.spring.SpringUtil; import cn.stylefeng.roses.kernel.db.api.factory.PageFactory; import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory; import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity; import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; +import cn.stylefeng.roses.kernel.rule.enums.StatusEnum; import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException; +import cn.stylefeng.roses.kernel.sys.api.callback.RemovePositionCallbackApi; import cn.stylefeng.roses.kernel.sys.modular.position.entity.HrPosition; import cn.stylefeng.roses.kernel.sys.modular.position.enums.HrPositionExceptionEnum; import cn.stylefeng.roses.kernel.sys.modular.position.mapper.HrPositionMapper; @@ -19,6 +23,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.Map; +import java.util.Set; /** * 职位信息业务实现层 @@ -33,19 +39,34 @@ public class HrPositionServiceImpl extends ServiceImpl positionIdList = hrPositionRequest.getPositionIdList(); + + Set positionIdList = hrPositionRequest.getPositionIdList(); + + // 先执行基础的删除逻辑 + this.baseDelete(positionIdList); + + // 批量删除职位 this.removeBatchByIds(positionIdList); } @@ -112,7 +133,29 @@ public class HrPositionServiceImpl extends ServiceImpl positionIdList) { + // 删除前的业务绑定校验 + Map callbackApiMap = SpringUtil.getBeansOfType(RemovePositionCallbackApi.class); + for (RemovePositionCallbackApi callbackApi : callbackApiMap.values()) { + callbackApi.validateHavePositionBind(positionIdList); + } + + // 执行删除关联业务的操作 + for (RemovePositionCallbackApi callbackApi : callbackApiMap.values()) { + callbackApi.removePositionAction(positionIdList); + } + } + } \ No newline at end of file