REQ-2135: 尝试使用查询到的项目部类型

This commit is contained in:
yanglin 2024-04-07 16:27:24 +08:00
parent 5fbdd5ad24
commit 6dccf6dc34
3 changed files with 57 additions and 14 deletions

View File

@ -6,6 +6,7 @@ import cn.axzo.apollo.workspace.api.workspace.WorkspaceApi;
import cn.axzo.apollo.workspace.api.workspace.req.OrganizationalNodePractitionerWideReqParams;
import cn.axzo.apollo.workspace.api.workspace.res.OrganizationalNodePractitionerWideDto;
import cn.axzo.apollo.workspace.api.workspace.res.SimpleWorkspaceRes;
import cn.axzo.apollo.workspace.common.enums.WorkspaceTypeEnum;
import cn.axzo.msg.center.domain.entity.Todo;
import cn.axzo.msg.center.domain.entity.TodoBusiness;
import cn.axzo.msg.center.message.domain.param.PendingMessagePushParam;
@ -22,6 +23,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
@ -42,24 +44,28 @@ class TodoRecordBuilder {
private final WorkspaceApi workspaceApi;
TodoBusiness buildBusiness(PendingMessagePushParam request, TodoExt ext) {
SimpleWorkspaceRes workspace = getWorkspace(request.getPromoterWorkspaceId());
WorkspaceInfo workspaceInfo = getWorkspace(request.getPromoterWorkspaceId());
PersonDTO promoter = request.getPromoter();
TodoBusiness business = new TodoBusiness();
business.setTemplateCode(request.getTemplateCode());
business.setBizCode(request.getBizCode());
business.setPromoterId(promoter == null ? 0L : promoter.identityIdOrDefault());
business.setPromoterType(promoter == null ?
IdentityTypeEnum.NOT_SUPPORT : promoter.identityTypeOrDefault());
business.setPromoterType(promoter == null
? IdentityTypeEnum.NOT_SUPPORT
: promoter.identityTypeOrDefault());
business.setPromoterPersonId(promoter == null ? 0 : promoter.personIdOrDefault());
business.setPromoterName(promoter == null ? "" : promoter.getName());
business.setOuId(determineOuId(request.getPromoterOuId(),
workspace, promoter == null ? null : promoter.getIdentity()));
workspaceInfo.workspace, promoter == null ? null : promoter.getIdentity()));
business.setOrgId(request.getPromoterWorkspaceId());
business.setOrgName(workspace == null ? "" : workspace.getName());
business.setOrgName(workspaceInfo.determineOrgName());
business.setOrgType(workspaceInfo.determineOrgType(request.getPromoterOrgType()));
business.setTitle(ext.parseTitle());
business.setContent(ext.parseContent());
business.setBizFlag(request.getBizFlag());
business.setBizCategory(request.getBizCategory() == null ? BizCategoryEnum.OTHER : request.getBizCategory());
business.setBizCategory(request.getBizCategory() == null
? BizCategoryEnum.OTHER
: request.getBizCategory());
business.setBizExtParam(ext.parseBizExtParams());
business.setRouterParams(ext.parseRouterExtParams());
business.setDeadline(request.getDeadline());
@ -69,7 +75,7 @@ class TodoRecordBuilder {
public List<Todo> buildTodos(
PendingMessagePushParam request, String requestNo, TodoExt ext, TodoBusiness business) {
SimpleWorkspaceRes workspace = getWorkspace(request.getWorkspaceId());
WorkspaceInfo workspaceInfo = getWorkspace(request.getWorkspaceId());
ArrayList<Todo> todos = new ArrayList<>();
Set<Long> sentPersonIds = new HashSet<>();
for (PersonDTO executor : request.getExecutor()) {
@ -89,9 +95,10 @@ class TodoRecordBuilder {
todo.setBizCode(request.getBizCode());
todo.setSubBizCode(request.getSubBizCode());
todo.setType(request.determineTodoType());
todo.setOuId(determineOuId(request.getOuId(), workspace, executor.getIdentity()));
todo.setOuId(determineOuId(request.getOuId(), workspaceInfo.workspace, executor.getIdentity()));
todo.setOrgId(request.getWorkspaceId());
todo.setOrgName(workspace == null ? "" : workspace.getName());
todo.setOrgName(workspaceInfo.determineOrgName());
todo.setOrgType(workspaceInfo.determineOrgType(request.getOrgType()));
todo.setExecutorPersonId(executor.personIdOrDefault());
todo.setExecutorName(executor.getName());
todo.setRequestNo(requestNo);
@ -103,17 +110,17 @@ class TodoRecordBuilder {
: PendingMessageStateEnum.HAS_BEEN_SENT);
todo.setExecutorId(executor.identityIdOrDefault());
todo.setExecutorType(executor.identityTypeOrDefault());
todo.setOrgType(request.getOrgType() == null
? OrganizationTypeEnum.UNKNOWN : request.getOrgType());
}
return todos;
}
private SimpleWorkspaceRes getWorkspace(Long workspaceId) {
@NotNull
private WorkspaceInfo getWorkspace(Long workspaceId) {
if (workspaceId == null || workspaceId <= 0)
return null;
return new WorkspaceInfo(null);
Result<SimpleWorkspaceRes> resp = workspaceApi.getOne(workspaceId);
return resp.getCode() == 200 ? resp.getData() : null;
SimpleWorkspaceRes workspace = resp.getCode() == 200 ? resp.getData() : null;
return new WorkspaceInfo(workspace);
}
private Long determineOuId(Long ouId, SimpleWorkspaceRes workspace, IdentityDTO identity) {
@ -135,4 +142,30 @@ class TodoRecordBuilder {
return DEFAULT_VALUE;
}
private static class WorkspaceInfo {
final SimpleWorkspaceRes workspace;
//final OrganizationTypeEnum fetchedOrgType;
WorkspaceInfo(SimpleWorkspaceRes workspace) {
this.workspace = workspace;
}
OrganizationTypeEnum determineOrgType(OrganizationTypeEnum requestOrgType) {
if (requestOrgType != null)
return requestOrgType;
if (workspace == null)
return OrganizationTypeEnum.UNKNOWN;
if (workspace.getType() == WorkspaceTypeEnum.GENERAL_ENT.getValue())
return OrganizationTypeEnum.ENT;
else if (workspace.getType() == WorkspaceTypeEnum.GENERAL_PROJECT.getValue())
return OrganizationTypeEnum.PROJECT;
else
return OrganizationTypeEnum.UNKNOWN;
}
String determineOrgName() {
return workspace == null ? "" : workspace.getName();
}
}
}

View File

@ -48,6 +48,11 @@ public class PendingSendInfo implements Serializable {
*/
private TodoType todoType;
/**
* 待办发送人所属组织类型
*/
private OrganizationTypeEnum promoterOrgType;
public TodoType determineTodoType() {
return todoType == null ? TodoType.EXECUTABLE : todoType;
}

View File

@ -5,6 +5,7 @@ import cn.axzo.msg.center.domain.utils.IgnorePropsJsonTypeHandler;
import cn.axzo.msg.center.service.enums.BizCategoryEnum;
import cn.axzo.msg.center.service.enums.BizFinalStateEnum;
import cn.axzo.msg.center.service.enums.IdentityTypeEnum;
import cn.axzo.msg.center.service.enums.OrganizationTypeEnum;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.TableField;
@ -113,6 +114,10 @@ public class TodoBusiness extends BaseEntityExt<TodoBusiness> {
* 消息所属组织名称
*/
private String orgName;
/**
* 组织类型
*/
private OrganizationTypeEnum orgType;
/**
* 保存额外的数据信息