zhangqian
2023-09-27 4db8b372c61025a80af529a47872a6fec6daf854
删除获取未开始任务接口,统一用获取任务接口
9个文件已修改
330 ■■■■ 已修改文件
api/v1/task.go 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
constvar/const.go 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/docs.go 83 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/swagger.json 83 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/swagger.yaml 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/request/task.go 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
router/index.go 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/cache_store.go 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/task.go 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/v1/task.go
@@ -74,13 +74,18 @@
        params.PageSize = channelAmount
    }
    taskResponse, code := service.NewTaskService().GetTask(params.Page, params.PageSize, service.TaskModeCurrent, nil) //取进行中的或未开始的
    taskMode := constvar.TaskModeCurrent
    if params.TaskMode == constvar.TaskModeUnStarted {
        taskMode = params.TaskMode
    }
    taskResponse, code := service.NewTaskService().GetTask(params.Page, params.PageSize, taskMode, nil) //取进行中的或未开始的
    if code != ecode.OK {
        ctx.Fail(code)
        return
    }
    if len(taskResponse.Tasks) < channelAmount {
    if len(taskResponse.Tasks) < channelAmount && taskMode == constvar.TaskModeCurrent {
        var existsChannel = make(map[int32]bool, channelAmount)
        for _, task := range taskResponse.Tasks {
            existsChannel[task.Channel] = true
@@ -89,7 +94,7 @@
            if existsChannel[int32(i)] {
                continue
            }
            taskResponseTemp, code := service.NewTaskService().GetTask(params.Page, 1, service.TaskModeLastFinished, []int32{int32(i)}) //取上一个完成的
            taskResponseTemp, code := service.NewTaskService().GetTask(params.Page, 1, constvar.TaskModeLastFinished, []int32{int32(i)}) //取上一个完成的
            if code != ecode.OK {
                ctx.Fail(code)
                return
@@ -103,7 +108,7 @@
    })
    for _, task := range taskResponse.Tasks {
        if task.Procedure.Status == model.ProcedureStatusWaitProcess {
        if !service.TaskFlagGet(task.Channel) {
            task.CanStarted = true
        }
    }
@@ -111,34 +116,6 @@
    taskResponse.Prompt = conf.Conf.Prompt
    taskResponse.ChannelAmount = channelAmount
    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, &params)
    if !ok {
        return
    }
    if params.Page <= 0 {
        params.Page = 1
    }
    if params.PageSize <= 0 {
        params.PageSize = 100
    }
    taskResponse, code := service.NewTaskService().GetTask(params.Page, params.PageSize, service.TaskModeUnStarted, nil) //时间到了未开始的
    if code != ecode.OK {
        ctx.Fail(code)
        return
    }
    ctx.OkWithDetailed(taskResponse)
}
@@ -246,6 +223,8 @@
        logx.Errorf("send task status update msg error:%v", err.Error())
    }
    service.TaskFlagUnset(procedure.Channel)
    ctx.Ok()
}
@@ -282,7 +261,6 @@
        ctx.Ok()
        return
    }
    processModel, err := taskService.GetProcessParams(procedure, order)
    if err != nil || processModel == nil || processModel.ParamsMap == nil {
        ctx.Fail(ecode.UnknownErr)
@@ -303,7 +281,7 @@
    })
    if err != nil {
        logx.Errorf("SendProcessParams update order and procedure status error:%v", err.Error())
        ctx.FailWithMsg(ecode.NeedConfirmedErr, "更改工单状态失败")
        ctx.FailWithMsg(ecode.DBErr, "更改工单状态失败")
        return
    }
    plcConfig, code := service.NewDevicePlcService().GetDevicePlc()
@@ -337,7 +315,7 @@
    plcConfig.CurrentTryTimes = 0
    err = service.PlcWrite(plcConfig, constvar.PlcStartAddressTypeTotalNumber, params.Channel, order.Amount.IntPart())
    if err != nil {
        ctx.FailWithMsg(ecode.NeedConfirmedErr, "糟糕,工艺下发失败。")
        ctx.FailWithMsg(ecode.NeedConfirmedErr, "PLC请求失败,请检查PLC配置")
        return
    }
