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