From e3630e50ef6d87201229b2d152544883525572be Mon Sep 17 00:00:00 2001 From: liuyang Date: Mon, 20 Jan 2025 14:49:34 +0800 Subject: [PATCH] =?UTF-8?q?feat:[REQ-3488]=20=E4=BC=98=E5=8C=96foundation?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E8=8A=82=E7=82=B9=E5=92=8C=E5=8D=8F=E5=90=8C?= =?UTF-8?q?=E5=85=B3=E7=B3=BB=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CooperateShipFoundationService.java | 2 +- .../foundation/dto/CooperateShipCreator.java | 24 +++++++++++++++++++ .../CooperateShipFoundationServiceImpl.java | 13 ++-------- .../impl/CooperateShipServiceImpl.java | 11 +++++++++ .../processor/impl/CreateNodeProcessor.java | 23 ++++++++++++++---- 5 files changed, 57 insertions(+), 16 deletions(-) diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/cooperateship/foundation/CooperateShipFoundationService.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/cooperateship/foundation/CooperateShipFoundationService.java index bf5908d..4f41b66 100644 --- a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/cooperateship/foundation/CooperateShipFoundationService.java +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/cooperateship/foundation/CooperateShipFoundationService.java @@ -73,7 +73,7 @@ public interface CooperateShipFoundationService { Collection extract(Collection currentNodeList, Function function); /** - * 创建协同关系 + * 创建协同关系通用方法 */ SaasCooperateShip create(CooperateShipCreator creator); } diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/cooperateship/foundation/dto/CooperateShipCreator.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/cooperateship/foundation/dto/CooperateShipCreator.java index 171d5b9..2f8a4ee 100644 --- a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/cooperateship/foundation/dto/CooperateShipCreator.java +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/cooperateship/foundation/dto/CooperateShipCreator.java @@ -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 */ diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/cooperateship/foundation/impl/CooperateShipFoundationServiceImpl.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/cooperateship/foundation/impl/CooperateShipFoundationServiceImpl.java index 1944cc0..6f81b12 100644 --- a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/cooperateship/foundation/impl/CooperateShipFoundationServiceImpl.java +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/cooperateship/foundation/impl/CooperateShipFoundationServiceImpl.java @@ -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()) diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/cooperateship/service/impl/CooperateShipServiceImpl.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/cooperateship/service/impl/CooperateShipServiceImpl.java index a217456..9c3858a 100644 --- a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/cooperateship/service/impl/CooperateShipServiceImpl.java +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/cooperateship/service/impl/CooperateShipServiceImpl.java @@ -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()) diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/node/service/processor/impl/CreateNodeProcessor.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/node/service/processor/impl/CreateNodeProcessor.java index f1b3484..090752f 100644 --- a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/node/service/processor/impl/CreateNodeProcessor.java +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/node/service/processor/impl/CreateNodeProcessor.java @@ -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()); } }