样本接收 UC… 此前无内置匹配规则导致工单空任务;新增 5 步原代培养模版与回补脚本,且不影响 BC 六步模版。 Co-authored-by: Cursor <cursoragent@cursor.com>
264 lines
9.6 KiB
SQL
264 lines
9.6 KiB
SQL
-- UC 入库编码自动派发:脐带MSC原代培养(内置模版)5 步
|
|
-- 步骤:原代培养 → 半换液 → 二次贴壁 → 重铺 → 冻存(不含传代)
|
|
-- 内容从既有「干细胞培养(内置模版)」/ MSC培养-BUILTIN 按 process_code 拷贝
|
|
-- 幂等:已存在同名内置集合则跳过主数据创建-- 生产历史空任务工单请用:
|
|
-- cd backend && python -m scripts.backfill_uc_msc_production_tasks --dry-run
|
|
-- cd backend && python -m scripts.backfill_uc_msc_production_tasks --apply
|
|
|
|
SET NAMES utf8mb4;
|
|
|
|
-- 1) 工艺路线头
|
|
INSERT INTO biz_process_route (
|
|
id, route_code, route_name, product_type_id, version, is_current,
|
|
equipment_ids, equipment_name, tenant_no, order_num, remark, is_builtin,
|
|
create_by, create_dept_id, create_time, update_by, update_time, del_flag
|
|
)
|
|
SELECT
|
|
'UCMSCROUTEA5CC11F194118AC54085447A',
|
|
'MSC原代-UC-BUILTIN',
|
|
'脐带MSC原代培养(内置模版)',
|
|
src.product_type_id,
|
|
src.version,
|
|
'0',
|
|
src.equipment_ids,
|
|
src.equipment_name,
|
|
src.tenant_no,
|
|
0,
|
|
'内置模版:UC 入库编码自动派发(5 步,不含传代)',
|
|
'1',
|
|
src.create_by,
|
|
IFNULL(src.create_dept_id, ''),
|
|
NOW(),
|
|
src.update_by,
|
|
NOW(),
|
|
0
|
|
FROM biz_process_route src
|
|
WHERE src.del_flag = 0
|
|
AND (
|
|
src.route_code = 'MSC培养-BUILTIN'
|
|
OR (src.route_name = '干细胞培养(内置模版)' AND src.is_builtin = '1')
|
|
)
|
|
AND NOT EXISTS (
|
|
SELECT 1 FROM biz_process_route x
|
|
WHERE x.id = 'UCMSCROUTEA5CC11F194118AC54085447A' AND x.del_flag = 0
|
|
)
|
|
AND NOT EXISTS (
|
|
SELECT 1 FROM biz_process_route x
|
|
WHERE x.tenant_no = src.tenant_no
|
|
AND x.route_code = 'MSC原代-UC-BUILTIN'
|
|
AND x.del_flag = 0
|
|
)
|
|
ORDER BY CASE WHEN src.route_code = 'MSC培养-BUILTIN' THEN 0 ELSE 1 END
|
|
LIMIT 1;
|
|
|
|
-- 2) 路线步骤(按目标顺序)
|
|
-- step 1 SOP-SC-003
|
|
INSERT INTO biz_process_route_step (
|
|
id, route_id, process_id, step_order, process_code, category_id, process_name,
|
|
description, equipment_ids, equipment_name, estimated_duration, sop_ids, sop_content,
|
|
tenant_no, order_num, remark, create_by, create_dept_id, create_time, update_by, update_time, del_flag
|
|
)
|
|
SELECT
|
|
'UCMSCSTEP1A5CC11F194118AC54085447A',
|
|
'UCMSCROUTEA5CC11F194118AC54085447A',
|
|
s.process_id, 1, s.process_code, s.category_id, s.process_name,
|
|
s.description, s.equipment_ids, s.equipment_name, s.estimated_duration, s.sop_ids, s.sop_content,
|
|
s.tenant_no, 1, s.remark, s.create_by, IFNULL(s.create_dept_id, ''), NOW(), s.update_by, NOW(), 0
|
|
FROM biz_process_route_step s
|
|
JOIN biz_process_route r ON r.id = s.route_id AND r.del_flag = 0
|
|
WHERE s.del_flag = 0
|
|
AND s.process_code = 'SOP-SC-003-E01-01'
|
|
AND (
|
|
r.route_code = 'MSC培养-BUILTIN'
|
|
OR (r.route_name = '干细胞培养(内置模版)' AND r.is_builtin = '1')
|
|
)
|
|
AND EXISTS (
|
|
SELECT 1 FROM biz_process_route nr
|
|
WHERE nr.id = 'UCMSCROUTEA5CC11F194118AC54085447A' AND nr.del_flag = 0
|
|
)
|
|
AND NOT EXISTS (
|
|
SELECT 1 FROM biz_process_route_step x
|
|
WHERE x.id = 'UCMSCSTEP1A5CC11F194118AC54085447A' AND x.del_flag = 0
|
|
)
|
|
LIMIT 1;
|
|
|
|
-- step 2 SOP-SC-004
|
|
INSERT INTO biz_process_route_step (
|
|
id, route_id, process_id, step_order, process_code, category_id, process_name,
|
|
description, equipment_ids, equipment_name, estimated_duration, sop_ids, sop_content,
|
|
tenant_no, order_num, remark, create_by, create_dept_id, create_time, update_by, update_time, del_flag
|
|
)
|
|
SELECT
|
|
'UCMSCSTEP2A5CC11F194118AC54085447A',
|
|
'UCMSCROUTEA5CC11F194118AC54085447A',
|
|
s.process_id, 2, s.process_code, s.category_id, s.process_name,
|
|
s.description, s.equipment_ids, s.equipment_name, s.estimated_duration, s.sop_ids, s.sop_content,
|
|
s.tenant_no, 2, s.remark, s.create_by, IFNULL(s.create_dept_id, ''), NOW(), s.update_by, NOW(), 0
|
|
FROM biz_process_route_step s
|
|
JOIN biz_process_route r ON r.id = s.route_id AND r.del_flag = 0
|
|
WHERE s.del_flag = 0
|
|
AND s.process_code = 'SOP-SC-004-E01-01'
|
|
AND (
|
|
r.route_code = 'MSC培养-BUILTIN'
|
|
OR (r.route_name = '干细胞培养(内置模版)' AND r.is_builtin = '1')
|
|
)
|
|
AND EXISTS (
|
|
SELECT 1 FROM biz_process_route nr
|
|
WHERE nr.id = 'UCMSCROUTEA5CC11F194118AC54085447A' AND nr.del_flag = 0
|
|
)
|
|
AND NOT EXISTS (
|
|
SELECT 1 FROM biz_process_route_step x
|
|
WHERE x.id = 'UCMSCSTEP2A5CC11F194118AC54085447A' AND x.del_flag = 0
|
|
)
|
|
LIMIT 1;
|
|
|
|
-- step 3 SOP-SC-006 二次贴壁
|
|
INSERT INTO biz_process_route_step (
|
|
id, route_id, process_id, step_order, process_code, category_id, process_name,
|
|
description, equipment_ids, equipment_name, estimated_duration, sop_ids, sop_content,
|
|
tenant_no, order_num, remark, create_by, create_dept_id, create_time, update_by, update_time, del_flag
|
|
)
|
|
SELECT
|
|
'UCMSCSTEP3A5CC11F194118AC54085447A',
|
|
'UCMSCROUTEA5CC11F194118AC54085447A',
|
|
s.process_id, 3, s.process_code, s.category_id, s.process_name,
|
|
s.description, s.equipment_ids, s.equipment_name, s.estimated_duration, s.sop_ids, s.sop_content,
|
|
s.tenant_no, 3, s.remark, s.create_by, IFNULL(s.create_dept_id, ''), NOW(), s.update_by, NOW(), 0
|
|
FROM biz_process_route_step s
|
|
JOIN biz_process_route r ON r.id = s.route_id AND r.del_flag = 0
|
|
WHERE s.del_flag = 0
|
|
AND s.process_code = 'SOP-SC-006-E01-01'
|
|
AND (
|
|
r.route_code = 'MSC培养-BUILTIN'
|
|
OR (r.route_name = '干细胞培养(内置模版)' AND r.is_builtin = '1')
|
|
)
|
|
AND EXISTS (
|
|
SELECT 1 FROM biz_process_route nr
|
|
WHERE nr.id = 'UCMSCROUTEA5CC11F194118AC54085447A' AND nr.del_flag = 0
|
|
)
|
|
AND NOT EXISTS (
|
|
SELECT 1 FROM biz_process_route_step x
|
|
WHERE x.id = 'UCMSCSTEP3A5CC11F194118AC54085447A' AND x.del_flag = 0
|
|
)
|
|
LIMIT 1;
|
|
|
|
-- step 4 SOP-SC-005 重铺
|
|
INSERT INTO biz_process_route_step (
|
|
id, route_id, process_id, step_order, process_code, category_id, process_name,
|
|
description, equipment_ids, equipment_name, estimated_duration, sop_ids, sop_content,
|
|
tenant_no, order_num, remark, create_by, create_dept_id, create_time, update_by, update_time, del_flag
|
|
)
|
|
SELECT
|
|
'UCMSCSTEP4A5CC11F194118AC54085447A',
|
|
'UCMSCROUTEA5CC11F194118AC54085447A',
|
|
s.process_id, 4, s.process_code, s.category_id, s.process_name,
|
|
s.description, s.equipment_ids, s.equipment_name, s.estimated_duration, s.sop_ids, s.sop_content,
|
|
s.tenant_no, 4, s.remark, s.create_by, IFNULL(s.create_dept_id, ''), NOW(), s.update_by, NOW(), 0
|
|
FROM biz_process_route_step s
|
|
JOIN biz_process_route r ON r.id = s.route_id AND r.del_flag = 0
|
|
WHERE s.del_flag = 0
|
|
AND s.process_code = 'SOP-SC-005-E01-01'
|
|
AND (
|
|
r.route_code = 'MSC培养-BUILTIN'
|
|
OR (r.route_name = '干细胞培养(内置模版)' AND r.is_builtin = '1')
|
|
)
|
|
AND EXISTS (
|
|
SELECT 1 FROM biz_process_route nr
|
|
WHERE nr.id = 'UCMSCROUTEA5CC11F194118AC54085447A' AND nr.del_flag = 0
|
|
)
|
|
AND NOT EXISTS (
|
|
SELECT 1 FROM biz_process_route_step x
|
|
WHERE x.id = 'UCMSCSTEP4A5CC11F194118AC54085447A' AND x.del_flag = 0
|
|
)
|
|
LIMIT 1;
|
|
|
|
-- step 5 SOP-SC-008 冻存
|
|
INSERT INTO biz_process_route_step (
|
|
id, route_id, process_id, step_order, process_code, category_id, process_name,
|
|
description, equipment_ids, equipment_name, estimated_duration, sop_ids, sop_content,
|
|
tenant_no, order_num, remark, create_by, create_dept_id, create_time, update_by, update_time, del_flag
|
|
)
|
|
SELECT
|
|
'UCMSCSTEP5A5CC11F194118AC54085447A',
|
|
'UCMSCROUTEA5CC11F194118AC54085447A',
|
|
s.process_id, 5, s.process_code, s.category_id, s.process_name,
|
|
s.description, s.equipment_ids, s.equipment_name, s.estimated_duration, s.sop_ids, s.sop_content,
|
|
s.tenant_no, 5, s.remark, s.create_by, IFNULL(s.create_dept_id, ''), NOW(), s.update_by, NOW(), 0
|
|
FROM biz_process_route_step s
|
|
JOIN biz_process_route r ON r.id = s.route_id AND r.del_flag = 0
|
|
WHERE s.del_flag = 0
|
|
AND s.process_code = 'SOP-SC-008-E01-01'
|
|
AND (
|
|
r.route_code = 'MSC培养-BUILTIN'
|
|
OR (r.route_name = '干细胞培养(内置模版)' AND r.is_builtin = '1')
|
|
)
|
|
AND EXISTS (
|
|
SELECT 1 FROM biz_process_route nr
|
|
WHERE nr.id = 'UCMSCROUTEA5CC11F194118AC54085447A' AND nr.del_flag = 0
|
|
)
|
|
AND NOT EXISTS (
|
|
SELECT 1 FROM biz_process_route_step x
|
|
WHERE x.id = 'UCMSCSTEP5A5CC11F194118AC54085447A' AND x.del_flag = 0
|
|
)
|
|
LIMIT 1;
|
|
|
|
-- 3) 任务组合头
|
|
INSERT INTO biz_production_task_set (
|
|
id, set_name, status, tenant_no, order_num, remark, is_builtin,
|
|
create_by, create_dept_id, create_time, update_by, update_time, del_flag
|
|
)
|
|
SELECT
|
|
'UCMSCSET00A5CC11F194118AC54085447A',
|
|
'脐带MSC原代培养(内置模版)',
|
|
'1',
|
|
r.tenant_no,
|
|
0,
|
|
'内置模版:UC 入库编码自动派发',
|
|
'1',
|
|
r.create_by,
|
|
IFNULL(r.create_dept_id, ''),
|
|
NOW(),
|
|
r.update_by,
|
|
NOW(),
|
|
0
|
|
FROM biz_process_route r
|
|
WHERE r.id = 'UCMSCROUTEA5CC11F194118AC54085447A'
|
|
AND r.del_flag = 0
|
|
AND NOT EXISTS (
|
|
SELECT 1 FROM biz_production_task_set x
|
|
WHERE x.tenant_no = r.tenant_no
|
|
AND x.set_name = '脐带MSC原代培养(内置模版)'
|
|
AND x.is_builtin = '1'
|
|
AND x.del_flag = 0
|
|
);
|
|
|
|
-- 4) 任务组合条目
|
|
INSERT INTO biz_production_task_set_item (
|
|
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
|
|
)
|
|
SELECT
|
|
'UCMSCITEM0A5CC11F194118AC54085447A',
|
|
s.id,
|
|
'{lab_storage_code}样本处理',
|
|
'UCMSCROUTEA5CC11F194118AC54085447A',
|
|
'脐带MSC原代培养(内置模版)',
|
|
'脐带MSC原代培养(内置模版)',
|
|
NULL,
|
|
s.tenant_no,
|
|
1,
|
|
s.create_by,
|
|
IFNULL(s.create_dept_id, ''),
|
|
NOW(),
|
|
s.update_by,
|
|
NOW(),
|
|
0
|
|
FROM biz_production_task_set s
|
|
WHERE s.set_name = '脐带MSC原代培养(内置模版)'
|
|
AND s.is_builtin = '1'
|
|
AND s.del_flag = 0
|
|
AND NOT EXISTS (
|
|
SELECT 1 FROM biz_production_task_set_item x
|
|
WHERE x.set_id = s.id AND x.del_flag = 0
|
|
);
|