package jnpf.base.util; import cn.hutool.crypto.digest.DigestUtil; import jnpf.base.model.uploadedit.UploadEditContext; import jnpf.base.model.uploadedit.UploadEditDraft; import jnpf.util.JsonUtil; import java.util.Arrays; import java.util.Objects; /** 独立命名空间,不将旧个人工作稿误当成流程共享稿。 */ public final class UploadEditWorkingCopy { private UploadEditWorkingCopy() { } public static String id(String tenant, UploadEditContext c) { return DigestUtil.sha256Hex(JsonUtil.getObjectToString(Arrays.asList("workflow-working-file-v1", tenant, c.getTaskId(), c.getModelId(), c.getRecordId(), text(c.getParentField()), text(c.getRowId()), c.getField()))); } public static boolean shared(UploadEditDraft d) { if (d == null || text(d.getTaskId()).isEmpty()) return false; UploadEditContext c = new UploadEditContext(); c.setTaskId(d.getTaskId()); c.setModelId(d.getModelId()); c.setRecordId(d.getRecordId()); c.setParentField(d.getParentField()); c.setRowId(d.getRowId()); c.setField(d.getField()); return Objects.equals(d.getId(), id(d.getTenantId(), c)); } public static boolean active(UploadEditDraft d) { return d.getLeaseId() != null && d.getUpdatedAt() != null && System.currentTimeMillis() - d.getUpdatedAt().getTime() < 120_000L; } private static String text(String s) { return s == null ? "" : s; } }