刘光辉
昨天 bb638871a7fb692d80f1b7a758f991dc0879002c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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);
}