UPDATE public.dms_version_states SET effective_to=#{effectiveTo}, revision=revision+1, updated_at=statement_timestamp() WHERE tenant_id=#{tenantId} AND file_version_id=#{fileVersionId,jdbcType=OTHER,typeHandler=jnpf.dmsDatabase.DmsUuidTypeHandler} AND lifecycle_status='EFFECTIVE' AND effective_from <= statement_timestamp() AND effective_to > statement_timestamp() AND #{effectiveTo} > effective_to 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,jdbcType=OTHER,typeHandler=jnpf.dmsDatabase.DmsUuidTypeHandler}, #{tenantId}, #{documentId,jdbcType=OTHER,typeHandler=jnpf.dmsDatabase.DmsUuidTypeHandler}, 'EFFECTIVE', CURRENT_TIMESTAMP, #{userId}, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'DIRECT', CAST(#{fileVersionId,jdbcType=OTHER,typeHandler=jnpf.dmsDatabase.DmsUuidTypeHandler} AS TEXT), 'DMS 临时上传直接生效', #{userId}) 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, workflow_flow_id, workflow_task_id, workflow_file_type) VALUES (#{fileVersionId,jdbcType=OTHER,typeHandler=jnpf.dmsDatabase.DmsUuidTypeHandler}, #{tenantId}, #{documentId,jdbcType=OTHER,typeHandler=jnpf.dmsDatabase.DmsUuidTypeHandler}, 'PENDING_APPROVAL', NULL, NULL, CURRENT_TIMESTAMP, NULL, 'WORKFLOW', #{approvalSourceId}, '工作流文件已暂存,等待审批', #{userId}, #{flowId}, #{taskId}, #{fileType}) UPDATE public.dms_version_states SET lifecycle_status = 'EFFECTIVE', approved_at = CURRENT_TIMESTAMP, approved_by = #{userId}, archived_at = CURRENT_TIMESTAMP, effective_from = CURRENT_TIMESTAMP, effective_to = NULL, status_reason = '工作流审批通过并生效', status_changed_at = CURRENT_TIMESTAMP, status_changed_by = #{userId}, revision = revision + 1, updated_at = CURRENT_TIMESTAMP WHERE tenant_id = #{tenantId} AND file_version_id = #{fileVersionId,jdbcType=OTHER,typeHandler=jnpf.dmsDatabase.DmsUuidTypeHandler} AND lifecycle_status = 'PENDING_APPROVAL' AND workflow_flow_id = #{flowId} AND workflow_task_id = #{taskId} AND workflow_file_type = #{fileType} UPDATE public.dms_version_states SET lifecycle_status='SUPERSEDED', effective_to=CURRENT_TIMESTAMP, status_reason='修订移除记录,保留历史', status_changed_at=CURRENT_TIMESTAMP, status_changed_by=#{userId}, revision=revision+1, updated_at=CURRENT_TIMESTAMP WHERE tenant_id=#{tenantId} AND document_id=#{documentId,jdbcType=OTHER,typeHandler=jnpf.dmsDatabase.DmsUuidTypeHandler} AND file_version_id=#{fileVersionId,jdbcType=OTHER,typeHandler=jnpf.dmsDatabase.DmsUuidTypeHandler} AND lifecycle_status='EFFECTIVE' AND effective_from <= CURRENT_TIMESTAMP AND (effective_to IS NULL OR effective_to > CURRENT_TIMESTAMP) 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,jdbcType=OTHER,typeHandler=jnpf.dmsDatabase.DmsUuidTypeHandler} AND file_version_id = #{fileVersionId,jdbcType=OTHER,typeHandler=jnpf.dmsDatabase.DmsUuidTypeHandler} AND lifecycle_status = 'EFFECTIVE' AND effective_from <= CURRENT_TIMESTAMP AND (effective_to IS NULL OR CURRENT_TIMESTAMP < effective_to) 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,jdbcType=OTHER,typeHandler=jnpf.dmsDatabase.DmsUuidTypeHandler}, #{tenantId}, #{documentId,jdbcType=OTHER,typeHandler=jnpf.dmsDatabase.DmsUuidTypeHandler}, 'EFFECTIVE', CURRENT_TIMESTAMP, #{userId}, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'DIRECT', CONCAT('revision:', CAST(#{baseFileVersionId,jdbcType=OTHER,typeHandler=jnpf.dmsDatabase.DmsUuidTypeHandler} AS TEXT), ':', #{sourceId}), #{revisionReason}, #{userId}) UPDATE public.dms_version_states SET lifecycle_status = 'PENDING_EFFECTIVE', approved_at = #{approvedAt}, approved_by = #{actorId}, effective_from = #{scheduledAt}, effective_to = #{effectiveTo}, status_reason = '审核通过,等待日期生效', status_changed_by = #{actorId}, revision = revision + 1 WHERE tenant_id = #{tenantId} AND file_version_id = #{versionId,jdbcType=OTHER,typeHandler=jnpf.dmsDatabase.DmsUuidTypeHandler} AND lifecycle_status = 'PENDING_APPROVAL' UPDATE public.dms_version_states SET lifecycle_status = 'EFFECTIVE', effective_from = CURRENT_TIMESTAMP, status_reason = '批准文件按日期生效', status_changed_by = #{actorId}, revision = revision + 1 WHERE tenant_id = #{tenantId} AND file_version_id = #{versionId,jdbcType=OTHER,typeHandler=jnpf.dmsDatabase.DmsUuidTypeHandler} AND lifecycle_status = 'PENDING_EFFECTIVE' AND effective_from <= CURRENT_TIMESTAMP AND (effective_to IS NULL OR effective_to > CURRENT_TIMESTAMP) UPDATE public.dms_version_states SET lifecycle_status = 'EXPIRED', status_reason = #{statusReason}, status_changed_by = #{changedBy}, revision = revision + 1, status_changed_at = statement_timestamp(), updated_at = statement_timestamp() WHERE tenant_id = #{tenantId} AND file_version_id = #{fileVersionId,jdbcType=OTHER,typeHandler=jnpf.dmsDatabase.DmsUuidTypeHandler} AND lifecycle_status = 'EFFECTIVE' AND effective_to <= statement_timestamp()