diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java index 6973cf45..efc6377b 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/PendingMessageDTO.java @@ -14,12 +14,10 @@ import cn.axzo.msg.center.service.enums.OrganizationTypeEnum; import cn.axzo.msg.center.service.enums.PendingMessageStateEnum; import cn.axzo.msg.center.service.enums.TerminalTypeEnum; import cn.axzo.msg.center.service.enums.TodoType; -import cn.axzo.msg.center.service.pending.ClientRequest; import cn.axzo.msg.center.service.pending.response.PendingMessageResponse; import cn.axzo.msg.center.service.pending.response.v3.model.ParsedModelV3; import cn.axzo.msg.center.service.template.response.MessageDetailStyle; import cn.axzo.msg.center.utils.DateFormatUtil; -import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import lombok.AllArgsConstructor; @@ -33,7 +31,6 @@ import java.io.Serializable; import java.time.LocalDateTime; import java.util.Date; import java.util.List; -import java.util.Optional; /** * @description @@ -285,64 +282,6 @@ public class PendingMessageDTO implements Serializable { return null; } - public PendingMessageResponse toResponse(ClientRequest request) { - boolean isCreatedToday = false; - if (createTime != null) { - Date createAt = DateFormatUtil.toDate(createTime); - isCreatedToday = DateUtil.isSameDay(createAt, new Date()); - } - return PendingMessageResponse.builder() - // 发起人单位、项目信息 - .promoterOuId(promoterOuId) - .promoterWorkspaceId(promoterWorkspaceId) - .promoterWorkspaceName(promoterWorkspaceName) - .promoterWorkspaceType(promoterWorkspaceType) - // 接收者单位、项目信息 - .executorOuId(executorOuId) - .executorWorkspaceId(executorWorkspaceId) - .executorWorkspaceName(executorWorkspaceName) - .executorWorkspaceType(executorWorkspaceType) - // 其它信息 - .bizExtParamObj(bizExtParamObj) - .routerExtParamObj(routerExtParamObj) - //页面展示 - .ouId(this.ouId) - .workspaceId(workspaceId) - .workspaceName(workspaceName) - // 样式 - .detailStyle(detailStyle) - .isCreatedToday(isCreatedToday) - .isRead(isRead) - .todoType(todoType) - .proposedButtons(proposedButtons) - .templateCategory(templateCategory) - .identityCode(this.identityCode) - .templateCode(this.templateCode) - .title(this.title) - .content(this.content) - .promoterPersonId(Optional.ofNullable(this.promoter).map(PersonDTO::getId).orElse(null)) - .promoterName(Optional.ofNullable(this.promoter).map(PersonDTO::getName).orElse(null)) - .promoterIdentity(Optional.ofNullable(this.promoter).map(PersonDTO::getIdentity).orElse(null)) - .executorPersonId(Optional.ofNullable(this.executor).map(PersonDTO::getId).orElse(null)) - .executorName(Optional.ofNullable(this.executor).map(PersonDTO::getName).orElse(null)) - .executorIdentity(Optional.ofNullable(this.executor).map(PersonDTO::getIdentity).orElse(null)) - .bizCode(this.bizCode) - .subBizCode(this.subBizCode) - .bizDesc(this.bizDesc) - .bizFlag(this.bizFlag) - .state(this.getState()) - .bizCategory(this.bizCategory) - .createTimestamp(DateFormatUtil.toTimestamp(this.createTime)) - .updateTimestamp(DateFormatUtil.toTimestamp(this.updateTime)) - .deadlineTimestamp(DateFormatUtil.toTimestamp(this.deadline)) - .bizFinalStateIcon(Optional.ofNullable(bizFinalState).map(BizFinalStateEnum::getIcon).orElse(null)) - .bizFinalState(bizFinalState) - .modelV3(modelV3) - .displayOnCardKeyValues(modelV3.determineDisplayOnCardKeyValues()) - .cardUrlOpenStrategy(cardUrlOpenStrategy) - .build(); - } - @Override public String toString() { return JSON.toJSONString(this); diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/ModelV3Parser.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/ModelV3Parser.java index 7f04e7a2..790f3e36 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/ModelV3Parser.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/ModelV3Parser.java @@ -79,6 +79,7 @@ public class ModelV3Parser { @Override public void visitGroupKeyValue(ParsedGroupV3 group, ParsedKV kv) { + kv.setValueVariable(kv.getValue()); kv.setValue(resolveBizParam(kv.getValue())); if (kv.getContentType() == KVContentType.PERSON_ID diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/todo/TodoRangeQueryService.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/todo/TodoRangeQueryService.java index e1f26b7c..b8646d17 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/todo/TodoRangeQueryService.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/todo/TodoRangeQueryService.java @@ -122,10 +122,12 @@ public class TodoRangeQueryService { if (respResult.getList() != null) { ArrayList keyValues = new ArrayList<>(); for (PendingMessageResponse response : respResult.getList()) { - response.determineButtonRouters() - .removeIf(btn -> !btn.determineStyles().contains(ButtonStyleEnum.OVER_CARD)); + if (request.isButtonDisplayOnCardAware()) + response.determineButtonRouters() + .removeIf(btn -> !btn.determineStyles().contains(ButtonStyleEnum.OVER_CARD)); if (response.getModelV3() != null) { response.getModelV3().getButtons().removeIf(btn -> { + if (!request.isButtonDisplayOnCardAware()) return false; YesOrNo supportBatchProcess = request.getSupportBatchProcess(); boolean notBatchProcessQuery = supportBatchProcess == null || supportBatchProcess == YesOrNo.NO; return notBatchProcessQuery && !btn.hasStyle(ButtonStyleEnum.OVER_CARD); @@ -151,6 +153,7 @@ public class TodoRangeQueryService { PendingMessagePageRequest request, List templateCodes) { Date startingAt = DateFormatUtil.toDate(LocalDateTime.now().minusDays(90)); LambdaQueryWrapper query = businessQuery(request.getTitle(), true) + .in(CollectionUtils.isNotEmpty(request.getTemplateCodes()), TodoBusiness::getTemplateCode, request.getTemplateCodes()) .eq(TodoBusiness::getPromoterPersonId, request.getPersonId()) .eq(TodoBusiness::getIsDelete, TableIsDeleteEnum.NORMAL.value) .gt(TodoBusiness::getCreateAt, startingAt) @@ -186,6 +189,7 @@ public class TodoRangeQueryService { LambdaQueryWrapper query = todoQuery(query(Todo.class), ouInfo, ouCollector) // 查询的待办类型: COPIED_TO_ME, EXECUTABLE .eq(Todo::getType, request.determineToDoType()) + .in(CollectionUtils.isNotEmpty(request.getTemplateCodes()), Todo::getTemplateCode, request.getTemplateCodes()) .eq(Todo::getExecutorPersonId, request.getPersonId()) //判断是否支持批量过滤 .eq(request.getSupportBatchProcess() != null, Todo::getSupportBatchProcess, request.getSupportBatchProcess()) diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/todo/TodoRespBuilder.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/todo/TodoRespBuilder.java index 3de0cf8e..27be4dbd 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/todo/TodoRespBuilder.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/todo/TodoRespBuilder.java @@ -34,6 +34,7 @@ import cn.axzo.msg.center.service.pending.response.v3.model.ParsedButtonV3; import cn.axzo.msg.center.service.pending.response.v3.model.ParsedCardUrl; import cn.axzo.msg.center.service.pending.response.v3.model.ParsedGroupDetail; import cn.axzo.msg.center.service.pending.response.v3.model.ParsedGroupV3; +import cn.axzo.msg.center.service.pending.response.v3.model.ParsedKV; import cn.axzo.msg.center.service.pending.response.v3.model.ParsedModelV3; import cn.axzo.msg.center.service.pending.response.v3.model.SessionUrlInfo; import cn.axzo.msg.center.service.pending.response.v3.model.SessionUrlSelector; @@ -262,7 +263,13 @@ public class TodoRespBuilder { Runnable modelV3Builder = () -> { response.setModelV3(parsedModel); - response.setDisplayOnCardKeyValues(parsedModel.determineDisplayOnCardKeyValues()); + List keyValues = parsedModel.collectKeyValues(); + boolean isKeyValueDisplayOnCardAware = request == null || request.isKeyValueDisplayOnCardAware(); + if (isKeyValueDisplayOnCardAware) + keyValues = keyValues.stream() + .filter(ParsedKV::isDisplayOnCard) + .collect(toList()); + response.setDisplayOnCardKeyValues(keyValues); response.setCardUrlOpenStrategy(templateModel.getTemplate().getCardUrlOpenStrategy()); ParsedModelV3Walker.walkDown(parsedModel, new ParsedModel3Visitor() { @Override diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/ClientRequest.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/ClientRequest.java index 286604f4..2d7939bb 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/ClientRequest.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/ClientRequest.java @@ -16,4 +16,12 @@ public interface ClientRequest { return ModelVersion.V3.getVersionNumber(); } + default boolean isKeyValueDisplayOnCardAware() { + return false; + } + + default boolean isButtonDisplayOnCardAware() { + return false; + } + } \ No newline at end of file diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/PendingMessagePageRequest.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/PendingMessagePageRequest.java index 3bb1ac2c..ab722f88 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/PendingMessagePageRequest.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/PendingMessagePageRequest.java @@ -23,6 +23,7 @@ import javax.validation.constraints.NotNull; import java.io.Serializable; import java.util.Collection; import java.util.Collections; +import java.util.Set; /** * @description @@ -51,6 +52,10 @@ public class PendingMessagePageRequest extends PageRequest implements ClientRequ * 应用终端 */ private AppTerminalTypeEnum appTerminalType; + /** + * 模板编码集合 + */ + private Set templateCodes; /** * 当前登录账户的自然id(前端不care) */ @@ -153,6 +158,16 @@ public class PendingMessagePageRequest extends PageRequest implements ClientRequ */ private Integer modelVersion; + /** + * 是否根据配置'是否显示在卡片上'过滤key/value + */ + private boolean isKeyValueDisplayOnCardAware = true; + + /** + * 是否根据配置'是否显示在卡片上'过滤按钮 + */ + private boolean isButtonDisplayOnCardAware = true; + // !! 用于排查问题 private String analysisToken; private AnalysisInfo a = new AnalysisInfo(); diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedKV.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedKV.java index a35bfd77..39d9511b 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedKV.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedKV.java @@ -37,6 +37,11 @@ public class ParsedKV { @JsonIgnore private boolean displayOnCard; + /** + * 原始变量 + */ + private String valueVariable; + @JsonIgnore public boolean isValueAbsent() { return ValueUtils.isValueAbsent(value); diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedModelV3.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedModelV3.java index df5b9fa1..d0d52d90 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedModelV3.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedModelV3.java @@ -67,14 +67,13 @@ public class ParsedModelV3 implements MessageButtonProvider, Pus return template == null ? null : template.getCode(); } - public List determineDisplayOnCardKeyValues() { + public List collectKeyValues() { return determineGroups().stream() .filter(group -> group.getGroupType() == GroupType.KV_VALUES) .map(ParsedGroupV3::getGroupInfo) .filter(Objects::nonNull) .map(ParsedGroupInfo::getKeyValues) .flatMap(Collection::stream) - .filter(ParsedKV::isDisplayOnCard) .collect(toList()); }