更新装配、销售、精工车间、技术中心、仓储多个模块,整理文档和SQL脚本
This commit is contained in:
202
docs/库存调拨/库存调拨功能开发说明.md
Normal file
202
docs/库存调拨/库存调拨功能开发说明.md
Normal file
@@ -0,0 +1,202 @@
|
||||
# 库存盘点组件库存调拨功能开发说明
|
||||
|
||||
## 01-功能内容
|
||||
|
||||
本次功能在库存盘点组件中增加轻量级“库存调拨”能力,应用页面为:
|
||||
|
||||
```text
|
||||
src/views/WarehouseManagement/InventoryCheck/index.vue
|
||||
```
|
||||
|
||||
功能目标:
|
||||
|
||||
- 在库存盘点列表每一行增加“调拨”操作。
|
||||
- 点击“调拨”后弹出库存调拨窗口。
|
||||
- 自动带出当前行物料名称、图号/型号、原库位、原库存数。
|
||||
- 支持选择已有目标库位。
|
||||
- 支持在弹窗中输入新库位名称,并一键新增库位。
|
||||
- 新增库位成功后自动刷新库位下拉,并回填为目标库位。
|
||||
- 输入调拨数量后,提交时从原库位库存数中扣减该数量。
|
||||
- 目标库位已有同物料库存时累加库存。
|
||||
- 目标库位没有同物料库存时新增物料货位库存记录。
|
||||
- 调拨成功后关闭弹窗并刷新库存盘点列表。
|
||||
- 后端保留调拨记录,记录调拨前后库存、原库位、目标库位、操作人和操作时间。
|
||||
|
||||
本次不做完整调拨单流程,不包含审批、打印、调出确认、调入确认、外协调拨和跨仓库复杂流转。
|
||||
|
||||
## 02-程序开发步骤
|
||||
|
||||
1. 梳理库存盘点页面现状:
|
||||
- 查询页面现有字段:`库存`、`货位流水号`、`货位名称`、`物料与货位流水号`。
|
||||
- 确认现有接口:`仓储管理_库存盘点_查询`、`仓储管理_库存盘点_货位数量_编辑数据`、`仓储管理_库存盘点_物料货位数量_增加数据`。
|
||||
|
||||
2. 梳理库位管理现有接口:
|
||||
- 查询库位:`仓储管理_库位_查询`。
|
||||
- 验证库位是否存在:`仓储管理_库位_验证是否存在`。
|
||||
- 新增库位:`仓储管理_库位_增加数据`。
|
||||
|
||||
3. 前端开发:
|
||||
- 在库存盘点表格操作列增加“调拨”按钮。
|
||||
- 新增 `transferDialogVisible`、`transferLocationAdding`、`transferSubmitting` 状态。
|
||||
- 新增 `transferForm` 表单对象。
|
||||
- 新增库存调拨弹窗。
|
||||
- 新增 `openTransfer(row)` 打开弹窗方法。
|
||||
- 新增 `handleTransferLocationChange(value)` 同步目标库位名称。
|
||||
- 新增 `selectTransferLocation(locationName)` 新库位新增后回填目标库位。
|
||||
- 新增 `addTransferLocation()` 一键新增库位。
|
||||
- 新增 `submitTransfer()` 提交调拨。
|
||||
|
||||
4. 后端设计:
|
||||
- 新增 SQL 脚本:`sql/仓储管理_库存盘点_库存调拨.sql`。
|
||||
- 新增调拨记录表:`库存盘点_调拨记录`。
|
||||
- 新增存储过程:`仓储管理_库存盘点_库存调拨`。
|
||||
- 存储过程使用事务,确保原库位扣减、目标库位增加、新增目标库存记录、累计库存更新、调拨记录写入同时成功或失败。
|
||||
|
||||
5. 数据库创建:
|
||||
- 已连接 SQL Server:`192.168.1.27`。
|
||||
- 已在数据库 `ERPTOOL_JY_20250826Back` 中执行脚本。
|
||||
- 已确认 `库存盘点_调拨记录` 和 `仓储管理_库存盘点_库存调拨` 创建成功。
|
||||
|
||||
## 03-推进台账
|
||||
|
||||
| 轮次 | 做了什么 | 改了哪些文件 | 验证了什么 | 下一步 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| 1 | 生成初版库存调拨设计方案,偏完整调拨单流程 | `库存调拨功能设计方案.md` | 参考了仓储模块现有 `TransferQuery`、`InventoryQuery` | 根据实际应用场景收敛方案 |
|
||||
| 2 | 按用户补充场景重写方案,聚焦库存盘点组件内调拨 | `库存调拨功能设计方案.md` | 确认 `InventoryCheck/index.vue` 已有库存、库位和新增物料货位接口 | 开始前端开发 |
|
||||
| 3 | 开发前端调拨入口和弹窗 | `src/views/WarehouseManagement/InventoryCheck/index.vue` | Vue 模板解析输出 `template ok`,脚本解析输出 `script ok` | 设计后端原子调拨接口 |
|
||||
| 4 | 连接 SQL Server,读取相关存储过程和表结构 | 无代码文件变更 | 成功连接 `ERPTOOL_JY_20250826Back`,确认 SQL Server 2008;读取现有盘点、库位相关过程 | 编写调拨存储过程 |
|
||||
| 5 | 新增存储过程脚本,适配普通物料和通用件 | `sql/仓储管理_库存盘点_库存调拨.sql`、`src/views/WarehouseManagement/InventoryCheck/index.vue` | SQL `NOEXEC` 编译检查输出 `sql compile ok`;前端补传 `类型` 参数 | 创建数据库对象 |
|
||||
| 6 | 在数据库中创建调拨记录表和调拨存储过程 | 数据库对象:`库存盘点_调拨记录`、`仓储管理_库存盘点_库存调拨` | 查询 `sys.objects` 确认对象存在;查询参数和表字段确认结构 | 做页面联调和实际数据调拨测试 |
|
||||
| 7 | 按要求生成开发说明文档 | `库存调拨功能开发说明.md` | 汇总开发内容、验证证据、任务矩阵和决策记录 | 等待业务数据联调 |
|
||||
|
||||
## 04-任务矩阵
|
||||
|
||||
| 任务编号 | 任务名称 | 状态 | 验收标准 |
|
||||
| --- | --- | --- | --- |
|
||||
| INV-TR-001 | 明确应用场景 | 已完成 | 方案明确为库存盘点组件内调拨,不做完整调拨单 |
|
||||
| INV-TR-002 | 编写设计方案 | 已完成 | `库存调拨功能设计方案.md` 已按盘点调拨场景重写 |
|
||||
| INV-TR-003 | 增加表格调拨按钮 | 已完成 | `InventoryCheck/index.vue` 操作列出现“调拨”按钮 |
|
||||
| INV-TR-004 | 增加调拨弹窗 | 已完成 | 弹窗展示物料、图号、原库位、原库存数、目标库位、新库位、调拨数量、备注 |
|
||||
| INV-TR-005 | 支持选择目标库位 | 已完成 | 目标库位使用现有 `storageLocation` 下拉,变化时同步目标库位名称 |
|
||||
| INV-TR-006 | 支持一键新建库位 | 已完成 | 调用 `仓储管理_库位_验证是否存在` 和 `仓储管理_库位_增加数据`,成功后刷新并回填 |
|
||||
| INV-TR-007 | 调拨前端校验 | 已完成 | 校验库存流水号、库存大于 0、目标库位非空、目标库位不等于原库位、调拨数量合法 |
|
||||
| INV-TR-008 | 提交调拨接口调用 | 已完成 | 前端调用 `仓储管理_库存盘点_库存调拨`,传入调拨数量、目标库位、操作者、类型等参数 |
|
||||
| INV-TR-009 | 设计存储过程脚本 | 已完成 | `sql/仓储管理_库存盘点_库存调拨.sql` 已生成 |
|
||||
| INV-TR-010 | 创建调拨记录表 | 已完成 | 数据库中存在 `库存盘点_调拨记录` |
|
||||
| INV-TR-011 | 创建调拨存储过程 | 已完成 | 数据库中存在 `仓储管理_库存盘点_库存调拨` |
|
||||
| INV-TR-012 | SQL 编译检查 | 已完成 | `NOEXEC` 检查输出 `sql compile ok` |
|
||||
| INV-TR-013 | 前端模板和脚本基础检查 | 已完成 | 输出 `template ok`、`script ok` |
|
||||
| INV-TR-014 | 页面实际联调 | 待执行 | 在系统页面选择真实库存行,完成调拨并刷新列表 |
|
||||
| INV-TR-015 | 数据库调拨结果核对 | 待执行 | 原库位库存减少,目标库位库存增加或新增,累计库存保持正确,调拨记录写入 |
|
||||
|
||||
## 05-验收证据
|
||||
|
||||
### 5.1 数据库连接证据
|
||||
|
||||
连接 SQL Server 后返回:
|
||||
|
||||
```text
|
||||
DatabaseName=ERPTOOL_JY_20250826Back
|
||||
Version=Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (X64)
|
||||
```
|
||||
|
||||
### 5.2 SQL 编译证据
|
||||
|
||||
对 `sql/仓储管理_库存盘点_库存调拨.sql` 使用 `SET NOEXEC ON` 编译检查:
|
||||
|
||||
```text
|
||||
sql compile ok
|
||||
```
|
||||
|
||||
### 5.3 数据库对象创建证据
|
||||
|
||||
执行创建脚本后查询 `sys.objects`:
|
||||
|
||||
```text
|
||||
仓储管理_库存盘点_库存调拨 SQL_STORED_PROCEDURE
|
||||
库存盘点_调拨记录 USER_TABLE
|
||||
```
|
||||
|
||||
### 5.4 存储过程参数证据
|
||||
|
||||
查询 `sys.parameters`:
|
||||
|
||||
```text
|
||||
1 @物料与货位流水号 int
|
||||
2 @物料流水号 int
|
||||
3 @原货位流水号 int
|
||||
4 @目标货位流水号 int
|
||||
5 @调拨数量 float
|
||||
6 @原库存数 float
|
||||
7 @调拨备注 nvarchar
|
||||
8 @操作者 int
|
||||
9 @类型 nvarchar
|
||||
```
|
||||
|
||||
### 5.5 调拨记录表字段证据
|
||||
|
||||
查询 `INFORMATION_SCHEMA.COLUMNS`:
|
||||
|
||||
```text
|
||||
库存调拨流水号 int
|
||||
类型 nvarchar
|
||||
物料流水号 int
|
||||
原物料与货位流水号 int
|
||||
原货位流水号 int
|
||||
目标物料与货位流水号 int
|
||||
目标货位流水号 int
|
||||
调拨数量 float
|
||||
调拨前原库存 float
|
||||
调拨后原库存 float
|
||||
调拨前目标库存 float
|
||||
调拨后目标库存 float
|
||||
调拨备注 nvarchar
|
||||
操作人 int
|
||||
操作时间 datetime
|
||||
```
|
||||
|
||||
### 5.6 前端静态检查证据
|
||||
|
||||
使用 `vue-template-compiler` 和 Babel 对 `InventoryCheck/index.vue` 做基础解析,输出:
|
||||
|
||||
```text
|
||||
template ok
|
||||
script ok
|
||||
```
|
||||
|
||||
说明:命令因本机 Node 启动较慢触到超时边界,但成功输出了检查结果。
|
||||
|
||||
### 5.7 文件证据
|
||||
|
||||
新增/修改文件:
|
||||
|
||||
```text
|
||||
src/views/WarehouseManagement/InventoryCheck/index.vue
|
||||
sql/仓储管理_库存盘点_库存调拨.sql
|
||||
库存调拨功能设计方案.md
|
||||
库存调拨功能开发说明.md
|
||||
```
|
||||
|
||||
## 06-决策记录
|
||||
|
||||
| 决策编号 | 决策 | 原因 | 后续影响 |
|
||||
| --- | --- | --- | --- |
|
||||
| ADR-001 | 不做完整调拨单流程 | 用户明确应用场景是库存盘点组件内快速调拨 | 页面内弹窗完成,不新增调拨单页面 |
|
||||
| ADR-002 | 前端不拆成两次库存编辑请求 | 两次请求可能出现只扣不加或并发负库存 | 新增后端原子存储过程 |
|
||||
| ADR-003 | 调拨数量使用 `FLOAT` | 库存表 `货位存量` 是 `float`,旧编辑过程用 `int` 有丢小数风险 | 新过程支持小数库存调拨 |
|
||||
| ADR-004 | 通过 `物料与货位流水号` 反查物料/产品流水号 | `外购件库存_视图` 当前不返回 `物料流水号` | 前端传空也不影响后端执行 |
|
||||
| ADR-005 | 支持普通物料和通用件两套表 | 现有盘点编辑过程按 `类型 = 通用件` 区分半成品表和物料表 | 存储过程内部按 `@类型` 分支处理 |
|
||||
| ADR-006 | 调拨后原库位库存为 0 时保留记录 | 便于追溯,也符合盘点页库存可为 0 的现状 | 查询是否隐藏 0 库存由查询条件控制 |
|
||||
| ADR-007 | 一键新建库位复用现有库位接口 | 项目已有 `仓储管理_库位_验证是否存在` 和 `仓储管理_库位_增加数据` | 不重复新增库位存储过程 |
|
||||
| ADR-008 | 新增轻量调拨记录表 | 旧 `库存盘点_修改记录` 只能记录原库存更改,不记录目标库位和调拨前后目标库存 | 后续可扩展调拨记录查询 |
|
||||
| ADR-009 | 前端传 `类型` 参数 | 避免普通物料和通用件流水号存在歧义 | 后端能明确走正确库存对照表 |
|
||||
| ADR-010 | 暂不做页面截图/PDF | 当前任务聚焦开发和数据库对象创建,未启动本地页面联调 | 下一步实际页面验收时补截图证据 |
|
||||
|
||||
## 下一步建议
|
||||
|
||||
1. 在测试环境登录系统,进入库存盘点页面。
|
||||
2. 选择一条库存大于 0 的记录点击“调拨”。
|
||||
3. 选择已有库位进行调拨,验证原库位减少、目标库位增加。
|
||||
4. 输入新库位名称点击“新建”,验证库位新增后自动回填。
|
||||
5. 再执行一次调拨到新库位,验证目标库位新增库存记录。
|
||||
6. 查询 `库存盘点_调拨记录`,确认调拨记录写入完整。
|
||||
Reference in New Issue
Block a user