更新装配、精工车间、技术中心、仓储模块,新增工序工价、生产审核、三楼仓库可视化等功能及文档SQL

This commit is contained in:
Developer
2026-07-06 11:21:59 +08:00
parent be0ff91e24
commit 9c1f52078d
43 changed files with 8566 additions and 233 deletions

View File

@@ -0,0 +1,398 @@
# 物料库位功能调整测试报告
## 一、测试概述
测试日期2026-06-29
测试范围:
- 物料新增/编辑移除库位设置。
- 物料标准库位维护页面移除编辑能力。
- 入库时库位选择逻辑调整为:有库存库位优先显示已有库存库位,无库存库位时显示全库位。
- 数据库脚本可发布性核对。
- 前端构建验证。
测试环境:
- 工作目录:`D:\景耀\JY1.0`
- 前端技术栈Vue 2.5.17、Element UI 2.13、Webpack 4
- 数据库服务器:`192.168.1.27`
- 数据库:`ERPTOOL_JY_20250826Back`
本次测试未直接执行数据库 ALTER 脚本,仅做只读核对。
## 二、测试对象
### 2.1 前端文件
- `src/views/TechnologyCenter/MaterialMaintain/index.vue`
- `src/views/TechnologyCenter/MaterialQuery/index.vue`
- `src/views/WarehouseManagement/MaterialLocation/index.vue`
- `src/views/WarehouseManagement/PurchasePartsStorage/index.vue`
### 2.2 SQL 文件
- `sql/移除物料标准库位维护.sql`
### 2.3 文档文件
- `docs/物料库位功能调整设计方案.md`
- `docs/物料库位功能调整测试报告.md`
## 三、测试用例与结果
### 3.1 静态残留检查:物料维护与物料库位页面
测试目的:
确认物料新增/编辑页面不再残留库位表单、库位必填校验、默认库位、物料库位编辑调用。
执行命令:
```powershell
rg -n "form\.库位|库位: \[|inventoryLocation|getInventoryLocation|= 2514|货位流水号', this\.form\.库位|仓储管理_物料库位_编辑数据|@row-dblclick=\"changeState\"|changeState\(|confirmEdit\(|cancelEdit\(|submitLocation\(|addLocation\(" src/views/TechnologyCenter/MaterialMaintain/index.vue src/views/TechnologyCenter/MaterialQuery/index.vue src/views/WarehouseManagement/MaterialLocation/index.vue
```
测试结果:
- 命令退出码:`1`
- 输出:无匹配结果
结果说明:
`rg` 在无匹配时返回退出码 `1`,本测试场景表示未发现目标残留代码。检查通过。
结论:
通过。
### 3.2 静态逻辑检查:入库库位选择
测试目的:
确认入库页面包含以下关键逻辑:
- 页面创建时加载全库位。
- 调用 `仓储管理_库存盘点_查询` 查询已有库存库位。
- 已有库存库位显示库存数量。
- 无库存库位 fallback 到全库位。
- 入库提交仍传递 `货位流水号组`
执行命令:
```powershell
rg -n "getLocateName\(|locateSource|locateName\.slice|库存:|仓储管理_库存盘点_查询|仓储管理_库位_查询|货位流水号组" src/views/WarehouseManagement/PurchasePartsStorage/index.vue
```
测试结果摘要:
```text
760: this.getLocateName()
1048: getLocateName() {
1050: var Data = this.CreateData('11', '仓储管理_库位_查询', param)
1133: var Data = this.CreateData('11', '仓储管理_库存盘点_查询', param)
1141: label: data[i].货位名称 + '(库存:' + inventory + '',
1149: this.$set(row, 'locateSource', 'inventory')
1152: this.$set(row, 'locateName', this.locateName.slice())
1153: this.$set(row, 'locateSource', 'all')
1156: this.getLocateName().then(setAllLocate)
1299: param[5] = ['货位流水号组', locateGroup]
1436: param[4] = ['货位流水号组', locateGroup]
```
结果说明:
关键代码路径均存在:
- `created()` 中加载全库位。
- `getLocateName()` 使用 `仓储管理_库位_查询`
- `getInventoryLocateName(row)` 使用 `仓储管理_库存盘点_查询`
- 有库存库位时设置 `locateSource = 'inventory'`
- 无库存库位时使用 `this.locateName.slice()` 设置全库位,并设置 `locateSource = 'all'`
- 采购入库、自制件入库提交仍使用 `货位流水号组`
结论:
通过。
### 3.3 SQL 脚本静态检查
测试目的:
确认 SQL 脚本包含目标存储过程,并保留 `@货位流水号` 兼容参数。
执行命令:
```powershell
rg -n "ALTER PROCEDURE|库存管理_物料与货位对照表|货位流水号|货位流水号 = @货位流水号|货位流水号=@货位流水号" sql/移除物料标准库位维护.sql
```
测试结果摘要:
```text
8: 3. 保留 @货位流水号 参数,兼容未同步发布的旧前端调用。
11:ALTER PROCEDURE [dbo].[物料管理_增加]
13: @货位流水号 int = null,
41:ALTER PROCEDURE [dbo].[物料管理_增加新]
43: @货位流水号 int = null,
105:ALTER PROCEDURE [dbo].[物料管理_编辑]
107: @货位流水号 int = null,
```
结果说明:
- 脚本包含 `物料管理_增加``物料管理_增加新``物料管理_编辑`
- 脚本保留 `@货位流水号` 参数。
- 未检出 `货位流水号=@货位流水号``货位流水号 = @货位流水号` 写入语句。
- 未检出对 `库存管理_物料与货位对照表` 的新增/更新语句。
结论:
通过。
### 3.4 数据库对象参数核对
测试目的:
确认目标数据库中相关存储过程和参数存在,为脚本发布与接口兼容提供依据。
执行命令:
```powershell
sqlcmd -S 192.168.1.27 -d ERPTOOL_JY_20250826Back -U sa -P ****** -C -Q "SET NOCOUNT ON; SELECT o.name AS ObjectName, p.name AS ParamName, TYPE_NAME(p.user_type_id) AS TypeName, p.parameter_id FROM sys.objects o LEFT JOIN sys.parameters p ON o.object_id=p.object_id WHERE o.name IN (N'物料管理_增加',N'物料管理_增加新',N'物料管理_编辑',N'仓储管理_物料库位_编辑数据',N'仓储管理_库存盘点_查询',N'仓储管理_库位_查询') ORDER BY o.name,p.parameter_id;"
```
测试结果摘要:
- `仓储管理_库存盘点_查询` 存在,参数包含:
- `@物料名称_check`
- `@物料名称`
- `@图号或型号_check`
- `@图号或型号`
- `@库位_check`
- `@库位`
- `@排序名称`
- `@排序方式`
- `@物料编码_check`
- `@物料编码`
- `仓储管理_库位_查询` 存在,参数包含:
- `@库位_check`
- `@库位`
- `物料管理_增加` 存在,参数包含 `@货位流水号`
- `物料管理_增加新` 存在,参数包含 `@货位流水号`
- `物料管理_编辑` 存在,参数包含 `@货位流水号`
- `仓储管理_物料库位_编辑数据` 存在,参数包含 `@物料流水号``@货位流水号`
结果说明:
数据库对象与前端调用所需过程匹配。`物料管理_增加/增加新/编辑` 仍保留 `@货位流水号` 参数,因此前端传 `货位流水号 = null` 可以作为兼容占位。
结论:
通过。
### 3.5 数据库当前过程行为核对
测试目的:
确认目标数据库当前是否已经执行过本次 SQL 调整脚本。
执行命令:
```powershell
sqlcmd -S 192.168.1.27 -d ERPTOOL_JY_20250826Back -U sa -P ****** -C -Q "SET NOCOUNT ON; SELECT o.name AS ObjectName, CASE WHEN m.definition LIKE N'%库存管理_物料与货位对照表%' THEN 1 ELSE 0 END AS TouchMaterialLocationTable, CASE WHEN m.definition LIKE N'%货位流水号=@货位流水号%' OR m.definition LIKE N'%货位流水号 = @货位流水号%' THEN 1 ELSE 0 END AS WritesLocationSerial FROM sys.objects o JOIN sys.sql_modules m ON o.object_id=m.object_id WHERE o.name IN (N'物料管理_增加',N'物料管理_增加新',N'物料管理_编辑',N'仓储管理_物料库位_编辑数据');"
```
测试结果:
```text
ObjectName TouchMaterialLocationTable WritesLocationSerial
仓储管理_物料库位_编辑数据 1 1
物料管理_编辑 1 1
物料管理_增加 1 0
物料管理_增加新 1 0
```
结果说明:
目标数据库当前仍是旧过程行为:
- `物料管理_增加``物料管理_增加新` 仍接触 `库存管理_物料与货位对照表`
- `物料管理_编辑` 仍写入 `货位流水号`
- `仓储管理_物料库位_编辑数据` 仍写入物料库位。
这说明 `sql/移除物料标准库位维护.sql` 尚未执行到目标数据库。
结论:
部分通过。数据库对象存在,但后端脚本尚未发布。上线前必须执行 SQL 脚本。
### 3.6 库位基础数据与库存库位样本核对
测试目的:
确认全库位查询、已有库存库位查询存在可用样本数据。
执行命令:
```powershell
sqlcmd -S 192.168.1.27 -d ERPTOOL_JY_20250826Back -U sa -P ****** -C -Q "SET NOCOUNT ON; SELECT TOP 10 货位流水号,货位名称 FROM 库存管理_货位主文件 ORDER BY 货位流水号; SELECT TOP 10 物料名称,图号或型号,货位名称,库存,货位流水号 FROM 外购件库存_视图 WHERE ISNULL(库存,0)>0 ORDER BY 物料名称;"
```
测试结果摘要:
全库位样本:
```text
货位流水号 货位名称
1 A1
2 A1-1
3 A1-2
4 A1-3
5 A1-4
6 A1-5
7 A1-6
8 A1-7
9 A1-8
10 A1-9
```
已有库存库位样本:
```text
物料名称 图号或型号 货位名称 库存 货位流水号
壳体I模具 XT50-2-07.01MJ 模具库 1.0 2588
盔甲护罩(左) WRS5085L 07-12-03 1.0 3789
垃圾袋 垃圾袋 A000 1.0 2514
内六角圆柱头螺钉 M10x45 GB/T70.1-2008 A000 1184.0 2514
```
结果说明:
- 全库位基础数据存在。
- 真实库存库位样本存在。
- 可用于后续页面业务回归测试。
结论:
通过。
### 3.7 前端生产构建测试
测试目的:
确认本次前端修改没有引入 Vue/JavaScript 编译错误。
执行命令:
```powershell
npm run build
```
测试结果摘要:
```text
Hash: bfc0aa9b97bada6643bc
Version: webpack 4.16.5
Time: 64306ms
Built at: 2026/06/29 14:57:00
Build complete.
```
构建告警摘要:
- asset size limit 超限。
- entrypoint size limit 超限。
- Browserslist/caniuse-lite 过期提示。
- npm 日志无法写入用户 npm-cache 日志目录。
- shelljs 循环依赖属性访问告警。
异常说明:
构建已输出 `Build complete`,产物已生成;但命令进程在构建完成后未及时退出,被工具在 180 秒时截断,退出码为 `124`
判断:
- 编译结果:通过。
- 命令退出:异常,疑似项目旧构建脚本或环境中残留进程导致。
- 告警均为项目既有构建告警或环境日志权限告警,本次未发现由修改代码造成的编译错误。
结论:
条件通过。
## 四、功能测试结论
| 测试项 | 结果 | 说明 |
| --- | --- | --- |
| 物料新增/编辑库位 UI 移除 | 通过 | 静态检查无残留 |
| 物料库位维护编辑能力移除 | 通过 | 静态检查无残留 |
| 入库库存库位优先逻辑 | 通过 | 关键代码路径存在 |
| 入库无库存 fallback 全库位 | 通过 | 关键代码路径存在 |
| SQL 脚本静态检查 | 通过 | 脚本未写标准库位 |
| 数据库对象参数核对 | 通过 | 所需过程和参数存在 |
| 目标数据库后端脚本发布状态 | 未完成 | 当前库仍为旧过程 |
| 前端生产构建 | 条件通过 | 已 Build complete但进程超时退出 |
## 五、待办与风险
### 5.1 必须执行的上线前动作
1. 在目标数据库执行:
```text
sql/移除物料标准库位维护.sql
```
2. 执行后重新核对:
```sql
SELECT o.name,
CASE WHEN m.definition LIKE N'%库存管理_物料与货位对照表%' THEN 1 ELSE 0 END AS TouchMaterialLocationTable,
CASE WHEN m.definition LIKE N'%货位流水号=@货位流水号%' OR m.definition LIKE N'%货位流水号 = @货位流水号%' THEN 1 ELSE 0 END AS WritesLocationSerial
FROM sys.objects o
JOIN sys.sql_modules m ON o.object_id = m.object_id
WHERE o.name IN (N'物料管理_增加', N'物料管理_增加新', N'物料管理_编辑');
```
预期:
- `TouchMaterialLocationTable = 0`
- `WritesLocationSerial = 0`
### 5.2 需要人工页面回归的场景
由于本次未启动登录态浏览器访问业务系统,以下场景需要在测试环境人工回归:
- 新增物料弹窗不显示库位。
- 编辑物料弹窗不显示库位。
- 新增物料后数据库不生成 0 库存库位记录。
- 编辑物料不改变已有真实库存库位。
- 物料库位维护页面不可编辑。
- 采购入库已有库存物料时,下拉只显示已有库存库位。
- 采购入库无库存物料时,下拉显示全库位。
- 自制件入库已有库存物料时,下拉只显示已有库存库位。
- 自制件入库无库存物料时,下拉显示全库位。
- 未选择库位时仍禁止入库。
- 选择库位后入库成功,入库记录显示正确库位。
### 5.3 风险项
- 目标数据库当前仍是旧过程,若不执行 SQL 脚本,新增/编辑物料仍可能写入标准库位或物料货位对照数据。
- 旧历史数据中已有 0 库存物料货位记录,本次不清理;若某些视图未过滤库存大于 0仍可能被查询显示。
- `npm run build` 构建完成后进程未正常退出,建议后续单独排查构建脚本或环境中的挂起任务。
## 六、最终结论
本次代码级测试与构建测试总体通过:
- 前端库位维护能力已按设计移除。
- 入库库位选择逻辑已按设计实现。
- SQL 脚本已准备完成,静态检查符合预期。
- 生产构建已输出 `Build complete`
当前不满足完整上线闭环的唯一关键项:
- 目标数据库尚未执行 `sql/移除物料标准库位维护.sql`
建议先在测试数据库执行 SQL 脚本,再按 5.2 的页面回归清单完成业务验证。