@@ -354,7 +332,7 @@
    if err != nil {
        logx.Errorf("send task status update msg error:%v", err.Error())
    }
    service.TaskFlagSet(procedure.Channel)
    ctx.Ok()
}
constvar/const.go
@@ -63,3 +63,11 @@
    PlcPackageGoBurrow             = "goBurrow"
    PlcPackageApacheLongConnection = "apacheLong"
)
type TaskMode int
const (
    TaskModeUnStarted    TaskMode = 1 //未开始的
    TaskModeCurrent      TaskMode = 2 //未开始的和进行中的
    TaskModeLastFinished TaskMode = 3 //上一个结束的
)
docs/docs.go
@@ -446,6 +446,26 @@
                        "description": "每页大小",
                        "name": "pageSize",
                        "in": "query"
                    },
                    {
                        "enum": [
                            1,
                            2,
                            3
                        ],
                        "type": "integer",
                        "x-enum-comments": {
                            "TaskModeCurrent": "未开始的和进行中的",
                            "TaskModeLastFinished": "上一个结束的",
                            "TaskModeUnStarted": "未开始的"
                        },
                        "x-enum-varnames": [
                            "TaskModeUnStarted",
                            "TaskModeCurrent",
                            "TaskModeLastFinished"
                        ],
                        "name": "taskMode",
                        "in": "query"
                    }
                ],
                "responses": {
@@ -461,51 +481,6 @@
                                    "properties": {
                                        "data": {
                                            "$ref": "#/definitions/response.TaskResponse"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/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"
                                        }
                                    }
                                }
@@ -736,6 +711,24 @@
                "PlcStartAddressValueTypeInt"
            ]
        },
        "constvar.TaskMode": {
            "type": "integer",
            "enum": [
                1,
                2,
                3
            ],
            "x-enum-comments": {
                "TaskModeCurrent": "未开始的和进行中的",
                "TaskModeLastFinished": "上一个结束的",
                "TaskModeUnStarted": "未开始的"
            },
            "x-enum-varnames": [
                "TaskModeUnStarted",
                "TaskModeCurrent",
                "TaskModeLastFinished"
            ]
        },
        "contextx.Response": {
            "type": "object",
            "properties": {
docs/swagger.json
@@ -434,6 +434,26 @@
                        "description": "每页大小",
                        "name": "pageSize",
                        "in": "query"
                    },
                    {
                        "enum": [
                            1,
                            2,
                            3
                        ],
                        "type": "integer",
                        "x-enum-comments": {
                            "TaskModeCurrent": "未开始的和进行中的",
                            "TaskModeLastFinished": "上一个结束的",
                            "TaskModeUnStarted": "未开始的"
                        },
                        "x-enum-varnames": [
                            "TaskModeUnStarted",
                            "TaskModeCurrent",
                            "TaskModeLastFinished"
                        ],
                        "name": "taskMode",
                        "in": "query"
                    }
                ],
                "responses": {
@@ -449,51 +469,6 @@
                                    "properties": {
                                        "data": {
                                            "$ref": "#/definitions/response.TaskResponse"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/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"
                                        }
                                    }
                                }
