更新装配、销售、精工车间、技术中心、仓储多个模块,整理文档和SQL脚本
This commit is contained in:
264
docs/库存调拨/02-项目程序开发详细步骤.md
Normal file
264
docs/库存调拨/02-项目程序开发详细步骤.md
Normal file
@@ -0,0 +1,264 @@
|
||||
# 02-项目程序开发详细步骤
|
||||
|
||||
## 开发入口
|
||||
|
||||
前端页面:
|
||||
|
||||
```text
|
||||
src/views/WarehouseManagement/InventoryCheck/index.vue
|
||||
```
|
||||
|
||||
SQL 脚本:
|
||||
|
||||
```text
|
||||
sql/仓储管理_库存盘点_库存调拨.sql
|
||||
```
|
||||
|
||||
## 第 1 步:梳理现有库存盘点页面
|
||||
|
||||
确认页面已有能力:
|
||||
|
||||
| 已有能力 | 说明 |
|
||||
| --- | --- |
|
||||
| 库存查询 | 调用 `仓储管理_库存盘点_查询` |
|
||||
| 编辑库存 | 调用 `仓储管理_库存盘点_货位数量_编辑数据` |
|
||||
| 库位下拉 | 调用 `仓储管理_库位_查询` |
|
||||
| 新增物料存货 | 页面已有新增库存相关逻辑 |
|
||||
|
||||
确认表格已有字段:
|
||||
|
||||
```text
|
||||
物料编码
|
||||
物料流水号
|
||||
物料名称
|
||||
图号或型号
|
||||
物料与货位流水号
|
||||
类型
|
||||
库存
|
||||
货位流水号
|
||||
货位名称
|
||||
批次编号
|
||||
```
|
||||
|
||||
## 第 2 步:增加表格调拨入口
|
||||
|
||||
在库存盘点表格操作列增加“调拨”按钮。
|
||||
|
||||
实现要求:
|
||||
|
||||
1. 原操作列宽度调整为可容纳“编辑”和“调拨”。
|
||||
2. 行处于编辑状态时不显示调拨按钮。
|
||||
3. 行不处于编辑状态时显示调拨按钮。
|
||||
|
||||
关键逻辑:
|
||||
|
||||
```html
|
||||
<el-button v-if="!scope.row.edit" type="text" size="mini" @click="openTransfer(scope.row)">调拨</el-button>
|
||||
```
|
||||
|
||||
## 第 3 步:增加调拨状态和表单对象
|
||||
|
||||
在 `data()` 中增加:
|
||||
|
||||
```js
|
||||
transferDialogVisible: false,
|
||||
transferLocationAdding: false,
|
||||
transferSubmitting: false,
|
||||
transferForm: {
|
||||
物料与货位流水号: '',
|
||||
物料流水号: '',
|
||||
物料名称: '',
|
||||
图号或型号: '',
|
||||
类型: '',
|
||||
原货位流水号: '',
|
||||
原货位名称: '',
|
||||
原库存数: 0,
|
||||
目标货位流水号: '',
|
||||
目标货位名称: '',
|
||||
新货位名称: '',
|
||||
调拨数量: 1,
|
||||
调拨备注: ''
|
||||
}
|
||||
```
|
||||
|
||||
## 第 4 步:增加库存调拨弹窗
|
||||
|
||||
新增 `el-dialog`,标题为:
|
||||
|
||||
```text
|
||||
库存调拨
|
||||
```
|
||||
|
||||
弹窗内容:
|
||||
|
||||
| 字段 | 控件 | 是否可编辑 |
|
||||
| --- | --- | --- |
|
||||
| 物料名称 | 文本 | 否 |
|
||||
| 图号/型号 | 文本 | 否 |
|
||||
| 原库位 | 文本 | 否 |
|
||||
| 原库存数 | 文本 | 否 |
|
||||
| 目标库位 | `el-select` | 是 |
|
||||
| 新库位 | `el-input` | 是 |
|
||||
| 调拨数量 | `el-input-number` | 是 |
|
||||
| 调拨备注 | `el-input` | 是 |
|
||||
|
||||
## 第 5 步:打开调拨弹窗
|
||||
|
||||
新增方法:
|
||||
|
||||
```js
|
||||
openTransfer(row)
|
||||
```
|
||||
|
||||
处理内容:
|
||||
|
||||
1. 校验当前行是否有 `物料与货位流水号`。
|
||||
2. 校验当前行库存是否大于 0。
|
||||
3. 将当前行物料、库位、库存信息填入 `transferForm`。
|
||||
4. 清空目标库位、新库位、备注。
|
||||
5. 打开调拨弹窗。
|
||||
|
||||
## 第 6 步:选择目标库位
|
||||
|
||||
新增方法:
|
||||
|
||||
```js
|
||||
handleTransferLocationChange(value)
|
||||
```
|
||||
|
||||
处理内容:
|
||||
|
||||
1. 根据选择的 `货位流水号`,从 `storageLocation` 中找到货位名称。
|
||||
2. 回填 `transferForm.目标货位名称`。
|
||||
|
||||
## 第 7 步:一键新建库位
|
||||
|
||||
新增方法:
|
||||
|
||||
```js
|
||||
addTransferLocation()
|
||||
```
|
||||
|
||||
处理流程:
|
||||
|
||||
1. 校验 `transferForm.新货位名称` 不能为空。
|
||||
2. 调用 `仓储管理_库位_验证是否存在`。
|
||||
3. 如果库位已存在,提示并按库位名称回填已有库位。
|
||||
4. 如果库位不存在,调用 `仓储管理_库位_增加数据`。
|
||||
5. 新增成功后调用 `getLocateName()` 刷新库位下拉。
|
||||
6. 调用 `selectTransferLocation(locationName)` 回填目标库位。
|
||||
|
||||
## 第 8 步:提交库存调拨
|
||||
|
||||
新增方法:
|
||||
|
||||
```js
|
||||
submitTransfer()
|
||||
```
|
||||
|
||||
前端校验:
|
||||
|
||||
| 校验项 | 提示 |
|
||||
| --- | --- |
|
||||
| 目标库位为空 | 请选择目标库位 |
|
||||
| 目标库位等于原库位 | 目标库位不能与原库位相同 |
|
||||
| 调拨数量小于等于 0 | 调拨数量必须大于0 |
|
||||
| 调拨数量大于原库存 | 调拨数量不能大于原库存数 |
|
||||
|
||||
提交参数:
|
||||
|
||||
| 序号 | 参数名 |
|
||||
| --- | --- |
|
||||
| 0 | 物料与货位流水号 |
|
||||
| 1 | 物料流水号 |
|
||||
| 2 | 原货位流水号 |
|
||||
| 3 | 目标货位流水号 |
|
||||
| 4 | 调拨数量 |
|
||||
| 5 | 原库存数 |
|
||||
| 6 | 调拨备注 |
|
||||
| 7 | 操作者 |
|
||||
| 8 | 类型 |
|
||||
|
||||
调用接口:
|
||||
|
||||
```js
|
||||
var Data = this.CreateData('12', '仓储管理_库存盘点_库存调拨', param)
|
||||
```
|
||||
|
||||
成功后:
|
||||
|
||||
1. 提示“调拨成功”。
|
||||
2. 关闭调拨弹窗。
|
||||
3. 调用 `searchTable()` 刷新列表。
|
||||
|
||||
## 第 9 步:后端脚本设计
|
||||
|
||||
脚本文件:
|
||||
|
||||
```text
|
||||
sql/仓储管理_库存盘点_库存调拨.sql
|
||||
```
|
||||
|
||||
脚本内容:
|
||||
|
||||
1. 如果 `库存盘点_调拨记录` 不存在,则创建该表。
|
||||
2. 删除并重建存储过程 `dbo.仓储管理_库存盘点_库存调拨`。
|
||||
3. 按 `@类型` 判断库存表:
|
||||
- `@类型 = N'通用件'` 使用 `库存管理_半成品与货位对照表`。
|
||||
- 其他类型使用 `库存管理_物料与货位对照表`。
|
||||
4. 使用事务处理扣减、增加、新增目标记录、写入日志。
|
||||
5. 出错时回滚并返回失败信息。
|
||||
|
||||
## 第 10 步:后端事务流程
|
||||
|
||||
```text
|
||||
BEGIN TRAN
|
||||
锁定原库存记录
|
||||
校验原库存记录存在
|
||||
校验目标库位不等于原库位
|
||||
校验当前库存 >= 调拨数量
|
||||
扣减原库位库存
|
||||
查询目标库位同物料库存
|
||||
如果存在则增加目标库存
|
||||
如果不存在则新增目标库存记录
|
||||
写入库存盘点_调拨记录
|
||||
COMMIT TRAN
|
||||
```
|
||||
|
||||
失败处理:
|
||||
|
||||
```text
|
||||
ROLLBACK TRAN
|
||||
返回 result = 0 和 msg
|
||||
```
|
||||
|
||||
## 第 11 步:数据库部署
|
||||
|
||||
部署目标:
|
||||
|
||||
```text
|
||||
SQL Server: 192.168.1.27
|
||||
Database: ERPTOOL_JY_20250826Back
|
||||
```
|
||||
|
||||
部署对象:
|
||||
|
||||
```text
|
||||
库存盘点_调拨记录
|
||||
仓储管理_库存盘点_库存调拨
|
||||
```
|
||||
|
||||
## 第 12 步:验证
|
||||
|
||||
验证项:
|
||||
|
||||
1. SQL 脚本编译通过。
|
||||
2. 数据库对象存在。
|
||||
3. 存储过程参数完整。
|
||||
4. 前端模板解析通过。
|
||||
5. 前端脚本解析通过。
|
||||
6. 页面实际选择库存记录调拨。
|
||||
7. 原库位库存减少。
|
||||
8. 目标库位库存增加或新增。
|
||||
9. 调拨记录写入。
|
||||
|
||||
Reference in New Issue
Block a user