diff --git a/docs/sql/production_work_order.sql b/docs/sql/production_work_order.sql new file mode 100644 index 00000000..c7fcd253 --- /dev/null +++ b/docs/sql/production_work_order.sql @@ -0,0 +1,279 @@ +-- ============================================================ +-- 入库生产工单 + 生产任务 + 细胞产品库 DDL +-- 日期: 2026-05-19 +-- 说明: 10 张业务表 + 3 个菜单 +-- ============================================================ + +-- ----------------------------------------------------------- +-- 1. biz_cell_product — 细胞产品库 +-- ----------------------------------------------------------- +CREATE TABLE IF NOT EXISTS `biz_cell_product` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `product_code` varchar(64) NOT NULL COMMENT '产品编码', + `product_name` varchar(200) NOT NULL COMMENT '产品名称', + `product_type_id` varchar(64) DEFAULT NULL COMMENT '细胞产品类型ID', + `spec_id` varchar(64) DEFAULT NULL COMMENT '规格ID', + `batch_no` varchar(64) DEFAULT NULL COMMENT '批次号', + `storage_slot_id` varchar(64) DEFAULT NULL COMMENT '储物格ID', + `product_status` varchar(16) NOT NULL DEFAULT 'zk' COMMENT '状态(zk在库/yc已出库/ysy已使用)', + `source_type` varchar(20) DEFAULT 'production' COMMENT '来源类型(production生产/manual手动录入)', + `production_task_id` varchar(64) DEFAULT NULL COMMENT '来源生产任务ID', + `quantity` decimal(18,4) DEFAULT NULL COMMENT '数量', + `unit` varchar(64) DEFAULT NULL COMMENT '单位', + `expiry_date` datetime DEFAULT NULL COMMENT '有效期', + `product_images` varchar(4000) DEFAULT NULL COMMENT '产品图片URL(逗号分隔)', + `tenant_no` varchar(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` tinyint(4) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_cp_tenant_status` (`tenant_no`,`product_status`,`del_flag`), + KEY `idx_cp_type` (`product_type_id`,`del_flag`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='细胞产品库'; + +-- ----------------------------------------------------------- +-- 2. biz_production_work_order — 入库生产工单 +-- ----------------------------------------------------------- +CREATE TABLE IF NOT EXISTS `biz_production_work_order` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `work_order_no` varchar(32) NOT NULL COMMENT '工单号(前缀SC)', + `reception_id` varchar(64) NOT NULL COMMENT '样本接收记录ID', + `protocol_sample_id` varchar(64) NOT NULL COMMENT '协议样本ID', + `collection_protocol_id` varchar(64) NOT NULL COMMENT '协议单ID', + `protocol_no` varchar(64) DEFAULT NULL COMMENT '协议号快照', + `sample_code` varchar(32) DEFAULT NULL COMMENT '样本编码快照', + `reception_source` varchar(20) NOT NULL DEFAULT 'cell_storage' COMMENT '来源(cell_storage/research_donation)', + `work_order_status` varchar(16) NOT NULL DEFAULT 'dpz' COMMENT '状态(dpz待配置/ywc已完成)', + `tenant_no` varchar(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` tinyint(4) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_pwo_reception` (`reception_id`,`del_flag`), + KEY `idx_pwo_tenant_status` (`tenant_no`,`work_order_status`,`del_flag`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='入库生产工单'; + +-- ----------------------------------------------------------- +-- 3. biz_production_task — 生产任务 +-- ----------------------------------------------------------- +CREATE TABLE IF NOT EXISTS `biz_production_task` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `task_no` varchar(32) NOT NULL COMMENT '任务号(前缀RW)', + `work_order_id` varchar(64) NOT NULL COMMENT '所属工单ID', + `task_name` varchar(200) DEFAULT NULL COMMENT '任务名称', + `description` varchar(500) DEFAULT NULL COMMENT '描述', + `route_id` varchar(64) DEFAULT NULL COMMENT '所选工艺路线ID(仅记录来源)', + `task_status` varchar(16) NOT NULL DEFAULT 'dpz' COMMENT '状态(dpz待配置/jxz进行中/ywc已完成)', + `started_time` datetime DEFAULT NULL COMMENT '开始时间', + `completed_time` datetime DEFAULT NULL COMMENT '完成时间', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `attachments` varchar(4000) DEFAULT NULL COMMENT '附件/图片URL(逗号分隔)', + `tenant_no` varchar(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` tinyint(4) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_pt_wo` (`work_order_id`,`del_flag`), + KEY `idx_pt_tenant_status` (`tenant_no`,`task_status`,`del_flag`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='生产任务'; + +-- ----------------------------------------------------------- +-- 4. biz_production_task_input — 任务输入子表 +-- ----------------------------------------------------------- +CREATE TABLE IF NOT EXISTS `biz_production_task_input` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `task_id` varchar(64) NOT NULL COMMENT '任务ID', + `input_type` varchar(20) NOT NULL COMMENT '类型(sample样本/cell_product细胞产品)', + `input_id` varchar(64) DEFAULT NULL COMMENT '关联ID(样本ID或细胞产品ID)', + `input_code` varchar(64) DEFAULT NULL COMMENT '编码快照', + `input_name` varchar(200) DEFAULT NULL COMMENT '名称快照', + `tenant_no` varchar(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` tinyint(4) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_pti_task` (`task_id`,`del_flag`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='生产任务输入'; + +-- ----------------------------------------------------------- +-- 5. biz_production_task_step — 任务工艺步骤 +-- ----------------------------------------------------------- +CREATE TABLE IF NOT EXISTS `biz_production_task_step` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `task_id` varchar(64) NOT NULL COMMENT '任务ID', + `step_order` int(11) DEFAULT NULL COMMENT '步骤顺序', + `process_code` varchar(64) DEFAULT NULL COMMENT '工序代码', + `category_id` varchar(64) DEFAULT NULL COMMENT '工序分类ID', + `process_name` varchar(100) DEFAULT NULL COMMENT '工序名称', + `description` varchar(500) DEFAULT NULL COMMENT '描述', + `equipment_name` varchar(200) DEFAULT NULL COMMENT '设备名称', + `estimated_duration` varchar(100) DEFAULT NULL COMMENT '预估耗时', + `actual_duration` varchar(100) DEFAULT NULL COMMENT '实际耗时', + `sop_ids` varchar(1000) DEFAULT NULL COMMENT 'SOP文档ID(逗号分隔)', + `step_status` varchar(16) NOT NULL DEFAULT 'dzx' COMMENT '状态(dzx待执行/jxz进行中/ywc已完成)', + `started_time` datetime DEFAULT NULL COMMENT '开始时间', + `completed_time` datetime DEFAULT NULL COMMENT '完成时间', + `tenant_no` varchar(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` tinyint(4) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_pts_task` (`task_id`,`del_flag`), + KEY `idx_pts_tenant` (`tenant_no`,`del_flag`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='生产任务工艺步骤'; + +-- ----------------------------------------------------------- +-- 6. biz_production_task_step_reagent — 步骤试剂 +-- ----------------------------------------------------------- +CREATE TABLE IF NOT EXISTS `biz_production_task_step_reagent` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `step_id` varchar(64) NOT NULL COMMENT '步骤ID', + `reagent_code` varchar(64) DEFAULT NULL COMMENT '试剂编码', + `reagent_name` varchar(100) DEFAULT NULL COMMENT '试剂名称', + `spec` varchar(200) DEFAULT NULL COMMENT '规格', + `standard_usage` varchar(100) DEFAULT NULL COMMENT '标准用量', + `actual_usage` varchar(100) DEFAULT NULL COMMENT '实际用量', + `unit` varchar(64) DEFAULT NULL COMMENT '单位', + `is_key_material` char(1) DEFAULT '0' COMMENT '是否关键物料(0否 1是)', + `tenant_no` varchar(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` tinyint(4) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_ptsr_step` (`step_id`,`del_flag`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='生产任务步骤试剂'; + +-- ----------------------------------------------------------- +-- 7. biz_production_task_step_consumable — 步骤耗材 +-- ----------------------------------------------------------- +CREATE TABLE IF NOT EXISTS `biz_production_task_step_consumable` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `step_id` varchar(64) NOT NULL COMMENT '步骤ID', + `consumable_code` varchar(64) DEFAULT NULL COMMENT '耗材编码', + `consumable_name` varchar(100) DEFAULT NULL COMMENT '耗材名称', + `spec_model` varchar(200) DEFAULT NULL COMMENT '规格型号', + `standard_usage` varchar(100) DEFAULT NULL COMMENT '标准用量', + `actual_usage` varchar(100) DEFAULT NULL COMMENT '实际用量', + `unit` varchar(64) DEFAULT NULL COMMENT '单位', + `is_required` char(1) DEFAULT '1' COMMENT '是否必需(1必须 0可选)', + `tenant_no` varchar(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` tinyint(4) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_ptsc_step` (`step_id`,`del_flag`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='生产任务步骤耗材'; + +-- ----------------------------------------------------------- +-- 8. biz_production_task_step_output — 步骤产出物 +-- ----------------------------------------------------------- +CREATE TABLE IF NOT EXISTS `biz_production_task_step_output` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `step_id` varchar(64) NOT NULL COMMENT '步骤ID', + `output_type_id` varchar(64) DEFAULT NULL COMMENT '产出类型ID', + `output_name` varchar(200) DEFAULT NULL COMMENT '产出物名称', + `output_barcode` varchar(200) DEFAULT NULL COMMENT '实际条码', + `tenant_no` varchar(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` tinyint(4) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_ptso_step` (`step_id`,`del_flag`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='生产任务步骤产出物'; + +-- ----------------------------------------------------------- +-- 9. biz_production_task_step_data_collection — 步骤数据采集 +-- ----------------------------------------------------------- +CREATE TABLE IF NOT EXISTS `biz_production_task_step_data_collection` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `step_id` varchar(64) NOT NULL COMMENT '步骤ID', + `collection_name` varchar(100) DEFAULT NULL COMMENT '采集项名称', + `unit` varchar(64) DEFAULT NULL COMMENT '单位', + `collection_value` varchar(500) DEFAULT NULL COMMENT '填写值', + `tenant_no` varchar(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` tinyint(4) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_ptsdc_step` (`step_id`,`del_flag`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='生产任务步骤数据采集'; + +-- ----------------------------------------------------------- +-- 10. biz_production_task_output — 任务输出 +-- ----------------------------------------------------------- +CREATE TABLE IF NOT EXISTS `biz_production_task_output` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `task_id` varchar(64) NOT NULL COMMENT '任务ID', + `cell_product_id` varchar(64) DEFAULT NULL COMMENT '关联细胞产品ID', + `storage_slot_id` varchar(64) DEFAULT NULL COMMENT '储物格ID', + `output_name` varchar(200) DEFAULT NULL COMMENT '产出物名称', + `output_barcode` varchar(200) DEFAULT NULL COMMENT '产出物条码', + `quantity` decimal(18,4) DEFAULT NULL COMMENT '数量', + `unit` varchar(64) DEFAULT NULL COMMENT '单位', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `attachments` varchar(4000) DEFAULT NULL COMMENT '图片URL(逗号分隔)', + `tenant_no` varchar(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` tinyint(4) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_pto_task` (`task_id`,`del_flag`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='生产任务输出'; + +-- ----------------------------------------------------------- +-- 菜单: 生产管理下新增 3 个二级菜单 +-- 父菜单ID: 90000000000000000000000000000001 (生产管理) +-- ----------------------------------------------------------- +INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('90000000000000000000000000000011', '入库生产工单', '90000000000000000000000000000001', 'C', 'work-order', '/production/production-work-order/index', 'production:work-order:list', 1, '1', '1', 'zkxw', 9, NULL, NULL, '', '2026-05-19 00:00:00', NULL, '2026-05-19 00:00:00', 0); + +INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('90000000000000000000000000000012', '生产任务', '90000000000000000000000000000001', 'C', 'task', '/production/production-task/index', 'production:task:list', 1, '1', '1', 'zkxw', 10, NULL, NULL, '', '2026-05-19 00:00:00', NULL, '2026-05-19 00:00:00', 0); + +INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('90000000000000000000000000000013', '细胞产品库', '90000000000000000000000000000001', 'C', 'cell-product', '/production/cell-product/index', 'production:cell-product:list', 1, '1', '1', 'zkxw', 11, NULL, NULL, '', '2026-05-19 00:00:00', NULL, '2026-05-19 00:00:00', 0);