feat:[REQ-3488] 优化foundation创建节点和协同关系方法
This commit is contained in:
parent
cc932426ae
commit
e3630e50ef
@ -73,7 +73,7 @@ public interface CooperateShipFoundationService {
|
||||
<T> Collection<T> extract(Collection<SaasCooperateShip> currentNodeList, Function<SaasCooperateShip, T> function);
|
||||
|
||||
/**
|
||||
* 创建协同关系
|
||||
* 创建协同关系通用方法
|
||||
*/
|
||||
SaasCooperateShip create(CooperateShipCreator creator);
|
||||
}
|
||||
|
||||
@ -21,12 +21,36 @@ public class CooperateShipCreator {
|
||||
@NotNull(message = "工作台ID为空")
|
||||
private Long workspaceId;
|
||||
|
||||
/**
|
||||
* 工作台名称
|
||||
*/
|
||||
@NotBlank(message = "工作台名称为空")
|
||||
private String workspaceName;
|
||||
|
||||
/**
|
||||
* 工作台类型
|
||||
*/
|
||||
@NotNull(message = "工作台类型为空")
|
||||
private Integer workspaceType;
|
||||
|
||||
/**
|
||||
* 组织节点ID
|
||||
*/
|
||||
@NotNull(message = "组织节点ID为空")
|
||||
private Long organizationalNodeId;
|
||||
|
||||
/**
|
||||
* 组织单位ID
|
||||
*/
|
||||
@NotNull(message = "组织单位ID为空")
|
||||
private Long organizationalUnitId;
|
||||
|
||||
/**
|
||||
* 组织单位名称
|
||||
*/
|
||||
@NotBlank(message = "组织单位名称为空")
|
||||
private String organizationalUnitName;
|
||||
|
||||
/**
|
||||
* 父级协同节点ID
|
||||
*/
|
||||
|
||||
@ -168,15 +168,6 @@ public class CooperateShipFoundationServiceImpl implements CooperateShipFoundati
|
||||
Axssert.check(validationResult.isSuccess(), BizResultCode.INVALID_PARAM,
|
||||
validationResult.getErrorMessages().stream().map(BeanValidationResult.ErrorMessage::getMessage).findFirst().orElse(""));
|
||||
|
||||
// 获取当前nodeId
|
||||
OrganizationalNode node = nodeQueryRepository.getById(creator.getOrganizationalNodeId());
|
||||
Axssert.check(node != null, BizResultCode.ENTITY_NOT_FOUND, "部门不存在", creator.getOrganizationalNodeId());
|
||||
Axssert.check(node.isTopNode(), BizResultCode.INVALID_PARAM, "只有顶级节点才能添加协同关系");
|
||||
|
||||
// 单位校验
|
||||
UnitQueryRepository.UnitResp unit = unitQueryRepository.getById(node.getOrganizationalUnitId());
|
||||
Axssert.check(unit!= null, BizResultCode.ENTITY_NOT_FOUND, "组织单位不存在{}", node.getOrganizationalUnitId());
|
||||
|
||||
// 工作台校验
|
||||
WorkspaceDetailResp workspace = workspaceGateway.getDetail(WorkspaceDetailReq.builder().id(creator.getWorkspaceId()).build());
|
||||
Axssert.check(workspace!= null, BizResultCode.ENTITY_NOT_FOUND, "工作台不存在{}", creator.getWorkspaceId());
|
||||
@ -197,8 +188,8 @@ public class CooperateShipFoundationServiceImpl implements CooperateShipFoundati
|
||||
.workspaceName(workspace.getName())
|
||||
.status(CooperateShipStatusEnum.PRESENT.getCode())
|
||||
.joinAt(DateUtil.date())
|
||||
.organizationalUnitId(node.getOrganizationalUnitId())
|
||||
.organizationalUnitName(unit.getName())
|
||||
.organizationalUnitId(creator.getOrganizationalUnitId())
|
||||
.organizationalUnitName(creator.getOrganizationalUnitName())
|
||||
.cooperateType(creator.getCooperateType())
|
||||
.organizationalNodeId(creator.getOrganizationalNodeId())
|
||||
.partnerShip(creator.getPartnerShip())
|
||||
|
||||
@ -59,10 +59,21 @@ public class CooperateShipServiceImpl implements CooperateShipService {
|
||||
@Override
|
||||
public SaasCooperateShip create(CreateOrgCooperateShipReq req) {
|
||||
|
||||
// 获取当前nodeId
|
||||
OrganizationalNode node = nodeQueryRepository.getById(req.getOrganizationalNodeId());
|
||||
Axssert.check(node != null, BizResultCode.ENTITY_NOT_FOUND, "部门不存在", req.getOrganizationalNodeId());
|
||||
Axssert.check(node.isTopNode(), BizResultCode.INVALID_PARAM, "只有顶级节点才能添加协同关系");
|
||||
|
||||
// 单位校验
|
||||
UnitQueryRepository.UnitResp unit = unitQueryRepository.getById(node.getOrganizationalUnitId());
|
||||
Axssert.check(unit != null, BizResultCode.ENTITY_NOT_FOUND, "组织单位不存在{}", node.getOrganizationalUnitId());
|
||||
|
||||
// 创建协同关系
|
||||
return cooperateShipFoundationService.create(CooperateShipCreator.builder()
|
||||
.workspaceId(req.getWorkspaceId())
|
||||
.organizationalNodeId(req.getOrganizationalNodeId())
|
||||
.organizationalUnitId(unit.getId())
|
||||
.organizationalUnitName(unit.getName())
|
||||
.parentId(req.getParentId())
|
||||
.cooperateType(req.getCooperateType())
|
||||
.partnerShip(req.getPartnerShip())
|
||||
|
||||
@ -12,12 +12,14 @@ import cn.axzo.orgmanax.infra.client.workspace.WorkspaceGateway;
|
||||
import cn.axzo.orgmanax.infra.client.workspace.dto.Workspace;
|
||||
import cn.axzo.orgmanax.infra.dao.cooperateship.entity.SaasCooperateShip;
|
||||
import cn.axzo.orgmanax.infra.dao.node.entity.OrganizationalNode;
|
||||
import cn.axzo.orgmanax.infra.dao.unit.repository.UnitQueryRepository;
|
||||
import cn.axzo.orgmanax.server.cooperateship.foundation.CooperateShipFoundationService;
|
||||
import cn.axzo.orgmanax.server.cooperateship.foundation.dto.CooperateShipCreator;
|
||||
import cn.axzo.orgmanax.server.cooperateship.service.CooperateShipService;
|
||||
import cn.axzo.orgmanax.server.node.foundation.NodeFoundationService;
|
||||
import cn.axzo.orgmanax.server.node.foundation.req.NodeCreate;
|
||||
import cn.axzo.orgmanax.server.node.service.processor.NodeProcessor;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -36,21 +38,30 @@ public class CreateNodeProcessor implements NodeProcessor {
|
||||
private final NodeFoundationService nodeFoundationService;
|
||||
private final CooperateShipFoundationService cooperateShipFoundationService;
|
||||
private final WorkspaceGateway workspaceGateway;
|
||||
private final UnitQueryRepository unitQueryRepository;
|
||||
|
||||
@Override
|
||||
public ProcessResult process(ProcessContext context) {
|
||||
|
||||
// 转成该处理器关注的参数对象
|
||||
NodeCreate nodeCreate = context.getParams().toJavaObject(NodeCreate.class);
|
||||
|
||||
// 保存node节点
|
||||
OrganizationalNode savedNode = nodeFoundationService.create(nodeCreate);
|
||||
|
||||
// 初始化协同关系
|
||||
initCooperateShipIfNeeded(savedNode, nodeCreate);
|
||||
initCooperateShipIfNeeded(savedNode, nodeCreate.getOperatorId());
|
||||
|
||||
// 返回数据
|
||||
return ProcessResult.success((JSONObject) JSONObject.toJSON(savedNode));
|
||||
return ProcessResult.success((JSONObject) JSON.toJSON(savedNode));
|
||||
}
|
||||
|
||||
protected void initCooperateShipIfNeeded(OrganizationalNode node, NodeCreate nodeCreate) {
|
||||
/**
|
||||
* 初始化协同关系
|
||||
* @param node
|
||||
* @param operatorId
|
||||
*/
|
||||
protected void initCooperateShipIfNeeded(OrganizationalNode node, Long operatorId) {
|
||||
if (node == null) {
|
||||
return;
|
||||
}
|
||||
@ -70,6 +81,8 @@ public class CreateNodeProcessor implements NodeProcessor {
|
||||
.organizationUnitId(node.getOrganizationalUnitId())
|
||||
.build()).stream().findFirst().orElseThrow(() -> BizResultCode.ENTITY_NOT_FOUND.toException("没有企业工作台"));
|
||||
|
||||
UnitQueryRepository.UnitResp unit = unitQueryRepository.getById(node.getOrganizationalUnitId());
|
||||
|
||||
// 创建协同关系
|
||||
cooperateShipFoundationService.create(CooperateShipCreator.builder()
|
||||
.workspaceId(workspace.getId())
|
||||
@ -77,7 +90,9 @@ public class CreateNodeProcessor implements NodeProcessor {
|
||||
.partnerShip(SaasCooperateShip.ParterShipEnum.OWNED.getCode())
|
||||
.organizationalNodeId(node.getTopNodeId())
|
||||
.parentId(0L)
|
||||
.operatorId(nodeCreate.getOperatorId())
|
||||
.operatorId(operatorId)
|
||||
.organizationalUnitId(node.getOrganizationalUnitId())
|
||||
.organizationalUnitName(unit.getName())
|
||||
.build());
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user