Files
JY1.0/docs/核心物料搜索栏添加物料编码查询设计方案.md

400 lines
22 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 核心物料搜索栏添加物料编码查询设计方案
## 1. 需求背景
本需求由罗伟提出,主要服务于现场库存盘点业务。
当前现场正在进行库存盘点。盘点过程中发现,系统内部分物料在新建物料信息时,由于历史录入习惯、命名规则不统一、同类物料复用名称、图号或型号描述不完整等原因,存在物料名称重复、图号或型号重复、名称与图号组合仍无法准确区分物料的情况。
在盘点现场,仓库人员需要快速确认实物标签对应的系统物料。如果仅依赖物料名称、规格型号、图号等字段进行搜索,当多个物料名称或图号相近甚至重复时,页面会返回多条近似记录,盘点人员需要逐条比对,容易出现以下问题:
1. 盘点确认速度慢,影响现场盘点效率。
2. 同名或同图号物料难以区分,增加误选风险。
3. 实物标签与系统数据匹配不稳定,后续盘点差异复核成本高。
4. 现场人员对物料主数据命名差异不熟悉时,更难快速定位唯一物料。
为解决上述问题,现场计划后续物料标签统一使用唯一的物料编码作为识别依据。同时,系统内最核心的物料搜索栏页面需要增加“物料编码”查询筛选能力,使盘点人员可以直接根据标签上的唯一物料编码定位系统物料,避免因物料名称、图号或型号重复导致的识别困难。
<br />
## 2. 建设目标
本次设计目标是在项目中最核心、最常用于物料查询和盘点确认的页面搜索栏中增加“物料编码”查询功能。
具体目标如下:
1. 在核心物料搜索栏页面增加独立的“物料编码”输入条件。
2. 支持用户输入物料编码后直接查询并筛选唯一或近似匹配物料。
3. 保留原有物料名称、图号或型号、物料类型、库位、仓库等查询条件,保证历史操作习惯不受影响。
4. 支持物料编码与原有查询条件组合筛选。
5. 后端查询过程增加物料编码可选参数,未输入物料编码时保持原查询结果不变。
6. 涉及导出、分页、排序等功能的页面,应保持查询结果与导出结果一致。
7. 为后续物料标签使用唯一物料编码提供系统查询支撑。
备注:修改人:Ld 修改时间:2026-06-29 13:26:44
## 3. 设计范围
本次范围以“页面搜索栏”为主,不包含新增物料、选择物料、查看库存等弹窗中的临时查询入口。
优先改造以下最核心页面:
| 模块 | 页面名称 | 文件路径 | 当前查询特点 | 本次调整 |
| ---- | ----- | ----------------------------------------------------------------------- | ------------------------------- | ------------------- |
| 技术中心 | 物料查询 | `src/views/TechnologyCenter/MaterialQuery/index.vue` | 物料主数据查询,已有物料编码、物料名称、图号/型号等条件 | 统一确认物料编码条件传参和后端过滤能力 |
| 技术中心 | 物料维护 | `src/views/TechnologyCenter/MaterialMaintain/index.vue` | 物料主数据维护,已有物料编码、物料名称、图号/型号等条件 | 统一确认物料编码条件传参和后端过滤能力 |
| 仓储管理 | 库存查询 | `src/views/WarehouseManagement/InventoryQuery/index.vue` | 库存主查询,包含物料编号、物料名称、图号型号、类型、库位等条件 | 增强物料编码精确定位能力 |
| 仓储管理 | 物料库位 | `src/views/WarehouseManagement/MaterialLocation/index.vue` | 按物料、图号、库位查询物料所在库位 | 增强按物料编码定位库位能力 |
| 仓储管理 | 库存盘点 | `src/views/WarehouseManagement/InventoryCheck/index.vue` | 盘点现场高频页面,涉及物料、图号、编码等查询条件 | 重点支持标签物料编码查询 |
| 仓储管理 | 入库记录 | `src/views/WarehouseManagement/WarehousingRecord/WarehousingRecord.vue` | 入库记录中可按物料名称、物料编码等条件筛选 | 确认搜索栏编码条件与导出条件一致 |
| 仓储管理 | 退货记录 | `src/views/WarehouseManagement/ReturnRecord/index.vue` | 当前输入框偏综合条件,按物料名称/编号/规格/型号查询 | 明确拆分或补充物料编码查询能力 |
| 仓储管理 | 物料记录 | `src/views/WarehouseManagement/MaterialRecord/index.vue` | 物料出入库记录查询,当前主要按物料名称筛选 | 增加物料编码条件 |
| 仓储管理 | 库存记录 | `src/views/WarehouseManagement/InventoryRecord/index.vue` | 库存历史记录查询,当前主要按物料名称筛选 | 增加物料编码条件 |
| 仓储管理 | 采购件入库 | `src/views/WarehouseManagement/PurchasePartsStorage/index.vue` | 入库相关查询涉及物料名称、图号或型号 | 增加或统一物料编码条件 |
后续可根据现场使用频率扩展至采购、精工车间、销售、装配等更多页面,但第一阶段应优先保证仓储盘点和物料主数据查询链路完整。
备注:修改人:Ld 修改时间:2026-06-29 13:26:44
## 4. 现状问题分析
### 4.1 物料名称不是唯一识别字段
物料名称用于业务人员理解物料含义,但并不适合作为唯一识别依据。现场存在同类物料使用相同或近似名称的情况,例如名称相同但规格、批次、厂家、图号或内部编码不同。
仅按物料名称查询时,系统可能返回多条记录,盘点人员需要再人工判断,效率低且容易误选。
备注:修改人:Ld 修改时间:2026-06-29 13:26:44
### 4.2 图号或型号也可能重复或不完整
图号或型号通常来源于技术资料、采购资料或历史录入。由于历史数据存在命名不统一、字段填写不完整、图号简称和完整图号混用等情况,图号或型号同样无法稳定保证唯一。
盘点人员如果只扫描或输入图号,仍可能出现多条记录,无法快速确认实物对应的系统物料。
备注:修改人:Ld 修改时间:2026-06-29 13:26:44
### 4.3 现场标签需要与系统查询方式统一
现场后续计划使用唯一物料编码作为标签识别字段。如果系统页面没有物料编码搜索能力,即使实物标签已经规范,人员仍需要通过名称或图号间接查找,标签规范化的价值无法充分发挥。
因此,系统查询方式必须与标签识别方式保持一致。
备注:修改人:Ld 修改时间:2026-06-29 13:26:44
## 5. 总体方案
本次方案采用“前端增加独立查询条件、后端存储过程增加可选参数、查询和导出同步支持”的方式实施。
### 5.1 前端搜索栏调整
在核心页面搜索栏中增加或确认“物料编码”输入框。
推荐展示方式:
```html
<el-input
v-model="materialCodeValue"
style="width: 160px"
placeholder="物料编码"
size="small"
clearable
@keyup.enter.native="pageCurrent=1;searchTable()"/>
```
如果页面已有“物料编号”输入框,应统一确认其实际传参字段是否对应数据库中的 `物料编码`。如果只是综合搜索字段,应调整为独立字段,避免和物料名称、规格型号混在同一个条件中。
备注:修改人:Ld 修改时间:2026-06-29 13:26:44
### 5.2 前端参数拼接规则
`searchTable()` 或对应主查询方法中增加物料编码条件。
推荐参数格式:
```js
this.materialCodeValue ? materialCodeValue_check = 1 : materialCodeValue_check = 0
param[n] = ['物料编码_check', materialCodeValue_check]
param[n + 1] = ['物料编码', this.materialCodeValue]
```
如果后端存储过程使用字段名 `物料编码`,前端统一传 `物料编码_check``物料编码`。如果历史过程使用 `物料码``物料编号``物料流水号` 等字段,需要在后端过程内做兼容或在本页面保持原过程约定,但文档和页面显示统一为“物料编码”。
备注:修改人:Ld 修改时间:2026-06-29 13:26:44
### 5.3 后端查询过程调整
涉及页面对应的存储过程需要增加物料编码可选参数。
推荐参数:
```sql
@_check int = 0,
@ nvarchar(100) = null
```
推荐过滤逻辑:
```sql
if @_check = 1
begin
set @sql = @sql + ' and 物料编码 like ''%'' + @物料编码 + ''%'' '
end
```
如果业务上要求扫码后精确定位,可在库存盘点页面优先使用精确匹配:
```sql
and = @
```
考虑到目前系统搜索习惯多为模糊查询,第一阶段建议使用模糊查询;后续如果标签扫码稳定,可在盘点页面增加“精确匹配”策略或自动识别完整编码时使用精确匹配。
备注:修改人:Ld 修改时间:2026-06-29 13:26:44
### 5.4 查询与导出一致
凡是页面支持 Excel 导出的,导出参数必须同步增加物料编码条件。
要求:
1. 页面查询传入 `物料编码_check``物料编码`
2. 导出方法传入同样的 `物料编码_check``物料编码`
3. 同一组搜索条件下,页面列表与导出文件数据范围一致。
备注:修改人:Ld 修改时间:2026-06-29 13:26:44
## 6. 页面设计细节
### 6.1 物料查询页面
文件:`src/views/TechnologyCenter/MaterialQuery/index.vue`
设计要求:
1. 搜索栏保留物料编码、物料名称、图号/型号、物料类型、修改时间。
2. 查询方法 `searchTable()` 中确认 `物料编码_check``物料编码` 参数可传入后端。
3. 表格中建议保留或增加物料编码列,便于和搜索条件互相验证。
4. 物料编码为空时,查询结果与原逻辑一致。
备注:修改人:Ld 修改时间:2026-06-29 13:26:44
### 6.2 物料维护页面
文件:`src/views/TechnologyCenter/MaterialMaintain/index.vue`
设计要求:
1. 与物料查询页面保持搜索条件一致。
2. 维护人员可通过物料编码快速定位需要修改的物料。
3. 如果物料名称或图号重复,编码搜索结果应能明确定位到具体记录。
4. 修改物料基础信息时,不允许随意修改唯一物料编码;如确需修改,应由权限或后端规则控制。
备注:修改人:Ld 修改时间:2026-06-29 13:26:44
### 6.3 库存查询页面
文件:`src/views/WarehouseManagement/InventoryQuery/index.vue`
设计要求:
1. 搜索栏保留物料编号、物料名称、图号型号、类型、库位或仓库等条件。
2. 页面显示文案建议统一为“物料编码”,避免“物料编号”和“物料编码”混用造成理解偏差。
3. 查询时支持按物料编码过滤当前库存。
4. 如果用户同时输入物料编码和库位,应返回该编码在指定库位下的库存记录。
5. 导出库存数据时同步带入物料编码条件。
备注:修改人:Ld 修改时间:2026-06-29 13:26:44
### 6.4 物料库位页面
文件:`src/views/WarehouseManagement/MaterialLocation/index.vue`
设计要求:
1. 搜索栏保留物料编码、物料名称/规格、图号/型号、库位。
2. 现场可输入标签物料编码,快速确认该物料当前绑定或存放库位。
3. 物料编码与库位组合查询时,应可用于检查实物库位与系统库位是否一致。
4. 若未查到数据,应提示用户确认物料编码是否存在或是否已维护库位。
备注:修改人:Ld 修改时间:2026-06-29 13:26:44
### 6.5 库存盘点页面
文件:`src/views/WarehouseManagement/InventoryCheck/index.vue`
设计要求:
1. 作为本次需求的重点页面,搜索栏必须支持物料编码。
2. 现场盘点时,人员可根据物料标签输入或扫码物料编码,快速筛选盘点记录。
3. 如果物料编码唯一匹配一条库存记录,应减少人工在多条同名物料中判断的成本。
4. 如果同一物料编码在多个库位有库存,应按库位分行展示,便于盘点人员逐库位确认。
5. 盘点导入、盘点导出、盘点明细查询如使用同一查询条件,应同步支持物料编码。
备注:修改人:Ld 修改时间:2026-06-29 13:26:44
### 6.6 入库记录和退货记录页面
涉及文件:
- `src/views/WarehouseManagement/WarehousingRecord/WarehousingRecord.vue`
- `src/views/WarehouseManagement/ReturnRecord/index.vue`
设计要求:
1. 入库记录应可按物料编码追溯某一物料的入库历史。
2. 退货记录应可按物料编码追溯某一物料的退货历史。
3. 如果当前页面只有“物料名称/编号/规格/型号”综合输入框,建议拆分出独立“物料编码”输入框。
4. 页面查询与导出保持一致。
备注:修改人:Ld 修改时间:2026-06-29 13:26:44
## 7. 接口和存储过程影响
本项目业务请求统一通过 `MESCommonBase.ashx`,前端通过 `CreateData(type, name, data, pageSize, pageList)` 构建请求。新增物料编码查询不改变请求端点,不新增前端请求封装方式。
可能涉及的后端过程包括但不限于:
| 页面 | 可能涉及接口或过程 | 调整内容 |
| ---- | ------------------------ | -------- |
| 物料查询 | `物料管理_查询数据_分页` | 增加物料编码过滤 |
| 物料维护 | `物料管理_查询数据_分页` 或对应维护查询过程 | 增加物料编码过滤 |
| 库存查询 | 仓储库存查询相关过程 | 增加物料编码过滤 |
| 物料库位 | 仓储管理物料库位查询相关过程 | 增加物料编码过滤 |
| 库存盘点 | 仓储管理库存盘点查询相关过程 | 增加物料编码过滤 |
| 入库记录 | 仓储管理入库记录查询和导出过程 | 增加物料编码过滤 |
| 退货记录 | 仓储管理退货记录查询过程 | 增加物料编码过滤 |
后端调整原则:
1. 新增参数必须为可选参数,避免影响未改造页面。
2. 原有查询条件保持不变,物料编码作为新增条件叠加。
3. SQL 字段命名优先使用数据库现有字段,常见字段为 `物料编码`
4. 如果查询主表没有物料编码字段,应通过物料流水号关联物料主文件取得编码后过滤。
5. 对大数据页面应确认物料编码字段有索引或可使用已有索引,避免新增条件后查询变慢。
备注:修改人:Ld 修改时间:2026-06-29 13:26:44
## 8. 数据规则
### 8.1 物料编码唯一性
物料编码应作为系统内识别物料的唯一业务编码。后续标签打印、库存盘点、入库、出库、库位维护等环节,应优先使用物料编码进行识别和核对。
如果历史数据中存在物料编码为空或重复,应先由主数据维护人员进行清理,并形成异常清单。
备注:修改人:Ld 修改时间:2026-06-29 13:26:44
### 8.2 物料名称和图号保留辅助识别
新增物料编码搜索后,物料名称、图号或型号仍然保留,用于人工理解和辅助筛选。系统不应因为新增物料编码而删除或弱化原有查询字段。
推荐使用方式:
1. 盘点现场优先输入或扫码物料编码。
2. 不清楚编码时,可使用物料名称或图号模糊查询。
3. 编码、名称、图号可组合使用,进一步缩小范围。
备注:修改人:Ld 修改时间:2026-06-29 13:26:44
## 9. 前端开发步骤
1. 梳理核心页面现有搜索栏,确认是否已有物料编码输入框。
2. 对没有独立物料编码输入框的页面,新增 `el-input`
3.`data()` 中新增或确认变量,例如 `materialCodeValue``MaterialCode`
4.`searchTable()` 中增加编码输入值判断,生成 `物料编码_check`
5.`param` 数组中追加 `物料编码_check``物料编码`
6. 同步调整导出方法中的查询参数。
7. 确认分页重置逻辑:点击查询或回车查询时,`pageCurrent` 应重置为 `1`
8. 检查表格是否显示物料编码列;若不显示,应评估是否需要补充。
9. 按项目要求在变更代码处追加备注:`修改人:Ld 修改时间:当时的时间`
备注:修改人:Ld 修改时间:2026-06-29 13:26:44
## 10. 后端开发步骤
1. 确认各页面 `CreateData` 中的 `name` 对应后端存储过程。
2. 在存储过程参数中增加 `物料编码_check``物料编码`
3. 在查询条件中增加物料编码过滤逻辑。
4. 如果过程使用动态 SQL同步补充 `sp_executesql` 参数定义和参数传值。
5. 如果导出使用独立过程,导出过程同步增加物料编码过滤。
6. 对库存盘点、库存查询等大数据过程执行查询计划检查。
7. 使用实际物料编码测试单条件查询、组合条件查询、空条件查询。
备注:修改人:Ld 修改时间:2026-06-29 13:26:44
## 11. 验收标准
### 11.1 功能验收
1. 在核心物料搜索栏页面可以看到“物料编码”查询条件。
2. 输入完整物料编码后,可以查询到对应物料或库存记录。
3. 输入不存在的物料编码时,页面返回空结果,不报错。
4. 物料编码与物料名称组合查询时,结果同时满足两个条件。
5. 物料编码与图号或型号组合查询时,结果同时满足两个条件。
6. 清空物料编码后,查询结果恢复为原有条件下的结果。
7. 页面分页、排序、刷新后查询逻辑正常。
8. 导出文件与页面查询结果范围一致。
备注:修改人:Ld 修改时间:2026-06-29 13:26:44
### 11.2 现场验收
1. 使用现场物料标签上的唯一物料编码进行查询。
2. 同名物料、同图号物料场景下,能通过物料编码准确区分。
3. 盘点人员可以根据物料编码快速定位物料及库位。
4. 现场不再需要仅依赖物料名称或图号人工判断同名物料。
5. 盘点差异复核时,可以通过物料编码追溯库存记录、入库记录或退货记录。
备注:修改人:Ld 修改时间:2026-06-29 13:26:44
## 12. 测试用例
| 用例编号 | 测试场景 | 操作步骤 | 预期结果 |
| ------ | --------- | ---------------- | ---------------- |
| TC-001 | 按完整物料编码查询 | 输入完整物料编码,点击查询 | 返回对应物料记录 |
| TC-002 | 按部分物料编码查询 | 输入物料编码前几位,点击查询 | 返回编码包含输入内容的记录 |
| TC-003 | 编码不存在 | 输入不存在的编码,点击查询 | 返回空列表,页面不报错 |
| TC-004 | 编码加名称组合查询 | 输入物料编码和物料名称,点击查询 | 结果同时满足编码和名称条件 |
| TC-005 | 编码加图号组合查询 | 输入物料编码和图号,点击查询 | 结果同时满足编码和图号条件 |
| TC-006 | 清空编码查询 | 清空物料编码,仅保留原条件查询 | 结果与原逻辑一致 |
| TC-007 | 盘点页面标签验证 | 使用现场标签编码查询库存盘点页面 | 能快速定位对应物料或对应库位库存 |
| TC-008 | 导出一致性 | 输入物料编码查询后导出 | 导出数据与页面筛选范围一致 |
备注:修改人:Ld 修改时间:2026-06-29 13:26:44
## 13. 风险与控制
| 风险 | 影响 | 控制措施 |
| ---------------------- | ------------- | ------------------------- |
| 历史物料编码为空 | 无法通过编码定位部分旧物料 | 输出异常清单,先补齐主数据 |
| 历史物料编码重复 | 查询结果仍可能多条 | 主数据维护阶段校验唯一性 |
| 前端显示“物料编号”、后端字段为“物料编码” | 用户理解和开发传参不一致 | 页面文案统一为“物料编码”,后端字段按实际字段兼容 |
| 大表增加模糊查询后变慢 | 查询性能下降 | 对物料编码字段建立索引,必要时完整编码使用精确匹配 |
| 查询和导出条件不一致 | 用户导出数据与页面不一致 | 导出方法同步加入物料编码参数 |
| 弹窗查询未同步改造 | 部分业务入口仍无法按编码查 | 第一阶段聚焦页面搜索栏,第二阶段再扩展弹窗 |
备注:修改人:Ld 修改时间:2026-06-29 13:26:44
## 14. 推进计划
| 阶段 | 工作内容 | 产出 |
| ---- | --------------------------- | -------------- |
| 第一阶段 | 确认核心页面和对应存储过程 | 页面与接口清单 |
| 第二阶段 | 改造库存盘点、库存查询、物料库位、物料查询、物料维护 | 核心页面支持物料编码查询 |
| 第三阶段 | 改造入库记录、退货记录、物料记录、库存记录、采购件入库 | 相关追溯页面支持物料编码查询 |
| 第四阶段 | 调整导出、分页、排序、后端过程性能 | 查询与导出一致 |
| 第五阶段 | 使用现场标签数据验收 | 验收记录和问题清单 |
备注:修改人:Ld 修改时间:2026-06-29 13:26:44
## 15. 结论
本次“核心物料搜索栏添加物料编码查询功能”是库存盘点现场提出的实际业务需求。需求核心不是简单增加一个输入框,而是将现场实物标签识别方式与系统查询方式统一起来。
通过在核心物料搜索栏页面增加物料编码查询能力,系统可以减少因物料名称、图号或型号重复导致的盘点确认困难,帮助现场人员以唯一物料编码快速定位物料、库存和库位记录,提高盘点效率和数据准确性。
第一阶段建议优先完成仓储盘点和物料主数据相关页面,确保现场库存盘点可用;第二阶段再逐步扩展到采购、生产、装配、销售等模块中更多物料相关查询入口。
备注:修改人:Ld 修改时间:2026-06-29 13:26:44