1. 新增预警表添加工单号字段,支持按工单号检索预警 2. 添加工单过滤在制品/绩效报表/预警中心查询 3. 补全WMS台账字段口径与权限配置 4. 修复备料单与数量不符处理流程 5. 新增配送进度/库位联动/自动出库功能 6. 修复AGV配送状态更新逻辑 7. 优化退料与库存管理细节
79 lines
2.7 KiB
Go
79 lines
2.7 KiB
Go
package handler
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"bj_power_mes/common/httpx"
|
|
"bj_power_mes/internal/logic"
|
|
"bj_power_mes/internal/svc"
|
|
)
|
|
|
|
// ============ 数量不符处理(MES 侧:唯一真源 + 处理闭环) ============
|
|
//
|
|
// 链路:工位终端上报(/api/internal/station/qty-report)→ 本页查询/处理
|
|
// - 补发 REPLENISH:生成 source=REFILL 补料单(少发时可用)
|
|
// - 退库 RETURN :调 WMS 建退库单(多发时可用)
|
|
// - 调整 ADJUST :双方确认后直接关闭,必须填说明
|
|
|
|
// ListQtyReportsHandler GET /api/v1/qty-reports?status=&stationNo=&materialCode=&orderNo=&page=&pageSize=
|
|
// 数量不符记录分页查询(真分页:后端 SQL 层分页)。
|
|
func ListQtyReportsHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
|
return func(w http.ResponseWriter, r *http.Request) {
|
|
q := r.URL.Query()
|
|
data, err := logic.New(svcCtx).ListQtyReports(r.Context(), logic.QtyReportQuery{
|
|
Status: q.Get("status"),
|
|
StationNo: q.Get("stationNo"),
|
|
MaterialCode: q.Get("materialCode"),
|
|
OrderNo: q.Get("orderNo"),
|
|
Page: atoiDefault(q.Get("page"), 1),
|
|
PageSize: atoiDefault(q.Get("pageSize"), 20),
|
|
})
|
|
if err != nil {
|
|
httpx.Fail(w, 3201, err.Error())
|
|
return
|
|
}
|
|
httpx.Ok(w, data)
|
|
}
|
|
}
|
|
|
|
// QtyReportStatsHandler GET /api/v1/qty-reports/stats
|
|
// 数量不符概览:待处理 / 已补发 / 已退库 / 已关闭。
|
|
func QtyReportStatsHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
|
return func(w http.ResponseWriter, r *http.Request) {
|
|
data, err := logic.New(svcCtx).QtyReportStats(r.Context())
|
|
if err != nil {
|
|
httpx.Fail(w, 3202, err.Error())
|
|
return
|
|
}
|
|
httpx.Ok(w, data)
|
|
}
|
|
}
|
|
|
|
// HandleQtyReportHandler POST /api/v1/qty-reports/handle
|
|
// body: { id, handleType(REPLENISH/RETURN/ADJUST), note }
|
|
func HandleQtyReportHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
|
return func(w http.ResponseWriter, r *http.Request) {
|
|
var req struct {
|
|
ID int `json:"id"`
|
|
HandleType string `json:"handleType"`
|
|
Note string `json:"note"`
|
|
}
|
|
if err := httpx.ParseJSON(r, &req); err != nil {
|
|
httpx.BadRequest(w, "请求体解析失败")
|
|
return
|
|
}
|
|
if req.HandleType != "REPLENISH" && req.HandleType != "RETURN" && req.HandleType != "ADJUST" {
|
|
httpx.BadRequest(w, "处理方式仅支持 补发/退库/调整")
|
|
return
|
|
}
|
|
// 处理人取自鉴权中间件写入的用户名(无则留空,不阻断处理)
|
|
operator := r.Header.Get("X-Username")
|
|
data, err := logic.New(svcCtx).HandleQtyReport(r.Context(), req.ID, req.HandleType, req.Note, operator)
|
|
if err != nil {
|
|
httpx.Fail(w, 3203, err.Error())
|
|
return
|
|
}
|
|
httpx.OkMessage(w, "处理完成", data)
|
|
}
|
|
}
|