【7.6.0】【sys】【org】更新删除组织机构

pull/55/MERGE
fengshuonan 2023-06-11 14:16:53 +08:00
parent 28fb8e7206
commit cbe5f28a80
4 changed files with 65 additions and 38 deletions

View File

@ -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);
}

View File

@ -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;
}
}

View File

@ -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", "删除机构失败,该机构下有绑定员工");
/**
*

View File

@ -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