REQ-2135: 支持查询分类及子分类的模版
This commit is contained in:
parent
3630d12b3b
commit
e16b25bd0a
@ -21,6 +21,8 @@ import java.util.Optional;
|
||||
*/
|
||||
public interface MessageGroupNodeService {
|
||||
|
||||
Optional<String> getNodePath(String groupNodeCode);
|
||||
|
||||
/**
|
||||
* 获取分类结点(叶结点)名称的路径
|
||||
*
|
||||
|
||||
@ -21,6 +21,14 @@ public interface MessageTemplateGroupService {
|
||||
*/
|
||||
List<String> listMessageTemplateCodes(Collection<String> leafNodePathCodes);
|
||||
|
||||
/**
|
||||
* 通过分组结点编码路径查询关联的模板编码列表, 包含子节点
|
||||
*
|
||||
* @param groupNodeCode 分组结点编码路径列表
|
||||
* @return 模板编码列表
|
||||
*/
|
||||
List<String> listMessageTemplateCodesWithChildren(String groupNodeCode);
|
||||
|
||||
/**
|
||||
* 通过分组结点编码路径查询关联的模板编码列表
|
||||
*
|
||||
|
||||
@ -45,6 +45,26 @@ public class MessageGroupNodeServiceImpl implements MessageGroupNodeService {
|
||||
private final PendingMessageBizConfig pendingMessageBizConfig;
|
||||
private final MessageGroupTreeNodeCacheService messageGroupTreeNodeCacheService;
|
||||
|
||||
@Override
|
||||
public Optional<String> getNodePath(String groupNodeCode) {
|
||||
GroupTreeNodeDTO node = messageGroupTreeNodeCacheService
|
||||
.queryNode(groupNodeCode)
|
||||
.orElse(null);
|
||||
if (node == null) {
|
||||
return Optional.empty();
|
||||
}
|
||||
StringBuilder buf = new StringBuilder();
|
||||
GroupTreeNodeDTO current = node;
|
||||
while (current != null) {
|
||||
if (buf.length() != 0) {
|
||||
buf.append(":");
|
||||
}
|
||||
buf.append(current.getNodeCode());
|
||||
current = current.getParentNode();
|
||||
}
|
||||
return Optional.of(buf.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, String> groupNodeNamePaths(Collection<String> groupNodeCodePaths) {
|
||||
if (CollectionUtils.isEmpty(groupNodeCodePaths)) {
|
||||
|
||||
@ -46,6 +46,25 @@ public class MessageTemplateGroupServiceImpl implements MessageTemplateGroupServ
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> listMessageTemplateCodesWithChildren(String groupNodeCode) {
|
||||
if (StringUtils.isBlank(groupNodeCode)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
String path = messageGroupNodeService
|
||||
.getNodePath(groupNodeCode)
|
||||
.orElse(null);
|
||||
if (path == null) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return messageTemplateGroupDao.lambdaQuery()
|
||||
.eq(MessageTemplateGroup::getIsDelete, 0)
|
||||
.likeRight(MessageTemplateGroup::getPath, path)
|
||||
.list().stream()
|
||||
.map(MessageTemplateGroup::getTemplateCode)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, List<String>> groupingByMessageTemplateCodes(Collection<String> leafNodePathCodes) {
|
||||
if (CollectionUtils.isEmpty(leafNodePathCodes)) {
|
||||
|
||||
@ -182,7 +182,7 @@ public class MessageTemplateNewServiceImpl implements MessageTemplateNewService
|
||||
|
||||
@Override
|
||||
public Page<MessageTemplatePageResponse> page(MessageTemplatePageRequest request) {
|
||||
IPage<MessageBaseTemplate> result = pageQueryBaseTemplate(request);
|
||||
IPage<MessageBaseTemplate> result = pageQueryBaseTemplate(request, true);
|
||||
if (Objects.isNull(result)
|
||||
|| CollectionUtils.isEmpty(result.getRecords())) {
|
||||
return PageHelperUtil.emptyPage(request.getPage(), request.getPageSize());
|
||||
@ -202,7 +202,7 @@ public class MessageTemplateNewServiceImpl implements MessageTemplateNewService
|
||||
|
||||
@Override
|
||||
public Page<MessageBaseTemplateDTO> pageBaseTemplate(MessageTemplatePageRequest request) {
|
||||
IPage<MessageBaseTemplate> result = pageQueryBaseTemplate(request);
|
||||
IPage<MessageBaseTemplate> result = pageQueryBaseTemplate(request, false);
|
||||
if (Objects.isNull(result)
|
||||
|| CollectionUtils.isEmpty(result.getRecords())) {
|
||||
return PageHelperUtil.emptyPage(request.getPage(), request.getPageSize());
|
||||
@ -378,13 +378,18 @@ public class MessageTemplateNewServiceImpl implements MessageTemplateNewService
|
||||
}
|
||||
}
|
||||
|
||||
private IPage<MessageBaseTemplate> pageQueryBaseTemplate(MessageTemplatePageRequest request) {
|
||||
private IPage<MessageBaseTemplate> pageQueryBaseTemplate(
|
||||
MessageTemplatePageRequest request, boolean includeChildren) {
|
||||
List<String> templateCodes = Lists.newArrayList();
|
||||
if (StringUtils.isNotBlank(request.getGroupNodeCode())) {
|
||||
Optional<GroupTreeNodePathDTO> nodePath = messageGroupNodeService.queryLeafGroupNodeCodePath(request.getGroupNodeCode());
|
||||
templateCodes = nodePath
|
||||
.map(v -> messageTemplateGroupService.listMessageTemplateCodes(Lists.newArrayList(v.getNodeCodePath())))
|
||||
.orElseGet(Collections::emptyList);
|
||||
if (!includeChildren) {
|
||||
Optional<GroupTreeNodePathDTO> nodePath = messageGroupNodeService.queryLeafGroupNodeCodePath(request.getGroupNodeCode());
|
||||
templateCodes = nodePath
|
||||
.map(v -> messageTemplateGroupService.listMessageTemplateCodes(Lists.newArrayList(v.getNodeCodePath())))
|
||||
.orElseGet(Collections::emptyList);
|
||||
} else {
|
||||
templateCodes = messageTemplateGroupService.listMessageTemplateCodesWithChildren(request.getGroupNodeCode());
|
||||
}
|
||||
if (CollectionUtils.isEmpty(templateCodes)) {
|
||||
// 入参中的分类没有关联任何模板,直接返回查询结果
|
||||
return null;
|
||||
|
||||
@ -27,6 +27,7 @@ import cn.axzo.msg.center.service.pending.response.PushPendingMessageDTO;
|
||||
import cn.axzo.msg.center.service.util.JSONUtils;
|
||||
import cn.axzo.msg.center.utils.DateFormatUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.google.common.base.Throwables;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -350,8 +351,8 @@ public class TodoManager {
|
||||
.set(Todo::getState, PendingMessageStateEnum.COMPLETED));
|
||||
TodoRequestContext ctx = TodoRequestContext.create("firePresetButtonPressed")
|
||||
.addLogContent("presetButtonType", request.getPresetButtonType());
|
||||
// isCompleted 可以排除是抄送待办的情况
|
||||
boolean isAdvancedOrCompleted = advanceResult.isAdvanced() || todo.isCompleted();
|
||||
// isExecCompleted 可以排除是抄送待办的情况
|
||||
boolean isAdvancedOrCompleted = advanceResult.isAdvanced() || todo.isExecCompleted();
|
||||
// 支持重复发mq消息
|
||||
if (isAdvancedOrCompleted) {
|
||||
sendMqMessageOnPresetButtonPressed(ctx, request, todo);
|
||||
@ -383,7 +384,8 @@ public class TodoManager {
|
||||
message.setExecutorWorkspaceId(todo.getOrgId());
|
||||
message.setExecutorWorkspaceName(todo.getOrgName());
|
||||
try {
|
||||
mqProducer.send(MqMessageRecord.builder(MqMessageType.TODO_PRESET_BUTTON_PRESSED, message)
|
||||
mqProducer.send(MqMessageRecord
|
||||
.builder(MqMessageType.TODO_PRESET_BUTTON_PRESSED, message)
|
||||
.targetId(todo.getId())
|
||||
.operatorId(request.getOperatorId())
|
||||
.shardingKey(todo.getTemplateCode())
|
||||
@ -393,10 +395,12 @@ public class TodoManager {
|
||||
// 打印requestNo, 生产快速定位错误日志
|
||||
log.warn("预设按钮点击发送事件失败. requestNo={}, request={}", ctx.getRequestNo(), request, e);
|
||||
// 表记录中的字段也会记录requestNo, 这里重复记录requestNo, 这样能更快的找到
|
||||
String errorMessage = Throwables.getStackTraceAsString(e);
|
||||
ctx.addLogContent("mqMessage", ImmutableMap.of(
|
||||
"isSuccess", "false",
|
||||
"request", request,
|
||||
"requestNo", ctx.getRequestNo(),
|
||||
"failReason", e.getMessage()));
|
||||
"stacktrace", StringUtils.abbreviate(errorMessage, 1536)));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -34,6 +34,8 @@ public class PresetButtonPressedRequest {
|
||||
|
||||
private Long operatorId;
|
||||
|
||||
private Long operatorName;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
|
||||
@ -153,7 +153,7 @@ public class Todo extends BaseEntityExt<Todo> {
|
||||
/**
|
||||
* 执行待办是否已经完成(处理)
|
||||
*/
|
||||
public boolean isCompleted() {
|
||||
public boolean isExecCompleted() {
|
||||
return type == TodoType.EXECUTABLE && state == PendingMessageStateEnum.COMPLETED;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user