【7.6.0】【sys】【position】更新批量删除职位的逻辑

pull/55/MERGE
fengshuonan 2023-06-11 17:40:15 +08:00
parent e359057e0d
commit 1ca76cb6f6
3 changed files with 78 additions and 5 deletions

View File

@ -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<Long> beRemovedPositionIdList);
/**
*
*
* @param beRemovedPositionIdList id
* @author fengshuonan
* @since 2023/6/11 17:34
*/
void removePositionAction(Set<Long> beRemovedPositionIdList);
}

View File

@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.math.BigDecimal; 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("主键") @ChineseDescription("主键")
private Long positionId; private Long positionId;
@ -51,7 +51,6 @@ public class HrPositionRequest extends BaseRequest {
/** /**
* 1-2- * 1-2-
*/ */
@NotNull(message = "状态1-启用2-禁用不能为空", groups = {add.class, edit.class})
@ChineseDescription("状态1-启用2-禁用") @ChineseDescription("状态1-启用2-禁用")
private Integer statusFlag; private Integer statusFlag;
@ -68,6 +67,6 @@ public class HrPositionRequest extends BaseRequest {
*/ */
@NotNull(message = "职位id集合不能为空", groups = {batchDelete.class}) @NotNull(message = "职位id集合不能为空", groups = {batchDelete.class})
@ChineseDescription("职位id集合") @ChineseDescription("职位id集合")
private List<Long> positionIdList; private Set<Long> positionIdList;
} }

View File

@ -1,12 +1,16 @@
package cn.stylefeng.roses.kernel.sys.modular.position.service.impl; package cn.stylefeng.roses.kernel.sys.modular.position.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil; 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.PageFactory;
import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory; 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.entity.BaseEntity;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; 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.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.entity.HrPosition;
import cn.stylefeng.roses.kernel.sys.modular.position.enums.HrPositionExceptionEnum; import cn.stylefeng.roses.kernel.sys.modular.position.enums.HrPositionExceptionEnum;
import cn.stylefeng.roses.kernel.sys.modular.position.mapper.HrPositionMapper; 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 org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Set;
/** /**
* *
@ -33,19 +39,34 @@ public class HrPositionServiceImpl extends ServiceImpl<HrPositionMapper, HrPosit
public void add(HrPositionRequest hrPositionRequest) { public void add(HrPositionRequest hrPositionRequest) {
HrPosition hrPosition = new HrPosition(); HrPosition hrPosition = new HrPosition();
BeanUtil.copyProperties(hrPositionRequest, hrPosition); BeanUtil.copyProperties(hrPositionRequest, hrPosition);
// 设置状态为启用
hrPosition.setStatusFlag(StatusEnum.ENABLE.getCode());
this.save(hrPosition); this.save(hrPosition);
} }
@Override @Override
public void del(HrPositionRequest hrPositionRequest) { public void del(HrPositionRequest hrPositionRequest) {
// 基础的删除逻辑
this.baseDelete(CollectionUtil.set(false, hrPositionRequest.getPositionId()));
HrPosition hrPosition = this.queryHrPosition(hrPositionRequest); HrPosition hrPosition = this.queryHrPosition(hrPositionRequest);
this.removeById(hrPosition.getPositionId()); this.removeById(hrPosition.getPositionId());
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void batchDelete(HrPositionRequest hrPositionRequest) { public void batchDelete(HrPositionRequest hrPositionRequest) {
List<Long> positionIdList = hrPositionRequest.getPositionIdList();
Set<Long> positionIdList = hrPositionRequest.getPositionIdList();
// 先执行基础的删除逻辑
this.baseDelete(positionIdList);
// 批量删除职位
this.removeBatchByIds(positionIdList); this.removeBatchByIds(positionIdList);
} }
@ -112,7 +133,29 @@ public class HrPositionServiceImpl extends ServiceImpl<HrPositionMapper, HrPosit
queryWrapper.or().like(HrPosition::getPositionCode, searchText); queryWrapper.or().like(HrPosition::getPositionCode, searchText);
} }
// 根据排序升序排列
queryWrapper.orderByAsc(HrPosition::getPositionSort);
return queryWrapper; return queryWrapper;
} }
/**
*
*
* @author fengshuonan
* @since 2023/6/11 17:37
*/
private void baseDelete(Set<Long> positionIdList) {
// 删除前的业务绑定校验
Map<String, RemovePositionCallbackApi> callbackApiMap = SpringUtil.getBeansOfType(RemovePositionCallbackApi.class);
for (RemovePositionCallbackApi callbackApi : callbackApiMap.values()) {
callbackApi.validateHavePositionBind(positionIdList);
}
// 执行删除关联业务的操作
for (RemovePositionCallbackApi callbackApi : callbackApiMap.values()) {
callbackApi.removePositionAction(positionIdList);
}
}
} }