docs(business): 生成业务契约文档并重构MES客户端代码

- 创建案例.md文档,包含业务场景清单、业务流程、案例和回归测试三份完整文档
- WMS库房管理系统涵盖入库、出库、库存、检验、盘点等24个业务场景
- MES产线控制系统包含工单、排产、BOM、备料、质检、追溯等23个业务场景
- 工位终端系统支持上线、报工、下线、领料、巡检等15个现场作业场景
- 主链路从合同到成品入库,异常链路处理不合格、数量不符、退料等情况
- 删除MES客户端中的ScanRecord相关代码,精简客户端结构
- 更新客户端初始化逻辑,移除扫描记录相关的依赖注入配置
This commit is contained in:
SunYF
2026-09-20 18:25:44 +08:00
parent 5f68e77d5f
commit 8e6e8e1d20
46 changed files with 1052 additions and 3954 deletions
+14 -2
View File
@@ -3,6 +3,7 @@ package handler
import (
"encoding/json"
"net/http"
"net/url"
"sort"
"time"
@@ -26,8 +27,15 @@ type mesOrder struct {
// ordersHandler 调用 MES 内部接口获取工单列表,把未完成工单排前面,供备料出库下拉选择
func ordersHandler(ctx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
url := ctx.Config.Mes.BaseURL + "/api/internal/order/query?orderNo=" + r.URL.Query().Get("orderNo")
req, err := http.NewRequest(http.MethodGet, url, nil)
orderNo := r.URL.Query().Get("orderNo")
// limit:无输入条件时默认返回 20 条(未完成优先),供备料出库工单号下拉首屏展示;
// 模糊搜索时同样返回匹配结果的前 limit 条。
limit := atoi(r.URL.Query().Get("limit"), 20)
if limit <= 0 {
limit = 20
}
mesURL := ctx.Config.Mes.BaseURL + "/api/internal/order/query?orderNo=" + url.QueryEscape(orderNo)
req, err := http.NewRequest(http.MethodGet, mesURL, nil)
if err != nil {
// 构造请求都失败属代码级异常,返回空列表让备料出库页可降级(仍可手输工单号)
ok(w, []mesOrder{})
@@ -66,6 +74,10 @@ func ordersHandler(ctx *svc.ServiceContext) http.HandlerFunc {
}
return list[i].WorkOrderNo < list[j].WorkOrderNo
})
// 排序(未完成优先)后截断:无输入默认前 20 条;模糊搜索返回匹配的前 20 条。
if len(list) > limit {
list = list[:limit]
}
ok(w, list)
}
}