zlwu 1 ماه پیش
والد
کامیت
03226cac2a

+ 64 - 6
docs/sql/2026-09-01-process-route-builtin-templates.sql

@@ -8,6 +8,53 @@
 --   干细胞培养 / MSC培养           → 干细胞培养(内置模版) / MSC培养-BUILTIN
 --   UBMC冻存 / UBMC冻存            → UBMC冻存(内置模版) / UBMC冻存-BUILTIN
 --   PBMC冻存 / PBMC冻存            → PBMC冻存(内置模版) / PBMC冻存-BUILTIN
+--
+-- ID 生成说明:
+--   MySQL UUID() 在同一微秒批量 INSERT…SELECT 时可能撞主键。
+--   新 id = UPPER(MD5(CONCAT(UUID(), 源行主键, RAND(), CONNECTION_ID()))),保证逐行唯一。
+--
+-- ---------------------------------------------------------------------------
+-- 若上次执行报 Duplicate entry … PRIMARY,先做半截数据清理再重跑本脚本:
+--
+-- -- 1) 查看已写入的 BUILTIN
+-- SELECT id, route_code, route_name, is_builtin, tenant_no, create_time
+-- FROM biz_process_route
+-- WHERE route_code LIKE '%-BUILTIN' AND del_flag = 0;
+--
+-- -- 2) 软删半截内置路线及其步骤/子表(仅清理本次模版种子,不动源路线)
+-- UPDATE biz_process_route_step_data_collection d
+--   INNER JOIN biz_process_route_step s ON s.id = d.step_id
+--   INNER JOIN biz_process_route r ON r.id = s.route_id
+-- SET d.del_flag = 1, d.update_time = NOW()
+-- WHERE r.route_code LIKE '%-BUILTIN' AND r.del_flag = 0 AND d.del_flag = 0;
+--
+-- UPDATE biz_process_route_step_output o
+--   INNER JOIN biz_process_route_step s ON s.id = o.step_id
+--   INNER JOIN biz_process_route r ON r.id = s.route_id
+-- SET o.del_flag = 1, o.update_time = NOW()
+-- WHERE r.route_code LIKE '%-BUILTIN' AND r.del_flag = 0 AND o.del_flag = 0;
+--
+-- UPDATE biz_process_route_step_consumable c
+--   INNER JOIN biz_process_route_step s ON s.id = c.step_id
+--   INNER JOIN biz_process_route r ON r.id = s.route_id
+-- SET c.del_flag = 1, c.update_time = NOW()
+-- WHERE r.route_code LIKE '%-BUILTIN' AND r.del_flag = 0 AND c.del_flag = 0;
+--
+-- UPDATE biz_process_route_step_reagent g
+--   INNER JOIN biz_process_route_step s ON s.id = g.step_id
+--   INNER JOIN biz_process_route r ON r.id = s.route_id
+-- SET g.del_flag = 1, g.update_time = NOW()
+-- WHERE r.route_code LIKE '%-BUILTIN' AND r.del_flag = 0 AND g.del_flag = 0;
+--
+-- UPDATE biz_process_route_step s
+--   INNER JOIN biz_process_route r ON r.id = s.route_id
+-- SET s.del_flag = 1, s.update_time = NOW()
+-- WHERE r.route_code LIKE '%-BUILTIN' AND r.del_flag = 0 AND s.del_flag = 0;
+--
+-- UPDATE biz_process_route
+-- SET del_flag = 1, update_time = NOW()
+-- WHERE route_code LIKE '%-BUILTIN' AND del_flag = 0;
+-- ---------------------------------------------------------------------------
 
 DELIMITER $$
 
@@ -49,6 +96,11 @@ BEGIN
     );
 
   DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_done = 1;
+  DECLARE EXIT HANDLER FOR SQLEXCEPTION
+  BEGIN
+    ROLLBACK;
+    RESIGNAL;
+  END;
 
   OPEN cur;
   read_loop: LOOP
@@ -57,7 +109,9 @@ BEGIN
       LEAVE read_loop;
     END IF;
 
-    SET v_new_route_id = UPPER(REPLACE(UUID(), '-', ''));
+    START TRANSACTION;
+
+    SET v_new_route_id = UPPER(MD5(CONCAT(UUID(), v_src_id, RAND(), CONNECTION_ID())));
 
     INSERT INTO biz_process_route (
       id, route_code, route_name, product_type_id, version, is_current,
@@ -93,7 +147,9 @@ BEGIN
     );
 
     INSERT INTO tmp_step_id_map (old_id, new_id)
