From 30eaec8c41e167b0d5527dbcc987fba222f31b93 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期五, 25 八月 2023 20:16:27 +0800 Subject: [PATCH] 连接plc5秒超时 --- api/v1/task.go | 88 +++++++++++++++++++++++++++++++++---------- 1 files changed, 67 insertions(+), 21 deletions(-) diff --git a/api/v1/task.go b/api/v1/task.go index b0719bc..d545b26 100644 --- a/api/v1/task.go +++ b/api/v1/task.go @@ -23,6 +23,28 @@ type TaskApi struct{} +// TaskCountdown +// @Tags Task +// @Summary 鏂颁换鍔″�掕鏃� +// @Produce application/json +// @Success 200 {object} contextx.Response{data=response.TaskCountdown} "鎴愬姛" +// @Router /v1/task/countdown [get] +func (slf *TaskApi) TaskCountdown(c *gin.Context) { + ctx, ok := contextx.NewContext(c, nil) + if !ok { + return + } + var resp response.TaskCountdown + workOrder, err := service.NewTaskService().GetComingTask() + if err == nil { + seconds := workOrder.StartTime - time.Now().Unix() + resp.CountDownHour = seconds / 3600 + resp.CountDownMinute = seconds % 3600 / 60 + resp.ShowCountDown = true + } + ctx.OkWithDetailed(resp) +} + // TaskGet // @Tags Task // @Summary 鑾峰彇浠诲姟 @@ -76,31 +98,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*3) 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) } @@ -165,18 +208,23 @@ return } - params := service.GetProcessModelParams{ + 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*3) if err != nil { - logx.Errorf("SendProcessModel GetProcessModel err: %v", err.Error()) - ctx.Fail(ecode.UnknownErr) + logx.Errorf("SendProcessParams GetProcessModel error:%v", err.Error()) + ctx.FailWithMsg(ecode.UnknownErr, "鏈幏鍙栧埌宸ヨ壓鍙傛暟") + return + } + if result.ParamsMap == nil { + logx.Errorf("SendProcessParams GetProcessModel response miss process params:%v", result) + ctx.FailWithMsg(ecode.UnknownErr, "鏈幏鍙栧埌宸ヨ壓鍙傛暟") return } @@ -195,7 +243,7 @@ //} safe.Go(func() { - err = SendParams2(resp.ParamsMap, 0) + err = SendParams2(result.ParamsMap, 0) if err != nil { logx.Errorf("SendProcessParams: %v", err.Error()) return @@ -217,11 +265,10 @@ if code != ecode.OK { return errors.New("璇峰厛閰嶇疆PLC") } - conn, err := plc.NewModbusConnection(plcConfig.Address) + conn, err := plc.GetModbusConnection(fmt.Sprintf("%s:%v", plcConfig.Address, plcConfig.Port)) if err != nil { return errors.New(fmt.Sprintf("杩炴帴plc澶辫触: %v", err.Error())) } - defer conn.Close() logx.Info("----------------寮�濮嬩笅鍙戝伐鑹哄弬鏁�-----------------") for k, v := range paramsMap { @@ -249,11 +296,10 @@ if code != ecode.OK { return errors.New("璇峰厛閰嶇疆PLC") } - conn, err := plc.NewModbusConnection(plcConfig.Address) + conn, err := plc.GetModbusConnection(fmt.Sprintf("%s:%v", plcConfig.Address, plcConfig.Port)) if err != nil { return errors.New(fmt.Sprintf("杩炴帴plc澶辫触: %v", err.Error())) } - defer conn.Close() logx.Info("----------------寮�濮嬩笅鍙戝伐鑹哄弬鏁�-----------------") var missNumbers int -- Gitblit v1.8.0