From 001d1f605c0a275a139f5c8fa66e631eb998e3b9 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期六, 02 九月 2023 14:35:10 +0800 Subject: [PATCH] 存储全部设备的工序和订单&代码优化 --- service/task.go | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 54 insertions(+), 0 deletions(-) diff --git a/service/task.go b/service/task.go index 5a1634e..43d6819 100644 --- a/service/task.go +++ b/service/task.go @@ -1,9 +1,17 @@ package service import ( + "apsClient/conf" + "apsClient/constvar" "apsClient/model" + "apsClient/model/common" "apsClient/model/response" + "apsClient/nsq" "apsClient/pkg/ecode" + "apsClient/pkg/logx" + "apsClient/pkg/structx" + "encoding/json" + "fmt" "gorm.io/gorm" "time" ) @@ -37,6 +45,7 @@ procedure, err := model.NewProceduresSearch(nil).SetOrder("start_time asc"). SetWorkOrderId(order.WorkOrderID). SetStartTimeMax(nowTs). + SetDeviceId(conf.Conf.System.DeviceId). SetStatusNot(model.ProcedureStatusFinished). First() if err == gorm.ErrRecordNotFound { //璇ヨ鍗曟湰璁惧鍏ㄩ儴宸ュ簭瀹屾垚锛屾妸璁㈠崟缃负瀹屾垚鐘舵�侊紙鍙槸瀵规湰璁惧瀹屾垚锛� @@ -82,6 +91,51 @@ return model.NewOrderSearch(nil).SetWorkOrderId(workOrderId).First() } +func (slf TaskService) GetProcessParams(procedure *model.Procedures, order *model.Order) (processModel *model.ProcessModel, err error) { + 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 != gorm.ErrRecordNotFound { + logx.Errorf("TaskStart GetProcessModel err:%v", err) + return nil, err + } + if err == nil { + err = json.Unmarshal([]byte(data.Params), &data.ParamsMap) + if err != nil { + logx.Errorf("process model json.Unmarshal:%v", err) + return + } + return data, nil + } + + 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()) + return + } + if result.ParamsMap == nil { + logx.Errorf("TaskStart GetProcessModel response miss process params:%v", result) + return + } + processModel = new(model.ProcessModel) + err = structx.AssignTo(result, &processModel) + return processModel, err + } + return +} + // GetCurrentTask 鑾峰彇寰呭畬鎴愭垨杩涜涓殑浠诲姟锛� 姣忎釜宸ュ崟鍙湁涓�涓伐搴� func (slf TaskService) GetCurrentTask() (workOrder *model.Order, err error) { nowTs := time.Now().Unix() -- Gitblit v1.8.0