docs: update 上线前剩余项详细落地方案文档

新增并完善了上生产线前的全部待落地事项文档,包括WMS出库优化、图号文案修改、检验入库联动、批次规则、库位管理、台账查询、半成品流程、MES质检、BOM管理、工艺附件、自动排产、跨天在制品、工位配置、工单绩效、拧紧清理和帮助文档补齐等全量改造内容,附详细代码修改说明
This commit is contained in:
SunYF
2026-09-16 09:38:59 +08:00
parent dbeb91e1bd
commit b4b274301d
2 changed files with 152 additions and 0 deletions
+1
View File
@@ -244,6 +244,7 @@ go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTV
go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg=
golang.org/x/crypto v0.53.0 h1:QZ4Muo8THX6CizN2vPPd5fBGHyogrdK9fG4wLPFUsto=
golang.org/x/crypto v0.53.0/go.mod h1:DNLU434OwVakk9PzuwV8w62mAJpRJL3vsgcfp4Qnsio=
golang.org/x/image v0.14.0/go.mod h1:HUYqC05R2ZcZ3ejNQsIHQDQiwWM4JBqmm6MKANTp4LE=
golang.org/x/mod v0.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4=
golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ=
golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8=
+151
View File
@@ -520,3 +520,154 @@
三个服务当前跑的是**旧构建**(前端静态已更新到磁盘,但需重启进程 / 重新 `build.bat` 打包才会生效)。用户要求打包时走各项目自带 `build.bat`
---
## 十四、上生产线前剩余项 · 详细落地方案(2026-09-16,待用户确认后执行)
> 用户指令:①不分优先级,全部一起解决;②以「你已裁决的口径」为准(客户原话里被你否掉/改掉的不照客户原话,照你的裁决);③方案要非常详细、结合实际代码,逐文件逐字段,等确认后再动手。
> 本轮全部内容已逐文件核实真实代码(文件:行号附后),非凭记忆。
### 关键口径(以你的裁决为准,防止再被客户原话带偏)
| 议题 | 你的最终裁决 | 落地原则 |
|---|---|---|
| 归属下拉 | 附一#2「工单号/科技项目号/**其他**」 | 用「其他」,**不是**「无」;出库同样补归属 |
| 不合格原因 | 附二#5「删除」 | 已删(代码确认),不再引入 |
| 质量检验菜单 | 附二#7「来料/过程/完工三分命名,表不变」 | 沿用,不在 MES 再问"放哪" |
| 物料清单归属 | 附二#10「拒绝,归属放检验单,清单补相关标准」 | 清单**不加归属**,加「相关标准」字段 |
| 图号合并 | L16-18「编码保留作唯一标识,仅显示文案统一叫图号」 | **只改显示文案**,字段 code 不动 |
| 库位 | 附二#4「拒绝全自动,做推荐库位」 | 做推荐(历史常用+同区空位),非全自动 |
| 0/13 工位 | 附一#9「无实体位,用 PAD 操作,业务照常」 | 加 0/13 虚拟工位 |
| 跨天在制品 | L440「只排未开工数量,在制品跨天继续」 | 补 WIP 承接 |
---
### A. WMS 出库整块(最大缺口)
**A1. 出库分类 + 归属 + 批次/SN 自动切换**
- 后端 `schema/outbound_order.go`(现字段 17-39)新增 4 字段:
- `outbound_category` string(枚举:return_sample/return_material/scrap/deliver/other,对应 退料/样品/报废/发货/其他;"其他"可手输原因)
- `ownership_type` stringworkorder/project/other,与入库 `inbound_order.go:32-33` 对齐)
- `ownership_no` string(归属单号)
- `target_station` string(目标工位,用于"送到哪个工位")
- 后端 `internal/handler/outbound.go`
- `generalOutboundRequest`:303-313)增 `outboundCategory/ownershipType/ownershipNo/targetStation` 四字段;`outboundCategory=other``remark` 必填(承载手输原因)。
- `queryOutboundHandler`:244-300)补齐筛选:`outboundCategory/ownershipNo/materialName/targetStation/startDate/endDate`——**修复当前前端传了 outboundType/日期但后端忽略的 bug**。
- 出库时按物料 `manage_mode` 走批次或 SN(后端已按 `len(snList)>0` 反推,改为显式取物料 manage_mode)。
- 前端 `frontend/src/pages/Outbound.vue`
- `genForm`(:104)增 出库类别(radio:退料/样品/报废/发货/其他,选其他时显示原因输入框)、归属类型+归属单号(联动下拉)、目标工位。
- 批次/SN 框改为**由所选物料的 manage_mode 自动切换**(当前 `:284-289` 是手动单选,改为监听 `MaterialSelect` 选中物料后自动 set mode)。
- 通用出库记录 Tab `loadGenRows`:133)传参补全。
**A2. 出库记录列表加列 + 筛选**
- 前端 `Outbound.vue` records 页签:
- 列表(:399-424)加「归属」「目标工位」两列。
- 筛选 `recFilters`(:172)增 归属单号、名称图号、日期范围(已有 dateRange,需后端支持)。
### B. WMS 图号与物料编码合并(只改显示文案)
> 原则:`material.code` 字段**保留**作唯一标识,仅把界面 label 从「物料编码」改为「图号」。物料档案「新增」时 label 显示「物料编码/图号」,其余页面统一「图号」。
- 前端 `frontend/src/pages/` 以下文件把「物料编码」显示文案改为「图号」("新增"处用「物料编码/图号」):
- `BaseData.vue`:401,402,439,448,494)—— 列表列 :448 改「图号」,表单 :494 改「物料编码/图号」
- `Inbound.vue`:441,505,577,578,615,669
- `Inspection.vue`:406,407,449,517,537
- `Ledger.vue`:74,75,103)、`Outbound.vue`:254)、`Inventory.vue`:243,244,295,366)、`Semi.vue`:190,191,206)、`ReturnOrder.vue`:87)、`Dashboard.vue`:75)、`Agv.vue`:228
- `help.js` 全文「物料编码」改「图号」(约 14 处)
- 后端导出/导入表头同步:`material.go:378/414``inbound.go:431``outbound.go:543``inspection.go:355` 的「物料编码」表头改「图号」。
### C. WMS 检验跳转入库 + 入库记录合格/不合格列
- 前端 `Inspection.vue` `submitInspection`(:99-152)提交成功后,加「跳转入库」入口:`router.push('/inbound')` 并携带 `检测单号`inspectionNo)+ 物料类型(结构件/电气件)作为 query 参数;入库页 `Inbound.vue` onMounted 读取 query 自动回填检测单号。
- 后端 `schema/inbound_order.go` 新增 `quality_status` string(合格/不合格/部分,非必填,默认空表示未关联检验);入库记录查询在返回时 join 该批对应的 `inspection_record.status` 回填。
- 前端 `Inbound.vue` 入库记录列表(:607-648)加「合格/不合格」列。
### D. WMS 批次号规则
- 后端 `internal/handler/inbound.go` `genBatchNo`(:460-479)改写为「物料编码-日期-流水号」:格式 `{materialCode}-YYYYMMDD-{3位流水}`,流水号用数据库序列或按当日该物料已生成数量自增(查询当日该物料最大批次号取流水+1),保证唯一;去掉当前 `"B"+时间戳+末4位` 方案与 TODO。
- `excel.go:370` 批量导入空批次的后缀逻辑同步改为唯一流水,避免并发重复。
### E. WMS 区域库位贯通 + 库位推荐
- 后端 `schema/inventory.go` 新增 `shelf_no/layer_no/position_no` 三字段(与 zone 表 :22-26 对齐),入库/出库/库存行落位。
- 前端 `Inbound.vue` 区域选择(:411-416、:461-466、:539-544)从「只选 zoneCode」改为「区域→货架→层→位置」四级联动下拉;库存查询 `Inventory.vue` 展示完整库位串。
- 后端新增库位推荐:入库选物料后,返回该物料「历史常用库位 + 同区空位」候选(新 handler,如 `POST /api/inbound/suggest-zone`),前端一键确认或手改。
### F. WMS 备料台账完成时间查询
- 后端 `schema/order_material_ledger.go` 新增 `completed_at` int64;领料完结处(`outbound.go:210-217`)写 `completed_at`
- `queryLedgerHandler``misc.go:276-357`)增 `completeStart/completeEnd` 时间范围筛选。
- 前端 `Ledger.vue` 筛选(:68-93)加「完成时间」日期范围。
### G. WMS 半成品/成品入库字段 + 出库原因
- 后端 `internal/handler/misc.go` `semiInboundHandler`:32-108)请求体(:34-42)增 `ownershipType/ownershipNo/productStatus/relatedStandard/testRecordNo/recordedBy/recordedAt`;落库到 inventory 对应新字段。
- 前端 `Semi.vue` 入库表单 `inForm`(:28)增:归属、产品状态(已通过/部分通过/返修)、相关标准(试验方案号)、试验记录单号、记录员、记录日期;挂接 `AttachmentPanel`bizType=semi,后端已支持)。
- 半成品出库(`Semi.vue:173-186`)加「原因」按钮(包装/继续生产/检验试验/其他)+ 扫 SN 后自动带出该 SN 的物料/已完成工序/库位信息(后端 `semiOutboundHandler` `misc.go:111-148` 增按 SN 查询返回明细)。
---
### H. MES 车间质量检验(过程/完工)
> 菜单命名沿用你裁决:来料/过程/完工三分。来料在 WMS 已做,此处补 MES 侧过程/完工检验录入。
- 后端 `schema/inspection_record.go``category` 枚举加 `INCOMING/PROCESS/FINAL`(现 :27 只有 CHECKIN/POINT/PROCESS/DONE/ALARM);新增字段:`reportNo`(报检单号)、`manufacturer`(生产厂家)、`inspectionNo`(检验单号)、`attachmentIds`(附件)、`disposalType`(退货/返修/退换)、`disposalRemark`
- 后端 `logic/inspection.go`:新增「按物料编码/名称图号调出 BOM 料信息」接口;新增「不合格单一键生成」`GenerateUnqualifiedReport`(模板导出 PDF/Excel);处置动作区分 退货/返修/退换。
- 前端 `frontend/src/pages/Inspect.vue` 或新页 `QualityInspection.vue`:新增「过程检验/完工检验」录入页签(选物料编码/图号 → 自动带出 BOM → 填报检单号/厂家/检验单号/附件 → 不合格一键生成不合格单 → 处置退货/返修/退换)。
### I. MES 产品物料清单补字段 + 导入
- 后端 `schema/bom_item.go` 新增 `relatedStandard`(相关标准/检验细则) string`processCode` 语义保持"装配工序",另新增 `stepBelong`(工序所属) 可选关联。
- 后端新增 BOM Excel 导入接口(`internal/handler/production/bom_material.go``ImportBomHandler`,模板:产品编号|物料清单名称|物料编码|名称|规格|单位|单台用量|损耗率|装配工位|相关标准|备注)。
- 前端 `Bom.vue`(列表 :22-54、表单 :60-87)加「相关标准」列/字段 + 「导入」按钮;菜单名 seed.go:72 由「物料清单」改「产品物料清单」。
### J. MES 工艺步骤附件/图纸按工序分发
- 后端 `schema/process_step.go` 新增 `attachment`(可多份,jsonb 或关联 attachment 表 bizType=step)。
- 后端 `StationTask``processflow.go:352-385`)的 `steps` 返回每步骤附件列表;工位终端按当前步骤过滤展示。
- 前端 `ProcessFlow.vue` 步骤子表(:105-147)加「本步骤图纸/附件」上传列。
- 工位终端 `frontend/src` 工艺文件展示:由「整流程单 PDF」改为「当前步骤的图纸/附件」。
### K. MES 自动排产(引导式)
- 后端 `logic/dailyplan.go` 新增 `AutoSchedule`:输入 工单 + 模式(平均分摊/固定日产)+ 日期区间 → 生成多条 `daily_plan`status=PENDING,人工确认后启用);校验排产合计 ≤ 工单 quantity。
- 前端 `WorkOrder.vue` 列表加「自动排产」按钮,弹窗引导:选模式 → 选日期区间(可多段,如 6/23-26、6/28-29)→ 生成未启用排产单。
- 前端 `DailyPlan.vue` 增加「启用/停用」状态操作。
### L. MES 跨天在制品 WIP + 0/13 工位
**L1. 跨天在制品**
- 后端 `logic/dailyplan.go` `AutoSchedule`/`SaveDailyPlan` 计算排产量时,只排「未开工数量 = 工单 quantity − 已完工 − 已进线未完工」,已进线未完工工件跨天继续、不重排。
- 新增接口 `GET /api/v1/workpieces/in-process?stationNo=` 列出停在各工位未完工工件(SN/产品/停留时长/已完成步骤)。
- 前端 MES 新增「在制品」视图(可选菜单),工位终端「作业」页默认展示停在本工位的未完工工件。
**L2. 0/13 虚拟工位**
- 后端 `schema/station.go` `stationNo` 放开 1..12 约束注释;`seed.go:158` 增插 0 号(上线)、13 号(下线) 两行,`stationType=OFFLINE`
- 修多处硬编码:`processseq.go:11,28`FullProcessSeq 与 n>12 过滤,0/13 不参与工位组合排序但需存在)、`line.go:209`(叫料 1~10 约束保留,0/13 不叫料)、`plc.go:66``processcard.go:240``auth.go:207``dashboard.go:405`——0/13 仅作业务记录工位,不连 PLC、不参与产线组合排序。
- 前端工位终端/巡检工位下拉自动出现 0/13(station 表加了即显示)。
### M. MES 工单字段 + 绩效效率
- 后端 `schema/work_order.go` 新增 `createdBy`(创建人)、`dueDate`(完成日期,必填)`logic/workorder.go` Create 时写 createdBy(取当前登录用户)、校验 dueDate 必填。
- 前端 `WorkOrder.vue` 新建表单(:70-92)加「完成日期」必填;列表(:32-45)加「创建人」「创建日期」列。
- 绩效效率:后端 `schema/workpiece_process.go` 新增 `durationSec`(作业时长)`ReportProcess``workpiece.go:141-146`)改为 startedAt=进工位时间、endedAt=报工时间、durationSec=两者差;`WorkloadRow``processflow.go:388-397`)加 上机时间/作业时长/效率;前端 `Performance.vue` 统计卡(:31-56)加「平均作业时长/效率」。
### N. 拧紧补录残留清理
- 后端删除 `internal/handler/production/plc_torque_scan.go:127` `TorqueManualAddHandler`POST /torque/manual-add)与 `logic/torque.go:105-129` `AddTorqueRecord`;前端 `help.js:121/125/130` 删除「补录」文案(前端 Torque.vue 已无补录 UI)。
### O. 三端帮助文档补齐
- WMS `help.js` 补:其他入库、区域库位四级、缺货预警、质检处置(退货/报废/部分入库)、附件使用、图号改名说明。
- MES `help.js` 补:应急呼叫、跨天在制品、0/13 工位、自动排产引导式、质量检验(过程/完工)、BOM 导入与相关标准、步骤级附件;删「补录」文案。
- 工位终端 `help.js` 补:巡检、异常、叫料、数量不符、应急呼叫(当前仅"暂存退库"已覆盖)。
### 收尾统一动作(每项完成后)
1. 后端 `go build ./...` 通过;schema 变更后重生成 entMES `cd schema && go run ./tools/generate.go`WMS `go run -tags entgenerate ./tools`)。
2. 存量库加列走 `schemaPatchSQL`/`applyColumnPatches`(幂等 ADD COLUMN IF NOT EXISTS);新表手写 DDLid integer GENERATED BY DEFAULT AS IDENTITY)。
3. 前端 `npm run build`,产物 0 字节文件数=0。
4. 权限码:新菜单/按钮在 seed 与 perm.go 登记,并补授内置角色。