From c0d6e52b6454abfe88841b1d1f53a12187a983fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=BB=B4=E4=BC=9F?= Date: Fri, 10 Nov 2023 14:50:56 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=8F=91=E9=80=81=E5=BE=85=E5=8A=9E?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=94=B9=E9=80=A0=E6=88=90=E6=89=B9=E9=87=8F?= =?UTF-8?q?,=E6=B7=BB=E5=8A=A0=E6=96=B0=E5=A2=9E=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/param/PendingMessagePushParam.java | 17 +++++- .../impl/PendingMessageNewServiceImpl.java | 55 +++++++++++-------- .../msg/center/service/dto/PersonDTO.java | 4 ++ .../service/enums/BizFinalStateEnum.java | 6 ++ 4 files changed, 57 insertions(+), 25 deletions(-) diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/param/PendingMessagePushParam.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/param/PendingMessagePushParam.java index 61f726f7..34bec10e 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/param/PendingMessagePushParam.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/param/PendingMessagePushParam.java @@ -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 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); diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/PendingMessageNewServiceImpl.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/PendingMessageNewServiceImpl.java index 59e568b0..57fe8efd 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/PendingMessageNewServiceImpl.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/PendingMessageNewServiceImpl.java @@ -19,11 +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.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; @@ -125,10 +121,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 record = convert(param, msgTemplate,requestNo); + pendingMessageRecordDao.saveBatch(record); + // TODO 消息推送 @luofu + return requestNo; } @Override @@ -252,30 +249,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 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) { @@ -297,5 +301,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()); } } diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/PersonDTO.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/PersonDTO.java index 33a108a0..3d9e43f6 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/PersonDTO.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/PersonDTO.java @@ -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() diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/BizFinalStateEnum.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/BizFinalStateEnum.java index e788a6b5..82a4fc83 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/BizFinalStateEnum.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/BizFinalStateEnum.java @@ -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 { /** From 877d86578c2949c916cc00c23bf06f68a4883c1e Mon Sep 17 00:00:00 2001 From: luofu Date: Fri, 10 Nov 2023 15:01:16 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat(REQ-1507):=20=E5=BE=85=E5=8A=9E?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E8=AE=B0=E5=BD=95=E5=88=86=E7=B1=BB=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E5=8A=9F=E8=83=BD=E7=9A=84=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1507?goToView=1 修改: 1、待办消息记录分类统计功能的实现; 影响: 无 --- .../message/domain/dto/MessageTemplateRouterDTO.java | 12 ++++++------ .../impl/MessageTemplateRouterServiceImpl.java | 4 +--- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/MessageTemplateRouterDTO.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/MessageTemplateRouterDTO.java index 13bcf014..364004e9 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/MessageTemplateRouterDTO.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/MessageTemplateRouterDTO.java @@ -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 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 fetchMessageRouterConfigs() { + public List 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(); diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateRouterServiceImpl.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateRouterServiceImpl.java index 63ea7b55..d8735e86 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateRouterServiceImpl.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateRouterServiceImpl.java @@ -256,9 +256,7 @@ public class MessageTemplateRouterServiceImpl implements MessageTemplateRouterSe // 获取对应按钮的唯一标识 String btnCode = routeButtonWrapper.getRouteButton().getBtnCode(); // 转化为存储的数据模型 - List routerConfigs = routeButtonWrapper.buttonRouter.fetchMessageRouterConfigs(); - // 将按钮唯一标识与路由跳转配置进行映射 - routerConfigs.forEach(e -> e.setRouterCode(btnCode)); + List routerConfigs = routeButtonWrapper.buttonRouter.fetchMessageRouterConfigs(btnCode); return routerConfigs.stream(); }