From 369026325416d187b7b0a0fbe8b5fd1895515bbb Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期二, 22 八月 2023 18:18:15 +0800 Subject: [PATCH] 获取工艺参数用nsq方式获取 --- constvar/const.go | 8 ++- nsq/msg_handler.go | 20 ++++++++++ .gitignore | 3 + model/common/common.go | 20 ++++++++++ nsq/caller.go | 3 + nsq/consumer.go | 2 + api/v1/task.go | 39 +++++++++++++++---- nsq/nsq.go | 4 ++ 8 files changed, 86 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index f7f7161..1561e76 100644 --- a/.gitignore +++ b/.gitignore @@ -24,4 +24,5 @@ apsClient aps.db .idea -logs \ No newline at end of file +logs +datafile \ No newline at end of file diff --git a/api/v1/task.go b/api/v1/task.go index b0719bc..cf295c5 100644 --- a/api/v1/task.go +++ b/api/v1/task.go @@ -76,31 +76,52 @@ ctx.Fail(ecode.UnknownErr) return } - params := service.GetProcessModelParams{ + //params := service.GetProcessModelParams{ + // WorkOrder: procedure.WorkOrderID, + // OrderId: procedure.OrderID, + // Product: order.ProductName, + // Procedure: procedure.ProceduresInfo.ProcedureName, + // Device: procedure.ProceduresInfo.DeviceName, + //} + //resp, err := service.ProcessModel{}.GetProcessModel(params) + //if err != nil { + // logx.Errorf("TaskStart GetProcessModel error: %v", err.Error()) + // ctx.FailWithMsg(ecode.UnknownErr, "鏈幏鍙栧埌宸ヨ壓鍙傛暟") + // 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, - } - resp, err := service.ProcessModel{}.GetProcessModel(params) + Device: procedure.ProceduresInfo.DeviceName}, &result, time.Second*5) if err != nil { - logx.Errorf("TaskStart Notice GetProcessModel error: %v", err.Error()) + logx.Errorf("TaskStart GetProcessModel error:%v", err.Error()) ctx.FailWithMsg(ecode.UnknownErr, "鏈幏鍙栧埌宸ヨ壓鍙傛暟") return } - processParamsArr := make([]response.ProcessParams, 0, len(resp.ParamsMap)) - for k, v := range resp.ParamsMap { + if result.ParamsMap == nil { + logx.Errorf("TaskStart GetProcessModel response miss process params:%v", result) + ctx.FailWithMsg(ecode.UnknownErr, "鏈幏鍙栧埌宸ヨ壓鍙傛暟") + return + } + + processParamsArr := make([]response.ProcessParams, 0, len(result.ParamsMap)) + for k, v := range result.ParamsMap { processParamsArr = append(processParamsArr, response.ProcessParams{ Key: k, Value: v, }) } data := response.ProcessParamsResponse{ - Number: resp.Number, + Number: result.Number, Params: processParamsArr, } - logx.Infof("TaskStart Notice GetProcessModel: %+v", resp) + logx.Infof("TaskStart Notice GetProcessModel: %+v", result) ctx.OkWithDetailed(data) } diff --git a/constvar/const.go b/constvar/const.go index 5d30c70..20868e5 100644 --- a/constvar/const.go +++ b/constvar/const.go @@ -1,9 +1,11 @@ package constvar const ( - NsqTopicScheduleTask = "aps.%v.scheduleTask" //鎺掔▼浠诲姟涓嬪彂 - NsqTopicGetPlcAddress = "aps.%v.getPlcAddress" - NsqTopicSendPlcAddress = "aps.%v.sendPlcAddress" + NsqTopicScheduleTask = "aps.%v.scheduleTask" //鎺掔▼浠诲姟涓嬪彂 + NsqTopicGetPlcAddress = "aps.%v.getPlcAddress" + NsqTopicSendPlcAddress = "aps.%v.sendPlcAddress" + NsqTopicProcessParamsRequest = "aps.%v.processParams.request" + NsqTopicProcessParamsResponse = "aps.%v.processParams.response" ) type PlcStartAddressType string diff --git a/model/common/common.go b/model/common/common.go index 580b2b8..c329eec 100644 --- a/model/common/common.go +++ b/model/common/common.go @@ -65,3 +65,23 @@ AddressData []byte } ) + +// 宸ヨ壓鍙傛暟 +type ( + RequestProcessParams struct { + WorkOrder string `json:"workOrder,omitempty" form:"workOrder"` //宸ュ簭缂栧彿 + OrderId string `json:"orderId"` // 璁㈠崟鍙� + Product string `json:"password"` // 浜у搧 + Procedure string `json:"procedure"` // 宸ュ簭 + Device string `json:"device"` // 璁惧 + } + ResponseProcessParams struct { + Number string `json:"number"` //宸ヨ壓妯″瀷缂栧彿 + OrderId string `json:"orderId"` //璁㈠崟id + Product string `json:"product"` //浜у搧鍚嶇О + Procedure string `json:"procedure"` //宸ュ簭 + WorkOrder string `json:"workOrder"` //宸ュ崟 + Device string `json:"device"` //璁惧 + ParamsMap map[string]interface{} `json:"paramsMap"` + } +) diff --git a/nsq/caller.go b/nsq/caller.go index 36839cc..59c6848 100644 --- a/nsq/caller.go +++ b/nsq/caller.go @@ -42,6 +42,9 @@ case data := <-ReceivedMessageChan: if data.Topic == caller.ResponseTopic { return json.Unmarshal(data.Message, &output) + } else { + //鎶婃秷鎭斁鍥炲幓 + ReceivedMessageChan <- data } } } diff --git a/nsq/consumer.go b/nsq/consumer.go index feb2814..d7b55e3 100644 --- a/nsq/consumer.go +++ b/nsq/consumer.go @@ -22,6 +22,8 @@ handler = new(ScheduleTask) case fmt.Sprintf(constvar.NsqTopicSendPlcAddress, conf.Conf.NsqConf.NodeId): handler = &PlcAddress{Topic: topic} + case fmt.Sprintf(constvar.NsqTopicProcessParamsResponse, conf.Conf.NsqConf.NodeId): + handler = &ProcessParams{Topic: topic} } c.AddHandler(handler.HandleMessage) diff --git a/nsq/msg_handler.go b/nsq/msg_handler.go index a33cf9f..1274aa1 100644 --- a/nsq/msg_handler.go +++ b/nsq/msg_handler.go @@ -126,3 +126,23 @@ } return nil } + +type ProcessParams struct { + Topic string +} + +func (slf *ProcessParams) HandleMessage(data []byte) (err error) { + logx.Infof("get an process params message :%s", data) + var resp = new(common.ResponseProcessParams) + err = json.Unmarshal(data, &resp) + if err != nil { + logx.Errorf("ScheduleTask HandleMessage Unmarshal json err: %v", err.Error()) + return err + } + //閫氱煡鍥炲鏀跺埌 + ReceivedMessageChan <- &ReceivedMessage{ + Topic: slf.Topic, + Message: data, + } + return nil +} diff --git a/nsq/nsq.go b/nsq/nsq.go index 2710e13..6957985 100644 --- a/nsq/nsq.go +++ b/nsq/nsq.go @@ -37,5 +37,9 @@ _ = Consume(fmt.Sprintf(constvar.NsqTopicSendPlcAddress, conf.Conf.NsqConf.NodeId), conf.Conf.System.DeviceId) }) + safe.Go(func() { + _ = Consume(fmt.Sprintf(constvar.NsqTopicProcessParamsResponse, conf.Conf.NsqConf.NodeId), conf.Conf.System.DeviceId) + }) + return nil } -- Gitblit v1.8.0