刘光辉
7 小时以前 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
66
<?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.base.mapper.UploadEditDraftMapper">
    <resultMap id="draft" type="jnpf.base.model.uploadedit.UploadEditDraft">
        <id column="id" property="id"/>
        <result column="tenant_id" property="tenantId"/>
        <result column="owner_id" property="ownerId"/>
        <result column="model_id" property="modelId"/>
        <result column="record_id" property="recordId"/>
        <result column="field_key" property="field"/>
        <result column="parent_field" property="parentField"/>
        <result column="row_id" property="rowId"/>
        <result column="menu_id" property="menuId"/>
        <result column="task_id" property="taskId"/>
        <result column="baseline_json" property="baselineJson"/>
        <result column="current_json" property="currentJson"/>
        <result column="edit_origins_json" property="editOriginsJson"/>
        <result column="revision" property="revision"/>
        <result column="lease_id" property="leaseId"/>
        <result column="lease_file_id" property="leaseFileId"/>
        <result column="lease_result_file_id" property="leaseResultFileId"/>
        <result column="last_operation_id" property="lastOperationId"/>
        <result column="updated_at" property="updatedAt"/>
    </resultMap>
    <sql id="columns">id, tenant_id, owner_id, model_id, record_id, field_key, parent_field, row_id,
        menu_id, task_id, baseline_json, current_json, edit_origins_json, revision, lease_id, lease_file_id,
        lease_result_file_id, last_operation_id, updated_at</sql>
    <select id="find" resultMap="draft">
        SELECT <include refid="columns"/> FROM base_upload_edit_draft WHERE tenant_id = #{tenantId} AND id = #{id}
    </select>
    <select id="findLease" resultMap="draft">
        SELECT <include refid="columns"/> FROM base_upload_edit_draft WHERE tenant_id = #{tenantId} AND lease_id = #{leaseId}
    </select>
    <select id="lockRecord" resultMap="draft">
        SELECT <include refid="columns"/> FROM base_upload_edit_draft
        WHERE tenant_id = #{tenantId} AND model_id = #{modelId} AND record_id = #{recordId}
        ORDER BY id FOR UPDATE
    </select>
    <resultMap id="recordId" type="java.lang.String"><result column="record_id"/></resultMap>
    <select id="lockDmsRecord" resultMap="recordId" useCache="false" flushCache="true">
        SELECT f_id AS record_id FROM
        <choose>
            <when test="table == 'dms_wenjian_xinzeng_shenhe'">dms_wenjian_xinzeng_shenhe</when>
            <when test="table == 'dms_wenjian_xiuding_shenhe'">dms_wenjian_xiuding_shenhe</when>
            <otherwise>(SELECT NULL AS f_id, NULL AS f_tenant_id, NULL AS f_delete_mark WHERE 1=0) unsupported</otherwise>
        </choose>
        WHERE f_tenant_id=#{tenantId} AND f_id=#{recordId} AND f_delete_mark IS NULL FOR UPDATE
    </select>
    <insert id="insert">
        INSERT INTO base_upload_edit_draft (<include refid="columns"/>) VALUES
        (#{id}, #{tenantId}, #{ownerId}, #{modelId}, #{recordId}, #{field}, #{parentField}, #{rowId},
         #{menuId}, #{taskId}, #{baselineJson}, #{currentJson}, #{editOriginsJson}, #{revision}, #{leaseId}, #{leaseFileId},
         #{leaseResultFileId}, #{lastOperationId}, #{updatedAt})
    </insert>
    <update id="touchLease">
        UPDATE base_upload_edit_draft SET updated_at = #{now}
        WHERE tenant_id = #{tenantId} AND id = #{id} AND owner_id = #{ownerId}
          AND lease_id = #{leaseId} AND updated_at &gt;= #{cutoff}
    </update>
    <update id="compareAndSet">
        UPDATE base_upload_edit_draft SET owner_id = #{draft.ownerId}, baseline_json = #{draft.baselineJson}, current_json = #{draft.currentJson},
          edit_origins_json = #{draft.editOriginsJson}, revision = #{draft.revision}, lease_id = #{draft.leaseId}, lease_file_id = #{draft.leaseFileId},
          lease_result_file_id = #{draft.leaseResultFileId}, last_operation_id = #{draft.lastOperationId}, updated_at = #{draft.updatedAt}
        WHERE tenant_id = #{draft.tenantId} AND id = #{draft.id} AND revision = #{expectedRevision}
    </update>
</mapper>