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