219 lines
6.5 KiB
Plaintext
219 lines
6.5 KiB
Plaintext
syntax = "v1"
|
|
|
|
import (
|
|
"base.api"
|
|
)
|
|
|
|
type (
|
|
// === 工站监控(对齐 frontend-api.md 7.2 节)===
|
|
StationJobBrief {
|
|
JobId int `json:"jobId"`
|
|
WorkOrderId int `json:"workOrderId"`
|
|
ProductTypeId int `json:"productTypeId"`
|
|
Status string `json:"status"`
|
|
PositionRefId string `json:"positionRefId"`
|
|
CurrentStepId string `json:"currentStepId"`
|
|
CurrentStepName string `json:"currentStepName"`
|
|
}
|
|
StationMonitorItem {
|
|
Id string `json:"id"`
|
|
Type string `json:"type"`
|
|
Name string `json:"name"`
|
|
Status string `json:"status"`
|
|
HeartbeatOnline bool `json:"heartbeatOnline"`
|
|
CurrentJobs []StationJobBrief `json:"currentJobs"`
|
|
WaitingUnloadJobs []StationJobBrief `json:"waitingUnloadJobs"`
|
|
UpdatedAt string `json:"updatedAt"`
|
|
}
|
|
ActiveOrderSummary {
|
|
OrderId int `json:"orderId"`
|
|
OrderNo string `json:"orderNo"`
|
|
Status string `json:"status"`
|
|
ProductTypeId int `json:"productTypeId"`
|
|
TotalJobs int `json:"totalJobs"`
|
|
CompletedJobs int `json:"completedJobs"`
|
|
ScrappedJobs int `json:"scrappedJobs"`
|
|
}
|
|
StationMonitorReply {
|
|
Stations []StationMonitorItem `json:"stations"`
|
|
ActiveOrders []ActiveOrderSummary `json:"activeOrders"`
|
|
}
|
|
// === 工单管理(对齐 frontend-api.md 第 5 节)===
|
|
QueryWorkOrdersReq {
|
|
PageReq
|
|
SortReq
|
|
Keyword string `form:"keyword,optional"`
|
|
Statuses []string `form:"statuses,optional"`
|
|
ProductTypeId int `form:"productTypeId,optional"`
|
|
}
|
|
CreateWorkOrderReq {
|
|
ProductTypeId int `json:"productTypeId"`
|
|
Quantity int `json:"quantity,optional"`
|
|
WorkOrderNo string `json:"workOrderNo,optional"`
|
|
Remark string `json:"remark,optional"`
|
|
}
|
|
CreateWorkOrderReply {
|
|
Id int `json:"id"`
|
|
}
|
|
UpdateWorkOrderReq {
|
|
PathId
|
|
ProductTypeId int `json:"productTypeId,optional"`
|
|
Quantity int `json:"quantity,optional"`
|
|
WorkOrderNo string `json:"workOrderNo,optional"`
|
|
Remark string `json:"remark,optional"`
|
|
}
|
|
RestoreWorkOrderReply {
|
|
OrderId int `json:"orderId"`
|
|
RestoredJobs int `json:"restoredJobs"`
|
|
Level string `json:"level"`
|
|
ManualRequired bool `json:"manualRequired"`
|
|
Message string `json:"message,omitempty"`
|
|
}
|
|
// === 恢复扫描 ===
|
|
RecoveryScanItem {
|
|
OrderId int `json:"orderId"`
|
|
Status string `json:"status"`
|
|
Recoverable bool `json:"recoverable"`
|
|
Grade string `json:"grade"`
|
|
TotalJobs int `json:"totalJobs"`
|
|
RestorableJobs int `json:"restorableJobs"`
|
|
Reason string `json:"reason,omitempty"`
|
|
}
|
|
RecoveryScanReply {
|
|
Items []RecoveryScanItem `json:"items"`
|
|
}
|
|
// === 工单信息 ===
|
|
QueryWorkOrdersReply {
|
|
PageReply
|
|
Data []WorkOrderReply `json:"data"`
|
|
}
|
|
WorkOrderReply {
|
|
Id int `json:"id"`
|
|
No string `json:"no"`
|
|
WorkOrderNo string `json:"workOrderNo"`
|
|
ProductTypeId int `json:"productTypeId"`
|
|
ProductTypeName string `json:"productTypeName"`
|
|
ProductTypeCode string `json:"productTypeCode"`
|
|
Quantity int `json:"quantity"`
|
|
FinishedNum int `json:"finishedNum"`
|
|
FailNum int `json:"failNum"`
|
|
Status string `json:"status"`
|
|
Source string `json:"source"`
|
|
Remark string `json:"remark,omitempty"`
|
|
CreatedTime string `json:"createdTime"`
|
|
UpdatedTime string `json:"updatedTime"`
|
|
CompletedTime string `json:"completedTime,omitempty"`
|
|
}
|
|
JobStatusCount {
|
|
Status string `json:"status"`
|
|
Count int `json:"count"`
|
|
}
|
|
WorkOrderDetailReply {
|
|
WorkOrderReply
|
|
ProductTypeName string `json:"productTypeName"`
|
|
RecipeName string `json:"recipeName,omitempty"`
|
|
JobStats []JobStatusCount `json:"jobStats"`
|
|
TotalJobs int `json:"totalJobs"`
|
|
}
|
|
// === 任务日志(对齐 frontend-api.md 8.4 节)===
|
|
QueryTaskLogsReq {
|
|
PageReq
|
|
SortReq
|
|
JobId int `form:"jobId,optional"`
|
|
Status string `form:"status,optional"`
|
|
TaskKind string `form:"taskKind,optional"`
|
|
StartTime string `form:"startTime,optional"`
|
|
EndTime string `form:"endTime,optional"`
|
|
}
|
|
QueryTaskLogsReply {
|
|
PageReply
|
|
Data []TaskLogReply `json:"data"`
|
|
}
|
|
TaskLogReply {
|
|
Id int `json:"id"`
|
|
WorkOrderId int `json:"workOrderId"`
|
|
JobId int `json:"jobId"`
|
|
StepId string `json:"stepId"`
|
|
StepName string `json:"stepName"`
|
|
TaskKind string `json:"taskKind"`
|
|
Status string `json:"status"`
|
|
Content string `json:"content"`
|
|
DurationMs int64 `json:"durationMs"`
|
|
CreatedAt string `json:"createdAt"`
|
|
}
|
|
)
|
|
|
|
@server (
|
|
jwt: Auth
|
|
group: workorder
|
|
prefix: /api/v1
|
|
)
|
|
service spherical-api {
|
|
@doc "工站监控"
|
|
@handler stationMonitor
|
|
get /stations/monitor returns (StationMonitorReply)
|
|
|
|
@doc "恢复扫描"
|
|
@handler scanRecovery
|
|
get /work-orders/recovery/scan returns (RecoveryScanReply)
|
|
|
|
@doc "查询工单分页列表"
|
|
@handler queryWorkOrders
|
|
get /work-orders (QueryWorkOrdersReq) returns (QueryWorkOrdersReply)
|
|
|
|
@doc "查询任务日志分页列表"
|
|
@handler queryTaskLogs
|
|
get /work-orders/:id/task-logs (QueryTaskLogsReq) returns (QueryTaskLogsReply)
|
|
|
|
@doc "获取最新任务日志"
|
|
@handler getLatestTaskLogs
|
|
get /work-orders/logs/latest returns ([]TaskLogReply)
|
|
|
|
@doc "获取工单详情"
|
|
@handler getWorkOrder
|
|
get /work-orders/:id (PathId) returns (WorkOrderReply)
|
|
|
|
@doc "获取带工艺流程信息的工单详情"
|
|
@handler getWorkOrderDetail
|
|
get /work-orders/:id/detail (PathId) returns (WorkOrderDetailReply)
|
|
|
|
@doc "创建工单"
|
|
@handler createWorkOrder
|
|
post /work-orders (CreateWorkOrderReq) returns (CreateWorkOrderReply)
|
|
|
|
@doc "编辑工单"
|
|
@handler updateWorkOrder
|
|
put /work-orders/:id (UpdateWorkOrderReq)
|
|
|
|
@doc "开始工单"
|
|
@handler startWorkOrder
|
|
post /work-orders/:id/start (PathId)
|
|
|
|
@doc "暂停工单"
|
|
@handler pauseWorkOrder
|
|
post /work-orders/:id/pause (PathId)
|
|
|
|
@doc "恢复工单"
|
|
@handler resumeWorkOrder
|
|
post /work-orders/:id/resume (PathId)
|
|
|
|
@doc "断电恢复工单"
|
|
@handler restoreWorkOrder
|
|
post /work-orders/:id/restore (PathId) returns (RestoreWorkOrderReply)
|
|
|
|
@doc "取消工单"
|
|
@handler cancelWorkOrder
|
|
post /work-orders/:id/cancel (PathId)
|
|
|
|
@doc "停止工单"
|
|
@handler stopWorkOrder
|
|
post /work-orders/:id/stop (PathId)
|
|
|
|
@doc "删除工单"
|
|
@handler deleteWorkOrder
|
|
delete /work-orders/:id (PathId)
|
|
|
|
@doc "批量删除工单"
|
|
@handler deleteWorkOrders
|
|
delete /work-orders (BatchExecIds) returns (BatchExecReply)
|
|
} |