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.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;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue