<?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 <= CURRENT_TIMESTAMP
|
AND (s.effective_to IS NULL OR CURRENT_TIMESTAMP < 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>
|