3.7 KiB
物料供应商、制造商与重复检查实施计划
执行说明: 按任务逐项实施;本次在当前会话中直接执行。
目标: 为物料新增/编辑及 Excel 导入增加可选供应商和制造商,并检查物料名称、规格、单位、供应商、制造商五项完全相同的记录。
实现方式: 复用 materials.supplier_id 和 materials.manufacturer_id 关联当前公司的伙伴记录。扩展物料请求、读取和保存流程,并在服务端校验伙伴所属公司和角色。单条新增发现重复时由界面提示确认;批量导入发现数据库或同一文件中的重复行时,按现有整批校验规则返回行号并取消整批写入。
技术栈: Go、MySQL、Vue 3、Element Plus、Excelize。
需求依据: 2026-10-13 会话中用户确认的规则和字段范围。
全局约束
- 供应商和制造商均为选填。
- 仅当名称、规格、单位、供应商、制造商全部相同时,判定为重复。
- 伙伴必须属于当前公司,并具有对应的供应商或制造商身份。
- 保留工作区中已有的未提交修改,不覆盖无关内容。
- 按本会话要求,不新增或运行测试。
任务一:保存并返回物料伙伴关联
文件:
- 修改:
internal/model/model.go - 修改:
internal/service/material.go - 修改:
internal/repository/material.go - 修改:
internal/handler/api.go
接口约定:
-
物料 JSON 使用可空的
supplier_id和manufacturer_id伙伴 ID。 -
新增与更新时,服务端校验伙伴属于当前公司且具备相应身份。
-
在物料实体和新增/更新请求中加入两个可选 ID。
-
在新增、查询、列表、更新 SQL 中读写数据库已有的两个字段。
-
增加公司范围和伙伴身份校验,并将无效选择作为请求错误返回。
任务二:完善单条物料表单和重复提示
文件:
- 修改:
frontend/src/views/materialForm.js - 修改:
frontend/src/views/Materials.vue - 修改:
frontend/src/api/materials.js - 修改:
frontend/src/api/partners.js - 修改:
internal/repository/material.go - 修改:
internal/service/material.go - 修改:
internal/handler/api.go
接口约定:
-
判重请求传入名称、规格、单位及供应商/制造商 ID,返回当前公司的匹配物料。
-
新增表单显示匹配记录,并允许用户取消或确认继续新增。
-
增加供应商、制造商选择框,从当前公司按伙伴身份加载选项。
-
增加重复检查接口,并按确认的五项字段匹配。
-
新增物料前检查重复项;命中时展示确认提示。
任务三:完善 Excel 模板和批量重复校验
文件:
- 修改:
internal/model/material_import.go - 修改:
internal/service/material_import_excel.go - 修改:
internal/service/material_import.go - 修改:
internal/repository/material.go - 修改:
frontend/src/components/business/MaterialImportResult.vue - 修改:
docs/api.md
接口约定:
-
模板中的
供应商、制造商列均为选填;按当前公司伙伴名称或编码解析。 -
与已有物料或本文件较早行完全重复时,返回对应行号;任一行出错则整批不写入。
-
更新模板表头、填写说明、示例行、解析器和错误数据。
-
将伙伴名称或编码解析为当前公司的伙伴 ID,并报告无效或身份不符的输入。
-
批量读取已有物料判重,并检查本文件内前序行。
-
更新错误明细页面和 API 文档。
完成检查
- 检查差异,确认工作区既有的无关修改仍保留。
- 不运行测试或构建,遵循本会话要求。