Merge branch 'feature/REQ-1507' of axzsource.com:universal/infrastructure/backend/msg-center-plat into dev

This commit is contained in:
luofu 2023-11-10 15:02:31 +08:00
commit 27300be8e8
6 changed files with 64 additions and 35 deletions

View File

@ -4,8 +4,8 @@ import cn.axzo.basics.common.util.AssertUtil;
import cn.axzo.msg.center.domain.entity.MessageRouteButton;
import cn.axzo.msg.center.domain.entity.MessageRouteDetail;
import cn.axzo.msg.center.domain.entity.MessageRouterConfig;
import cn.axzo.msg.center.service.dto.MessageDetailRouteStrategyDTO;
import cn.axzo.msg.center.service.dto.MessageButtonRouteStrategyDTO;
import cn.axzo.msg.center.service.dto.MessageDetailRouteStrategyDTO;
import cn.axzo.msg.center.service.dto.MessageRouterTerminalDTO;
import cn.axzo.msg.center.service.enums.BizDetailShowStrategyEnum;
import cn.axzo.msg.center.service.enums.RouterButtonSourceEnum;
@ -138,7 +138,7 @@ public class MessageTemplateRouterDTO implements Serializable {
public List<MessageRouterConfig> fetchMessageRouterConfigs() {
return CollectionUtils.isEmpty(this.routerConfigs) ? Collections.emptyList() :
this.routerConfigs.stream()
.map(MessageRouterConfigDTO::fetchMessageRouterConfig)
.map(e -> e.fetchMessageRouterConfig(this.templateCode))
.collect(Collectors.toList());
}
@ -254,10 +254,10 @@ public class MessageTemplateRouterDTO implements Serializable {
.build();
}
public List<MessageRouterConfig> fetchMessageRouterConfigs() {
public List<MessageRouterConfig> fetchMessageRouterConfigs(String routerCode) {
return CollectionUtils.isEmpty(this.routerConfigs) ? Collections.emptyList() :
this.routerConfigs.stream()
.map(MessageRouterConfigDTO::fetchMessageRouterConfig)
.map(e -> e.fetchMessageRouterConfig(routerCode))
.collect(Collectors.toList());
}
@ -319,9 +319,9 @@ public class MessageTemplateRouterDTO implements Serializable {
.build();
}
MessageRouterConfig fetchMessageRouterConfig() {
MessageRouterConfig fetchMessageRouterConfig(String routerCode) {
return MessageRouterConfig.builder()
.routerCode(this.routerCode)
.routerCode(routerCode)
.terminalType(this.terminalType)
.url(this.url)
.build();

View File

@ -3,6 +3,7 @@ package cn.axzo.msg.center.message.domain.param;
import cn.axzo.core.utils.converter.BeanConverter;
import cn.axzo.msg.center.service.dto.PersonDTO;
import cn.axzo.msg.center.service.enums.BizCategoryEnum;
import cn.axzo.msg.center.service.enums.BizFinalStateEnum;
import cn.axzo.msg.center.service.enums.OrganizationTypeEnum;
import cn.axzo.msg.center.service.pending.request.PendingMessagePushRequest;
import com.alibaba.fastjson.JSON;
@ -13,6 +14,8 @@ import lombok.NoArgsConstructor;
import lombok.Setter;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* @description
@ -36,7 +39,7 @@ public class PendingMessagePushParam implements Serializable {
/**
* 执行者
*/
private PersonDTO executor;
private List<PersonDTO> executor;
/**
* 模板编码
*/
@ -77,6 +80,18 @@ public class PendingMessagePushParam implements Serializable {
* 路由参数json string
*/
private String routerParams;
/**
* 业务标签
*/
private String bizFlag;
/**
* 业务终态可为空
*/
private BizFinalStateEnum bizFinalState;
/**
* 待办的截止时间
*/
private Date deadline;
public static PendingMessagePushParam from(PendingMessagePushRequest request) {
return BeanConverter.convert(request, PendingMessagePushParam.class);

View File

@ -256,9 +256,7 @@ public class MessageTemplateRouterServiceImpl implements MessageTemplateRouterSe
// 获取对应按钮的唯一标识
String btnCode = routeButtonWrapper.getRouteButton().getBtnCode();
// 转化为存储的数据模型
List<MessageRouterConfig> routerConfigs = routeButtonWrapper.buttonRouter.fetchMessageRouterConfigs();
// 将按钮唯一标识与路由跳转配置进行映射
routerConfigs.forEach(e -> e.setRouterCode(btnCode));
List<MessageRouterConfig> routerConfigs = routeButtonWrapper.buttonRouter.fetchMessageRouterConfigs(btnCode);
return routerConfigs.stream();
}

View File

@ -19,12 +19,7 @@ import cn.axzo.msg.center.service.dto.GroupTreeNodeDTO;
import cn.axzo.msg.center.service.dto.IdentityDTO;
import cn.axzo.msg.center.service.dto.PersonDTO;
import cn.axzo.msg.center.service.dto.QueryOrderByDTO;
import cn.axzo.msg.center.service.enums.IdentityTypeEnum;
import cn.axzo.msg.center.service.enums.MessageGroupCategoryEnum;
import cn.axzo.msg.center.service.enums.OrganizationTypeEnum;
import cn.axzo.msg.center.service.enums.PendingMessageRoleCategoryEnum;
import cn.axzo.msg.center.service.enums.PendingMessageStateEnum;
import cn.axzo.msg.center.service.enums.TerminalTypeEnum;
import cn.axzo.msg.center.service.enums.*;
import cn.axzo.msg.center.service.pending.request.PendingMessagePageRequest;
import cn.axzo.msg.center.service.pending.response.PendingMessageResponse;
import cn.axzo.msg.center.utils.JSONObjectUtil;
@ -127,10 +122,11 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService {
MessageTemplateDTO msgTemplate = messageTemplateNewService
.queryByTemplateCode(param.getTemplateCode())
.orElseThrow(() -> new ServiceException("not found message template."));
PendingMessageRecord record = convert(param, msgTemplate);
pendingMessageRecordDao.save(record);
// TODO 补偿消息推送 @luofu
return record.getIdentityCode();
String requestNo = UUIDUtil.uuidString();
List<PendingMessageRecord> record = convert(param, msgTemplate,requestNo);
pendingMessageRecordDao.saveBatch(record);
// TODO 消息推送 @luofu
return requestNo;
}
@Override
@ -254,30 +250,37 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService {
});
}
private PendingMessageRecord convert(PendingMessagePushParam param, MessageTemplateDTO msgTemplate) {
PendingMessageRecord record = new PendingMessageRecord();
record.setIdentityCode(UUIDUtil.uuidString());
record.setState(PendingMessageStateEnum.HAS_BEEN_SENT);
// 构建代办记录的人维度的相关信息
buildPersonInfo(record, param.getPromoter(), param.getExecutor());
// 构建模板信息
buildTemplateInfo(record, msgTemplate, param.getRouterParams());
// 构建代办所属企业/项目等相关信息
record.setOrgType(Objects.isNull(param.getOrgType()) ? OrganizationTypeEnum.UNKNOWN : param.getOrgType());
record.setOrgId(param.getOrgId());
record.setOrgName(param.getOrgName());
// 构建业务类信息
buildBusinessInfo(record, param);
return record;
private List<PendingMessageRecord> convert(PendingMessagePushParam param, MessageTemplateDTO msgTemplate,String requestNo) {
// 多个执行者生成多条record
return param.getExecutor().stream().map(executor ->{
PendingMessageRecord record = new PendingMessageRecord();
record.setIdentityCode(UUIDUtil.uuidString());
record.setRequestNo(requestNo);
record.setState(PendingMessageStateEnum.HAS_BEEN_SENT);
// 构建代办记录的人维度的相关信息
buildPersonInfo(record, param.getPromoter(), executor);
// 构建模板信息
buildTemplateInfo(record, msgTemplate, param.getRouterParams());
// 构建代办所属企业/项目等相关信息
record.setOrgType(Objects.isNull(param.getOrgType()) ? OrganizationTypeEnum.UNKNOWN : param.getOrgType());
record.setOrgId(param.getOrgId());
record.setOrgName(param.getOrgName());
// 构建业务类信息
buildBusinessInfo(record, param);
return record;
}).collect(Collectors.toList());
}
private void buildPersonInfo(PendingMessageRecord record, PersonDTO promoter, PersonDTO executor) {
record.setPromoterId(promoter.getIdentity().getId());
record.setPromoterType(promoter.getIdentity().getType());
record.setPromoterPersonId(promoter.getId());
record.setPromoterName(promoter.getName());
record.setExecutorId(executor.getIdentity().getId());
record.setExecutorType(executor.getIdentity().getType());
record.setExecutorPersonId(executor.getId());
record.setExecutorName(executor.getName());
}
private void buildTemplateInfo(PendingMessageRecord record, MessageTemplateDTO msgTemplate, String routeParam) {
@ -299,5 +302,8 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService {
record.setBizDesc(param.getBizDesc());
record.setBizCategory(param.getBizCategory());
record.setBizExtParam(JSONObjectUtil.checkAndReturn(param.getBizExtParams()));
record.setBizFlag(param.getBizFlag());
record.setBizFinalState(param.getBizFinalState());
record.setDeadline(param.getDeadline());
}
}

View File

@ -35,6 +35,10 @@ public class PersonDTO implements Serializable {
* 身份信息
*/
private IdentityDTO identity;
/**
* 姓名
*/
private String name;
public static PersonDTO from(Long personId, Long identityId, IdentityTypeEnum identityType) {
IdentityDTO identity = IdentityDTO.builder()

View File

@ -1,5 +1,9 @@
package cn.axzo.msg.center.service.enums;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @description
* 业务终态的状态枚举包含审批流的相关状态
@ -8,6 +12,8 @@ package cn.axzo.msg.center.service.enums;
* @date 2023/11/7
* @version 1.0
*/
@Getter
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public enum BizFinalStateEnum {
/**