REQ-2135: 尝试使用查询到的项目部类型
This commit is contained in:
parent
5fbdd5ad24
commit
6dccf6dc34
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -48,6 +48,11 @@ public class PendingSendInfo implements Serializable {
|
||||
*/
|
||||
private TodoType todoType;
|
||||
|
||||
/**
|
||||
* 待办发送人所属组织类型
|
||||
*/
|
||||
private OrganizationTypeEnum promoterOrgType;
|
||||
|
||||
public TodoType determineTodoType() {
|
||||
return todoType == null ? TodoType.EXECUTABLE : todoType;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
/**
|
||||
* 保存额外的数据信息
|
||||
|
||||
Loading…
Reference in New Issue
Block a user