@@ -724,6 +699,24 @@
                "PlcStartAddressValueTypeInt"
            ]
        },
        "constvar.TaskMode": {
            "type": "integer",
            "enum": [
                1,
                2,
                3
            ],
            "x-enum-comments": {
                "TaskModeCurrent": "未开始的和进行中的",
                "TaskModeLastFinished": "上一个结束的",
                "TaskModeUnStarted": "未开始的"
            },
            "x-enum-varnames": [
                "TaskModeUnStarted",
                "TaskModeCurrent",
                "TaskModeLastFinished"
            ]
        },
        "contextx.Response": {
            "type": "object",
            "properties": {
docs/swagger.yaml
@@ -102,6 +102,20 @@
    x-enum-varnames:
    - PlcStartAddressValueTypeString
    - PlcStartAddressValueTypeInt
  constvar.TaskMode:
    enum:
    - 1
    - 2
    - 3
    type: integer
    x-enum-comments:
      TaskModeCurrent: 未开始的和进行中的
      TaskModeLastFinished: 上一个结束的
      TaskModeUnStarted: 未开始的
    x-enum-varnames:
    - TaskModeUnStarted
    - TaskModeCurrent
    - TaskModeLastFinished
  contextx.Response:
    properties:
      code:
@@ -674,6 +688,21 @@
        in: query
        name: pageSize
        type: integer
      - enum:
        - 1
        - 2
        - 3
        in: query
        name: taskMode
        type: integer
        x-enum-comments:
          TaskModeCurrent: 未开始的和进行中的
          TaskModeLastFinished: 上一个结束的
          TaskModeUnStarted: 未开始的
        x-enum-varnames:
        - TaskModeUnStarted
        - TaskModeCurrent
        - TaskModeLastFinished
      produces:
      - application/json
      responses:
@@ -687,32 +716,6 @@
                  $ref: '#/definitions/response.TaskResponse'
              type: object
      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:
model/request/task.go
@@ -1,5 +1,7 @@
package request
import "apsClient/constvar"
// TaskInfo 任务开启通知请求参数
type TaskInfo struct {
    OrderId   string `json:"orderId"`   // 订单号
@@ -12,6 +14,7 @@
// TaskList 任务列表请求参数
type TaskList struct {
    PageInfo
    TaskMode constvar.TaskMode `json:"taskMode" form:"taskMode"`
}
type SendProcessParams struct {
router/index.go
@@ -35,12 +35,11 @@
    taskApi := new(v1.TaskApi)
    taskGroup := v1Group.Group("task")
    {
        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)          // 完成工序
        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)        // 完成工序
    }
    configApi := new(v1.ConfigApi)
service/cache_store.go
@@ -3,7 +3,6 @@
import (
    "apsClient/constvar"
    "apsClient/model"
    "apsClient/model/response"
    "fmt"
    "github.com/spf13/cast"
    "sync"
@@ -47,8 +46,8 @@
}
const (
    PlcCacheKey             = "plc:%v:%v" //plc:channel:key
    CurrentTaskCacheKey     = "current_task"
    PlcCacheKey             = "plc:%v:%v"                    //plc:channel:key
    CurrentTaskCacheKey     = "current_task:%v"              //current_task:channel
    CurrentProgressCacheKey = "current_progress:%v"          //current_progress:channel
    PlcCacheKeyUpdateTime   = "finish_number_update_time:%v" //finish_number_update_time:channel
)
@@ -79,19 +78,19 @@
    defaultCacheStore.Add(fmt.Sprintf(PlcCacheKeyUpdateTime, channel), value)
}
func TaskCacheSet(value *response.TaskData) {
    defaultCacheStore.Add(CurrentTaskCacheKey, value)
func TaskFlagSet(channel int32) {
    defaultCacheStore.Add(fmt.Sprintf(CurrentTaskCacheKey, channel), struct{}{})
}
func TaskCacheUnset() {
    defaultCacheStore.Remove(CurrentTaskCacheKey)
func TaskFlagUnset(channel int32) {
    defaultCacheStore.Remove(fmt.Sprintf(CurrentTaskCacheKey, channel))
}
func TaskCacheGet() (*response.TaskData, bool) {
    if v, ok := defaultCacheStore.Get(CurrentTaskCacheKey); ok {
        return v.(*response.TaskData), ok
func TaskFlagGet(channel int32) bool {
    if _, ok := defaultCacheStore.Get(fmt.Sprintf(CurrentTaskCacheKey, channel)); ok {
        return true
    }
    return nil, false
    return false
}
func ProgressCacheGet(channel int32) (*model.ProductionProgress, bool) {
service/task.go
@@ -23,16 +23,8 @@
    return &TaskService{}
}
type TaskMode int
const (
    TaskModeUnStarted    TaskMode = 1 //未开始的
    TaskModeCurrent      TaskMode = 2
    TaskModeLastFinished TaskMode = 3 //上一个结束的
)
// GetTask 获取任务,未完成的开始时间小于等于当前时间,结束时间大于当前时间的任务
func (slf TaskService) GetTask(page, pageSize int, mode TaskMode, channels []int32) (taskResp *response.TaskResponse, code int) {
func (slf TaskService) GetTask(page, pageSize int, mode constvar.TaskMode, channels []int32) (taskResp *response.TaskResponse, code int) {
    var taskList []*response.TaskData
    var count int64
    var workers []*common.ProcedureWorker
@@ -54,17 +46,17 @@
        SetDeviceId(conf.Conf.System.DeviceId).
        SetPage(page, pageSize)
    if mode == TaskModeUnStarted {
    if mode == constvar.TaskModeUnStarted {
        search.SetStatus(model.ProcedureStatusWaitProcess).
            SetStartTimeMax(nowTs).
            SetEndTimeMin(nowTs).
            SetOrder("start_time asc")
    } else if mode == TaskModeCurrent {
    } else if mode == constvar.TaskModeCurrent {
        search.SetStatusNot(model.ProcedureStatusFinished).
            SetStartTimeMax(nowTs).
            SetEndTimeMin(nowTs).
            SetOrder("status desc, start_time asc")
    } else if mode == TaskModeLastFinished {
    } else if mode == constvar.TaskModeLastFinished {
        search.SetStatus(model.ProcedureStatusFinished).SetOrder("updated_at desc")
        if len(channels) > 0 {
            search.SetChannels(channels)