zhangqian
2023-09-01 1ba32f7b79af42830a2a1f2c488675e8bd25f150
获取工艺参数优先从本地数据库获取,没有再尝试从云端获取
2个文件已修改
70 ■■■■■ 已修改文件
api/v1/task.go 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/index.go 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/v1/task.go
@@ -14,6 +14,7 @@
    "apsClient/pkg/plc"
    "apsClient/service"
    "apsClient/service/plc_address"
    "encoding/json"
    "errors"
    "fmt"
    "github.com/gin-gonic/gin"
@@ -95,39 +96,63 @@
        return
    }
    caller := nsq.NewCaller(fmt.Sprintf(constvar.NsqTopicProcessParamsRequest, conf.Conf.NsqConf.NodeId), fmt.Sprintf(constvar.NsqTopicProcessParamsResponse, conf.Conf.NsqConf.NodeId))
    var result common.ResponseProcessParams
    err = caller.Call(common.RequestProcessParams{
        WorkOrder: procedure.WorkOrderID,
        OrderId:   procedure.OrderID,
        Product:   order.ProductName,
        Procedure: procedure.ProceduresInfo.ProcedureName,
        Device:    procedure.ProceduresInfo.DeviceName}, &result, time.Second*3)
    if err != nil {
        logx.Errorf("TaskStart GetProcessModel error:%v", err.Error())
        ctx.FailWithMsg(ecode.UnknownErr, "未获取到工艺参数")
        return
    }
    if result.ParamsMap == nil {
        logx.Errorf("TaskStart GetProcessModel response miss process params:%v", result)
    paramsMap := make(map[string]interface{})
    var paramsNumber string
    data, err := model.NewProcessModelSearch().
        SetWorkOrder(procedure.WorkOrderID).
        SetDevice(procedure.ProceduresInfo.DeviceName).
        SetOrderId(procedure.OrderID).
        SetProcedure(procedure.ProceduresInfo.ProcedureName).
        SetProduct(order.ProductName).
        SetOrder("id desc").First()
    if err == nil {
        err = json.Unmarshal([]byte(data.Params), &data.ParamsMap)
        paramsMap = data.ParamsMap
        paramsNumber = data.Number
        if err != nil {
            logx.Errorf("process model json.Unmarshal:%v", err)
            ctx.FailWithMsg(ecode.UnknownErr, "未获取到工艺参数")
            return
        }
    } else if err == gorm.ErrRecordNotFound { //如何数据库没有从云端获取
        caller := nsq.NewCaller(fmt.Sprintf(constvar.NsqTopicProcessParamsRequest, conf.Conf.NsqConf.NodeId), fmt.Sprintf(constvar.NsqTopicProcessParamsResponse, conf.Conf.NsqConf.NodeId))
        var result common.ResponseProcessParams
        err = caller.Call(common.RequestProcessParams{
            WorkOrder: procedure.WorkOrderID,
            OrderId:   procedure.OrderID,
            Product:   order.ProductName,
            Procedure: procedure.ProceduresInfo.ProcedureName,
            Device:    procedure.ProceduresInfo.DeviceName}, &result, time.Second*3)
        if err != nil {
            logx.Errorf("TaskStart GetProcessModel error:%v", err.Error())
            ctx.FailWithMsg(ecode.UnknownErr, "未获取到工艺参数")
            return
        }
        if result.ParamsMap == nil {
            logx.Errorf("TaskStart GetProcessModel response miss process params:%v", result)
            ctx.FailWithMsg(ecode.UnknownErr, "未获取到工艺参数")
            return
        }
        paramsMap = result.ParamsMap
        paramsNumber = result.Number
    } else {
        logx.Errorf("TaskStart GetProcessModel  err:%v", err)
        ctx.FailWithMsg(ecode.UnknownErr, "未获取到工艺参数")
        return
    }
    processParamsArr := make([]response.ProcessParams, 0, len(result.ParamsMap))
    for k, v := range result.ParamsMap {
    processParamsArr := make([]response.ProcessParams, 0, len(paramsMap))
    for k, v := range data.ParamsMap {
        processParamsArr = append(processParamsArr, response.ProcessParams{
            Key:   k,
            Value: v,
        })
    }
    data := response.ProcessParamsResponse{
        Number: result.Number,
    resp := response.ProcessParamsResponse{
        Number: paramsNumber,
        Params: processParamsArr,
    }
    logx.Infof("TaskStart Notice GetProcessModel: %+v", result)
    ctx.OkWithDetailed(data)
    ctx.OkWithDetailed(resp)
}
// TaskFinish
model/index.go
@@ -27,6 +27,7 @@
        NetConfig{},
        PlcBrand{},
        DevicePlc{},
        ProcessModel{},
    )
    return err
}