From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master

---
 jnpf-dms/jnpf-dms-biz/src/main/java/jnpf/dmsMapper/DmsFileVersionMapper.java |   43 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 43 insertions(+), 0 deletions(-)

diff --git a/jnpf-dms/jnpf-dms-biz/src/main/java/jnpf/dmsMapper/DmsFileVersionMapper.java b/jnpf-dms/jnpf-dms-biz/src/main/java/jnpf/dmsMapper/DmsFileVersionMapper.java
new file mode 100644
index 0000000..e7914c0
--- /dev/null
+++ b/jnpf-dms/jnpf-dms-biz/src/main/java/jnpf/dmsMapper/DmsFileVersionMapper.java
@@ -0,0 +1,43 @@
+package jnpf.dmsMapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import jnpf.dmsEntity.permission.entity.DmsFileVersionEntity;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+import java.util.UUID;
+
+@Mapper
+public interface DmsFileVersionMapper extends BaseMapper<DmsFileVersionEntity> {
+    @Select("SELECT id, tenant_id, document_id, version_no, version_label, file_name, mime_type, size_bytes, "
+            + "checksum_sha256, prepared_by, prepared_on, created_by, created_at FROM public.dms_file_versions "
+            + "WHERE tenant_id = #{tenantId} AND id = #{id}")
+    DmsFileVersionEntity selectByTenantAndId(@Param("tenantId") String tenantId, @Param("id") UUID id);
+
+    @Select("SELECT v.id, v.tenant_id, v.document_id, v.version_no, v.version_label, v.file_name, "
+            + "v.mime_type, v.size_bytes, v.checksum_sha256, v.prepared_by, v.prepared_on, "
+            + "v.created_by, v.created_at FROM public.dms_file_versions v "
+            + "JOIN public.dms_version_states s ON s.tenant_id = v.tenant_id "
+            + "AND s.document_id = v.document_id AND s.file_version_id = v.id "
+            + "WHERE v.tenant_id = #{tenantId} AND v.document_id = #{documentId} "
+            + "AND s.lifecycle_status = 'EFFECTIVE' AND s.effective_from <= CURRENT_TIMESTAMP "
+            + "AND (s.effective_to IS NULL OR CURRENT_TIMESTAMP < s.effective_to)")
+    DmsFileVersionEntity selectCurrentEffective(@Param("tenantId") String tenantId,
+                                                @Param("documentId") UUID documentId);
+
+    @Select("SELECT COALESCE(MAX(version_no), 0) + 1 FROM public.dms_file_versions "
+            + "WHERE tenant_id = #{tenantId} AND document_id = #{documentId}")
+    long selectNextVersionNo(@Param("tenantId") String tenantId,
+                             @Param("documentId") UUID documentId);
+
+    @Select({"<script>",
+            "SELECT id, tenant_id, document_id, version_no, version_label, file_name, mime_type, size_bytes,",
+            "checksum_sha256, prepared_by, prepared_on, created_by, created_at FROM public.dms_file_versions",
+            "WHERE tenant_id = #{tenantId} AND id IN",
+            "<foreach collection='ids' item='id' open='(' separator=',' close=')'>#{id}</foreach>",
+            "</script>"})
+    List<DmsFileVersionEntity> selectByTenantAndIds(@Param("tenantId") String tenantId,
+                                                     @Param("ids") List<UUID> ids);
+}

--
Gitblit v1.8.0