diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/inside/notices/config/PendingMessageBizConfig.java b/inside-notices/src/main/java/cn/axzo/msg/center/inside/notices/config/PendingMessageBizConfig.java index 52049f60..e8aea8c3 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/inside/notices/config/PendingMessageBizConfig.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/inside/notices/config/PendingMessageBizConfig.java @@ -2,6 +2,7 @@ package cn.axzo.msg.center.inside.notices.config; import cn.axzo.msg.center.api.enums.MsgTempBizCategoryEnum; import cn.axzo.msg.center.api.response.PendingMessageTemporarilyTypeRes; +import cn.axzo.msg.center.service.enums.AppTerminalTypeEnum; import com.alibaba.fastjson.JSON; import lombok.AccessLevel; import lombok.AllArgsConstructor; @@ -15,6 +16,7 @@ import org.springframework.context.annotation.Configuration; import javax.annotation.Nullable; import java.util.Arrays; +import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -44,6 +46,8 @@ public class PendingMessageBizConfig { private Map categoryJumpUrl; + private Map> msgGroupConfig; + public List tempCategoriesConfig() { return Arrays.stream(MsgTempBizCategoryEnum.values()) .filter(e -> category.containsKey(e)) @@ -59,6 +63,14 @@ public class PendingMessageBizConfig { categoryJumpUrl.get(category)); } + public List fetchMessageGroupTreeNodeIds(AppTerminalTypeEnum appTerminalType) { + if (Objects.isNull(appTerminalType)) { + return Collections.emptyList(); + } + // TODO: [cold_blade] [P2] 需要配置各个应用终端映射的业务中心分类的结点id + return msgGroupConfig.getOrDefault(appTerminalType, Collections.emptyList()); + } + @Setter @Getter @AllArgsConstructor(access = AccessLevel.PRIVATE) diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/PendingMessageNewController.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/PendingMessageNewController.java index 7ca4f7a8..503f86bb 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/PendingMessageNewController.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/PendingMessageNewController.java @@ -1,17 +1,17 @@ package cn.axzo.msg.center.message.controller; -import cn.axzo.msg.center.message.domain.dto.PendingMessageStatisticDTO; import cn.axzo.msg.center.message.domain.dto.PendingMessageDTO; +import cn.axzo.msg.center.message.domain.dto.PendingMessageStatisticDTO; import cn.axzo.msg.center.message.domain.param.MessageGroupNodeStatisticParam; import cn.axzo.msg.center.message.domain.param.PendingMessagePushParam; import cn.axzo.msg.center.message.service.PendingMessageNewService; import cn.axzo.msg.center.service.enums.TerminalTypeEnum; import cn.axzo.msg.center.service.pending.client.PendingMessageClient; -import cn.axzo.msg.center.service.pending.request.PendingMessageStatisticRequest; import cn.axzo.msg.center.service.pending.request.PendingMessagePageRequest; import cn.axzo.msg.center.service.pending.request.PendingMessagePushRequest; -import cn.axzo.msg.center.service.pending.response.PendingMessageStatisticResponse; +import cn.axzo.msg.center.service.pending.request.PendingMessageStatisticRequest; import cn.axzo.msg.center.service.pending.response.PendingMessageResponse; +import cn.axzo.msg.center.service.pending.response.PendingMessageStatisticResponse; import cn.azxo.framework.common.model.CommonResponse; import cn.azxo.framework.common.model.Page; import lombok.RequiredArgsConstructor; diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageGroupNodeService.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageGroupNodeService.java index 7975c2b5..ea9a733c 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageGroupNodeService.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageGroupNodeService.java @@ -2,6 +2,7 @@ package cn.axzo.msg.center.message.service; import cn.axzo.msg.center.message.domain.param.MessageGroupNodeSaveOrUpdateParam; import cn.axzo.msg.center.service.dto.GroupTreeNodeDTO; +import cn.axzo.msg.center.service.enums.AppTerminalTypeEnum; import cn.axzo.msg.center.service.enums.MessageGroupCategoryEnum; import javax.annotation.Nullable; @@ -72,4 +73,13 @@ public interface MessageGroupNodeService { * @return 分类树列表 */ List listGroupTree(@Nullable MessageGroupCategoryEnum category, @Nullable String nodeName); + + /** + * 获取各个应用端对应的业务中心分类结点编码配置 + * + * @param category 分类树的种类 + * @param appTerminalType 应用终端类型 + * @return 对应的分类树的根节点编码列表 + */ + List listGroupTreeRootNodeCodes(MessageGroupCategoryEnum category, AppTerminalTypeEnum appTerminalType); } diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageGroupNodeServiceImpl.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageGroupNodeServiceImpl.java index 6aeabd07..e619245b 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageGroupNodeServiceImpl.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageGroupNodeServiceImpl.java @@ -7,11 +7,13 @@ import cn.axzo.msg.center.dal.MessageGroupNodeDao; import cn.axzo.msg.center.dal.MessageTemplateGroupDao; import cn.axzo.msg.center.domain.entity.MessageGroupNode; import cn.axzo.msg.center.domain.entity.MessageTemplateGroup; +import cn.axzo.msg.center.inside.notices.config.PendingMessageBizConfig; import cn.axzo.msg.center.message.domain.dto.GroupTreeNodePathDTO; import cn.axzo.msg.center.message.domain.param.MessageGroupNodeSaveOrUpdateParam; import cn.axzo.msg.center.message.service.MessageGroupNodeService; import cn.axzo.msg.center.message.service.MessageGroupTreeNodeCacheService; import cn.axzo.msg.center.service.dto.GroupTreeNodeDTO; +import cn.axzo.msg.center.service.enums.AppTerminalTypeEnum; import cn.axzo.msg.center.service.enums.MessageGroupCategoryEnum; import cn.axzo.msg.center.utils.TreeHelperUtil; import cn.axzo.msg.center.utils.UUIDUtil; @@ -41,6 +43,7 @@ public class MessageGroupNodeServiceImpl implements MessageGroupNodeService { private final MessageGroupNodeDao messageGroupNodeDao; private final MessageTemplateGroupDao messageTemplateGroupDao; + private final PendingMessageBizConfig pendingMessageBizConfig; private final MessageGroupTreeNodeCacheService messageGroupTreeNodeCacheService; @Override @@ -134,6 +137,18 @@ public class MessageGroupNodeServiceImpl implements MessageGroupNodeService { .collect(Collectors.toList()); } + @Override + public List listGroupTreeRootNodeCodes(MessageGroupCategoryEnum category, AppTerminalTypeEnum appTerminalType) { + AssertUtil.notNull(category, "category can not be null"); + List nodeIds = MessageGroupCategoryEnum.PENDING.equals(category) ? + pendingMessageBizConfig.fetchMessageGroupTreeNodeIds(appTerminalType) : Collections.emptyList(); + return messageGroupTreeNodeCacheService.listAllGroupTree().stream() + .filter(e -> category.getMsgGroupNodeCategories().contains(e.getCategory())) + .filter(e -> CollectionUtils.isEmpty(nodeIds) || nodeIds.contains(e.getNodeId())) + .map(GroupTreeNodeDTO::getNodeCode) + .collect(Collectors.toList()); + } + private MessageGroupNode convert(MessageGroupNodeSaveOrUpdateParam param) { MessageGroupNode groupNode = new MessageGroupNode(); groupNode.setCode(UUIDUtil.uuidString()); diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageGroupTreeNodeCacheServiceImpl.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageGroupTreeNodeCacheServiceImpl.java index f9e73c49..798d1e4d 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageGroupTreeNodeCacheServiceImpl.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageGroupTreeNodeCacheServiceImpl.java @@ -154,6 +154,7 @@ public class MessageGroupTreeNodeCacheServiceImpl implements MessageGroupTreeNod private GroupTreeNodeDTO convert(MessageGroupNode groupNode) { return GroupTreeNodeDTO.builder() + .nodeId(groupNode.getId()) .nodeName(groupNode.getName()) .nodeCode(groupNode.getCode()) .nodeIcon(groupNode.getIcon()) 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 b8f5de92..5486a95f 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 @@ -20,6 +20,7 @@ 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; @@ -68,8 +69,9 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService { @Override public List groupStatistic(MessageGroupNodeStatisticParam param) { - // TODO: [cold_blade] [P0] 获取待统计的业务中心分类结点的编码 - return param.getGroupNodeCodes().stream() + List groupTreeRootNodeCodes = messageGroupNodeService + .listGroupTreeRootNodeCodes(MessageGroupCategoryEnum.PENDING, param.getTerminalType()); + return groupTreeRootNodeCodes.stream() .flatMap(e -> statistic(e, param).stream()) .collect(Collectors.toList()); } @@ -127,6 +129,7 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService { .orElseThrow(() -> new ServiceException("not found message template.")); PendingMessageRecord record = convert(param, msgTemplate); pendingMessageRecordDao.save(record); + // TODO 补偿消息推送 @luofu return record.getIdentityCode(); } @@ -185,7 +188,7 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService { } private List statistic(String rootNodeCode, MessageGroupNodeStatisticParam param) { - // TODO:[cold_blade] [P0] 异常捕获处理记忆功能实现 + // TODO:[cold_blade] [P0] 异常捕获处理功能实现 GroupTreeNodeDTO rootNode = messageGroupNodeService.queryRootNode(rootNodeCode) .orElseThrow(() -> new ServiceException("groupNodeCode is invalid.")); // 外部传的是根节点,但是前端希望只返回根节点的字节的 diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/GroupTreeNodeDTO.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/GroupTreeNodeDTO.java index 970ff86d..b17cbcb8 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/GroupTreeNodeDTO.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/GroupTreeNodeDTO.java @@ -9,12 +9,10 @@ import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; -import org.apache.commons.lang3.StringUtils; import java.io.Serializable; import java.util.Collections; import java.util.List; -import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; @@ -32,6 +30,10 @@ public class GroupTreeNodeDTO implements IBaseTree, Se private static final long serialVersionUID = -3244632155934087302L; + /** + * 存储模型的主键id + */ + private Long nodeId; /** * 模板分组结点名称 */ @@ -83,13 +85,4 @@ public class GroupTreeNodeDTO implements IBaseTree, Se .children(children) .build(); } - - public Optional getChild(String treeNodeCode) { - if (StringUtils.isBlank(treeNodeCode) || Objects.isNull(nodeChildren)) { - return Optional.empty(); - } - return nodeChildren.stream() - .filter(e -> Objects.equals(e.getNodeCode(), treeNodeCode)) - .findFirst(); - } } diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java index c6d941a0..db548486 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java @@ -51,6 +51,10 @@ public class PendingMessageResponse implements Serializable { * 代办发起者自然人id */ private Long promoterPersonId; + /** + * 发起者姓名 + */ + private String promoterName; /** * 代办发起者身份 */ @@ -59,6 +63,10 @@ public class PendingMessageResponse implements Serializable { * 代办执行者自然人id */ private Long executorPersonId; + /** + * 执行者姓名 + */ + private String executorName; /** * 代办执行者身份 */ @@ -79,6 +87,14 @@ public class PendingMessageResponse implements Serializable { * 业务标签 */ private String bizFlag; + /** + * 项目部图标 + */ + private String projectIcon; + /** + * 项目部名称 + */ + private String projectName; /** * 业务类型 */ @@ -106,7 +122,7 @@ public class PendingMessageResponse implements Serializable { /** * 业务终态的印章图片地址 */ - private String bizFinalStateIconUrl; + private String bizFinalStateIcon; @Override public String toString() { diff --git a/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/PendingMessageRecord.java b/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/PendingMessageRecord.java index d2716e9f..9663b61a 100644 --- a/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/PendingMessageRecord.java +++ b/msg-center-domain/src/main/java/cn/axzo/msg/center/domain/entity/PendingMessageRecord.java @@ -44,6 +44,10 @@ public class PendingMessageRecord extends BaseEntityExt im * 发起者的自然人ID */ private Long promoterPersonId; + /** + * 发起者姓名 + */ + private String promoterName; /** * 发起者身份 */ @@ -56,6 +60,10 @@ public class PendingMessageRecord extends BaseEntityExt im * 执行者的自然人ID */ private Long executorPersonId; + /** + * 执行者姓名 + */ + private String executorName; /** * 执行者身份 */ @@ -104,6 +112,10 @@ public class PendingMessageRecord extends BaseEntityExt im * 业务描述eg:流程结点描述 */ private String bizDesc; + /** + * 业务标签 + */ + private String bizFlag; /** * 业务扩展参数 */