刘光辉
2 小时以前 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
<?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.DmsRevisionEditMapper">
    <resultMap id="source" type="jnpf.dmsEntity.storage.DmsRevisionEditSource">
        <id column="version_id" property="versionId"/>
        <result column="parent_field" property="parentField"/>
        <result column="field" property="field"/>
        <result column="files" property="files"/>
    </resultMap>
    <select id="sources" resultMap="source">
        WITH eligible AS (
            SELECT z.f_id AS file_id, v.f_id AS version_id, v.wenjian_neirong AS files
            FROM dms_wenjian_xiuding_shenqing_zixiang d
            JOIN dms_wenjian_xiuding_shenqing a ON a.f_id=d.f_foreign_id AND a.f_tenant_id=d.f_tenant_id
            JOIN dms_wenjian_ziyuan z ON z.f_id=d.wenjian_id AND z.f_tenant_id=d.f_tenant_id
            JOIN dms_wenjian_banben v ON v.f_id=d.yuan_wenjian_banben_id AND v.f_tenant_id=d.f_tenant_id AND v.wenjian_id=z.f_id
            WHERE d.f_tenant_id=#{tenant} AND d.f_id=#{source} AND a.tiyi_ren_id=#{owner}
              AND a.f_flow_state=2 AND d.biz_status='available'
              AND z.wenjian_leixing='zhuwenjian' AND z.biz_status='effective' AND v.biz_status='effective'
              AND z.dangqian_banben_id=v.f_id
              AND a.f_delete_mark IS NULL AND d.f_delete_mark IS NULL AND z.f_delete_mark IS NULL AND v.f_delete_mark IS NULL
              AND EXISTS (SELECT 1 FROM base_visual_release f WHERE f.f_id=#{model} AND f.f_tenant_id=#{tenant}
                          AND f.f_delete_mark IS NULL AND f.f_form_data::jsonb->>'tableName'='dms_wenjian_xiuding_shenhe')
              AND NOT EXISTS (SELECT 1 FROM dms_wenjian_xiuding_shenhe h WHERE h.f_tenant_id=#{tenant}
                  AND h.xiuding_shenqing_zixiang_id=d.f_id AND h.f_delete_mark IS NULL
                  AND (h.f_flow_state IS NULL OR h.f_flow_state IN (0,1,2,5,6,8,10)))
              AND NOT EXISTS (SELECT 1 FROM dms_file_operation_occupancies o WHERE o.tenant_id=#{tenant}
                  AND o.active=true AND (o.file_id=z.f_id OR EXISTS (
                      SELECT 1 FROM dms_wenjian_guanxi g WHERE g.f_tenant_id=#{tenant} AND g.zhu_wenjian_id=o.file_id
                      AND g.guanlian_wenjian_id=z.f_id AND g.guanxi_leixing='jilu' AND g.biz_status='effective' AND g.f_delete_mark IS NULL)))
        )
        SELECT version_id, '' AS parent_field, 'wenjian' AS field, files FROM eligible
        UNION ALL
        SELECT DISTINCT rv.f_id, 'jilu_mingxi', 'jilu_wenjian', rv.wenjian_neirong
        FROM eligible e JOIN dms_wenjian_guanxi g ON g.f_tenant_id=#{tenant} AND g.zhu_wenjian_id=e.file_id
        JOIN dms_wenjian_ziyuan rz ON rz.f_tenant_id=#{tenant} AND rz.f_id=g.guanlian_wenjian_id
        JOIN dms_wenjian_banben rv ON rv.f_tenant_id=#{tenant} AND rv.f_id=COALESCE(g.guanlian_wenjian_banben_id,rz.dangqian_banben_id) AND rv.wenjian_id=rz.f_id
        WHERE g.guanxi_leixing='jilu' AND (g.zhu_wenjian_banben_id=e.version_id OR g.zhu_wenjian_banben_id IS NULL)
          AND g.biz_status='effective' AND rz.biz_status='effective' AND rv.biz_status='effective'
          AND g.f_delete_mark IS NULL AND rz.f_delete_mark IS NULL AND rv.f_delete_mark IS NULL
    </select>
</mapper>