51 lines
2.1 KiB
Markdown
51 lines
2.1 KiB
Markdown
# 04 Germplasm / Seed - cross_entity 表录入说明
|
||
|
||
来源:`docs/architecture/04-germplasm-seed-data-flow.md`
|
||
|
||
## 录入目标
|
||
|
||
`cross_entity` 是 Cross 和 PlannedCross 的统一落库表。`plannedcross` 不是独立数据库表,计划杂交通过 `planned=true` 表达;实际杂交可以通过 `planned_cross_id` 关联计划杂交。
|
||
|
||
## 上下游关系
|
||
|
||
| 类型 | 内容 |
|
||
| --- | --- |
|
||
| 表 | `cross_entity` |
|
||
| Java 实体 | `CrossEntity` |
|
||
| 前置依赖 | `crossing_project`,可选自关联 `cross_entity` |
|
||
| 下游引用 | `cross_parent`、`cross_pollination_event`、`seed_lot_content_mixture` |
|
||
| API | `/brapi/v2/crosses`、`/brapi/v2/plannedcrosses` |
|
||
|
||
## 字段录入
|
||
|
||
| 字段 | 业务意义 | 录入方式 | 校验规则 |
|
||
| --- | --- | --- | --- |
|
||
| `id` | cross 主键 | 系统生成;导入可指定 | 必填、唯一 |
|
||
| `auth_user_id` | 数据所属用户 | 登录上下文自动写入 | 不允许前端手填 |
|
||
| `name` | cross 名称 | 用户录入/自动生成 | 建议必填 |
|
||
| `cross_type` | 杂交类型 | 枚举选择 | 可选 |
|
||
| `crossing_project_id` | 所属 crossing project | CrossingProject 选择器 | 建议必选,若填需存在 |
|
||
| `status` | planned cross 状态 | 枚举选择 | 计划杂交常用 |
|
||
| `planned` | 是否为计划杂交 | 开关 | 必填,默认 false |
|
||
| `planned_cross_id` | 关联计划杂交 | Cross 选择器 | 可选,必须指向 `planned=true` 的 cross |
|
||
|
||
## 附属集合字段
|
||
|
||
| 附属表 | 内容 |
|
||
| --- | --- |
|
||
| `cross_entity_cross_attributes` | crossAttributes 列表 |
|
||
| `cross_parent` | cross 的亲本 |
|
||
| `cross_pollination_event` | 授粉事件 |
|
||
|
||
## 页面与交互
|
||
|
||
- Cross 列表页展示实际杂交;PlannedCross 列表页展示 `planned=true` 数据。
|
||
- 新建实际 cross 时可选择 planned cross,并继承 planned cross 的亲本作为初始值。
|
||
- 详情页展示 parents、pollination events 和 seed lot 组成入口。
|
||
|
||
## 关键校验
|
||
|
||
1. `plannedcross` 不新建表,所有 planned cross 走 `cross_entity`。
|
||
2. `planned_cross_id` 不能指向自己。
|
||
3. 删除 cross 前检查 `cross_parent`、`cross_pollination_event`、`seed_lot_content_mixture` 引用。
|