Merge develop into test - sync latest code

This commit is contained in:
2026-04-10 12:31:19 +08:00
1255 changed files with 107256 additions and 24904 deletions

90
scripts/fix_remaining.py Normal file
View File

@@ -0,0 +1,90 @@
import psycopg2
DB_CONFIG = {
"host": "192.168.110.252",
"port": 15432,
"database": "postgresql",
"user": "postgresql",
"password": "Jchl1528",
"options": "-c search_path=hisdev",
}
def fix():
conn = None
try:
conn = psycopg2.connect(**DB_CONFIG)
cursor = conn.cursor()
print("=" * 80)
print("Fixing remaining surgery records")
print("=" * 80)
# Count before
cursor.execute("""
SELECT COUNT(*)
FROM wor_service_request
WHERE category_enum = 4
AND delete_flag = '0'
AND (content_json::jsonb->>'surgeryName' IS NULL OR content_json::jsonb->>'surgeryName' = '')
""")
before = cursor.fetchone()[0]
print(f"\nBefore fix: {before} records without surgeryName")
# Execute fix
cursor.execute("""
UPDATE wor_service_request wsr
SET content_json =
COALESCE(
(wsr.content_json::jsonb || jsonb_build_object(
'surgeryName', cs.surgery_name,
'surgeryCode', COALESCE(cs.surgery_code, '')
))::text,
jsonb_build_object(
'surgeryName', cs.surgery_name,
'surgeryCode', COALESCE(cs.surgery_code, '')
)::text
)
FROM cli_surgery cs
WHERE wsr.category_enum = 4
AND wsr.delete_flag = '0'
AND (wsr.content_json::jsonb->>'surgeryName' IS NULL OR wsr.content_json::jsonb->>'surgeryName' = '')
AND cs.id = wsr.activity_id
AND cs.surgery_name IS NOT NULL
AND cs.delete_flag = '0'
""")
fixed = cursor.rowcount
conn.commit()
print(f"Fixed: {fixed} records")
# Count after
cursor.execute("""
SELECT COUNT(*)
FROM wor_service_request
WHERE category_enum = 4
AND delete_flag = '0'
AND (content_json::jsonb->>'surgeryName' IS NULL OR content_json::jsonb->>'surgeryName' = '')
""")
after = cursor.fetchone()[0]
print(f"After fix: {after} records without surgeryName")
if after == 0:
print("\n*** ALL RECORDS FIXED! ***")
else:
print(f"\n*** {after} records still need attention ***")
cursor.close()
except Exception as e:
print(f"Error: {e}")
if conn:
conn.rollback()
finally:
if conn:
conn.close()
if __name__ == "__main__":
fix()