西藏巴青项目

市场进栏登记功能需求.md 14KB

市场进栏登记 — 功能需求

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 为空,可选列表为空,提示用户确认该供应商是否存在已隔离结束的入场隔离登记。

业务口径(已确认)

序号 口径 说明
只取主表总耳标 仅使用入场隔离登记主表总耳标号集合(多个耳标以逗号等方式存放的须拆分汇总);不包含分圈明细中的耳标
按供应商、未删除 以当前所选供应商为条件;仅纳入未删除的入场隔离登记(已作废/已删除的单据不参与)
隔离已结束 仅纳入隔离期已满、可以进入市场环节的单据;以入场隔离登记中的预计解除日期与当前日期判定:当前日期不早于预计解除日期(即已达到或超过预计解除日)的记录才纳入;仍在隔离期内的单据不纳入

计算步骤

  1. 按供应商查找未删除隔离已结束的入场隔离登记。
  2. 对每条记录取主表总耳标并拆分、汇总。
  3. 去重得集合 A

4.2 第二步:剔除隔离巡查中的病死、病害耳标

隔离巡查登记 中筛选全部符合条件的巡查记录(不按供应商过滤),汇总病死、病害耳标,去重得集合 B下拉可选耳标 = A - B。已在巡查中登记为病死、病害的耳标,不允许再进市场栏位

业务口径(已确认)

序号 口径 说明
未删除 仅纳入未删除的隔离巡查登记
病死、病害 仅纳入 病死病害数量大于 0,且填写了耳标号的巡查记录
耳标汇总 主表 耳标号 字段以逗号等方式存放多个耳标时须拆分后汇总、去重

计算步骤

  1. 查询隔离巡查登记表:del_flag 为有效、病死病害数量 > 0、耳标号非空
  2. 取出全部符合条件的耳标号(拆分、去重)得集合 B
  3. A - B 为剔除病死、病害后的下拉候选(保存时再经 §4.3 剔除占用)。

4.3 第三步:保存时剔除已被其他进栏记录占用的耳标

  1. 有效市场进栏登记中,汇总除当前正在编辑的记录外已登记的全部耳标,得集合 C
  2. 保存校验时,每个耳标须属于 (A-B)- C下拉加载仅返回 A-B(不含 C,已占用的耳标仍可能出现在下拉中,保存时由服务端拦截)。
  3. 修改某条进栏记录时:该记录原先已选的耳标视同未占用(便于保留或调整)。

§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)−CsupplierEarTagssupplierId