2026-10-26-fix-marina-deng-sample-code-swap.sql 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469
  1. -- =============================================================================
  2. -- 数据修复:马丽娜 / 邓诗婷 样本编码错乱回正
  3. -- 基准备份:zkxw_2026-10-26_092540.sql.gz(执行前请再备份当前库)
  4. --
  5. -- 目标终态:
  6. -- 马丽娜 协议 XBCC20261008000001 → 样本码 ZKZX34000964
  7. -- + 原质检/生产/接收/入库审核/缴费(曾被误改到 1007)一并回到 964
  8. -- 邓诗婷 协议 XBCC20261026000001 → 样本码 ZKZX34000842
  9. -- (不含马丽娜的质检生产)
  10. --
  11. -- 不改:lab_storage_code、biz_cell_product.product_code、短信正文、软删历史行
  12. --
  13. -- 执行方式(MySQL 5.7):
  14. -- 1) 先跑「一、执行前校验」全部 SELECT,确认与预期一致
  15. -- 2) 再跑「二、事务修复」;任一步报错会 ROLLBACK
  16. -- 3) 跑「三、执行后校验」
  17. -- =============================================================================
  18. -- ---------------------------------------------------------------------------
  19. -- 常量(与 09:25 备份一致;若线上 ID 已变,以校验 SELECT 为准再改)
  20. -- ---------------------------------------------------------------------------
  21. -- 租户
  22. -- SET @tenant = 'zkxw';
  23. -- 马丽娜协议 / 活跃样本 / 编码池
  24. -- 6A7CBB85EA024AF08061FD9AFB8DF6EC
  25. -- EC3B60D2880544D9909980D36FF9704E (当前活跃,码=842)
  26. -- BBC01CCFDCA14E7BBE3ED34CE1B1DE47 (池 964)
  27. -- 7C4C8FEDE210453F9D2F357D4F5A46A4 (池 842)
  28. -- 邓诗婷协议 / 活跃样本 / 编码池
  29. -- AAF11BCC7A584B09AFCE17AA8F7B7CD4
  30. -- 21D2D4A063064E0B850F5C807F964079 (当前活跃,码=1007)
  31. -- 817D230359EE4DCEA0F0CB532F099F12 (池 1007)
  32. -- 下游(属马丽娜,当前 sample_code=1007)
  33. -- reception 0E69E16E7E9C4B3AA9D894622BBE237B
  34. -- qc_wo 019FC51312BB4225901014BE90A3AB2E
  35. -- prod_wo 92F20C8B731E474985BB2C6D74A2BA3A
  36. /* =============================================================================
  37. 一、执行前校验(只读)—— 全部应对上,再执行第二节
  38. ============================================================================= */
  39. SELECT '【预检1】活跃协议样本(期望:马丽娜=842 一条;邓诗婷=1007 一条;964 无活跃)' AS step;
  40. SELECT ps.id,
  41. ps.sample_code,
  42. ps.sample_code_id,
  43. ps.collection_protocol_id,
  44. cp.protocol_no,
  45. ppc.mother_name,
  46. ps.del_flag,
  47. ps.update_time
  48. FROM biz_protocol_sample ps
  49. JOIN biz_collection_protocol cp ON cp.id = ps.collection_protocol_id AND cp.del_flag = 0
  50. LEFT JOIN biz_protocol_party_customer ppc
  51. ON ppc.collection_protocol_id = ps.collection_protocol_id AND ppc.del_flag = 0
  52. WHERE ps.tenant_no = 'zkxw'
  53. AND ps.del_flag = 0
  54. AND ps.sample_code IN ('ZKZX34000842', 'ZKZX34000964', 'ZKZX34001007')
  55. ORDER BY ps.sample_code, ps.create_time;
  56. SELECT '【预检2】马丽娜下游当前码(期望均为 1007,协议仍为马丽娜)' AS step;
  57. SELECT 'reception' AS tbl, id, sample_code, protocol_sample_id, collection_protocol_id, lab_storage_code
  58. FROM biz_sample_reception
  59. WHERE tenant_no = 'zkxw' AND del_flag = 0
  60. AND collection_protocol_id = '6A7CBB85EA024AF08061FD9AFB8DF6EC'
  61. UNION ALL
  62. SELECT 'qc_wo', id, sample_code, protocol_sample_id, collection_protocol_id, work_order_no
  63. FROM biz_qc_work_order
  64. WHERE tenant_no = 'zkxw' AND del_flag = 0
  65. AND collection_protocol_id = '6A7CBB85EA024AF08061FD9AFB8DF6EC'
  66. UNION ALL
  67. SELECT 'prod_wo', id, sample_code, protocol_sample_id, collection_protocol_id, work_order_no
  68. FROM biz_production_work_order
  69. WHERE tenant_no = 'zkxw' AND del_flag = 0
  70. AND collection_protocol_id = '6A7CBB85EA024AF08061FD9AFB8DF6EC'
  71. UNION ALL
  72. SELECT 'storage_rev', id, sample_code, NULL, protocol_id, protocol_no
  73. FROM biz_storage_release_review
  74. WHERE tenant_no = 'zkxw' AND del_flag = 0
  75. AND protocol_id = '6A7CBB85EA024AF08061FD9AFB8DF6EC';
  76. SELECT '【预检3】码分布计数(活跃)' AS step;
  77. SELECT sample_code, COUNT(*) AS cnt
  78. FROM biz_protocol_sample
  79. WHERE tenant_no = 'zkxw' AND del_flag = 0
  80. AND sample_code IN ('ZKZX34000842', 'ZKZX34000964', 'ZKZX34001007')
  81. GROUP BY sample_code;
  82. SELECT sample_code, COUNT(*) AS qc_task_cnt
  83. FROM biz_qc_task
  84. WHERE tenant_no = 'zkxw' AND del_flag = 0
  85. AND sample_code IN ('ZKZX34000842', 'ZKZX34000964', 'ZKZX34001007')
  86. GROUP BY sample_code;
  87. SELECT sample_code, collection_protocol_id, COUNT(*) AS pay_cnt
  88. FROM biz_protocol_sample_payment
  89. WHERE tenant_no = 'zkxw' AND del_flag = 0
  90. AND sample_code IN ('ZKZX34000842', 'ZKZX34000964', 'ZKZX34001007')
  91. GROUP BY sample_code, collection_protocol_id;
  92. /* =============================================================================
  93. 二、事务修复
  94. A 马丽娜 842 → 964(仅协议侧;下游此时在 1007,不会被带走)
  95. B 马丽娜协议下 1007 → 964(质检/生产/缴费等,按协议 ID 定向)
  96. C 邓诗婷 1007 → 842
  97. ============================================================================= */
  98. START TRANSACTION;
  99. -- 说明:库内同时存在 utf8mb4_unicode_ci / utf8mb4_general_ci 列。
  100. -- 字符串比较一律用 BINARY,避免会话变量 collation 混用报错。
  101. SET NAMES utf8mb4;
  102. SET @now := NOW();
  103. SET @operator := 'data_fix_20261026';
  104. SET @marina_sample_id := NULL;
  105. SET @deng_sample_id := NULL;
  106. SELECT id INTO @marina_sample_id
  107. FROM biz_protocol_sample
  108. WHERE del_flag = 0
  109. AND BINARY tenant_no = BINARY 'zkxw'
  110. AND BINARY collection_protocol_id = BINARY '6A7CBB85EA024AF08061FD9AFB8DF6EC'
  111. AND BINARY sample_code = BINARY 'ZKZX34000842'
  112. LIMIT 1;
  113. SELECT id INTO @deng_sample_id
  114. FROM biz_protocol_sample
  115. WHERE del_flag = 0
  116. AND BINARY tenant_no = BINARY 'zkxw'
  117. AND BINARY collection_protocol_id = BINARY 'AAF11BCC7A584B09AFCE17AA8F7B7CD4'
  118. AND BINARY sample_code = BINARY 'ZKZX34001007'
  119. LIMIT 1;
  120. SET @gate := 0;
  121. SELECT IF(@marina_sample_id IS NULL OR @marina_sample_id = '', 1, 0)
  122. + IF(@deng_sample_id IS NULL OR @deng_sample_id = '', 1, 0)
  123. + (SELECT COUNT(*) FROM biz_protocol_sample
  124. WHERE del_flag = 0 AND BINARY tenant_no = BINARY 'zkxw'
  125. AND BINARY sample_code = BINARY 'ZKZX34000964')
  126. + (SELECT COUNT(*) FROM biz_protocol_sample
  127. WHERE del_flag = 0 AND BINARY tenant_no = BINARY 'zkxw'
  128. AND BINARY sample_code = BINARY 'ZKZX34000842'
  129. AND id <> @marina_sample_id)
  130. INTO @gate;
  131. SELECT @marina_sample_id AS marina_sample_id,
  132. @deng_sample_id AS deng_sample_id,
  133. @gate AS gate_should_be_0;
  134. SET @__abort := (0 + 1) / IF(@gate = 0, 1, 0);
  135. /* ---------- A. 马丽娜活跃样本 842 → 964 + 编码池切换 ---------- */
  136. UPDATE biz_protocol_sample
  137. SET sample_code = 'ZKZX34000964',
  138. sample_code_id = 'BBC01CCFDCA14E7BBE3ED34CE1B1DE47',
  139. update_by = @operator,
  140. update_time = @now
  141. WHERE id = @marina_sample_id
  142. AND del_flag = 0
  143. AND BINARY sample_code = BINARY 'ZKZX34000842';
  144. UPDATE biz_sample_code
  145. SET issued = 1, update_by = @operator, update_time = @now
  146. WHERE BINARY id = BINARY 'BBC01CCFDCA14E7BBE3ED34CE1B1DE47'
  147. AND BINARY tenant_no = BINARY 'zkxw' AND del_flag = 0;
  148. UPDATE biz_sample_code
  149. SET issued = 0, update_by = @operator, update_time = @now
  150. WHERE BINARY id = BINARY '7C4C8FEDE210453F9D2F357D4F5A46A4'
  151. AND BINARY tenant_no = BINARY 'zkxw' AND del_flag = 0
  152. AND NOT EXISTS (
  153. SELECT 1 FROM biz_protocol_sample
  154. WHERE del_flag = 0 AND BINARY tenant_no = BINARY 'zkxw'
  155. AND BINARY sample_code_id = BINARY '7C4C8FEDE210453F9D2F357D4F5A46A4'
  156. AND id <> @marina_sample_id
  157. );
  158. UPDATE biz_protocol_sample_transport
  159. SET sample_code = 'ZKZX34000964',
  160. sample_id = @marina_sample_id,
  161. update_by = @operator,
  162. update_time = @now
  163. WHERE del_flag = 0
  164. AND BINARY tenant_no = BINARY 'zkxw'
  165. AND BINARY collection_protocol_id = BINARY '6A7CBB85EA024AF08061FD9AFB8DF6EC'
  166. AND BINARY sample_code = BINARY 'ZKZX34000842';
  167. INSERT INTO biz_sample_code_correction_log (
  168. id, reception_source, old_sample_code, new_sample_code, impact_json, reason,
  169. tenant_no, order_num, remark, create_by, create_dept_id, create_time, update_by, update_time, del_flag
  170. ) VALUES (
  171. REPLACE(UUID(), '-', ''),
  172. 'cell_storage', 'ZKZX34000842', 'ZKZX34000964',
  173. JSON_OBJECT(
  174. 'biz_protocol_sample', 1,
  175. 'biz_sample_code', 1,
  176. 'biz_protocol_sample_transport', 1,
  177. 'note', 'stepA_marina_protocol_only'
  178. ),
  179. '数据修复:马丽娜协议样本 842→964(下游另按协议定向迁移)',
  180. 'zkxw', 0, 'fix_marina_deng_20261026_stepA',
  181. @operator, '', @now, @operator, @now, 0
  182. );
  183. /* ---------- B. 马丽娜协议下 1007 → 964(质检/生产/缴费) ---------- */
  184. UPDATE biz_sample_reception
  185. SET sample_code = 'ZKZX34000964',
  186. protocol_sample_id = @marina_sample_id,
  187. update_by = @operator,
  188. update_time = @now
  189. WHERE del_flag = 0
  190. AND BINARY tenant_no = BINARY 'zkxw'
  191. AND BINARY collection_protocol_id = BINARY '6A7CBB85EA024AF08061FD9AFB8DF6EC'
  192. AND BINARY sample_code = BINARY 'ZKZX34001007';
  193. UPDATE biz_qc_work_order
  194. SET sample_code = 'ZKZX34000964',
  195. protocol_sample_id = @marina_sample_id,
  196. update_by = @operator,
  197. update_time = @now
  198. WHERE del_flag = 0
  199. AND BINARY tenant_no = BINARY 'zkxw'
  200. AND BINARY collection_protocol_id = BINARY '6A7CBB85EA024AF08061FD9AFB8DF6EC'
  201. AND BINARY sample_code = BINARY 'ZKZX34001007';
  202. UPDATE biz_qc_task t
  203. JOIN biz_qc_work_order w
  204. ON w.id = t.work_order_id
  205. AND w.del_flag = 0
  206. AND BINARY w.tenant_no = BINARY 'zkxw'
  207. AND BINARY w.collection_protocol_id = BINARY '6A7CBB85EA024AF08061FD9AFB8DF6EC'
  208. SET t.sample_code = 'ZKZX34000964',
  209. t.update_by = @operator,
  210. t.update_time = @now
  211. WHERE t.del_flag = 0
  212. AND BINARY t.tenant_no = BINARY 'zkxw'
  213. AND BINARY t.sample_code = BINARY 'ZKZX34001007';
  214. UPDATE biz_production_work_order
  215. SET sample_code = 'ZKZX34000964',
  216. protocol_sample_id = @marina_sample_id,
  217. update_by = @operator,
  218. update_time = @now
  219. WHERE del_flag = 0
  220. AND BINARY tenant_no = BINARY 'zkxw'
  221. AND BINARY collection_protocol_id = BINARY '6A7CBB85EA024AF08061FD9AFB8DF6EC'
  222. AND BINARY sample_code = BINARY 'ZKZX34001007';
  223. UPDATE biz_sample_production_reception pr
  224. JOIN biz_sample_reception r
  225. ON r.id = pr.reception_id
  226. AND r.del_flag = 0
  227. AND BINARY r.tenant_no = BINARY 'zkxw'
  228. AND BINARY r.collection_protocol_id = BINARY '6A7CBB85EA024AF08061FD9AFB8DF6EC'
  229. SET pr.sample_code = 'ZKZX34000964',
  230. pr.update_by = @operator,
  231. pr.update_time = @now
  232. WHERE pr.del_flag = 0
  233. AND BINARY pr.tenant_no = BINARY 'zkxw'
  234. AND BINARY pr.sample_code = BINARY 'ZKZX34001007';
  235. UPDATE biz_production_task_input ti
  236. JOIN biz_production_task pt
  237. ON pt.id = ti.task_id AND pt.del_flag = 0 AND BINARY pt.tenant_no = BINARY 'zkxw'
  238. JOIN biz_production_work_order pw
  239. ON pw.id = pt.work_order_id
  240. AND pw.del_flag = 0
  241. AND BINARY pw.tenant_no = BINARY 'zkxw'
  242. AND BINARY pw.collection_protocol_id = BINARY '6A7CBB85EA024AF08061FD9AFB8DF6EC'
  243. SET ti.input_code = 'ZKZX34000964',
  244. ti.update_by = @operator,
  245. ti.update_time = @now
  246. WHERE ti.del_flag = 0
  247. AND BINARY ti.tenant_no = BINARY 'zkxw'
  248. AND BINARY ti.input_type = BINARY 'sample'
  249. AND BINARY ti.input_code = BINARY 'ZKZX34001007';
  250. UPDATE biz_storage_release_review
  251. SET sample_code = 'ZKZX34000964',
  252. sample_name = 'ZKZX34000964',
  253. update_by = @operator,
  254. update_time = @now
  255. WHERE del_flag = 0
  256. AND BINARY tenant_no = BINARY 'zkxw'
  257. AND BINARY protocol_id = BINARY '6A7CBB85EA024AF08061FD9AFB8DF6EC'
  258. AND BINARY sample_code = BINARY 'ZKZX34001007';
  259. UPDATE biz_protocol_sample_payment
  260. SET sample_code = 'ZKZX34000964',
  261. protocol_sample_id = @marina_sample_id,
  262. update_by = @operator,
  263. update_time = @now
  264. WHERE del_flag = 0
  265. AND BINARY tenant_no = BINARY 'zkxw'
  266. AND BINARY collection_protocol_id = BINARY '6A7CBB85EA024AF08061FD9AFB8DF6EC'
  267. AND BINARY sample_code = BINARY 'ZKZX34001007';
  268. UPDATE biz_protocol_payment_schedule
  269. SET sample_code = 'ZKZX34000964',
  270. update_by = @operator,
  271. update_time = @now
  272. WHERE del_flag = 0
  273. AND BINARY tenant_no = BINARY 'zkxw'
  274. AND BINARY collection_protocol_id = BINARY '6A7CBB85EA024AF08061FD9AFB8DF6EC'
  275. AND BINARY sample_code = BINARY 'ZKZX34001007';
  276. UPDATE biz_protocol_payment_transfer
  277. SET sample_code = 'ZKZX34000964',
  278. update_by = @operator,
  279. update_time = @now
  280. WHERE del_flag = 0
  281. AND BINARY tenant_no = BINARY 'zkxw'
  282. AND BINARY collection_protocol_id = BINARY '6A7CBB85EA024AF08061FD9AFB8DF6EC'
  283. AND BINARY sample_code = BINARY 'ZKZX34001007';
  284. INSERT INTO biz_sample_code_correction_log (
  285. id, reception_source, old_sample_code, new_sample_code, impact_json, reason,
  286. tenant_no, order_num, remark, create_by, create_dept_id, create_time, update_by, update_time, del_flag
  287. ) VALUES (
  288. REPLACE(UUID(), '-', ''),
  289. 'cell_storage', 'ZKZX34001007', 'ZKZX34000964',
  290. JSON_OBJECT('note', 'stepB_marina_downstream_by_protocol'),
  291. '数据修复:马丽娜下游质检/生产/缴费 1007→964(按协议定向,不含邓诗婷)',
  292. 'zkxw', 0, 'fix_marina_deng_20261026_stepB',
  293. @operator, '', @now, @operator, @now, 0
  294. );
  295. /* ---------- C. 邓诗婷 1007 → 842 ---------- */
  296. SELECT COUNT(*) INTO @deng_1007_left_qc
  297. FROM biz_qc_work_order
  298. WHERE del_flag = 0 AND BINARY tenant_no = BINARY 'zkxw'
  299. AND BINARY sample_code = BINARY 'ZKZX34001007';
  300. SELECT COUNT(*) INTO @deng_1007_left_prod
  301. FROM biz_production_work_order
  302. WHERE del_flag = 0 AND BINARY tenant_no = BINARY 'zkxw'
  303. AND BINARY sample_code = BINARY 'ZKZX34001007';
  304. SET @gate2 := IF(@deng_1007_left_qc + @deng_1007_left_prod = 0, 0, 1)
  305. + (SELECT COUNT(*) FROM biz_protocol_sample
  306. WHERE del_flag = 0 AND BINARY tenant_no = BINARY 'zkxw'
  307. AND BINARY sample_code = BINARY 'ZKZX34000842');
  308. SELECT @deng_1007_left_qc AS leftover_qc_on_1007,
  309. @deng_1007_left_prod AS leftover_prod_on_1007,
  310. @gate2 AS gate2_should_be_0;
  311. SET @__abort2 := (0 + 1) / IF(@gate2 = 0, 1, 0);
  312. UPDATE biz_protocol_sample
  313. SET sample_code = 'ZKZX34000842',
  314. sample_code_id = '7C4C8FEDE210453F9D2F357D4F5A46A4',
  315. update_by = @operator,
  316. update_time = @now
  317. WHERE id = @deng_sample_id
  318. AND del_flag = 0
  319. AND BINARY sample_code = BINARY 'ZKZX34001007';
  320. UPDATE biz_sample_code
  321. SET issued = 1, update_by = @operator, update_time = @now
  322. WHERE BINARY id = BINARY '7C4C8FEDE210453F9D2F357D4F5A46A4'
  323. AND BINARY tenant_no = BINARY 'zkxw' AND del_flag = 0;
  324. UPDATE biz_sample_code
  325. SET issued = 0, update_by = @operator, update_time = @now
  326. WHERE BINARY id = BINARY '817D230359EE4DCEA0F0CB532F099F12'
  327. AND BINARY tenant_no = BINARY 'zkxw' AND del_flag = 0
  328. AND NOT EXISTS (
  329. SELECT 1 FROM biz_protocol_sample
  330. WHERE del_flag = 0 AND BINARY tenant_no = BINARY 'zkxw'
  331. AND BINARY sample_code_id = BINARY '817D230359EE4DCEA0F0CB532F099F12'
  332. );
  333. UPDATE biz_protocol_sample_payment
  334. SET sample_code = 'ZKZX34000842',
  335. protocol_sample_id = @deng_sample_id,
  336. update_by = @operator,
  337. update_time = @now
  338. WHERE del_flag = 0
  339. AND BINARY tenant_no = BINARY 'zkxw'
  340. AND BINARY collection_protocol_id = BINARY 'AAF11BCC7A584B09AFCE17AA8F7B7CD4'
  341. AND BINARY sample_code = BINARY 'ZKZX34001007';
  342. UPDATE biz_protocol_payment_schedule
  343. SET sample_code = 'ZKZX34000842',
  344. update_by = @operator,
  345. update_time = @now
  346. WHERE del_flag = 0
  347. AND BINARY tenant_no = BINARY 'zkxw'
  348. AND BINARY collection_protocol_id = BINARY 'AAF11BCC7A584B09AFCE17AA8F7B7CD4'
  349. AND BINARY sample_code = BINARY 'ZKZX34001007';
  350. UPDATE biz_protocol_payment_transfer
  351. SET sample_code = 'ZKZX34000842',
  352. update_by = @operator,
  353. update_time = @now
  354. WHERE del_flag = 0
  355. AND BINARY tenant_no = BINARY 'zkxw'
  356. AND BINARY collection_protocol_id = BINARY 'AAF11BCC7A584B09AFCE17AA8F7B7CD4'
  357. AND BINARY sample_code = BINARY 'ZKZX34001007';
  358. UPDATE biz_protocol_sample_transport
  359. SET sample_code = 'ZKZX34000842',
  360. sample_id = @deng_sample_id,
  361. update_by = @operator,
  362. update_time = @now
  363. WHERE del_flag = 0
  364. AND BINARY tenant_no = BINARY 'zkxw'
  365. AND BINARY collection_protocol_id = BINARY 'AAF11BCC7A584B09AFCE17AA8F7B7CD4'
  366. AND BINARY sample_code = BINARY 'ZKZX34001007';
  367. INSERT INTO biz_sample_code_correction_log (
  368. id, reception_source, old_sample_code, new_sample_code, impact_json, reason,
  369. tenant_no, order_num, remark, create_by, create_dept_id, create_time, update_by, update_time, del_flag
  370. ) VALUES (
  371. REPLACE(UUID(), '-', ''),
  372. 'cell_storage', 'ZKZX34001007', 'ZKZX34000842',
  373. JSON_OBJECT('note', 'stepC_deng_1007_to_842'),
  374. '数据修复:邓诗婷协议样本 1007→842',
  375. 'zkxw', 0, 'fix_marina_deng_20261026_stepC',
  376. @operator, '', @now, @operator, @now, 0
  377. );
  378. COMMIT;
  379. /* =============================================================================
  380. 三、执行后校验(期望)
  381. - 马丽娜活跃样本 = 964;质检/生产 sample_code = 964;protocol_sample_id = 马丽娜活跃样本
  382. - 邓诗婷活跃样本 = 842;无 ZJ202610090001 / SC202610090001
  383. - 1007 无活跃协议样本
  384. ============================================================================= */
  385. SELECT '【验1】活跃样本归属' AS step;
  386. SELECT ps.sample_code, cp.protocol_no, ppc.mother_name, ps.id AS protocol_sample_id
  387. FROM biz_protocol_sample ps
  388. JOIN biz_collection_protocol cp ON cp.id = ps.collection_protocol_id
  389. LEFT JOIN biz_protocol_party_customer ppc
  390. ON ppc.collection_protocol_id = ps.collection_protocol_id AND ppc.del_flag = 0
  391. WHERE ps.tenant_no = 'zkxw' AND ps.del_flag = 0
  392. AND ps.sample_code IN ('ZKZX34000842', 'ZKZX34000964', 'ZKZX34001007')
  393. ORDER BY ps.sample_code;
  394. SELECT '【验2】马丽娜下游' AS step;
  395. SELECT 'qc_wo' AS tbl, work_order_no, sample_code, protocol_sample_id, collection_protocol_id, conclusion
  396. FROM biz_qc_work_order
  397. WHERE id = '019FC51312BB4225901014BE90A3AB2E'
  398. UNION ALL
  399. SELECT 'prod_wo', work_order_no, sample_code, protocol_sample_id, collection_protocol_id, work_order_status
  400. FROM biz_production_work_order
  401. WHERE id = '92F20C8B731E474985BB2C6D74A2BA3A'
  402. UNION ALL
  403. SELECT 'reception', id, sample_code, protocol_sample_id, collection_protocol_id, lab_storage_code
  404. FROM biz_sample_reception
  405. WHERE id = '0E69E16E7E9C4B3AA9D894622BBE237B';
  406. SELECT '【验3】三码活跃样本数(期望 842=1, 964=1, 1007=0)' AS step;
  407. SELECT sample_code, COUNT(*) AS cnt
  408. FROM biz_protocol_sample
  409. WHERE tenant_no = 'zkxw' AND del_flag = 0
  410. AND sample_code IN ('ZKZX34000842', 'ZKZX34000964', 'ZKZX34001007')
  411. GROUP BY sample_code;
  412. SELECT '【验4】邓诗婷协议下不应有该质检/生产工单' AS step;
  413. SELECT COUNT(*) AS deng_should_be_0
  414. FROM biz_qc_work_order
  415. WHERE tenant_no = 'zkxw' AND del_flag = 0
  416. AND collection_protocol_id = 'AAF11BCC7A584B09AFCE17AA8F7B7CD4';
  417. SELECT COUNT(*) AS leftover_1007_qc_should_be_0
  418. FROM biz_qc_task
  419. WHERE tenant_no = 'zkxw' AND del_flag = 0 AND sample_code = 'ZKZX34001007';