-- ============================================================
|
-- 芯导-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;
|