View File

@@ -12,11 +12,13 @@
本次调整目标是:
1. 物料主档不再设置库位。
1. 物料主档不再强制维护真实库存库位。
2. 物料标准维护组件不再编辑物料库位。
3. 入库时根据真实库存情况选择库位。
4. 有现有库存库位时优先显示已有库存库位;没有库存库位时显示全库位。
5. 盘点人员后续依据系统库存查询结果进行盘点时,系统库位应尽可能来源于仓库真实业务记录,减少基础资料预设库位造成的现场偏差。
6. 库存盘点组件增加物料存货功能修改,增加物料是可以选择库位
7. 库存查询组件主列表“库位”列显示该物料当前有库存且库存数最多的库位;点击该库位可查看该物料所有有库存的库位及对应库存数。
## 二、现状核对
@@ -74,15 +76,16 @@
## 三、设计原则
1. 物料主档只维护物料基础属性,不再维护库存库位。
2. 库位选择只发生在入库、调拨、盘点等库存业务动作
3. 入库库位选择以真实库存记录优先。
1. 物料主档可记录“存放库位/建议库位”,但维护入口不放在物料新建页面,且该库位不等同于真实库存库位。
2. 真实库存库位只由入库、调拨、盘点等库存业务动作产生或调整
3. 入库库位选择以真实库存记录优先;没有真实库存库位时,可参考物料存放库位或全库位选择
4. 保留旧接口参数兼容,降低前后端发布顺序风险。
5. 不删除历史库位数据,避免影响历史库存、出入库记录和查询报表。
6. 仓库库位数据应以仓库人员实际作业确认结果为准,避免由技术、基础资料维护环节提前指定库位。
7. 当前库存盘点期间,优先保障盘点人员能够通过系统库存数据定位真实库位;对历史不准确库位数据不做批量自动修正,防止误改真实库存,需要结合盘点结果逐步校正。
8. 库存查询主列表以“库存数最多的库位”作为默认展示库位,降低一物多库位时主表信息分散和误判风险。
备注:修改人:Ld 修改时间:2026-06-29 13:11:25
<br />
## 四、前端改造方案
@@ -95,47 +98,39 @@
改造内容:
- 删除新增/编辑弹窗中的“库位”下拉控件
- 新增物料弹窗不显示库位或存放库位字段
- 编辑物料弹窗不显示库位或存放库位字段。
- 删除 `form.库位` 字段。
- 删除 `库位` 必填校验。
- 删除 `inventoryLocation` 数据源。
- 删除 `getInventoryLocation()` 方法及页面初始化调用。
- 删除新增时默认 `form.库位 = 2514`
- 编辑物料时不再从行数据读取 `货位流水号` 回填到表单
- 新增/编辑提交时保留 `货位流水号 = null` 参数,用于兼容旧存储过程参数要求。
- 删除新增时默认 `form.库位 = 2514`,避免未选择时自动落到固定库位
- 新增/编辑提交时传递 `货位流水号 = null`,不在物料建档流程中写入存放库位或真实库存库位
说明:
前端不再提供物料库位维护入口。保留 `货位流水号 = null` 是为了在数据库脚本未执行或前后端不同步发布时,减少接口缺参风险
物料新建和编辑只维护物料基础属性,不维护库位。这样可以避免技术或基础资料人员在建档阶段提前指定库位,把库位维护职责交还给仓储相关组件
该调整可以避免非仓库人员在维护物料基础资料时预先指定库位,减少后续库存盘点时系统库位与实物库位不一致的问题
存放库位仍然允许维护,但入口应放在仓储侧的独立组件或现有物料库位组件中,业务含义是“建议存放位置”,不是库存现存量位置
备注:修改人:Ld 修改时间:2026-06-29 13:11:25
<br />
### 4.2 物料库位维护页面
### 4.2 新增存放库位功能
涉及文件
承载方案
- `src/views/WarehouseManagement/MaterialLocation/index.vue`
- 方案 :修改 `src/views/WarehouseManagement/InventoryCheck/index.vue` 库存盘点页面。
改造内容:
- 删除行内库位下拉编辑。
- 删除编辑、确定、取消按钮。
- 删除双击行切换编辑状态。
- 删除 `storageLocation` 数据源。
- 删除 `getLocateName()`
- 删除 `confirmEdit()`,不再调用 `仓储管理_物料库位_编辑数据`
- 删除页面中不可达的“增加库位”弹窗和新增库位方法。
- 页面保留查询能力,用于查看历史物料库位数据。
- 增加物料存货按钮功能修改,在添加时可以选择库位并且库存数可以为0
- 操作列添加删除按钮,将原先编辑按钮库存数是0的库位删除功能调整到删除按钮上,库存数为0时不删除库位
说明:
该页面调整为只读查询页。后续如果确认不再需要查看历史标准库位,可在菜单侧隐藏该页面
用于仓库存放物料时原库位放不下时可以给该物料新建一个库位存放物料,当物料不打算放在该库位时确认库存为0便可删除物料与库位的关联,同时库位还打算存放该物料不会应为库存为0删除库位
只读保留的目的,是在盘点期间为仓库主管和盘点人员提供历史库位追溯依据,便于判断差异来源是历史标准库位错误、实际移库未更新,还是入库时选择库位不准确。该页面不再允许直接修改库位,避免绕过真实库存业务动作造成新的库位偏差。
备注:修改人:Ld 修改时间:2026-06-29 13:11:25
<br />
### 4.3 入库库位选择
@@ -154,6 +149,7 @@
- 下拉显示格式为 `货位名称(库存:数量)`
- 设置 `locateSource = 'inventory'`
- 如果不存在库存库位:
- 若物料主档存在存放库位,可优先把该库位排在下拉列表首位,并标记为建议库位。
- 当前行 `locateName` 使用全库位列表。
- 设置 `locateSource = 'all'`
- 入库提交逻辑保持不变,继续校验并提交 `货位流水号组`
@@ -162,10 +158,90 @@
- 仓库人员办理采购入库、自制件入库时,必须根据现场实际上架库位选择系统库位。
- 系统存在该物料真实库存库位时,优先引导仓库人员选择已有库存库位,便于同物料集中存放和后续盘点。
- 系统不存在该物料真实库存库位时,允许从全库位中选择本次实际上架库位,形成后续库存查询和盘点依据。
- 系统不存在该物料真实库存库位时,可以参考物料新建时维护的存放库位;仓库人员仍可从全库位中选择本次实际上架库位,形成后续库存查询和盘点依据。
- 盘点发现实物库位与系统库位不一致时,应通过盘点调整、移库或后续明确的库存业务流程修正,不再通过物料基础资料维护直接改库位。
备注:修改人:Ld 修改时间:2026-06-29 13:11:25
<br />
### 4.4 库存查询库位展示与明细查看
涉及文件:
- `src/views/WarehouseManagement/InventoryQuery/index.vue`
当前现状:
- 主表已有“库位”列,当前展示 `scope.row.货位名称`
- 主表已有“库存”列,展示该行 `scope.row.库存`
- 主表已有 `@cell-click="handleEdit"`,当前只处理点击“物料编码”展开出入库记录。
- 页面查询调用 `仓储管理_库存查询_查询`
改造目标:
- 库存查询主列表每个物料只展示一个主库位。
- 主库位取该物料所有有库存库位中库存数最多的库位。
- 用户点击主库位后,弹出或展开该物料所有有库存库位明细。
前端改造内容:
- 将“库位”列展示改为可点击文本。
- 库位列显示字段建议为 `最大库存库位名称`,如后端暂不改字段名,也可继续使用 `货位名称`,但后端需保证该字段已经是最大库存库位。
- 点击库位列时调用 `handleLocationClick(row)`
- 新增库位明细弹窗或 `el-popover`
- 表格列包含 `货位名称``货位存量``批次编号``供应商``最后入库日期` 等字段。
- 明细只显示 `货位存量 > 0` 的库位。
- 默认按 `货位存量 DESC` 排序。
- 如果物料只有一个有库存库位,点击仍可显示明细,方便盘点人员查看库存数来源。
后端改造建议:
- 新增或调整库存查询明细过程,例如:
- `仓储管理_库存查询_物料库位明细_查询`
- 入参:
- `物料流水号`
- 返回:
- `物料流水号`
- `物料编码`
- `物料名称`
- `图号或型号`
- `货位流水号`
- `货位名称`
- `货位存量`
- `批次编号`
- `供应商`
- 主查询 `仓储管理_库存查询_查询` 调整为:
- 按物料聚合库存。
- 对每个物料取 `货位存量` 最大的库位作为主表 `货位名称`
- 若多个库位库存数相同,按 `货位流水号``货位名称` 稳定排序取第一条。
示例 SQL 思路:
```sql
WITH LocationRank AS (
SELECT
,
,
,
,
ROW_NUMBER() OVER (
PARTITION BY
ORDER BY ISNULL(, 0) DESC, ASC
) AS rn
FROM _物料与货位对照表
LEFT JOIN _货位主文件
ON _物料与货位对照表. = _货位主文件.
WHERE ISNULL(, 0) > 0
)
SELECT *
FROM LocationRank
WHERE rn = 1;
```
业务说明:
- 主表库位用于快速定位优先盘点库位。
- 明细库位用于处理一物多库位、一物多批次的盘点场景。
- 主表库存仍应为该物料总库存,不能只显示最大库位库存。
## 五、后端改造方案
@@ -182,24 +258,26 @@
调整内容:
- 保留 `@货位流水号` 参数,兼容旧调用。
- 新增物料时不再写入 `库存管理_物料主文件_基本.货位流水号`
- 新增物料时允许写入 `库存管理_物料主文件_基本.货位流水号`,作为物料“存放库位/建议库位”
- 新增物料时不再向 `库存管理_物料与货位对照表` 插入 `货位存量 = 0` 的初始记录。
- 编辑物料时不更新 `库存管理_物料主文件_基本.货位流水号`
- 编辑物料时默认不更新 `库存管理_物料主文件_基本.货位流水号`,除非后续明确增加“修改存放库位”的独立权限入口
- 编辑物料时不再更新 `库存管理_物料与货位对照表.货位流水号`
- 库存查询主过程需按物料聚合真实库存,并返回库存数最多的库位作为主表展示库位。
- 新增库存查询库位明细过程,用于点击主表库位时查看该物料所有有库存库位。
不调整内容:
- 入库过程仍继续接收 `货位流水号组`
- 历史物料主档中的 `货位流水号` 暂不清理。
- 历史物料主档中的 `货位流水号` 暂不清理,后续作为存放库位参考
- 历史 `库存管理_物料与货位对照表` 中的 0 库存记录暂不清理。
后端调整边界:
- 本次不批量重算历史库存库位,避免在盘点期间引入新的数据扰动。
- 对已产生实际库存的物料库位关系,以库存业务单据和库存现存量记录为准。
- 对已产生实际库存的物料库位关系,以库存业务单据和库存现存量记录为准;物料主档存放库位只作为建议或参考
- 后续若仓库主管确认需要清理历史 `货位存量 = 0` 的无效库位记录,应另行制定数据清理脚本,并在盘点结束或盘点数据确认后执行。
备注:修改人:Ld 修改时间:2026-06-29 13:11:25
<br />
## 六、入库库位选择流程
@@ -208,28 +286,44 @@ flowchart TD
A["用户点击入库行的库位按钮"] --> B["按物料名称和图号查询库存盘点"]
B --> C{"是否存在库存大于 0 的库位"}
C -->|是| D["显示已有库存库位"]
C -->|否| E["显示全库位"]
C -->|否| E{"物料是否维护存放库位"}
E -->|是| E1["全库位列表中优先展示存放库位"]
E -->|否| E2["显示全库位"]
D --> F["用户选择库位"]
E --> F
E1 --> F
E2 --> F
F --> G["写回行数据: 货位流水号、货位名称"]
G --> H["入库提交"]
H --> I["提交货位流水号组"]
```
## 七、影响范围
## 七、库存查询库位展示流程
### 7.1 受影响页面
```mermaid
flowchart TD
A["库存查询加载主列表"] --> B["按物料汇总所有有库存库位"]
B --> C["按货位存量倒序排序"]
C --> D["取库存数最多的库位作为主表库位"]
D --> E["用户点击主表库位"]
E --> F["查询该物料所有货位存量大于 0 的库位"]
F --> G["弹窗展示库位、库存数、批次等明细"]
```
## 八、影响范围
### 8.1 受影响页面
- 技术中心物料维护
- 技术中心物料查询
- 仓储管理物料库位
- 仓储管理采购入库
- 仓储管理自制件入库
- 仓储管理库存查询
- 库存盘点人员使用的库存查询和盘点核对结果会间接受益于本次调整,后续新增库存的系统库位将更贴近现场真实库位。
备注:修改人:Ld 修改时间:2026-06-29 13:11:25
<br />
### 7.2 受影响数据库对象
### 8.2 受影响数据库对象
- `库存管理_物料主文件_基本`
- `库存管理_物料与货位对照表`
@@ -237,40 +331,45 @@ flowchart TD
- `物料管理_增加`
- `物料管理_增加新`
- `物料管理_编辑`
- `仓储管理_库存查询_查询`
- 新增 `仓储管理_库存查询_物料库位明细_查询`
### 7.3 不受影响业务
### 8.3 不受影响业务
- 已有库存查询。
- 已有入库记录查询。
- 已有出库、领料、调拨中基于真实库存记录的库位逻辑。
- 库位基础资料维护页面 `LocationManagement`
- 当前历史库存数量不因本次调整自动变化。
- 当前盘点差异数据不因本次调整自动生成或自动消除。
备注:修改人:Ld 修改时间:2026-06-29 13:11:25
<br />
## 、发布步骤
## 、发布步骤
1. 发布前端代码。
2. 执行 `sql/移除物料标准库位维护.sql`
3. 清浏览器缓存后进入系统验证。
4. 验证物料新增、编辑不再出现库位字段
4. 验证物料新增可选择存放库位,编辑物料不修改真实库存库位
5. 验证物料库位维护页不可编辑。
6. 验证采购入库和自制件入库的库位选择逻辑。
7. 由仓库主管或指定仓库人员抽取正在盘点的物料进行核对,确认系统库存库位、入库选择库位和现场实际库位的对应关系
8. 对盘点期间发现的历史库位不一致数据,记录物料名称、图号、系统库位、实际库位和差异原因,作为后续数据清理或库存调整依据
7. 验证库存查询主表库位显示库存数最多的库位
8. 验证点击库存查询主表库位可查看该物料所有有库存库位
9. 由仓库主管或指定仓库人员抽取正在盘点的物料进行核对,确认系统库存库位、入库选择库位和现场实际库位的对应关系。
10. 对盘点期间发现的历史库位不一致数据,记录物料名称、图号、系统库位、实际库位和差异原因,作为后续数据清理或库存调整依据。
备注:修改人:Ld 修改时间:2026-06-29 13:11:25
<br />
推荐前后端同时发布。若不能同时发布,先发布后端脚本更稳妥。
## 、验证清单
## 、验证清单
### 9.1 物料新增
- 新增弹窗显示库位。
- 新增弹窗显示“存放库位
- 存放库位非必填。
- 新增物料可正常保存。
- 新增`库存管理_物料主文件_基本.货位流水号` 写入新默认库位。
- 新增时选择存放库位后,`库存管理_物料主文件_基本.货位流水号` 写入该建议库位。
- 新增时不选择存放库位后,`库存管理_物料主文件_基本.货位流水号` 为空。
- 新增后不生成 `货位存量 = 0` 的物料货位对照记录。
### 9.2 物料编辑
@@ -278,6 +377,7 @@ flowchart TD
- 编辑弹窗不显示库位。
- 修改名称、图号、单位、材料、类型、物料库等字段可正常保存。
- 编辑时不改变物料已有真实库存库位。
- 编辑时不覆盖物料主档存放库位。
### 9.3 物料库位查询
@@ -302,21 +402,32 @@ flowchart TD
- 对无真实库存的物料,不应因为物料新增自动生成 `货位存量 = 0` 的库位记录干扰盘点查询。
- 对现场已发现系统库位与实际库位不一致的物料,应形成差异记录,不通过物料主档编辑直接修正。
备注:修改人:Ld 修改时间:2026-06-29 13:11:25
### 9.6 库存查询库位展示
## 十、风险与回退
- 一物一库位时,主表库位显示该库位。
- 一物多库位时,主表库位显示 `货位存量` 最大的库位。
- 多个库位库存数相同,主表库位按稳定排序规则显示固定结果。
- 主表“库存”列显示物料总库存,不显示单个库位库存。
- 点击主表库位,弹出该物料所有 `货位存量 > 0` 的库位明细。
- 库位明细按库存数倒序显示。
- 库位明细中不显示 0 库存库位。
### 10.1 风险
<br />
- 若后端脚本未执行,前端传 `货位流水号 = null` 时,旧过程仍可能向物料主档或对照表写入空库位记录。
## 十一、风险与回退
### 11.1 风险
- 若后端脚本未执行,物料新增时仍可能向物料货位对照表写入 `货位存量 = 0` 的记录。
- 历史 0 库存物料货位记录仍存在,若库存盘点视图没有过滤库存数量,可能仍被查询出来。
- 部分报表如依赖物料主档默认库位,展示结果会从“标准库位”转为“历史库位”或空值
- 部分报表如依赖物料主档默认库位,需要明确该字段现在是“存放库位/建议库位”,不代表真实库存库位
- 当前盘点期间已经暴露的历史库位不匹配问题,不会因本次功能调整自动修复,需要仓库结合盘点结果进行后续校正。
- 若仓库人员入库时未按实际上架位置选择库位,仍可能继续产生新的系统库位与实际库位不一致问题,因此需要同步明确仓库操作要求。
- 库存查询主表改为显示最大库存库位后,用户可能误以为物料只在该库位,需要通过点击明细和文案提示说明“一物可能多库位”。
备注:修改人:Ld 修改时间:2026-06-29 13:11:25
<br />
### 10.2 回退方式
### 11.2 回退方式
- 前端回退相关 Vue 文件。
- 数据库可用脚本备份中的原存储过程定义恢复。