-    SELECT id, UPPER(REPLACE(UUID(), '-', ''))
+    SELECT
+      id,
+      UPPER(MD5(CONCAT(UUID(), id, RAND(), CONNECTION_ID())))
     FROM biz_process_route_step
     WHERE route_id = v_src_id
       AND del_flag = 0;
@@ -134,7 +190,7 @@ BEGIN
       tenant_no, order_num, remark, create_by, create_dept_id, create_time, update_by, update_time, del_flag
     )
     SELECT
-      UPPER(REPLACE(UUID(), '-', '')),
+      UPPER(MD5(CONCAT(UUID(), r.id, RAND(), CONNECTION_ID()))),
       m.new_id,
       r.reagent_code,
       r.reagent_name,
@@ -160,7 +216,7 @@ BEGIN
       remark, tenant_no, order_num, create_by, create_dept_id, create_time, update_by, update_time, del_flag
     )
     SELECT
-      UPPER(REPLACE(UUID(), '-', '')),
+      UPPER(MD5(CONCAT(UUID(), c.id, RAND(), CONNECTION_ID()))),
       m.new_id,
       c.consumable_code,
       c.consumable_name,
@@ -186,7 +242,7 @@ BEGIN
       tenant_no, order_num, remark, create_by, create_dept_id, create_time, update_by, update_time, del_flag
     )
     SELECT
-      UPPER(REPLACE(UUID(), '-', '')),
+      UPPER(MD5(CONCAT(UUID(), o.id, RAND(), CONNECTION_ID()))),
       m.new_id,
       o.output_type_id,
       o.output_name,
@@ -209,7 +265,7 @@ BEGIN
       tenant_no, order_num, remark, create_by, create_dept_id, create_time, update_by, update_time, del_flag
     )
     SELECT
-      UPPER(REPLACE(UUID(), '-', '')),
+      UPPER(MD5(CONCAT(UUID(), d.id, RAND(), CONNECTION_ID()))),
       m.new_id,
       d.collection_name,
       d.unit,
@@ -227,6 +283,8 @@ BEGIN
     WHERE d.del_flag = 0;
 
     DROP TEMPORARY TABLE IF EXISTS tmp_step_id_map;
+
+    COMMIT;
   END LOOP;
   CLOSE cur;
 END$$

+ 3 - 2
docs/sql/2026-09-01-production-task-set-builtin-templates.sql

@@ -62,7 +62,8 @@ BEGIN
       LEAVE read_loop;
     END IF;
 
-    SET v_set_id = UPPER(REPLACE(UUID(), '-', ''));
+    -- MD5+源键,避免 UUID() 同微秒撞主键
+    SET v_set_id = UPPER(MD5(CONCAT(UUID(), v_route_id, RAND(), CONNECTION_ID())));
 
     INSERT INTO biz_production_task_set (
       id, set_name, status, tenant_no, order_num, remark, is_builtin,
@@ -87,7 +88,7 @@ BEGIN
       id, set_id, task_name, route_id, route_name, description, remark,
       tenant_no, order_num, create_by, create_dept_id, create_time, update_by, update_time, del_flag
     ) VALUES (
-      UPPER(REPLACE(UUID(), '-', '')),
+      UPPER(MD5(CONCAT(UUID(), v_set_id, RAND(), CONNECTION_ID()))),
       v_set_id,
       '{lab_storage_code}样本处理',
       v_route_id,

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 37060
docs/sql/zkxw.sql


+ 2 - 2
web-admin/graphify-out/manifest.json

@@ -17,8 +17,8 @@
   "/Users/wuzilong/work/00code/zkxw/web-admin/src/types/common/index.ts": 1781272556.3597305,
   "/Users/wuzilong/work/00code/zkxw/web-admin/src/types/directive/directive.d.ts": 1781272556.3601494,
   "/Users/wuzilong/work/00code/zkxw/web-admin/src/types/api/api.d.ts": 1781272556.3606477,
-  "/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/components.d.ts": 1788232429.9197905,
-  "/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/auto-imports.d.ts": 1788232408.5043263,
+  "/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/components.d.ts": 1788241174.6302824,
+  "/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/auto-imports.d.ts": 1788240836.7643497,
   "/Users/wuzilong/work/00code/zkxw/web-admin/src/types/store/index.ts": 1787887312.735774,
   "/Users/wuzilong/work/00code/zkxw/web-admin/src/types/router/index.ts": 1787887320.8486114,
   "/Users/wuzilong/work/00code/zkxw/web-admin/src/composables/useAttachmentActions.ts": 1788162977.6691713,

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است