From 78f6276b1e727326b9797451db82cd6c7c480852 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期五, 25 八月 2023 11:45:00 +0800 Subject: [PATCH] 增加任务倒计时接口 --- service/plc.go | 4 service/task.go | 11 +++ model/response/common.go | 6 ++ router/index.go | 1 docs/swagger.yaml | 29 +++++++++ model/work_order.go | 9 +++ docs/docs.go | 48 ++++++++++++++++ api/v1/task.go | 22 +++++++ docs/swagger.json | 48 ++++++++++++++++ 9 files changed, 175 insertions(+), 3 deletions(-) diff --git a/api/v1/task.go b/api/v1/task.go index 48484b3..23ae0a2 100644 --- a/api/v1/task.go +++ b/api/v1/task.go @@ -23,6 +23,28 @@ type TaskApi struct{} +// TaskCountdown +// @Tags Task +// @Summary 鏂颁换鍔″�掕鏃� +// @Produce application/json +// @Success 200 {object} contextx.Response{data=response.TaskCountdown} "鎴愬姛" +// @Router /v1/task/countdown [get] +func (slf *TaskApi) TaskCountdown(c *gin.Context) { + ctx, ok := contextx.NewContext(c, nil) + if !ok { + return + } + var resp response.TaskCountdown + workOrder, err := service.NewTaskService().GetComingTask() + if err == nil { + seconds := workOrder.StartTime - time.Now().Unix() + resp.CountDownHour = seconds / 3600 + resp.CountDownMinute = seconds % 3600 / 60 + resp.ShowCountDown = true + } + ctx.OkWithDetailed(resp) +} + // TaskGet // @Tags Task // @Summary 鑾峰彇浠诲姟 diff --git a/docs/docs.go b/docs/docs.go index aaf2c50..486c228 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -324,6 +324,37 @@ } } }, + "/v1/task/countdown": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Task" + ], + "summary": "鏂颁换鍔″�掕鏃�", + "responses": { + "200": { + "description": "鎴愬姛", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/contextx.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.TaskCountdown" + } + } + } + ] + } + } + } + } + }, "/v1/task/finish/{id}": { "put": { "produces": [ @@ -926,6 +957,23 @@ } } }, + "response.TaskCountdown": { + "type": "object", + "properties": { + "countDownHour": { + "description": "鍊掕鏃� 鏃�", + "type": "integer" + }, + "countDownMinute": { + "description": "鍊掕鏃� 鍒�", + "type": "integer" + }, + "showCountDown": { + "description": "鏄惁灞曠ず鍊掕鏃�", + "type": "boolean" + } + } + }, "response.TaskData": { "type": "object", "properties": { diff --git a/docs/swagger.json b/docs/swagger.json index 0abdb9c..d833d3b 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -312,6 +312,37 @@ } } }, + "/v1/task/countdown": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Task" + ], + "summary": "鏂颁换鍔″�掕鏃�", + "responses": { + "200": { + "description": "鎴愬姛", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/contextx.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.TaskCountdown" + } + } + } + ] + } + } + } + } + }, "/v1/task/finish/{id}": { "put": { "produces": [ @@ -914,6 +945,23 @@ } } }, + "response.TaskCountdown": { + "type": "object", + "properties": { + "countDownHour": { + "description": "鍊掕鏃� 鏃�", + "type": "integer" + }, + "countDownMinute": { + "description": "鍊掕鏃� 鍒�", + "type": "integer" + }, + "showCountDown": { + "description": "鏄惁灞曠ず鍊掕鏃�", + "type": "boolean" + } + } + }, "response.TaskData": { "type": "object", "properties": { diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 87e7cfd..34d675d 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -320,6 +320,18 @@ totalNumber: type: integer type: object + response.TaskCountdown: + properties: + countDownHour: + description: 鍊掕鏃� 鏃� + type: integer + countDownMinute: + description: 鍊掕鏃� 鍒� + type: integer + showCountDown: + description: 鏄惁灞曠ず鍊掕鏃� + type: boolean + type: object response.TaskData: properties: deviceName: @@ -517,6 +529,23 @@ summary: 鏇存柊plc鍝佺墝 tags: - plc鍝佺墝 + /v1/task/countdown: + get: + produces: + - application/json + responses: + "200": + description: 鎴愬姛 + schema: + allOf: + - $ref: '#/definitions/contextx.Response' + - properties: + data: + $ref: '#/definitions/response.TaskCountdown' + type: object + summary: 鏂颁换鍔″�掕鏃� + tags: + - Task /v1/task/finish/{id}: put: parameters: diff --git a/model/response/common.go b/model/response/common.go index c5e203e..ff33efc 100644 --- a/model/response/common.go +++ b/model/response/common.go @@ -43,3 +43,9 @@ FinishNumber int `json:"finishNumber"` TotalNumber int `json:"totalNumber"` } + +type TaskCountdown struct { + CountDownHour int64 //鍊掕鏃� 鏃� + CountDownMinute int64 //鍊掕鏃� 鍒� + ShowCountDown bool //鏄惁灞曠ず鍊掕鏃� +} diff --git a/model/work_order.go b/model/work_order.go index ed4ca40..be00fec 100644 --- a/model/work_order.go +++ b/model/work_order.go @@ -33,6 +33,7 @@ Orm *gorm.DB Preload bool StartTimeMax int64 + StartTimeMin int64 } ) @@ -73,6 +74,10 @@ slf.StartTimeMax = ts return slf } +func (slf *OrderSearch) SetStartTimeMin(ts int64) *OrderSearch { + slf.StartTimeMin = ts + return slf +} func (slf *OrderSearch) SetStatus(status OrderStatus) *OrderSearch { slf.Status = status @@ -108,6 +113,10 @@ db = db.Where("start_time <= ?", slf.StartTimeMax) } + if slf.StartTimeMin != 0 { + db = db.Where("start_time >= ?", slf.StartTimeMin) + } + if slf.Preload { db = db.Preload("InputMaterials").Preload("OutputMaterials") } diff --git a/router/index.go b/router/index.go index 68c1125..6a4505c 100644 --- a/router/index.go +++ b/router/index.go @@ -35,6 +35,7 @@ taskApi := new(v1.TaskApi) taskGroup := v1Group.Group("task") { + taskGroup.GET("countdown", taskApi.TaskCountdown) // 鏂颁换鍔″�掕鏃� taskGroup.GET("get", taskApi.TaskGet) // 鑾峰彇宸ュ簭 taskGroup.GET("start/:id", taskApi.TaskStart) // 寮�鍚伐搴忓苟鑾峰彇鍙傛暟 taskGroup.PUT("finish/:id", taskApi.TaskFinish) // 瀹屾垚宸ュ簭 diff --git a/service/plc.go b/service/plc.go index 00fa70f..1cef995 100644 --- a/service/plc.go +++ b/service/plc.go @@ -24,8 +24,8 @@ valueType = pc.Type dataLength = pc.Length } - ipAddr = fmt.Sprintf("%s:%v", plcConfig.Address, plcConfig.Port) } + ipAddr = fmt.Sprintf("%s:%v", plcConfig.Address, plcConfig.Port) conn, err := plc.NewModbusConnection(ipAddr) if err != nil { @@ -58,8 +58,8 @@ if pc.FieldName == fieldType { startAddress = pc.StartAddress } - ipAddr = fmt.Sprintf("%s:%v", plcConfig.Address, plcConfig.Port) } + ipAddr = fmt.Sprintf("%s:%v", plcConfig.Address, plcConfig.Port) conn, err := plc.NewModbusConnection(ipAddr) if err != nil { diff --git a/service/task.go b/service/task.go index 3cb816f..5b7be1c 100644 --- a/service/task.go +++ b/service/task.go @@ -47,7 +47,7 @@ if err != nil { return nil, ecode.DBErr } - return slf.GetTask() //褰撳墠璁㈠崟宸插畬鍏紝缁х画鏌ヨ鏈畬鎴愯鍗� + return slf.GetTask() //褰撳墠璁㈠崟宸插畬鎴愶紝缁х画鏌ヨ鏈畬鎴愯鍗� } if err != nil { return nil, ecode.DBErr @@ -75,3 +75,12 @@ func (slf TaskService) GetOrderByWorkOrderId(workOrderId string) (order *model.Order, err error) { return model.NewOrderSearch(nil).SetWorkOrderId(workOrderId).First() } + +// GetComingTask 鑾峰彇鏃堕棿鏈埌鐨勬渶鏃╀换鍔� +func (slf TaskService) GetComingTask() (workOrder *model.Order, err error) { + nowTs := time.Now().Unix() + orderSearch := model.NewOrderSearch(nil) + return orderSearch.SetOrder("created_at asc"). + SetStartTimeMin(nowTs). + SetStatus(model.OrderStatusUnFinished).First() +} -- Gitblit v1.8.0