mirror of https://gitee.com/stylefeng/roses
【7.6.0】【sys】【org】更新删除组织机构
parent
28fb8e7206
commit
cbe5f28a80
|
@ -0,0 +1,33 @@
|
|||
package cn.stylefeng.roses.kernel.sys.api.callback;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* 删除组织机构的回调方法
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @since 2023/6/11 13:49
|
||||
*/
|
||||
public interface RemoveOrgCallbackApi {
|
||||
|
||||
/**
|
||||
* 校验置顶orgId集合是否有和业务的绑定关系
|
||||
* <p>
|
||||
* 如果有绑定关系直接抛出异常即可
|
||||
*
|
||||
* @param beRemovedOrgIdList 被删除的组织机构id集合
|
||||
* @author fengshuonan
|
||||
* @since 2023/6/11 14:04
|
||||
*/
|
||||
void validateHaveOrgBind(Set<Long> beRemovedOrgIdList);
|
||||
|
||||
/**
|
||||
* 删除组织机构的回调,删除组织机构后自动触发
|
||||
*
|
||||
* @param beRemovedOrgIdList 被删除的组织机构id集合
|
||||
* @author fengshuonan
|
||||
* @since 2023/6/11 13:50
|
||||
*/
|
||||
void removeOrgAction(Set<Long> beRemovedOrgIdList);
|
||||
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
package cn.stylefeng.roses.kernel.sys.api.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 一个示例
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2023-06-10 20:50:43
|
||||
*/
|
||||
@Getter
|
||||
public enum DemoEnum {
|
||||
|
||||
/**
|
||||
* markdown格式
|
||||
*/
|
||||
MARKDOWN(1, "markdown格式"),
|
||||
|
||||
/**
|
||||
* 富文本格式
|
||||
*/
|
||||
TEXT(2, "富文本格式");
|
||||
|
||||
private final Integer code;
|
||||
|
||||
private final String message;
|
||||
|
||||
DemoEnum(Integer code, String message) {
|
||||
this.code = code;
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package cn.stylefeng.roses.kernel.sys.modular.org.enums;
|
||||
package cn.stylefeng.roses.kernel.sys.api.enums;
|
||||
|
||||
import cn.stylefeng.roses.kernel.rule.constants.RuleConstants;
|
||||
import cn.stylefeng.roses.kernel.rule.exception.AbstractExceptionEnum;
|
||||
|
@ -16,7 +16,12 @@ public enum HrOrganizationExceptionEnum implements AbstractExceptionEnum {
|
|||
/**
|
||||
* 查询结果不存在
|
||||
*/
|
||||
HR_ORGANIZATION_NOT_EXISTED(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + "10001", "查询结果不存在");
|
||||
HR_ORGANIZATION_NOT_EXISTED(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + "10001", "查询结果不存在"),
|
||||
|
||||
/**
|
||||
* 删除机构失败,该机构下有绑定员工
|
||||
*/
|
||||
DELETE_ORGANIZATION_ERROR(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + "10002", "删除机构失败,该机构下有绑定员工");
|
||||
|
||||
/**
|
||||
* 错误编码
|
|
@ -3,13 +3,16 @@ package cn.stylefeng.roses.kernel.sys.modular.org.service.impl;
|
|||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import cn.stylefeng.roses.kernel.db.api.context.DbOperatorContext;
|
||||
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.page.PageResult;
|
||||
import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException;
|
||||
import cn.stylefeng.roses.kernel.rule.tree.factory.DefaultTreeBuildFactory;
|
||||
import cn.stylefeng.roses.kernel.sys.api.callback.RemoveOrgCallbackApi;
|
||||
import cn.stylefeng.roses.kernel.sys.api.enums.HrOrganizationExceptionEnum;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.org.entity.HrOrganization;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.org.enums.HrOrganizationExceptionEnum;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.org.factory.OrganizationFactory;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.org.mapper.HrOrganizationMapper;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.org.pojo.request.HrOrganizationRequest;
|
||||
|
@ -18,9 +21,11 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
|
@ -44,9 +49,26 @@ public class HrOrganizationServiceImpl extends ServiceImpl<HrOrganizationMapper,
|
|||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void del(HrOrganizationRequest hrOrganizationRequest) {
|
||||
HrOrganization hrOrganization = this.queryHrOrganization(hrOrganizationRequest);
|
||||
this.removeById(hrOrganization.getOrgId());
|
||||
|
||||
// 查询被删除组织机构的所有子级节点
|
||||
Set<Long> totalOrgIdSet = DbOperatorContext.me().findSubListByParentId("hr_organization", "org_pids", "org_id", hrOrganizationRequest.getOrgId());
|
||||
totalOrgIdSet.add(hrOrganizationRequest.getOrgId());
|
||||
|
||||
// 判断业务是否和组织机构有绑定关系
|
||||
Map<String, RemoveOrgCallbackApi> callbackApiMap = SpringUtil.getBeansOfType(RemoveOrgCallbackApi.class);
|
||||
for (RemoveOrgCallbackApi removeOrgCallbackApi : callbackApiMap.values()) {
|
||||
removeOrgCallbackApi.validateHaveOrgBind(totalOrgIdSet);
|
||||
}
|
||||
|
||||
// 联动删除所有和本组织机构相关其他业务数据
|
||||
for (RemoveOrgCallbackApi removeOrgCallbackApi : callbackApiMap.values()) {
|
||||
removeOrgCallbackApi.removeOrgAction(totalOrgIdSet);
|
||||
}
|
||||
|
||||
// 批量删除所有相关节点
|
||||
this.removeBatchByIds(totalOrgIdSet);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Reference in New Issue