liusheng
5 天以前 fb89df539c6293a41933e445df25fa9b8047ba18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
-- =============================================================================
-- 省立同德:满意度子任务 campusid 为空的数据修复(2026-09-24)
--
-- 背景:/sltdMydTotalByScore(满意度统计)等接口带 @AddOrgId,会按登录用户的
--      campusid(admin = 30001002)过滤 service_subtask,campusid 为 NULL 的子任务
--      会被静默丢掉,导致页面「各服务项目满意度统计」和 service_subtask_detail 明细
--      对不上(如「挂号/就诊/检验/检查等环节等候时间」页面 6 项 vs 明细 13 行)。
--
-- 现状:orgid=20001001 下 service_type IN ('6','14') 的子任务共 767 条,
--      campusid='30001002' 642 条、'30001003' 1 条、NULL 124 条(本次要补的就是这 124 条)。
--      这 124 条分布在和 30001002 相同的病区、相同的时间区间(2025-12-23 ~ 2026-09-12),
--      属于写库时漏写院区,不是别的院区的数据;service_task.campusid 一律是 '1',不能作为院区来源。
--
-- 执行顺序:1) 看清单 → 2) 备份 → 3) 更新 → 4) 校验
-- 注意:生产库执行前先备份,且请确认这些子任务确实都属于 30001002 院区。
-- =============================================================================
 
-- -----------------------------------------------------------------------------
-- 1) 待补清单(124 条):确认病区/科室是否都属于 30001002 院区
-- -----------------------------------------------------------------------------
SELECT s.id,
       s.taskid,
       s.service_type,
       s.sendstate,
       s.deptcode,
       s.deptname,
       s.leavehospitaldistrictcode,
       s.leavehospitaldistrictname,
       date_format(s.create_time, '%Y-%m-%d %H:%i:%s') AS create_time,
       date_format(s.finishtime, '%Y-%m-%d %H:%i:%s')  AS finishtime
FROM service_subtask s
WHERE s.del_flag = 0
  AND s.service_type IN ('6', '14')
  AND s.campusid IS NULL
ORDER BY s.leavehospitaldistrictcode, s.id;
 
-- 病区/科室维度汇总(判断院区归属用;病区/科室都为空的 40 来条需要人工确认)
SELECT s.leavehospitaldistrictcode AS district,
       s.deptcode,
       s.service_type,
       COUNT(*) AS campus_null_cnt
FROM service_subtask s
WHERE s.del_flag = 0
  AND s.service_type IN ('6', '14')
  AND s.campusid IS NULL
GROUP BY s.leavehospitaldistrictcode, s.deptcode, s.service_type
ORDER BY campus_null_cnt DESC;
 
-- -----------------------------------------------------------------------------
-- 2) 备份(只备份要改的字段)
-- -----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS bak_service_subtask_campusid_20260924 AS
SELECT id, campusid, update_time
FROM service_subtask
WHERE del_flag = 0
  AND service_type IN ('6', '14')
  AND campusid IS NULL;
 
SELECT COUNT(*) AS backup_rows FROM bak_service_subtask_campusid_20260924;
 
-- -----------------------------------------------------------------------------
-- 3) 更新(确认清单无误后执行;预期影响 124 行)
-- -----------------------------------------------------------------------------
UPDATE service_subtask
SET campusid    = '30001002',
    update_time = NOW()
WHERE del_flag = 0
  AND service_type IN ('6', '14')
  AND campusid IS NULL;
 
-- 如果病区/科室为空的那些行无法确定院区,只想补有明确病区的,用下面这条:
-- UPDATE service_subtask
-- SET campusid = '30001002', update_time = NOW()
-- WHERE del_flag = 0 AND service_type IN ('6','14') AND campusid IS NULL
--   AND leavehospitaldistrictcode IS NOT NULL AND leavehospitaldistrictcode <> '';
 
-- -----------------------------------------------------------------------------
-- 4) 校验:院区分布 + 单车核对「挂号/就诊/检验/检查等环节等候时间」
-- -----------------------------------------------------------------------------
SELECT s.campusid, s.service_type, COUNT(*) AS c
FROM service_subtask s
WHERE s.del_flag = 0 AND s.service_type IN ('6', '14')
GROUP BY s.campusid, s.service_type
ORDER BY c DESC;
 
-- 预期(补齐后,admin 登录页面)= 很满意 1、不满意 3、很不满意 4、很满意(随访任务) 不计入
-- 页面口径:sendstate=6 + service_type 6/14 + finishtime 在所选区间 + 同一子任务同一题只取最新一条 + 未作答不计
SELECT d.asrtext AS optionresult, COUNT(*) AS page_cnt
FROM service_subtask_detail d
INNER JOIN service_subtask s ON s.id = d.sub_id
WHERE d.questiontext = '挂号/就诊/检验/检查等环节等候时间'
  AND d.del_flag = 0
  AND s.del_flag = 0
  AND s.sendstate = 6
  AND s.service_type IN ('6', '14')
  AND s.campusid = '30001002'
  AND date_format(s.finishtime, '%y%m%d') >= '260625'
  AND date_format(s.finishtime, '%y%m%d') <= '260924'
  AND d.asrtext IS NOT NULL AND TRIM(d.asrtext) <> ''
  AND d.id = (SELECT MAX(d2.id) FROM service_subtask_detail d2
              WHERE d2.sub_id = d.sub_id AND d2.questiontext <=> d.questiontext AND d2.del_flag = '0')
GROUP BY d.asrtext
ORDER BY page_cnt DESC;
-- 改造前:很不满意 4、不满意 1、很满意 1(页面即此结果)
-- 补齐后:很不满意 4、不满意 4、很满意 1  ← 9 项;明细表里另外 4 行仍不会进页面,原因见下 ↓
--   taskid 144(一般)   finishtime 2026-06-23,早于页面所选区间 2026-06-25
--   taskid 152(很不满意) / 156(很满意)  service_type=2(出院随访任务),不是满意度
--   taskid 175(空)     未作答(asrtext 为空),既不算选项也不进分母