市场进栏登记 — 功能需求
1. 文档说明
| 项 |
说明 |
| 模块名称 |
市场进栏登记(交易市场平台) |
| 目标 |
登记牲畜进入市场栏位的时间、栏位、供应商、耳标与头数,形成可查询、可维护的进栏台账 |
| 依据 |
同目录 市场进栏登记-草稿.md、界面原型 Snipaste_2026-05-22_10-29-24.jpg |
| 范围 |
仅功能与业务规则;不含库表、接口、报文、技术栈 |
1.1 谁在什么场景使用
| 角色 |
场景 |
| 交易市场运营人员 |
日常登记进栏、查询历史、修正错误、删除无效记录 |
| 系统管理员 |
配置菜单与操作权限 |
进入 「市场进栏登记」 后,默认打开进栏记录列表。
1.2 与上下游的关系(业务视角)
供应商管理、市场栏位管理 ──► 主数据(选供应商、选栏位)
入场隔离登记 ──────────────► 提供「该供应商曾登记过哪些耳标」
隔离巡查登记 ──────────────► 提供「哪些耳标已按病死/病害处理,须剔除」
市场进栏登记(本模块) ────► 记录「哪些耳标已进入哪个市场栏位」
2. 核心业务概念
2.1 一条进栏记录表示什么
一次进栏事件:在进栏时间,某供应商的一批牲畜(用多个耳标号标识)进入某个市场栏位。
| 信息项 |
说明 |
| 进栏时间 |
何时进栏 |
| 栏位编号 |
进哪个市场栏位(如 01) |
| 供应商 |
哪一家供货 |
| 耳标号 |
本批每一头牲畜的标识,至少 1 个 |
| 数量(头) |
本批共几头,必须等于耳标个数 |
2.2 记录状态
| 状态 |
用户可见 |
业务含义 |
| 有效 |
列表中展示 |
参与「耳标是否已被进栏占用」判断 |
| 已删除 |
列表中不展示 |
数据保留备查;占用的耳标释放,可再次被选用 |
删除指业务上的作废,非物理抹除;本期无回收站。
3. 字段与录入规则
3.1 进栏时间
- 必填;
YYYY-MM-DD HH:mm:ss。
- 新增默认当前时间,可改。
- 不得晚于当前时间;可填当前或更早时间(允许补录)。
- 列表按「进栏日期」筛选时,取本字段的日期部分。
3.2 栏位编号
- 必填;下拉单选,不可手输。
- 仅能选 市场栏位管理 中仍有效的栏位。
- 栏位作废后:历史进栏仍可查;新登记、修改不能再选该栏位。
3.3 供应商
- 必填;登记表单中可按名称模糊搜索后选定一条。
- 仅能选 供应商管理 中仍有效的供应商。
- 列表筛选为下拉精确匹配(选中某供应商则只查该家的进栏记录)。
3.4 耳标号
- 必填;多选(下拉或标签形式),至少 1 个。
- 须先选供应商再选耳标;未选供应商时耳标不可选或为空。
- 更换供应商时,已选耳标全部清空,按新供应商重新加载可选项。
- 同一条记录内不得重复选择同一耳标。
- 耳标号书写规则与 入场隔离登记 一致(单段 1~32 字符等)。
3.5 数量(头)
- 必填;正整数;单位「头」。
- 只读或自动带出:数量 = 当前勾选的耳标个数。
- 用户不能把数量改成与耳标数不一致。
- 增删耳标时,数量即时联动。
4. 可选耳标如何产生(草稿核心规则)
原型要求:「该供应商下未病死、未病害的耳标号」。由入场隔离(按供应商)与隔离巡查(全表病死病害)两步得出候选耳标;用户选定供应商后按下述规则计算(入场隔离须满足 §4.1;巡查、进栏记录须为未删除的有效记录):
| 场景 |
计算结果 |
| 下拉可选耳标(选供应商后加载) |
A − B(§4.1、§4.2) |
| 保存时最终可选 |
(A − B)− C(§4.3 占用校验,含编辑释放本条) |
4.1 第一步:按供应商汇总入场隔离耳标
在 入场隔离登记 中按口径筛选记录,汇总主表总耳标并去重,得到集合 A。若 A 为空,可选列表为空,提示用户确认该供应商是否存在已隔离结束的入场隔离登记。
业务口径(已确认)
| 序号 |
口径 |
说明 |
| ① |
只取主表总耳标 |
仅使用入场隔离登记主表的总耳标号集合(多个耳标以逗号等方式存放的须拆分汇总);不包含分圈明细中的耳标 |
| ② |
按供应商、未删除 |
以当前所选供应商为条件;仅纳入未删除的入场隔离登记(已作废/已删除的单据不参与) |
| ③ |
隔离已结束 |
仅纳入隔离期已满、可以进入市场环节的单据;以入场隔离登记中的预计解除日期与当前日期判定:当前日期不早于预计解除日期(即已达到或超过预计解除日)的记录才纳入;仍在隔离期内的单据不纳入 |
计算步骤
- 按供应商查找未删除且隔离已结束的入场隔离登记。
- 对每条记录取主表总耳标并拆分、汇总。
- 去重得集合 A。
4.2 第二步:剔除隔离巡查中的病死、病害耳标
在 隔离巡查登记 中筛选全部符合条件的巡查记录(不按供应商过滤),汇总病死、病害耳标,去重得集合 B;下拉可选耳标 = A - B。已在巡查中登记为病死、病害的耳标,不允许再进市场栏位。
业务口径(已确认)
| 序号 |
口径 |
说明 |
| ① |
未删除 |
仅纳入未删除的隔离巡查登记 |
| ② |
病死、病害 |
仅纳入 病死病害数量大于 0,且填写了耳标号的巡查记录 |
| ③ |
耳标汇总 |
主表 耳标号 字段以逗号等方式存放多个耳标时须拆分后汇总、去重 |
计算步骤
- 查询隔离巡查登记表:
del_flag 为有效、病死病害数量 > 0、耳标号非空。
- 取出全部符合条件的耳标号(拆分、去重)得集合 B。
- A - B 为剔除病死、病害后的下拉候选(保存时再经 §4.3 剔除占用)。
4.3 第三步:保存时剔除已被其他进栏记录占用的耳标
- 在有效的市场进栏登记中,汇总除当前正在编辑的记录外已登记的全部耳标,得集合 C。
- 保存校验时,每个耳标须属于 (A-B)- C;下拉加载仅返回 A-B(不含 C,已占用的耳标仍可能出现在下拉中,保存时由服务端拦截)。
- 修改某条进栏记录时:该记录原先已选的耳标视同未占用(便于保留或调整)。
§4.3 为避免同一耳标被重复进栏而补充;草稿正文仅写明 §4.1、§4.2。
4.4 耳标池与界面联动(小结)
| 时机 |
行为 |
| 选定供应商 |
调用可选耳标接口,按 §4.1、§4.2 返回 A−B |
| 更换供应商 |
清空已选耳标,重新计算 A−B |
| 勾选耳标 |
更新数量(头) |
| 保存 |
按 (A−B)−C 再次校验 §5(含占用) |
5. 保存时必须满足的规则
新增、修改点击确定时,全部满足方可保存;否则提示原因且不保存:
| 编号 |
规则 |
内容 |
| R1 |
必填完整 |
进栏时间、栏位、供应商、至少 1 个耳标 |
| R2 |
时间合法 |
进栏时间不晚于当前时间 |
| R3 |
主数据有效 |
栏位、供应商在各自管理中仍为可选状态 |
| R4 |
耳标在可选池内 |
每个耳标均属于 (A−B)−C(§4.1~§4.3);病死、病害及他单占用均不可保存 |
| R5 |
耳标不重复 |
本条记录内耳标互不重复 |
| R6 |
数量一致 |
数量(头)= 本条已选耳标个数 |
6. 功能清单
6.1 新增进栏记录
| 项 |
要求 |
| 入口 |
列表「新增」 |
| 表单 |
§3 各字段;§4 耳标池;§5 保存校验 |
| 确定 |
保存为有效记录,关闭表单,刷新列表 |
| 取消 |
不保存 |
推荐操作顺序:打开新增 → 确认进栏时间 → 选栏位 → 选供应商 → 多选耳标 → 核对数量 → 确定。
6.2 查询进栏记录列表
| 项 |
要求 |
| 筛选 |
进栏日期(起~止,闭区间);栏位编号模糊;供应商精确;耳标号模糊;条件同时生效 |
| 日期校验 |
开始日期晚于结束日期时提示修正,不执行查询 |
| 默认排序 |
进栏时间从新到旧 |
| 分页 |
默认每页 20 条 |
| 范围 |
仅有效记录 |
| 工具栏 |
搜索、重置、新增 |
| 列 |
进栏时间、栏位编号、供应商、耳标号、数量(头)、操作 |
| 操作 |
查看、编辑、删除 |
6.3 修改进栏记录
- 草稿要求:所有业务字段均可修改(进栏时间、栏位、供应商、耳标及联动数量)。
- 规则同新增(§4、§5);更换供应商须清空耳标重选。
6.4 查看进栏记录
- 只读展示 §3 全部业务字段;耳标完整展示;宜展示创建/修改人及时间。
- 可提供「编辑」「删除」(受权限控制)。
6.5 删除进栏记录
| 项 |
要求 |
| 方式 |
列表单条删除;二次确认(确认语宜含供应商、栏位、时间或头数) |
| 结果 |
记录变为已删除;列表不再显示 |
| 约束 |
若已被结算、开单等下游业务引用,不允许删除并提示 |
| 耳标 |
删除后,该记录占用的耳标回到可选范围(§4.3) |
6.6 本期不做
检疫证上传、栏位占用看板、批量导入导出、与结算/称重自动联动、栏位超容预警等(见原范围评审)。
7. 业务流程图
7.1 模块主流程
flowchart TD
A[进栏记录列表] --> B{操作}
B --> C[新增]
B --> D[查看]
B --> E[修改]
B --> F[删除]
C --> G[填写时间/栏位/供应商]
G --> H[计算可选耳标 A-B-C]
H --> I[勾选耳标/自动数量]
I --> J{R1-R6 通过?}
J -->|否| I
J -->|是| K[保存]
K --> A
E --> G
F --> L{下游引用?}
L -->|是| M[提示不可删]
L -->|否| N[确认后删除]
N --> A
7.2 可选耳标计算
flowchart LR
A[选供应商] --> B[入场隔离汇总耳标 A]
B --> C[减去巡查病死病害 B]
C --> D[减去他单已进栏 C]
D --> E[用户多选]
E --> F[数量=勾选数]
8. 权限(业务层)
| 能力 |
说明 |
| 查列表 |
进入模块、筛选浏览 |
| 看详情 |
只读 |
| 新增 |
创建记录 |
| 修改 |
变更记录 |
| 删除 |
作废记录 |
无权限则不显示对应按钮。具体权限项由实施配置,本文档不命名编码。
9. 关联模块约定
| 模块 |
本模块如何使用 |
| 市场栏位管理 |
提供可选栏位 |
| 供应商管理 |
提供可选供应商;列表筛选 |
| 入场隔离登记 |
§4.1 耳标来源(主表总耳标;按供应商、未删除、隔离已结束) |
| 隔离巡查登记 |
§4.2 全表未删除、病死病害数量>0 且填耳标的巡查记录汇总耳标(逗号拆分)后从 A 中剔除 |
| 供应商结算等 |
可引用进栏数据;删除前检查是否被引用 |
说明:入场隔离(隔离圈位)与市场进栏(市场栏位)为不同业务;默认不规定同一耳标不能同时出现在两类登记中,若产品要求互斥须另行立项。
10. 提示语(示例)
| 情况 |
示例文案 |
| 缺栏位/供应商/耳标 |
请选择栏位编号 / 请选择供应商 / 请至少选择一个耳标号 |
| 未先选供应商 |
请先选择供应商 |
| 无可选耳标 |
该供应商暂无可进栏耳标,请确认是否存在已隔离结束的入场隔离登记 |
| 耳标重复 |
存在重复耳标:{耳标号} |
| 耳标已被其他进栏占用 |
耳标 {耳标号} 已被其他进栏记录占用 |
| 耳标不可进栏 |
耳标 {耳标号} 不可进栏或不在可选范围 |
| 进栏时间超前 |
进栏时间不能晚于当前时间 |
| 筛选日期颠倒 |
开始日期不能晚于结束日期 |
| 主数据失效 |
市场栏位不存在或已删除 / 供应商不存在或已删除 |
| 删除被引用 |
存在关联业务,无法删除 |
11. 非功能建议
| 项 |
建议 |
| 权限 |
查询、新增、修改、删除分权 |
| 审计 |
增删改留痕 |
| 易用性 |
删除二次确认;列表耳标过长可省略、详情看全文 |
| 正确性 |
保存时系统须按 §5 再次校验,不能仅依赖页面上的数量与勾选 |
12. 草稿对照
| 草稿条目 |
对应章节 |
| 1 新增与字段、数量=勾选耳标数 |
§3、§6.1 |
| 2 入场隔离汇总耳标,减去巡查病死病害 |
§4.1、§4.2 |
| 3 列表筛选 |
§6.2 |
| 4 修改均可改 |
§6.3 |
| 5 删除 |
§6.5(业务作废) |
| 6 查看 |
§6.4 |
| 7~8 异常格式、技术栈 |
不纳入本文档 |
13. 修订记录
| 版本 |
说明 |
| 1.2 |
按草稿 §2 明确耳标池两步算法;流程与 R1~R6 规则 |
| 1.3 |
纯需求优化:不参照实现方案;精简结构;R 规则替代 M 编号;明确 §4.3 为进栏互斥补充;去除「服务端」等实现用语 |
| 1.4 |
§4.1:仅主表总耳标;按供应商查未删除、隔离已结束的入场隔离单(当前日期 ≥ 预计解除日期) |
| 1.5 |
§4.2:按供应商相关的未删除巡查记录;病死病害数量>0 且填耳标;明确供应商关联判定 |
| 1.6 |
§4.2:巡查不按供应商过滤,全表病死病害耳标汇总为 B;下拉 A−B;保存 (A−B)−C;supplierEarTags 仅 supplierId |