feat&refactor: 2026-09-22 半成品业务模型重构与功能完善
- 重构半成品流转逻辑:进度权威源改为 workpiece.currentStationNo,新增 completedText 快照字段,废除 doneProcessCodes - 清理物料品类中半成品类型,存量数据幂等清理,调整物料管理方式文案为批次/序列号 - 新增日排产状态专用更新接口,修复工单工艺校验逻辑 - 新增物料档案代理接口、深路径文件下载接口 - 优化前端界面文案与工位选择逻辑,补充追溯页半成品流转展示 - 调整WMS端物料品类校验与入库接口契约 - 新增/更新数据库表结构与实体类代码
This commit is contained in:
@@ -2,7 +2,6 @@ package handler
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
@@ -26,29 +25,31 @@ const (
|
||||
// 全部落 inventories(manage_mode=2 SN单件, category=2 半成品)。
|
||||
// 三个 semi 接口签名与响应结构保持不变,MES / 前端零改造平滑切换。
|
||||
|
||||
// semiInboundHandler 半成品/成品入库(携带已完成工序)
|
||||
// semiInboundHandler 半成品/成品入库(携带「已完成至工位」展示快照)
|
||||
// 与 MES 闭环:MES 工位报工暂存退库 / 完工回流时调用本接口,把 SN 入 WMS 库
|
||||
// (inventories,category=2 半成品 / 3 成品,客户诉求 问题记录 L222 半成品与成品要区分)。
|
||||
// 成品入库 9 字段(L218):SN/图号/归属/产品状态/相关标准/试验记录单号/记录员/记录日期/工单号。
|
||||
// 契约(2026-09-22 定稿):废除 completedProcess/doneProcessCodes 字段,改为 completedText
|
||||
// ——人类可读展示快照(如"已完成至工位5",空=未报工)。WMS 只原样存入
|
||||
// inventories.completed_process 展示,不解析、不参与任何逻辑。
|
||||
// 为保持两系统解耦,materialCode 不强制要求——优先用请求传入,都没有则留空(SN 本身即追溯锚点)。
|
||||
func semiInboundHandler(ctx *svc.ServiceContext) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
var req struct {
|
||||
Sn string `json:"sn"`
|
||||
MaterialCode string `json:"materialCode"`
|
||||
DoneProcessCodes []int `json:"doneProcessCodes"`
|
||||
CompletedProcess string `json:"completedProcess"`
|
||||
ZoneCode string `json:"zoneCode"`
|
||||
OrderNo string `json:"orderNo"`
|
||||
Operator string `json:"operator"`
|
||||
Category int `json:"category"` // 2=半成品 3=成品(默认 2)
|
||||
OwnershipType string `json:"ownershipType"`
|
||||
OwnershipNo string `json:"ownershipNo"`
|
||||
ProductStatus string `json:"productStatus"` // 已通过/部分通过/返修(成品用)
|
||||
RelatedStandard string `json:"relatedStandard"` // 相关标准(试验方案号)
|
||||
TestRecordNo string `json:"testRecordNo"` // 试验记录单号
|
||||
RecordedBy string `json:"recordedBy"` // 记录员
|
||||
RecordedAt int64 `json:"recordedAt"` // 记录日期(unix 秒)
|
||||
Sn string `json:"sn"`
|
||||
MaterialCode string `json:"materialCode"`
|
||||
CompletedText string `json:"completedText"` // 已完成至工位(展示快照,空=未报工)
|
||||
ZoneCode string `json:"zoneCode"`
|
||||
OrderNo string `json:"orderNo"`
|
||||
Operator string `json:"operator"`
|
||||
Category int `json:"category"` // 2=半成品 3=成品(默认 2)
|
||||
OwnershipType string `json:"ownershipType"`
|
||||
OwnershipNo string `json:"ownershipNo"`
|
||||
ProductStatus string `json:"productStatus"` // 已通过/部分通过/返修(成品用)
|
||||
RelatedStandard string `json:"relatedStandard"` // 相关标准(试验方案号)
|
||||
TestRecordNo string `json:"testRecordNo"` // 试验记录单号
|
||||
RecordedBy string `json:"recordedBy"` // 记录员
|
||||
RecordedAt int64 `json:"recordedAt"` // 记录日期(unix 秒)
|
||||
}
|
||||
if err := parseJSON(r, &req); err != nil {
|
||||
fail(w, http.StatusBadRequest, "参数错误")
|
||||
@@ -80,15 +81,8 @@ func semiInboundHandler(ctx *svc.ServiceContext) http.HandlerFunc {
|
||||
return
|
||||
}
|
||||
|
||||
// 已完成工序:MES 传 doneProcessCodes([]int) 优先,否则用 completedProcess 字符串
|
||||
completed := req.CompletedProcess
|
||||
if len(req.DoneProcessCodes) > 0 {
|
||||
parts := make([]string, 0, len(req.DoneProcessCodes))
|
||||
for _, c := range req.DoneProcessCodes {
|
||||
parts = append(parts, strconv.Itoa(c))
|
||||
}
|
||||
completed = strings.Join(parts, ",")
|
||||
}
|
||||
// 已完成至工位:MES 传人类可读快照,WMS 原样存展示(不解析、不参与任何逻辑)
|
||||
completed := req.CompletedText
|
||||
|
||||
// 物料编码:以请求传入为准;名称从物料档案补齐(档案缺失则用编码兜底)
|
||||
materialCode := req.MaterialCode
|
||||
|
||||
Reference in New Issue
Block a user