NOT EXISTS (SELECT 1 FROM public.dms_file_expiry_cleanup c
WHERE c.tenant_id=s.tenant_id AND c.file_version_id=s.file_version_id)
OR EXISTS (SELECT 1 FROM public.dms_wenjian_ziyuan r
JOIN public.dms_wenjian_banben b ON b.f_tenant_id=r.f_tenant_id AND b.wenjian_id=r.f_id
AND b.f_id=r.dangqian_banben_id AND b.f_delete_mark IS NULL
WHERE r.f_tenant_id=s.tenant_id AND r.f_delete_mark IS NULL AND b.biz_status='effective'
AND b.wenjian_zhongxin_banben_id=CAST(s.file_version_id AS TEXT))
INSERT INTO public.dms_file_expiry_cleanup (tenant_id, file_version_id)
VALUES (#{tenantId}, #{fileVersionId,jdbcType=OTHER,typeHandler=jnpf.dmsDatabase.DmsUuidTypeHandler})
ON CONFLICT (tenant_id, file_version_id) DO NOTHING
UPDATE public.dms_file_expiry_cleanup SET search_task_id=#{item.searchTaskId},
completed_at=CASE WHEN #{done} THEN statement_timestamp() ELSE NULL END,
attempts=attempts+1, last_error=#{error}, updated_at=statement_timestamp(),
next_attempt_at=statement_timestamp() + (#{delay} * INTERVAL '1 second')
WHERE tenant_id=#{item.tenantId}
AND file_version_id=#{item.fileVersionId,jdbcType=OTHER,typeHandler=jnpf.dmsDatabase.DmsUuidTypeHandler}