mirror of https://gitee.com/stylefeng/roses
【7.6.0】【sys】【position】更新批量删除职位的逻辑
parent
e359057e0d
commit
1ca76cb6f6
|
@ -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);
|
||||
|
||||
}
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue