From 1ba32f7b79af42830a2a1f2c488675e8bd25f150 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期五, 01 九月 2023 17:42:10 +0800 Subject: [PATCH] 获取工艺参数优先从本地数据库获取,没有再尝试从云端获取 --- model/index.go | 1 api/v1/task.go | 69 +++++++++++++++++++++++----------- 2 files changed, 48 insertions(+), 22 deletions(-) diff --git a/api/v1/task.go b/api/v1/task.go index d8ebcc7..377ba71 100644 --- a/api/v1/task.go +++ b/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 diff --git a/model/index.go b/model/index.go index 6ac0cf7..7828517 100644 --- a/model/index.go +++ b/model/index.go @@ -27,6 +27,7 @@ NetConfig{}, PlcBrand{}, DevicePlc{}, + ProcessModel{}, ) return err } -- Gitblit v1.8.0