刘光辉
4 小时以前 06f314545ac3514d7ce28939920866ae8188d31c
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="jnpf.dmsMapper.DmsFileVersionMapper">
    <resultMap id="Version" type="jnpf.dmsEntity.permission.entity.DmsFileVersionEntity">
        <result column="id" property="id" typeHandler="jnpf.dmsDatabase.DmsUuidTypeHandler"/>
        <result column="tenant_id" property="tenantId"/>
        <result column="document_id" property="documentId" typeHandler="jnpf.dmsDatabase.DmsUuidTypeHandler"/>
        <result column="version_no" property="versionNo"/>
        <result column="version_label" property="versionLabel"/>
        <result column="file_name" property="fileName"/>
        <result column="mime_type" property="mimeType"/>
        <result column="size_bytes" property="sizeBytes"/>
        <result column="checksum_sha256" property="checksumSha256"/>
        <result column="prepared_by" property="preparedBy"/>
        <result column="prepared_on" property="preparedOn"/>
        <result column="shifou_shoukong" property="shifouShoukong"/>
        <result column="created_by" property="createdBy"/>
        <result column="created_at" property="createdAt"/>
        <result column="lifecycle_status" property="lifecycleStatus"/>
    </resultMap>
    <!-- Immutable attachment facts remain in the center. Audit record metadata is
         resolved from the matching business version, including attachment REUSE. -->
    <sql id="Columns">
        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,
        COALESCE((SELECT b.shifou_shoukong FROM public.dms_wenjian_banben b
                  JOIN public.dms_file_objects o ON o.tenant_id=b.f_tenant_id
                    AND o.id::text=b.wenjian_duixiang_id AND o.source_id=b.laiyuan_yewu_jian
                    AND o.file_version_id=v.id
                  WHERE b.f_tenant_id=v.tenant_id AND b.wenjian_zhongxin_banben_id=v.id::text
                    AND b.wenjian_leixing='jilu' AND b.f_delete_mark IS NULL
                    AND b.laiyuan_danju_leixing IN ('xinzeng_shenhe','xiuding_shenhe')),
                 v.shifou_shoukong) AS shifou_shoukong,
        v.created_by, v.created_at
    </sql>
    <select id="selectByTenantAndId" resultMap="Version">
        SELECT <include refid="Columns"/> FROM public.dms_file_versions v
        WHERE v.tenant_id=#{tenantId} AND v.id=#{id}
    </select>
    <select id="selectReadableByTenantAndId" resultMap="Version">
        SELECT <include refid="Columns"/>, s.lifecycle_status 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.id=#{id} AND (
          s.lifecycle_status IN ('EFFECTIVE','SUPERSEDED','EXPIRED','REVOKED','OBSOLETE')
          OR (s.lifecycle_status='INVALIDATED' AND s.approved_at IS NOT NULL))
    </select>
    <select id="selectCurrentEffective" resultMap="Version">
        SELECT <include refid="Columns"/>, s.lifecycle_status 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 &lt;= CURRENT_TIMESTAMP
          AND (s.effective_to IS NULL OR CURRENT_TIMESTAMP &lt; s.effective_to)
    </select>
    <select id="selectNextVersionNo" resultType="long">
        SELECT COALESCE(MAX(version_no),0)+1 FROM public.dms_file_versions
        WHERE tenant_id=#{tenantId} AND document_id=#{documentId}
    </select>
    <select id="selectByTenantAndIds" resultMap="Version">
        SELECT <include refid="Columns"/> FROM public.dms_file_versions v
        WHERE v.tenant_id=#{tenantId} AND v.id IN
        <foreach collection="ids" item="id" open="(" separator="," close=")">#{id}</foreach>
    </select>
</mapper>