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);
|
}
|