【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.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<Long> positionIdList;
private Set<Long> positionIdList;
}

View File

@ -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<HrPositionMapper, HrPosit
public void add(HrPositionRequest hrPositionRequest) {
HrPosition hrPosition = new HrPosition();
BeanUtil.copyProperties(hrPositionRequest, hrPosition);
// 设置状态为启用
hrPosition.setStatusFlag(StatusEnum.ENABLE.getCode());
this.save(hrPosition);
}
@Override
public void del(HrPositionRequest hrPositionRequest) {
// 基础的删除逻辑
this.baseDelete(CollectionUtil.set(false, hrPositionRequest.getPositionId()));
HrPosition hrPosition = this.queryHrPosition(hrPositionRequest);
this.removeById(hrPosition.getPositionId());
}
@Override
@Transactional(rollbackFor = Exception.class)
public void batchDelete(HrPositionRequest hrPositionRequest) {
List<Long> positionIdList = hrPositionRequest.getPositionIdList();
Set<Long> positionIdList = hrPositionRequest.getPositionIdList();
// 先执行基础的删除逻辑
this.baseDelete(positionIdList);
// 批量删除职位
this.removeBatchByIds(positionIdList);
}
@ -112,7 +133,29 @@ public class HrPositionServiceImpl extends ServiceImpl<HrPositionMapper, HrPosit
queryWrapper.or().like(HrPosition::getPositionCode, searchText);
}
// 根据排序升序排列
queryWrapper.orderByAsc(HrPosition::getPositionSort);
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);
}
}
}