-- ============================================================ -- 芯导-LIMS 第二批需求 DDL -- ① 样品管理补强:出入库流水 + 状态变更历史 -- ② 实验管理补强:流程节点(SOP) + 资源分配 -- ③ 数据接口管理补强:字段映射 + 调用日志 -- 库:lims-ruoyi -- ============================================================ -- ============================================================ -- ① 样品出入库流水 -- ============================================================ DROP TABLE IF EXISTS `lims_sample_stock_record`; CREATE TABLE `lims_sample_stock_record` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', `sample_id` BIGINT DEFAULT NULL COMMENT '样品ID(lims_sample.id)', `sample_code` VARCHAR(64) DEFAULT NULL COMMENT '样品编号(冗余)', `sample_name` VARCHAR(255) DEFAULT NULL COMMENT '样品名称(冗余)', `record_type` VARCHAR(32) DEFAULT NULL COMMENT '类型(in-入库,out-出库,destroy-销毁,return-退库,transfer-转移)', `quantity` DECIMAL(18,4) DEFAULT NULL COMMENT '数量', `unit` VARCHAR(32) DEFAULT NULL COMMENT '单位', `before_status` VARCHAR(32) DEFAULT NULL COMMENT '操作前状态', `after_status` VARCHAR(32) DEFAULT NULL COMMENT '操作后状态', `from_location` VARCHAR(255) DEFAULT NULL COMMENT '原存储位置', `to_location` VARCHAR(255) DEFAULT NULL COMMENT '去向/新存储位置', `operator` VARCHAR(64) DEFAULT NULL COMMENT '经手人', `operate_time` DATETIME DEFAULT NULL COMMENT '操作时间', `recipient` VARCHAR(64) DEFAULT NULL COMMENT '领用人/接收方', `purpose` VARCHAR(500) DEFAULT NULL COMMENT '用途/出库事由', `related_experiment` VARCHAR(128) DEFAULT NULL COMMENT '关联实验编号', `remark` VARCHAR(1000) DEFAULT NULL COMMENT '备注', `del_flag` CHAR(1) DEFAULT '0' COMMENT '删除标志(0-正常,2-删除)', `tenant_id` BIGINT DEFAULT NULL COMMENT '租户ID', `create_time` DATETIME DEFAULT NULL COMMENT '创建时间', `create_user` INT DEFAULT NULL COMMENT '创建用户', `update_time` DATETIME DEFAULT NULL COMMENT '修改时间', `update_user` INT DEFAULT NULL COMMENT '修改用户', PRIMARY KEY (`id`), KEY `idx_sample_id` (`sample_id`), KEY `idx_operate_time` (`operate_time`), KEY `idx_tenant` (`tenant_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='LIMS-样品出入库流水'; -- ============================================================ -- ① 样品状态变更历史 -- ============================================================ DROP TABLE IF EXISTS `lims_sample_status_log`; CREATE TABLE `lims_sample_status_log` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', `sample_id` BIGINT DEFAULT NULL COMMENT '样品ID', `sample_code` VARCHAR(64) DEFAULT NULL COMMENT '样品编号(冗余)', `from_status` VARCHAR(32) DEFAULT NULL COMMENT '变更前状态', `to_status` VARCHAR(32) DEFAULT NULL COMMENT '变更后状态', `change_reason` VARCHAR(500) DEFAULT NULL COMMENT '变更原因', `operator` VARCHAR(64) DEFAULT NULL COMMENT '操作人', `operate_time` DATETIME DEFAULT NULL COMMENT '操作时间', `remark` VARCHAR(1000) DEFAULT NULL COMMENT '备注', `del_flag` CHAR(1) DEFAULT '0' COMMENT '删除标志(0-正常,2-删除)', `tenant_id` BIGINT DEFAULT NULL COMMENT '租户ID', `create_time` DATETIME DEFAULT NULL COMMENT '创建时间', `create_user` INT DEFAULT NULL COMMENT '创建用户', `update_time` DATETIME DEFAULT NULL COMMENT '修改时间', `update_user` INT DEFAULT NULL COMMENT '修改用户', PRIMARY KEY (`id`), KEY `idx_sample_id` (`sample_id`), KEY `idx_operate_time` (`operate_time`), KEY `idx_tenant` (`tenant_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='LIMS-样品状态变更历史'; -- ============================================================ -- ② 实验流程节点(SOP 步骤) -- ============================================================ DROP TABLE IF EXISTS `lims_experiment_step`; CREATE TABLE `lims_experiment_step` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', `experiment_id` BIGINT DEFAULT NULL COMMENT '实验ID(lims_experiment.id)', `experiment_code` VARCHAR(64) DEFAULT NULL COMMENT '实验编号(冗余)', `step_no` INT DEFAULT NULL COMMENT '步骤序号(从1开始)', `step_name` VARCHAR(255) DEFAULT NULL COMMENT '步骤名称', `step_content` TEXT COMMENT '标准操作内容(SOP)', `expected_duration` INT DEFAULT NULL COMMENT '预计耗时(分钟)', `executor` VARCHAR(64) DEFAULT NULL COMMENT '执行人', `plan_start_time` DATETIME DEFAULT NULL COMMENT '计划开始时间', `plan_end_time` DATETIME DEFAULT NULL COMMENT '计划结束时间', `actual_start_time` DATETIME DEFAULT NULL COMMENT '实际开始时间', `actual_end_time` DATETIME DEFAULT NULL COMMENT '实际结束时间', `step_status` VARCHAR(32) DEFAULT 'pending' COMMENT '状态(pending-待执行,running-执行中,completed-已完成,skipped-已跳过,failed-失败)', `step_result` TEXT COMMENT '执行结果/记录', `remark` VARCHAR(1000) DEFAULT NULL COMMENT '备注', `del_flag` CHAR(1) DEFAULT '0' COMMENT '删除标志(0-正常,2-删除)', `tenant_id` BIGINT DEFAULT NULL COMMENT '租户ID', `create_time` DATETIME DEFAULT NULL COMMENT '创建时间', `create_user` INT DEFAULT NULL COMMENT '创建用户', `update_time` DATETIME DEFAULT NULL COMMENT '修改时间', `update_user` INT DEFAULT NULL COMMENT '修改用户', PRIMARY KEY (`id`), KEY `idx_experiment_id` (`experiment_id`), KEY `idx_tenant` (`tenant_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='LIMS-实验流程节点'; -- ============================================================ -- ② 实验资源分配 -- ============================================================ DROP TABLE IF EXISTS `lims_experiment_resource`; CREATE TABLE `lims_experiment_resource` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', `experiment_id` BIGINT DEFAULT NULL COMMENT '实验ID', `experiment_code` VARCHAR(64) DEFAULT NULL COMMENT '实验编号(冗余)', `resource_type` VARCHAR(32) DEFAULT NULL COMMENT '资源类型(instrument-仪器设备,reagent-试剂耗材,personnel-人员)', `resource_id` BIGINT DEFAULT NULL COMMENT '资源ID(仪器/试剂表主键)', `resource_code` VARCHAR(64) DEFAULT NULL COMMENT '资源编号', `resource_name` VARCHAR(255) DEFAULT NULL COMMENT '资源名称', `quantity` DECIMAL(18,4) DEFAULT NULL COMMENT '数量(试剂消耗量/人员工时)', `unit` VARCHAR(32) DEFAULT NULL COMMENT '单位', `usage_time` VARCHAR(255) DEFAULT NULL COMMENT '使用时段/占用时间', `status` VARCHAR(32) DEFAULT 'planned' COMMENT '状态(planned-已安排,inuse-使用中,returned-已归还,consumed-已消耗)', `remark` VARCHAR(1000) DEFAULT NULL COMMENT '备注', `del_flag` CHAR(1) DEFAULT '0' COMMENT '删除标志(0-正常,2-删除)', `tenant_id` BIGINT DEFAULT NULL COMMENT '租户ID', `create_time` DATETIME DEFAULT NULL COMMENT '创建时间', `create_user` INT DEFAULT NULL COMMENT '创建用户', `update_time` DATETIME DEFAULT NULL COMMENT '修改时间', `update_user` INT DEFAULT NULL COMMENT '修改用户', PRIMARY KEY (`id`), KEY `idx_experiment_id` (`experiment_id`), KEY `idx_tenant` (`tenant_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='LIMS-实验资源分配'; -- ============================================================ -- ③ 接口字段映射 -- ============================================================ DROP TABLE IF EXISTS `lims_interface_field`; CREATE TABLE `lims_interface_field` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', `interface_id` BIGINT DEFAULT NULL COMMENT '接口ID(lims_data_interface.id)', `interface_code` VARCHAR(64) DEFAULT NULL COMMENT '接口编码(冗余)', `source_field` VARCHAR(128) DEFAULT NULL COMMENT '设备返回的字段名(如 temp / data.value)', `source_path` VARCHAR(255) DEFAULT NULL COMMENT 'JSON路径(如 $.data.temperature)', `target_field` VARCHAR(64) DEFAULT NULL COMMENT '目标字段(collectionValue/deviceName/dataType/unit/collectionTime/rawData)', `transform_type` VARCHAR(32) DEFAULT 'none' COMMENT '转换方式(none-直接,multiply-乘以系数,offset-加偏移,divide-除以系数,map-字典映射)', `transform_value` VARCHAR(255) DEFAULT NULL COMMENT '转换参数(系数/偏移/映射表JSON)', `default_value` VARCHAR(255) DEFAULT NULL COMMENT '取不到时的默认值', `sort_no` INT DEFAULT NULL COMMENT '排序', `remark` VARCHAR(500) DEFAULT NULL COMMENT '备注', `del_flag` CHAR(1) DEFAULT '0' COMMENT '删除标志(0-正常,2-删除)', `tenant_id` BIGINT DEFAULT NULL COMMENT '租户ID', `create_time` DATETIME DEFAULT NULL COMMENT '创建时间', `create_user` INT DEFAULT NULL COMMENT '创建用户', `update_time` DATETIME DEFAULT NULL COMMENT '修改时间', `update_user` INT DEFAULT NULL COMMENT '更新用户', PRIMARY KEY (`id`), KEY `idx_interface_id` (`interface_id`), KEY `idx_tenant` (`tenant_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='LIMS-接口字段映射'; -- ============================================================ -- ③ 接口调用日志 -- ============================================================ DROP TABLE IF EXISTS `lims_interface_log`; CREATE TABLE `lims_interface_log` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', `interface_id` BIGINT DEFAULT NULL COMMENT '接口ID', `interface_code` VARCHAR(64) DEFAULT NULL COMMENT '接口编码(冗余)', `interface_name` VARCHAR(255) DEFAULT NULL COMMENT '接口名称(冗余)', `invoke_type` VARCHAR(32) DEFAULT NULL COMMENT '调用方式(test-测试连接,manual-手动采集,auto-定时采集)', `request_data` MEDIUMTEXT COMMENT '请求内容', `response_data` MEDIUMTEXT COMMENT '响应内容', `success` CHAR(1) DEFAULT '0' COMMENT '是否成功(1-成功,0-失败)', `error_msg` VARCHAR(2000) DEFAULT NULL COMMENT '错误信息', `duration_ms` INT DEFAULT NULL COMMENT '耗时(毫秒)', `record_count` INT DEFAULT NULL COMMENT '本次写入采集记录条数', `operator` VARCHAR(64) DEFAULT NULL COMMENT '触发人', `invoke_time` DATETIME DEFAULT NULL COMMENT '调用时间', `del_flag` CHAR(1) DEFAULT '0' COMMENT '删除标志(0-正常,2-删除)', `tenant_id` BIGINT DEFAULT NULL COMMENT '租户ID', `create_time` DATETIME DEFAULT NULL COMMENT '创建时间', `create_user` INT DEFAULT NULL COMMENT '创建用户', `update_time` DATETIME DEFAULT NULL COMMENT '修改时间', `update_user` INT DEFAULT NULL COMMENT '更新用户', PRIMARY KEY (`id`), KEY `idx_interface_id` (`interface_id`), KEY `idx_invoke_time` (`invoke_time`), KEY `idx_tenant` (`tenant_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='LIMS-接口调用日志'; -- ============================================================ -- 校验 -- ============================================================ SELECT table_name, table_comment FROM information_schema.tables WHERE table_schema = 'lims-ruoyi' AND table_name IN ('lims_sample_stock_record','lims_sample_status_log','lims_experiment_step','lims_experiment_resource','lims_interface_field','lims_interface_log') ORDER BY table_name;