刘光辉
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
<?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.DmsFileExpiryProjectionMapper">
    <select id="hasPendingProjection" resultType="boolean">
        SELECT EXISTS (SELECT 1 FROM public.dms_approved_file_items i
            JOIN public.dms_approved_file_batches b ON b.tenant_id=i.tenant_id AND b.id=i.batch_id
            WHERE i.tenant_id=#{tenantId}
              AND i.file_version_id=#{fileVersionId,jdbcType=OTHER,typeHandler=jnpf.dmsDatabase.DmsUuidTypeHandler}
              AND i.change_type IN ('CREATE','REVISE') AND b.status &lt;&gt; 'APPLIED')
    </select>
    <select id="lockResources" resultType="jnpf.dmsEntity.storage.expiry.DmsFileExpiryResource">
        SELECT r.f_id AS id, r.dangqian_banben_id AS current_version_id,
            r.wenjian_zhongxin_banben_id AS center_version_id,
            b.wenjian_zhongxin_banben_id AS version_center_id,
            r.biz_status, r.jinyong_laiyuan AS disabled_source
        FROM public.dms_wenjian_ziyuan r
        LEFT JOIN public.dms_wenjian_banben b ON b.f_tenant_id=r.f_tenant_id
            AND b.wenjian_id=r.f_id AND b.f_id=r.dangqian_banben_id AND b.f_delete_mark IS NULL
        WHERE r.f_tenant_id=#{tenantId} AND r.f_delete_mark IS NULL
          AND (r.wenjian_zhongxin_banben_id=CAST(#{fileVersionId,jdbcType=OTHER,typeHandler=jnpf.dmsDatabase.DmsUuidTypeHandler} AS TEXT)
            OR b.wenjian_zhongxin_banben_id=CAST(#{fileVersionId,jdbcType=OTHER,typeHandler=jnpf.dmsDatabase.DmsUuidTypeHandler} AS TEXT))
        ORDER BY r.f_id LIMIT 2 FOR UPDATE OF r
    </select>
    <update id="disable">
        UPDATE public.dms_wenjian_ziyuan SET biz_status='disabled', jinyong_laiyuan='yidaoqi',
            youxiao_qi_zhi=CAST(#{effectiveTo} AS TIMESTAMPTZ) AT TIME ZONE 'Asia/Shanghai',
            f_last_modify_user_id=#{actor}, f_last_modify_time=statement_timestamp() AT TIME ZONE 'Asia/Shanghai'
        WHERE f_tenant_id=#{tenantId} AND f_id=#{resource.id}
          AND dangqian_banben_id=#{resource.currentVersionId} AND f_delete_mark IS NULL
          AND (biz_status='effective' OR (biz_status='disabled' AND jinyong_laiyuan='yidaoqi'))
    </update>
    <update id="expireBusinessVersion">
        UPDATE public.dms_wenjian_banben SET biz_status='expired',
            f_last_modify_user_id=#{actor}, f_last_modify_time=statement_timestamp() AT TIME ZONE 'Asia/Shanghai'
        WHERE f_tenant_id=#{tenantId} AND f_id=#{resource.currentVersionId} AND wenjian_id=#{resource.id}
          AND wenjian_zhongxin_banben_id=#{resource.centerVersionId} AND f_delete_mark IS NULL
          AND biz_status IN ('effective','expired')
    </update>
    <update id="extendValidity">
        UPDATE public.dms_wenjian_ziyuan
        SET youxiao_qi_zhi=CAST(#{effectiveTo} AS TIMESTAMPTZ) AT TIME ZONE 'Asia/Shanghai',
            f_last_modify_user_id=#{actor}, f_last_modify_time=statement_timestamp() AT TIME ZONE 'Asia/Shanghai'
        WHERE f_tenant_id=#{tenantId} AND f_id=#{resource.id} AND dangqian_banben_id=#{resource.currentVersionId}
          AND biz_status='effective' AND f_delete_mark IS NULL
    </update>
    <update id="closeRelations">
        UPDATE public.dms_wenjian_guanxi SET biz_status='disabled',
            shixiao_shijian=CAST(#{effectiveTo} AS TIMESTAMPTZ) AT TIME ZONE 'Asia/Shanghai',
            f_last_modify_user_id=#{actor}, f_last_modify_time=statement_timestamp() AT TIME ZONE 'Asia/Shanghai'
        WHERE f_tenant_id=#{tenantId} AND (zhu_wenjian_id=#{fileId} OR guanlian_wenjian_id=#{fileId})
          AND f_delete_mark IS NULL
          AND (biz_status='effective' OR (biz_status='disabled'
            AND shixiao_shijian &gt; (CAST(#{effectiveTo} AS TIMESTAMPTZ) AT TIME ZONE 'Asia/Shanghai')))
    </update>
</mapper>