刘光辉
15 小时以前 34981c30a78e8bbd7791131059a9210f9928b62c
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
package jnpf.dmsMapper;
 
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
 
import java.util.UUID;
 
@Mapper
public interface DmsVersionStateMapper {
 
    @Insert("INSERT INTO public.dms_version_states ("
            + "file_version_id, tenant_id, document_id, lifecycle_status, approved_at, approved_by, "
            + "archived_at, effective_from, approval_source_type, approval_source_id, status_reason, "
            + "status_changed_by) VALUES (#{fileVersionId}, #{tenantId}, #{documentId}, 'EFFECTIVE', "
            + "CURRENT_TIMESTAMP, #{userId}, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'DIRECT', "
            + "CAST(#{fileVersionId} AS TEXT), 'DMS 临时上传直接生效', #{userId})")
    int insertDirectEffective(@Param("tenantId") String tenantId,
                              @Param("documentId") UUID documentId,
                              @Param("fileVersionId") UUID fileVersionId,
                              @Param("userId") String userId);
 
    @Update("UPDATE public.dms_version_states SET lifecycle_status = 'SUPERSEDED', "
            + "effective_to = CURRENT_TIMESTAMP, status_reason = CONCAT('模拟修订,已由版本 ', "
            + "#{newVersionLabel}, ' 替代'), status_changed_at = CURRENT_TIMESTAMP, "
            + "status_changed_by = #{userId}, revision = revision + 1, updated_at = CURRENT_TIMESTAMP "
            + "WHERE tenant_id = #{tenantId} AND document_id = #{documentId} "
            + "AND file_version_id = #{fileVersionId} AND lifecycle_status = 'EFFECTIVE' "
            + "AND effective_from <= CURRENT_TIMESTAMP "
            + "AND (effective_to IS NULL OR CURRENT_TIMESTAMP < effective_to)")
    int supersedeCurrent(@Param("tenantId") String tenantId,
                         @Param("documentId") UUID documentId,
                         @Param("fileVersionId") UUID fileVersionId,
                         @Param("newVersionLabel") String newVersionLabel,
                         @Param("userId") String userId);
 
    @Insert("INSERT INTO public.dms_version_states ("
            + "file_version_id, tenant_id, document_id, lifecycle_status, approved_at, approved_by, "
            + "archived_at, effective_from, approval_source_type, approval_source_id, status_reason, "
            + "status_changed_by) VALUES (#{fileVersionId}, #{tenantId}, #{documentId}, 'EFFECTIVE', "
            + "CURRENT_TIMESTAMP, #{userId}, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'DIRECT', "
            + "CONCAT('revision:', CAST(#{baseFileVersionId} AS TEXT), ':', #{sourceId}), "
            + "#{revisionReason}, #{userId})")
    int insertRevisionEffective(@Param("tenantId") String tenantId,
                                @Param("documentId") UUID documentId,
                                @Param("baseFileVersionId") UUID baseFileVersionId,
                                @Param("fileVersionId") UUID fileVersionId,
                                @Param("sourceId") String sourceId,
                                @Param("revisionReason") String revisionReason,
                                @Param("userId") String userId);
}