# 01-项目功能内容 ## 功能名称 库存盘点组件库存调拨功能。 ## 应用场景 本功能用于仓储管理中的库存盘点页面。现场盘点时,用户发现某个物料的库存需要从当前库位转移到另一个库位,或者目标库位尚未在系统中维护,需要在调拨时一键新建库位,并把调拨数量从原库位库存中扣减、增加到目标库位库存中。 应用页面: ```text src/views/WarehouseManagement/InventoryCheck/index.vue ``` ## 功能目标 1. 在库存盘点列表行内增加“调拨”操作。 2. 点击“调拨”打开库存调拨弹窗。 3. 弹窗自动带出物料名称、图号/型号、原库位、原库存数。 4. 支持选择已有目标库位。 5. 支持输入新库位名称并一键新建库位。 6. 新库位创建成功后自动刷新库位下拉并回填目标库位。 7. 用户输入调拨数量后,提交时从原库位库存数扣减该数量。 8. 如果目标库位已有同物料库存,则目标库位库存累加调拨数量。 9. 如果目标库位没有同物料库存,则新增目标库位的物料库存记录。 10. 调拨成功后刷新库存盘点列表。 11. 后端记录调拨流水,便于追溯操作人、原库位、目标库位、调拨前后库存。 ## 功能边界 本次实现的是库存盘点组件内的轻量级库存调拨,不做完整调拨单流程。 包含: | 功能点 | 说明 | | --- | --- | | 行内调拨 | 在库存盘点表格中直接对单行库存发起调拨 | | 选择目标库位 | 从现有库位下拉中选择 | | 一键新建库位 | 新建库位后回填为目标库位 | | 原库位扣减 | 调拨数量从原库位库存中扣除 | | 目标库位增加 | 已存在则累加,不存在则新增 | | 调拨记录 | 记录调拨前后库存和操作信息 | 不包含: | 不包含内容 | 原因 | | --- | --- | | 独立调拨单页面 | 当前需求聚焦盘点现场快速调整 | | 调拨审批 | 未纳入本次业务流程 | | 打印调拨单 | 未纳入本次验收 | | 调出确认、调入确认 | 本次为单步原子调拨 | | 跨仓库复杂调拨 | 当前只有库位级调拨 | | 外协调拨 | 外协调拨已有独立业务范围 | ## 关键业务规则 | 规则编号 | 规则内容 | | --- | --- | | BR-001 | 调拨数量必须大于 0 | | BR-002 | 调拨数量不能大于原库位当前库存 | | BR-003 | 目标库位不能为空 | | BR-004 | 目标库位不能等于原库位 | | BR-005 | 新库位名称不能为空 | | BR-006 | 新库位名称不能重复 | | BR-007 | 后端必须以数据库当前库存重新校验,不能只信任前端原库存数 | | BR-008 | 原库位扣减、目标库位增加、调拨记录写入必须在同一事务中完成 | | BR-009 | 调拨后原库位库存为 0 时保留库存记录 | ## 涉及数据对象 | 数据对象 | 用途 | | --- | --- | | `库存管理_物料与货位对照表` | 普通物料库位库存 | | `库存管理_半成品与货位对照表` | 通用件库位库存 | | `库存管理_货位主文件` | 库位基础数据 | | `库存盘点_调拨记录` | 库存调拨日志 | | `库存盘点_修改记录` | 保留原库存修改记录能力 | ## 涉及接口 | 接口/过程 | 类型 | 用途 | | --- | --- | --- | | `仓储管理_库存盘点_查询` | 查询 | 调拨前后刷新库存盘点列表 | | `仓储管理_库位_查询` | 查询 | 获取库位下拉 | | `仓储管理_库位_验证是否存在` | 查询 | 新建库位前校验重复 | | `仓储管理_库位_增加数据` | 增改 | 新增目标库位 | | `仓储管理_库存盘点_库存调拨` | 增改 | 执行原子调拨 | ## 用户操作流程 ```mermaid flowchart TD A["进入库存盘点页面"] --> B["选择一行库存记录"] B --> C["点击调拨"] C --> D["打开库存调拨弹窗"] D --> E{"目标库位是否已存在"} E -- "存在" --> F["选择目标库位"] E -- "不存在" --> G["输入新库位名称并新建"] G --> F F --> H["输入调拨数量和备注"] H --> I["提交调拨"] I --> J["后端事务扣减原库位并增加目标库位"] J --> K["写入调拨记录"] K --> L["刷新库存盘点列表"] ```