Merge develop into test - sync latest code
This commit is contained in:
105
fix_surgery_data.js
Normal file
105
fix_surgery_data.js
Normal file
@@ -0,0 +1,105 @@
|
||||
const { Pool } = require('pg');
|
||||
const pool = new Pool({
|
||||
host: '47.116.196.11',
|
||||
port: 15432,
|
||||
database: 'postgresql',
|
||||
user: 'postgresql',
|
||||
password: 'Jchl1528'
|
||||
});
|
||||
|
||||
async function fixData() {
|
||||
const client = await pool.connect();
|
||||
|
||||
try {
|
||||
await client.query('BEGIN');
|
||||
|
||||
// 1. 修复申请科室名称
|
||||
console.log('步骤1: 修复申请科室名称...');
|
||||
const fixDeptResult = await client.query(`
|
||||
UPDATE hisdev.cli_surgery s
|
||||
SET apply_dept_name = o.name
|
||||
FROM hisdev.adm_organization o
|
||||
WHERE s.apply_dept_id = o.id
|
||||
AND (s.apply_dept_name IS NULL OR s.apply_dept_name = '')
|
||||
AND s.delete_flag = '0'
|
||||
`);
|
||||
console.log(` 修复了 ${fixDeptResult.rowCount} 条申请科室记录`);
|
||||
|
||||
// 2. 修复主刀医生姓名
|
||||
console.log('步骤2: 修复主刀医生姓名...');
|
||||
const fixSurgeonResult = await client.query(`
|
||||
UPDATE hisdev.cli_surgery s
|
||||
SET main_surgeon_name = u.nick_name
|
||||
FROM hisdev.sys_user u
|
||||
WHERE s.main_surgeon_id = u.user_id
|
||||
AND (s.main_surgeon_name IS NULL OR s.main_surgeon_name = '')
|
||||
AND s.delete_flag = '0'
|
||||
`);
|
||||
console.log(` 修复了 ${fixSurgeonResult.rowCount} 条主刀医生记录`);
|
||||
|
||||
// 3. 对于 apply_dept_id 为空但有 org_id 的记录,使用 org_name
|
||||
console.log('步骤3: 使用 org_name 填充剩余空申请科室...');
|
||||
const fixOrgResult = await client.query(`
|
||||
UPDATE hisdev.cli_surgery s
|
||||
SET apply_dept_name = o.name,
|
||||
apply_dept_id = s.org_id
|
||||
FROM hisdev.adm_organization o
|
||||
WHERE s.org_id = o.id
|
||||
AND (s.apply_dept_name IS NULL OR s.apply_dept_name = '')
|
||||
AND s.delete_flag = '0'
|
||||
`);
|
||||
console.log(` 修复了 ${fixOrgResult.rowCount} 条使用org_name的记录`);
|
||||
|
||||
// 4. 验证修复结果
|
||||
console.log('步骤4: 验证修复结果...');
|
||||
const checkResult = await client.query(`
|
||||
SELECT
|
||||
COUNT(*) as total_count,
|
||||
COUNT(apply_dept_name) as has_apply_dept_name_count,
|
||||
COUNT(*) - COUNT(apply_dept_name) as apply_dept_name_null_count,
|
||||
COUNT(main_surgeon_name) as has_main_surgeon_name_count,
|
||||
COUNT(*) - COUNT(main_surgeon_name) as main_surgeon_name_null_count
|
||||
FROM hisdev.cli_surgery
|
||||
WHERE delete_flag = '0'
|
||||
`);
|
||||
|
||||
console.log('\n=== 修复后统计 ===');
|
||||
console.log(JSON.stringify(checkResult.rows[0], null, 2));
|
||||
|
||||
// 5. 查看仍有空值的记录
|
||||
const nullRecords = await client.query(`
|
||||
SELECT
|
||||
id,
|
||||
surgery_no,
|
||||
patient_name,
|
||||
apply_dept_id,
|
||||
apply_dept_name,
|
||||
main_surgeon_id,
|
||||
main_surgeon_name
|
||||
FROM hisdev.cli_surgery
|
||||
WHERE delete_flag = '0'
|
||||
AND (apply_dept_name IS NULL OR apply_dept_name = '' OR main_surgeon_name IS NULL OR main_surgeon_name = '')
|
||||
ORDER BY create_time DESC
|
||||
LIMIT 10
|
||||
`);
|
||||
|
||||
if (nullRecords.rows.length > 0) {
|
||||
console.log('\n=== 仍有空值的记录 ===');
|
||||
console.log(JSON.stringify(nullRecords.rows, null, 2));
|
||||
} else {
|
||||
console.log('\n✅ 所有记录的申请科室和主刀医生姓名已修复完毕!');
|
||||
}
|
||||
|
||||
await client.query('COMMIT');
|
||||
console.log('\n修复完成!');
|
||||
|
||||
} catch (err) {
|
||||
await client.query('ROLLBACK');
|
||||
console.error('修复失败:', err.message);
|
||||
} finally {
|
||||
client.release();
|
||||
pool.end();
|
||||
}
|
||||
}
|
||||
|
||||
fixData();
|
||||
Reference in New Issue
Block a user