REQ-3502: 过滤流程按钮

This commit is contained in:
yanglin 2025-01-14 14:18:03 +08:00
parent 42e8be3fcf
commit 9c1a9c1c0b

View File

@ -11,10 +11,13 @@ import cn.axzo.workflow.common.enums.ButtonVisibleScopeEnum;
import cn.axzo.workflow.common.model.request.bpmn.BpmnButtonMetaInfo;
import cn.axzo.workflow.common.model.response.bpmn.task.BpmnTaskButtonVo;
import cn.axzo.workflow.common.model.response.bpmn.task.BpmnTaskButtonVo.BpmnButtonMetaInfoWithVisibleScope;
import com.alibaba.fastjson.JSON;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Optional;
import java.util.Set;
@ -101,7 +104,10 @@ class WorkflowTodoCardButtonInterceptor implements CardButtonInterceptor {
private Optional<BpmnButtonMetaInfoWithVisibleScope> findWorkflowButton(ButtonV3 button) {
fetchWorkflowButtons();
return workflowButtons.getButtons().stream()
List<BpmnButtonMetaInfoWithVisibleScope> workflowButtons = this.workflowButtons.getButtons();
if (workflowButtons == null)
workflowButtons = Collections.emptyList();
return workflowButtons.stream()
.filter(workflowButton -> workflowButton.getBtnKey().equals(button.getCode()))
.findFirst();
}
@ -116,9 +122,31 @@ class WorkflowTodoCardButtonInterceptor implements CardButtonInterceptor {
.collect(toSet());
}
private void fetchWorkflowButtons() {
if (workflowButtons == null)
workflowButtons = factory.fetchWorkflowButtons(todo);
private Set<WorkflowButtonInfo> getWorkflowButtons() {
List<BpmnButtonMetaInfoWithVisibleScope> workflowHiddenButtons = workflowButtons.getButtons();
if (workflowHiddenButtons == null)
workflowHiddenButtons = Collections.emptyList();
return workflowHiddenButtons.stream()
.map(btn -> new WorkflowButtonInfo(btn.getBtnKey(), btn.getVisibleScopes()))
.collect(toSet());
}
private void fetchWorkflowButtons() {
if (workflowButtons == null) {
workflowButtons = factory.fetchWorkflowButtons(todo);
HashMap<String, Object> workflowButtonInfo = new HashMap<>();
workflowButtonInfo.put("workflowHideButtonKeys", getWorkflowHideButtonKeys());
workflowButtonInfo.put("workflowButtons", getWorkflowButtons());
log.info("fetchWorkflowButtons, todoIdentityCode={}, workflowButtonInfo: {}",
todo.getIdentityCode(), JSON.toJSONString(workflowButtonInfo));
}
}
@Getter
@RequiredArgsConstructor
public static class WorkflowButtonInfo {
private final String btnKey;
private final List<ButtonVisibleScopeEnum> scopes;
}
}