package jnpf.base.service;
|
|
import jnpf.flowable.model.filepermission.FilePermissionView;
|
import java.util.Map;
|
import java.util.Objects;
|
|
/** 仅消费权限专用原生查询的服务端状态,不读取请求体中的flowState/isNew。 */
|
public final class FilePermissionNativeDraft {
|
public static final String STATE_KEY = "__filePermissionNativeState";
|
private FilePermissionNativeDraft() { }
|
|
public static boolean taskAbsent(FilePermissionView view, String taskId, String formId) {
|
return view != null && Objects.equals(taskId, view.getTaskId()) && Objects.equals(formId, view.getFormId())
|
&& view.isEnabled() && "error".equals(view.getStatus()) && "TASK_NOT_FOUND".equals(view.getReason());
|
}
|
|
public static boolean matches(Map<String, Object> persisted, String recordId, String taskId) {
|
if (persisted == null || recordId == null || recordId.isEmpty() || taskId == null || taskId.isEmpty()
|
|| !Objects.equals(recordId, Objects.toString(persisted.get("id"), ""))
|
|| !Objects.equals(taskId, Objects.toString(persisted.get("flowTaskId"), ""))) return false;
|
Object raw = persisted.get(STATE_KEY);
|
if (!(raw instanceof Map<?, ?>)) return false;
|
Map<?, ?> state = (Map<?, ?>) raw;
|
if (!state.containsKey("deleteMark") || state.get("deleteMark") != null
|
|| !state.containsKey("flowState") || !state.containsKey("flowId")) return false;
|
// 原生菜单暂存有flowId、flowState=0,但尚未INSERT workflow_task。
|
if (!Objects.toString(state.get("flowId"), "").trim().isEmpty()) {
|
return "0".equals(Objects.toString(state.get("flowState"), ""));
|
}
|
// 普通原生表单也把业务主键写入flowTaskId;仍须后续原生表单准入。
|
return Objects.equals(recordId, taskId) && (state.get("flowState") == null
|
|| "0".equals(Objects.toString(state.get("flowState"), "")));
|
}
|
}
|