REQ-3502: 过滤流程按钮
This commit is contained in:
parent
42e8be3fcf
commit
9c1a9c1c0b
@ -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;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user