# 04 Germplasm / Seed - seed_lot_transaction 表录入说明 来源:`docs/architecture/04-germplasm-seed-data-flow.md` ## 录入目标 `seed_lot_transaction` 记录 seed lot 之间的库存流转,例如入库、出库、转移、分装、合并或消耗。它表达 from seed lot 到 to seed lot 的数量变化。 ## 上下游关系 | 类型 | 内容 | | --- | --- | | 表 | `seed_lot_transaction` | | Java 实体 | `SeedLotTransactionEntity` | | 前置依赖 | `from_seed_lot`、`to_seed_lot` | | 下游引用 | 库存追踪、库存数量更新 | | API | `/brapi/v2/seedlots/transactions`、`/brapi/v2/seedlots/{seedLotDbId}/transactions` | ## 字段录入 | 字段 | 业务意义 | 录入方式 | 校验规则 | | --- | --- | --- | --- | | `id` | transaction 主键 | 系统生成;导入可指定 | 必填、唯一 | | `auth_user_id` | 数据所属用户 | 登录上下文自动写入 | 不允许前端手填 | | `from_seed_lot_id` | 来源 seed lot | SeedLot 选择器 | 入库场景可为空,若填需存在 | | `to_seed_lot_id` | 目标 seed lot | SeedLot 选择器 | 出库/消耗场景可为空,若填需存在 | | `amount` | 流转数量 | 数字输入 | 必填,正数 | | `units` | 数量单位 | 下拉/文本 | 必填,应与批次单位一致或可换算 | | `timestamp` | 流转时间 | 日期时间选择器 | 默认当前时间 | | `description` | 流转说明 | 多行文本 | 可选 | ## 页面与交互 - 在 SeedLot 详情页 Transactions Tab 展示相关流转。 - 新增交易后应更新 from/to seed lot 的 amount 和 last_updated。 - 支持按时间、from/to seed lot、program、location 查询。 ## 关键校验 1. `from_seed_lot_id` 和 `to_seed_lot_id` 至少填写一个。 2. `from_seed_lot_id` 不能等于 `to_seed_lot_id`。 3. 出库或转移时,来源批次数量不能被扣成负数。 4. transaction 是业务动作痕迹,原则上不允许随意物理删除。 --- **状态:已完成**(与第二章 `02-germplasm-seed/12-seed_lot_transaction.md` 共用实现,页面:`germplasm/seed-lot` → 库存交易 Tab;`germplasm/seed-lot/[seedLotDbId]` → Transactions Tab)