-- 修复admin科研访问美国记录状态 - 执行脚本 -- 执行时间:2025-01-08 -- 目标:将admin的科研访问美国记录状态从"进行中"更新为"已完成" -- 第一步:查询当前状态(执行前确认) SELECT '执行前状态检查' as check_type, record_id, application_id, applicant_name, purpose, destination, completion_status, CASE WHEN completion_status = '0' THEN '进行中' WHEN completion_status = '1' THEN '已完成' WHEN completion_status = '2' THEN '提前结束' ELSE '未知状态' END as current_status_display, create_time, update_time FROM rs_overseas_record WHERE applicant_name = 'admin' AND purpose = '科研访问' AND destination LIKE '%美国%' AND deleted = '0'; -- 第二步:执行更新操作 UPDATE rs_overseas_record SET completion_status = '1', -- 设置为已完成 update_time = NOW(), -- 更新修改时间 update_by = 1 -- 设置修改人为管理员 WHERE applicant_name = 'admin' AND purpose = '科研访问' AND destination LIKE '%美国%' AND deleted = '0' AND completion_status = '0'; -- 只更新当前为"进行中"的记录 -- 第三步:查询更新后状态(执行后确认) SELECT '执行后状态检查' as check_type, record_id, application_id, applicant_name, purpose, destination, completion_status, CASE WHEN completion_status = '0' THEN '进行中' WHEN completion_status = '1' THEN '已完成' WHEN completion_status = '2' THEN '提前结束' ELSE '未知状态' END as updated_status_display, create_time, update_time FROM rs_overseas_record WHERE applicant_name = 'admin' AND purpose = '科研访问' AND destination LIKE '%美国%' AND deleted = '0'; -- 第四步:验证联合查询结果(模拟前端查询) SELECT '联合查询验证' as query_type, record_id, application_id, applicant_name, purpose, destination, completion_status, CASE WHEN completion_status = '0' THEN '进行中' WHEN completion_status = '1' THEN '已完成' WHEN completion_status = '2' THEN '提前结束' ELSE '未知状态' END as final_status_display, CASE WHEN record_id IS NOT NULL THEN '来自记录表' ELSE '来自申请表' END as data_source FROM ( -- 查询已创建的出国记录 SELECT ors.record_id, ors.application_id, ors.applicant_name, ors.purpose, ors.destination, ors.completion_status FROM rs_overseas_record ors WHERE ors.deleted = '0' AND ors.applicant_name = 'admin' AND ors.purpose = '科研访问' AND ors.destination LIKE '%美国%' UNION ALL -- 查询已通过审批但未创建记录的申请 SELECT NULL as record_id, oa.application_id, oa.applicant_name, oa.purpose, oa.destination, '1' as completion_status FROM rs_overseas_application oa WHERE oa.deleted = '0' AND oa.status = '1' AND oa.applicant_name = 'admin' AND oa.purpose = '科研访问' AND oa.destination LIKE '%美国%' AND NOT EXISTS ( SELECT 1 FROM rs_overseas_record ors WHERE ors.application_id = oa.application_id AND ors.deleted = '0' AND ors.tenant_id = '000000' ) AND oa.tenant_id = '000000' ) combined_data ORDER BY application_id DESC;