更新装配、销售、精工车间、技术中心、仓储多个模块,整理文档和SQL脚本

This commit is contained in:
Developer
2026-06-29 13:36:34 +08:00
parent 137e276340
commit be0ff91e24
54 changed files with 5066 additions and 723 deletions

View File

@@ -0,0 +1,167 @@
# 入库退货同步库存盘点库存设计说明
## 01-功能内容
本次修复针对入库记录组件发起退货后,库存盘点组件中的对应库位库存未同步减少的问题。
原问题现象:
1. 用户在“入库记录”组件中对采购件、耗材或自制件执行退货。
2. 入库记录自身的退货数、入库数等数据已修改。
3. 库存盘点组件中对应物料、对应库位的库存数未同步减少。
4. 用户在库存盘点组件中点击编辑库存时,页面会重新读取未同步的盘点库存,导致库存数看起来“变回来”。
修复目标:
1. 入库记录退货成功时,同步扣减库存盘点对应库位库存。
2. 扣减对象必须精确到原入库记录的 `货位流水号`
3. 采购件、耗材、自制件退货均支持同步扣减。
4. 如果库存盘点中找不到对应库位库存,或库存不足,应阻止退货并给出错误。
5. 保持原有入库记录、退货记录、采购合同状态更新逻辑不变。
## 02-程序开发步骤
### 前端改造
1. 在入库记录组件发起退货校验时,补传当前行的 `入库记录流水号`
2. 后端通过 `入库记录流水号` 读取原入库记录中的 `货位流水号`
3. 避免仅通过物料、合同、批次、入库时间等条件推断库位,防止扣错库位。
涉及前端文件:
- `src/views/WarehouseManagement/WarehousingRecord/WarehousingRecord.vue`
核心参数调整:
```js
param[6] = ['入库记录流水号', this.DeliveryNumber]
```
### 后端改造
1. 调整采购/耗材退货验证过程:
- `仓储管理_入库记录_退货入库_验证`
2. 调整采购/耗材退货执行过程:
- `仓储管理_入库记录_退货入库`
3. 调整自制件退货执行过程:
- `仓储管理_自制件入库记录_退货入库`
4. 退货时按原入库记录中的 `货位流水号` 扣减:
- `库存管理_物料与货位对照表.货位存量`
5. 采购件和耗材按外购件库存表处理。
6. 自制件按自制件入库记录中的库位处理。
7. 所有扣减、退货记录插入、入库记录回写放在事务中执行,任一步失败则回滚。
涉及 SQL 脚本:
- `sql/仓储管理_入库退货同步盘点库存.sql`
## 03-推进台账
| 轮次 | 做了什么 | 改了哪些文件/对象 | 验证了什么 | 下一步 |
| --- | --- | --- | --- | --- |
| 1 | 分析退货后库存盘点不变原因 | 入库记录组件、退货存储过程 | 确认退货未按原入库库位精确扣减盘点库存 | 设计同步扣减方案 |
| 2 | 前端退货校验补传入库记录流水号 | `WarehousingRecord.vue` | 参数可传到后端验证过程 | 改造 SQL |
| 3 | 改造采购/耗材退货验证过程 | `仓储管理_入库记录_退货入库_验证` | 可按入库记录读取原货位 | 改造退货执行 |
| 4 | 改造采购/耗材退货执行过程 | `仓储管理_入库记录_退货入库` | 退货时扣减对应库位库存 | 覆盖自制件 |
| 5 | 改造自制件退货执行过程 | `仓储管理_自制件入库记录_退货入库` | 自制件退货也同步扣减盘点库存 | 编译和执行脚本 |
| 6 | 执行 SQL 脚本并验证对象 | SQL Server 数据库 | 3 个过程已成功更新 | 形成修复文档 |
## 04-任务矩阵
| 任务编号 | 任务内容 | 状态 | 验收标准 |
| --- | --- | --- | --- |
| R-001 | 定位入库退货和库存盘点库存不同步原因 | 已完成 | 明确退货扣减未精确同步库存盘点库位库存 |
| R-002 | 前端退货验证补传 `入库记录流水号` | 已完成 | 采购/耗材退货验证参数包含入库记录流水号 |
| R-003 | 采购/耗材退货验证按原入库库位校验库存 | 已完成 | 库存不足或未找到对应库位库存时不允许退货 |
| R-004 | 采购/耗材退货执行同步扣减盘点库存 | 已完成 | `库存管理_物料与货位对照表.货位存量` 减少退货数量 |
| R-005 | 自制件退货执行同步扣减盘点库存 | 已完成 | 自制件原入库库位库存同步减少 |
| R-006 | SQL 事务保护 | 已完成 | 退货记录、入库记录、库存扣减任一步失败均回滚 |
| R-007 | 前端结构验证 | 已完成 | `WarehousingRecord.vue` 模板和脚本解析通过 |
| R-008 | SQL 对象部署验证 | 已完成 | 相关存储过程已在目标库更新 |
## 05-验收证据
### 前端验证
验证文件:
- `src/views/WarehouseManagement/WarehousingRecord/WarehousingRecord.vue`
验证内容:
1. 采购/耗材退货校验参数已补充:
```js
param[6] = ['入库记录流水号', this.DeliveryNumber]
```
2. Vue 单文件结构解析通过:
```text
template ok
script ok
```
### SQL 验证
目标数据库:
- SQL Server`192.168.1.27`
- 数据库:`ERPTOOL_JY_20250826Back`
部署脚本:
```text
sql/仓储管理_入库退货同步盘点库存.sql
```
已更新对象:
```text
仓储管理_入库记录_退货入库
仓储管理_入库记录_退货入库_验证
仓储管理_自制件入库记录_退货入库
```
验证结果:
```text
sql compile ok
仓储管理_入库记录_退货入库 2026/6/27 9:30:02
仓储管理_入库记录_退货入库_验证 2026/6/27 9:30:02
仓储管理_自制件入库记录_退货入库 2026/6/27 9:30:02
```
## 06-决策记录
| 决策点 | 选择 | 原因 |
| --- | --- | --- |
| 库存扣减定位方式 | 使用 `入库记录流水号` 反查原 `货位流水号` | 最精确,避免同物料多库位时扣错库位 |
| 是否继续按物料、合同、批次、时间匹配 | 保留为辅助条件,但核心以原入库库位为准 | 原匹配条件无法唯一确定库位 |
| 库存不足时如何处理 | 阻止退货并回滚事务 | 避免库存盘点出现负数或账实不一致 |
| 采购/耗材和自制件是否共用逻辑 | 分别改造对应过程 | 两类入库记录来源表不同,分开更符合现有结构 |
| 是否只改前端 | 否,必须改后端存储过程 | 库存一致性应由数据库事务保证 |
| 是否影响库存调拨功能 | 不直接影响 | 退货扣减和调拨是两条库存变动路径,但都作用于库存盘点库位库存 |
## 07-业务流程
```mermaid
flowchart TD
A["入库记录组件点击退货"] --> B["前端提交退货数量、原因、入库记录流水号"]
B --> C["后端读取原入库记录"]
C --> D["取得物料流水号、批次、原货位流水号"]
D --> E{"对应库位库存是否足够"}
E -- "否" --> F["阻止退货并返回错误"]
E -- "是" --> G["插入退货记录"]
G --> H["回写入库记录退货数量"]
H --> I["扣减库存盘点对应库位货位存量"]
I --> J["更新采购合同/订单状态"]
J --> K["提交事务"]
```
## 08-后续注意事项
1. 之后所有库存减少类业务,都应明确扣减到具体 `货位流水号`
2. 不建议再用“物料 + 批次 + 时间”推断库位,存在多库位同批次时扣错风险。
3. 若后续增加退货撤销功能,应同步反向增加对应库位库存。
4. 若库存盘点支持通用件、自制件、采购件多库存表,后续可抽出统一库存变动存储过程,减少重复逻辑。