feat: 完成客户第12条需求+多系统改造
1. 新增预警表添加工单号字段,支持按工单号检索预警 2. 添加工单过滤在制品/绩效报表/预警中心查询 3. 补全WMS台账字段口径与权限配置 4. 修复备料单与数量不符处理流程 5. 新增配送进度/库位联动/自动出库功能 6. 修复AGV配送状态更新逻辑 7. 优化退料与库存管理细节
This commit is contained in:
@@ -81,14 +81,15 @@ func ListAlertRulesHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
}
|
||||
}
|
||||
|
||||
// ListAlertsHandler GET /alerts?status=&type=&from=&to=&page=&pageSize=
|
||||
// 预警消息收件箱:支持 状态/类型/时间范围(YYYY-MM-DD) 筛选;带 page 返回分页对象,否则返回全量数组(顶部铃铛未读数复用)。
|
||||
// ListAlertsHandler GET /alerts?status=&type=&orderNo=&from=&to=&page=&pageSize=
|
||||
// 预警消息收件箱:支持 状态/类型/工单号/时间范围(YYYY-MM-DD) 筛选;带 page 返回分页对象,否则返回全量数组(顶部铃铛未读数复用)。
|
||||
func ListAlertsHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
q := r.URL.Query()
|
||||
query := logic.AlertQuery{
|
||||
Status: q.Get("status"),
|
||||
Type: q.Get("type"),
|
||||
OrderNo: q.Get("orderNo"),
|
||||
From: q.Get("from"),
|
||||
To: q.Get("to"),
|
||||
Page: atoiDefault(q.Get("page"), 0),
|
||||
|
||||
@@ -218,12 +218,41 @@ func GenerateMaterialHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
}
|
||||
}
|
||||
|
||||
// AutoOutboundHandler POST /material-requests/auto-outbound 备料自动出库(一键补出)。
|
||||
// 日常由「生成备料单」自动触发(客户第1条:平时无需操作);库存补齐后库管可在此一键补出。
|
||||
func AutoOutboundHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
var req struct {
|
||||
PlanDate string `json:"planDate"`
|
||||
OrderNo string `json:"orderNo"`
|
||||
}
|
||||
if err := httpx.ParseJSON(r, &req); err != nil {
|
||||
httpx.BadRequest(w, "请求体解析失败")
|
||||
return
|
||||
}
|
||||
if req.PlanDate == "" && req.OrderNo == "" {
|
||||
httpx.BadRequest(w, "planDate 与 orderNo 至少填一个")
|
||||
return
|
||||
}
|
||||
done, short := logic.New(svcCtx).AutoOutboundRequests(r.Context(), req.PlanDate, req.OrderNo, operator(r, ""))
|
||||
httpx.OkMessage(w, "自动出库完成", map[string]any{"done": done, "short": short})
|
||||
}
|
||||
}
|
||||
|
||||
func ListMaterialRequestsHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
q := r.URL.Query()
|
||||
data, err := logic.New(svcCtx).ListMaterialRequestsFiltered(r.Context(),
|
||||
q.Get("orderNo"), q.Get("planDate"), q.Get("status"),
|
||||
q.Get("materialCode"), q.Get("materialName"), q.Get("targetDock"), q.Get("stationNo"))
|
||||
data, err := logic.New(svcCtx).ListMaterialRequests(r.Context(), logic.MaterialRequestQuery{
|
||||
OrderNo: q.Get("orderNo"),
|
||||
PlanDate: q.Get("planDate"),
|
||||
Status: q.Get("status"),
|
||||
MaterialCode: q.Get("materialCode"),
|
||||
MaterialName: q.Get("materialName"),
|
||||
TargetDock: q.Get("targetDock"),
|
||||
StationNo: q.Get("stationNo"),
|
||||
Source: q.Get("source"),
|
||||
Keyword: q.Get("keyword"),
|
||||
})
|
||||
if err != nil {
|
||||
httpx.Fail(w, 3104, err.Error())
|
||||
return
|
||||
@@ -237,7 +266,12 @@ func ListMaterialRequestsHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
func ListMaterialRequestsInternalHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
q := r.URL.Query()
|
||||
data, err := logic.New(svcCtx).ListMaterialRequests(r.Context(), q.Get("orderNo"), q.Get("planDate"), q.Get("status"), q.Get("stationNo"))
|
||||
data, err := logic.New(svcCtx).ListMaterialRequests(r.Context(), logic.MaterialRequestQuery{
|
||||
OrderNo: q.Get("orderNo"),
|
||||
PlanDate: q.Get("planDate"),
|
||||
Status: q.Get("status"),
|
||||
StationNo: q.Get("stationNo"),
|
||||
})
|
||||
if err != nil {
|
||||
httpx.Fail(w, 3105, err.Error())
|
||||
return
|
||||
@@ -286,7 +320,7 @@ func ListDocksHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
}
|
||||
|
||||
// ReceiveMaterialRequestHandler POST /material-requests/receive 接料确认(MES 备料页人工点「已接料」)。
|
||||
// qty 可空(≤0 表示确认本批全部剩余);累加 sentQty 封顶 reqQty,达量自动 DONE。
|
||||
// qty 可空(≤0 表示确认本批全部剩余);累加 receivedQty(已接料),上限为已发出量。
|
||||
func ReceiveMaterialRequestHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
var req struct {
|
||||
|
||||
@@ -110,7 +110,7 @@ func OrderQueryInternalHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
func InProcessInternalHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
stationNo := atoiDefault(r.URL.Query().Get("stationNo"), 0)
|
||||
data, err := logic.New(svcCtx).WorkpiecesInProcess(r.Context(), stationNo)
|
||||
data, err := logic.New(svcCtx).WorkpiecesInProcess(r.Context(), stationNo, r.URL.Query().Get("orderNo"))
|
||||
if err != nil {
|
||||
httpx.Fail(w, 2006, err.Error())
|
||||
return
|
||||
|
||||
@@ -271,10 +271,11 @@ func SuggestedDockCodesHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
|
||||
// InProcessHandler GET /workpieces/in-process 跨天在制品视图(停在各工位未完工工件)
|
||||
// stationNo 可选:0=上线位, 13=下线位, 其余为物理工位;不传或<=0 返回全部。
|
||||
// orderNo 可选:按工单号模糊过滤(客户第12条「记录查看加一项看工单号查询」)。
|
||||
func InProcessHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
stationNo, _ := strconv.Atoi(r.URL.Query().Get("stationNo"))
|
||||
data, err := logic.New(svcCtx).WorkpiecesInProcess(r.Context(), stationNo)
|
||||
data, err := logic.New(svcCtx).WorkpiecesInProcess(r.Context(), stationNo, r.URL.Query().Get("orderNo"))
|
||||
if err != nil {
|
||||
httpx.Fail(w, 3001, err.Error())
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user