From 7788cb0ea88354718b2ad04ac29aea24e0b64911 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期五, 22 九月 2023 20:19:29 +0800 Subject: [PATCH] 增加当前时间可以开始但是未开始的任务接口,增加是否可以开始字段 --- service/task.go | 40 +++++++--- model/response/common.go | 1 router/index.go | 11 +- docs/swagger.yaml | 33 +++++++ docs/docs.go | 53 ++++++++++++ api/v1/task.go | 44 ++++++++++ docs/swagger.json | 53 ++++++++++++ 7 files changed, 211 insertions(+), 24 deletions(-) diff --git a/api/v1/task.go b/api/v1/task.go index 11a1332..8fbc448 100644 --- a/api/v1/task.go +++ b/api/v1/task.go @@ -66,7 +66,49 @@ params.PageSize = 1 } - taskResponse, code := service.NewTaskService().GetTask(params.Page, params.PageSize) + taskResponse, code := service.NewTaskService().GetTask(params.Page, params.PageSize, service.TaskModeCurrent) //鍙栬繘琛屼腑鐨勬垨鏈紑濮嬬殑 + if code != ecode.OK { + ctx.Fail(code) + return + } + if len(taskResponse.Tasks) == 0 { + taskResponse, code = service.NewTaskService().GetTask(params.Page, params.PageSize, service.TaskModeLastFinished) //鍙栦笂涓�涓畬鎴愮殑 + if code != ecode.OK { + ctx.Fail(code) + return + } + } + + for _, task := range taskResponse.Tasks { + if task.Procedure.Status == model.ProcedureStatusWaitProcess { + task.CanStarted = true + } + } + + ctx.OkWithDetailed(taskResponse) +} + +// TaskGetUnStarted +// @Tags Task +// @Summary 鑾峰彇鏈紑濮嬬殑浠诲姟 +// @Produce application/json +// @Param object query request.TaskList true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{data=response.TaskData} "鎴愬姛" +// @Router /v1/task/get/unStarted [get] +func (slf *TaskApi) TaskGetUnStarted(c *gin.Context) { + var params request.TaskList + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + if params.Page <= 0 { + params.Page = 1 + } + if params.PageSize <= 0 { + params.PageSize = 1 + } + + taskResponse, code := service.NewTaskService().GetTask(params.Page, params.PageSize, service.TaskModeUnStarted) //鏃堕棿鍒颁簡鏈紑濮嬬殑 if code != ecode.OK { ctx.Fail(code) return diff --git a/docs/docs.go b/docs/docs.go index b8014f8..87355c3 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -470,6 +470,51 @@ } } }, + "/v1/task/get/unStarted": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Task" + ], + "summary": "鑾峰彇鏈紑濮嬬殑浠诲姟", + "parameters": [ + { + "type": "integer", + "description": "椤电爜", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "description": "姣忛〉澶у皬", + "name": "pageSize", + "in": "query" + } + ], + "responses": { + "200": { + "description": "鎴愬姛", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/contextx.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.TaskData" + } + } + } + ] + } + } + } + } + }, "/v1/task/sendProcessParams": { "post": { "produces": [ @@ -692,7 +737,7 @@ "type": "object", "properties": { "address": { - "description": "PortName string ` + "`" + `gorm:\"type:varchar(191);comment:绔彛鍚嶇О\" json:\"portName\"` + "`" + `\nFrequency int ` + "`" + `gorm:\"type:int(11);comment:鏁版嵁鏇存柊棰戠巼 0-瀹炴椂鏇存柊 1-1娆�/绉抃" json:\"frequency\"` + "`" + `", + "description": "PortName string ` + "`" + `gorm:\"type:varchar(191);comment:绔彛鍚嶇О\" json:\"portName\"` + "`" + `\nFrequency int ` + "`" + `gorm:\"comment:鏁版嵁鏇存柊棰戠巼 0-瀹炴椂鏇存柊 1-1娆�/绉抃" json:\"frequency\"` + "`" + `", "type": "string" }, "baudRate": { @@ -963,7 +1008,7 @@ "type": "object", "properties": { "address": { - "description": "PortName string ` + "`" + `gorm:\"type:varchar(191);comment:绔彛鍚嶇О\" json:\"portName\"` + "`" + `\nFrequency int ` + "`" + `gorm:\"type:int(11);comment:鏁版嵁鏇存柊棰戠巼 0-瀹炴椂鏇存柊 1-1娆�/绉抃" json:\"frequency\"` + "`" + `", + "description": "PortName string ` + "`" + `gorm:\"type:varchar(191);comment:绔彛鍚嶇О\" json:\"portName\"` + "`" + `\nFrequency int ` + "`" + `gorm:\"comment:鏁版嵁鏇存柊棰戠巼 0-瀹炴椂鏇存柊 1-1娆�/绉抃" json:\"frequency\"` + "`" + `", "type": "string" }, "baudRate": { @@ -1087,6 +1132,10 @@ "type": "string" } }, + "canStarted": { + "description": "鏄惁鍙互寮�濮嬬敓浜�", + "type": "boolean" + }, "currentProcedureIndex": { "type": "integer" }, diff --git a/docs/swagger.json b/docs/swagger.json index 4a7475b..e3d2b43 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -458,6 +458,51 @@ } } }, + "/v1/task/get/unStarted": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Task" + ], + "summary": "鑾峰彇鏈紑濮嬬殑浠诲姟", + "parameters": [ + { + "type": "integer", + "description": "椤电爜", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "description": "姣忛〉澶у皬", + "name": "pageSize", + "in": "query" + } + ], + "responses": { + "200": { + "description": "鎴愬姛", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/contextx.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.TaskData" + } + } + } + ] + } + } + } + } + }, "/v1/task/sendProcessParams": { "post": { "produces": [ @@ -680,7 +725,7 @@ "type": "object", "properties": { "address": { - "description": "PortName string `gorm:\"type:varchar(191);comment:绔彛鍚嶇О\" json:\"portName\"`\nFrequency int `gorm:\"type:int(11);comment:鏁版嵁鏇存柊棰戠巼 0-瀹炴椂鏇存柊 1-1娆�/绉抃" json:\"frequency\"`", + "description": "PortName string `gorm:\"type:varchar(191);comment:绔彛鍚嶇О\" json:\"portName\"`\nFrequency int `gorm:\"comment:鏁版嵁鏇存柊棰戠巼 0-瀹炴椂鏇存柊 1-1娆�/绉抃" json:\"frequency\"`", "type": "string" }, "baudRate": { @@ -951,7 +996,7 @@ "type": "object", "properties": { "address": { - "description": "PortName string `gorm:\"type:varchar(191);comment:绔彛鍚嶇О\" json:\"portName\"`\nFrequency int `gorm:\"type:int(11);comment:鏁版嵁鏇存柊棰戠巼 0-瀹炴椂鏇存柊 1-1娆�/绉抃" json:\"frequency\"`", + "description": "PortName string `gorm:\"type:varchar(191);comment:绔彛鍚嶇О\" json:\"portName\"`\nFrequency int `gorm:\"comment:鏁版嵁鏇存柊棰戠巼 0-瀹炴椂鏇存柊 1-1娆�/绉抃" json:\"frequency\"`", "type": "string" }, "baudRate": { @@ -1075,6 +1120,10 @@ "type": "string" } }, + "canStarted": { + "description": "鏄惁鍙互寮�濮嬬敓浜�", + "type": "boolean" + }, "currentProcedureIndex": { "type": "integer" }, diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 908f61e..db53996 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -105,7 +105,7 @@ address: description: |- PortName string `gorm:"type:varchar(191);comment:绔彛鍚嶇О" json:"portName"` - Frequency int `gorm:"type:int(11);comment:鏁版嵁鏇存柊棰戠巼 0-瀹炴椂鏇存柊 1-1娆�/绉�" json:"frequency"` + Frequency int `gorm:"comment:鏁版嵁鏇存柊棰戠巼 0-瀹炴椂鏇存柊 1-1娆�/绉�" json:"frequency"` type: string baudRate: description: 涓插彛娉㈢壒鐜囷紝 method = serial鏃� 鐢� @@ -289,7 +289,7 @@ address: description: |- PortName string `gorm:"type:varchar(191);comment:绔彛鍚嶇О" json:"portName"` - Frequency int `gorm:"type:int(11);comment:鏁版嵁鏇存柊棰戠巼 0-瀹炴椂鏇存柊 1-1娆�/绉�" json:"frequency"` + Frequency int `gorm:"comment:鏁版嵁鏇存柊棰戠巼 0-瀹炴椂鏇存柊 1-1娆�/绉�" json:"frequency"` type: string baudRate: description: 涓插彛娉㈢壒鐜囷紝 method = serial鏃� 鐢� @@ -372,6 +372,9 @@ items: type: string type: array + canStarted: + description: 鏄惁鍙互寮�濮嬬敓浜� + type: boolean currentProcedureIndex: type: integer order: @@ -653,6 +656,32 @@ summary: 鑾峰彇浠诲姟 tags: - Task + /v1/task/get/unStarted: + get: + parameters: + - description: 椤电爜 + in: query + name: page + type: integer + - description: 姣忛〉澶у皬 + in: query + name: pageSize + type: integer + produces: + - application/json + responses: + "200": + description: 鎴愬姛 + schema: + allOf: + - $ref: '#/definitions/contextx.Response' + - properties: + data: + $ref: '#/definitions/response.TaskData' + type: object + summary: 鑾峰彇鏈紑濮嬬殑浠诲姟 + tags: + - Task /v1/task/sendProcessParams: post: parameters: diff --git a/model/response/common.go b/model/response/common.go index 788dd40..61bc97d 100644 --- a/model/response/common.go +++ b/model/response/common.go @@ -26,6 +26,7 @@ Position int //褰撳墠浠诲姟鍦ㄨ澶囩鍑犱釜浣嶇疆 AllProcedures []string CurrentProcedureIndex int + CanStarted bool //鏄惁鍙互寮�濮嬬敓浜� } type TaskResponse struct { diff --git a/router/index.go b/router/index.go index 3c71534..dcbb9f0 100644 --- a/router/index.go +++ b/router/index.go @@ -35,11 +35,12 @@ taskApi := new(v1.TaskApi) taskGroup := v1Group.Group("task") { - taskGroup.GET("countdown", taskApi.TaskCountdown) // 鏂颁换鍔″�掕鏃� - taskGroup.GET("get", taskApi.TaskGet) // 鑾峰彇宸ュ簭 - taskGroup.GET("start/:id", taskApi.GetProcessParams) // 鑾峰彇宸ヨ壓鍙傛暟 - taskGroup.POST("sendProcessParams", taskApi.TaskStart) // 涓嬪彂宸ヨ壓鍙傛暟骞跺紑濮嬪伐搴� - taskGroup.PUT("finish/:id", taskApi.TaskFinish) // 瀹屾垚宸ュ簭 + taskGroup.GET("countdown", taskApi.TaskCountdown) // 鏂颁换鍔″�掕鏃� + taskGroup.GET("get", taskApi.TaskGet) // 鑾峰彇宸ュ簭 + taskGroup.GET("get/unStarted", taskApi.TaskGetUnStarted) // 鏃堕棿鍒颁簡鏈紑濮嬬殑浠诲姟 + taskGroup.GET("start/:id", taskApi.GetProcessParams) // 鑾峰彇宸ヨ壓鍙傛暟 + taskGroup.POST("sendProcessParams", taskApi.TaskStart) // 涓嬪彂宸ヨ壓鍙傛暟骞跺紑濮嬪伐搴� + taskGroup.PUT("finish/:id", taskApi.TaskFinish) // 瀹屾垚宸ュ簭 } configApi := new(v1.ConfigApi) diff --git a/service/task.go b/service/task.go index 944d0e0..df0002e 100644 --- a/service/task.go +++ b/service/task.go @@ -23,8 +23,16 @@ return &TaskService{} } +type TaskMode int + +const ( + TaskModeUnStarted TaskMode = 1 //鏈紑濮嬬殑 + TaskModeCurrent TaskMode = 2 + TaskModeLastFinished TaskMode = 3 //涓婁竴涓粨鏉熺殑 +) + // GetTask 鑾峰彇浠诲姟锛屾湭瀹屾垚鐨勫紑濮嬫椂闂村皬浜庣瓑浜庡綋鍓嶆椂闂达紝缁撴潫鏃堕棿澶т簬褰撳墠鏃堕棿鐨勪换鍔� -func (slf TaskService) GetTask(page, pageSize int) (taskResp *response.TaskResponse, code int) { +func (slf TaskService) GetTask(page, pageSize int, mode TaskMode) (taskResp *response.TaskResponse, code int) { var taskList []*response.TaskData var count int64 var workers []*common.ProcedureWorker @@ -35,21 +43,29 @@ procedures []*model.Procedures workOrderIds []string ) - procedures, err = model.NewProceduresSearch(nil).SetOrder("start_time asc"). - SetStartTimeMax(nowTs). - SetEndTimeMin(nowTs). + search := model.NewProceduresSearch(nil). SetDeviceId(conf.Conf.System.DeviceId). - SetStatusNot(model.ProcedureStatusFinished). - SetPage(page, pageSize). - SetOrder("status desc"). - FindNotTotal() + SetPage(page, pageSize) + + if mode == TaskModeUnStarted { + search.SetStatus(model.ProcedureStatusWaitProcess). + SetStartTimeMax(nowTs). + SetEndTimeMin(nowTs). + SetOrder("start_time asc") + } else if mode == TaskModeCurrent { + search.SetStatusNot(model.ProcedureStatusFinished). + SetStartTimeMax(nowTs). + SetEndTimeMin(nowTs). + SetOrder("start_time asc, status desc") + } else if mode == TaskModeLastFinished { + search.SetStatus(model.ProcedureStatusFinished).SetOrder("updated_at desc") + } + + procedures, err = search.FindNotTotal() if err != nil { return nil, ecode.DBErr } - count, err = model.NewProceduresSearch(nil). - SetDeviceId(conf.Conf.System.DeviceId). - SetStatusNot(model.ProcedureStatusFinished). - Count() + count, err = search.Count() if err != nil { return nil, ecode.DBErr } -- Gitblit v1.8.0