云
2026-10-30 4271b1bf63ec4740b2a96a7ab727a21ca97cb7af
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
-- ============================================================
-- 芯导-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;