From 799a22cda35de94ad5658aa6283f1d80db132ba4 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期二, 05 九月 2023 17:09:51 +0800
Subject: [PATCH] fix todo

---
 api/v1/task.go |  119 ++++++++++++++++++++++++-----------------------------------
 1 files changed, 48 insertions(+), 71 deletions(-)

diff --git a/api/v1/task.go b/api/v1/task.go
index 377ba71..74287d5 100644
--- a/api/v1/task.go
+++ b/api/v1/task.go
@@ -14,7 +14,6 @@
 	"apsClient/pkg/plc"
 	"apsClient/service"
 	"apsClient/service/plc_address"
-	"encoding/json"
 	"errors"
 	"fmt"
 	"github.com/gin-gonic/gin"
@@ -36,7 +35,7 @@
 		return
 	}
 	var resp response.TaskCountdown
-	workOrder, err := service.NewTaskService().GetCurrentTask()
+	workOrder, err := service.NewTaskService().GetNextTask()
 	if err == nil {
 		seconds := workOrder.StartTime - time.Now().Unix()
 		resp.CountDownHour = seconds / 3600
@@ -96,60 +95,21 @@
 		return
 	}
 
-	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, "鏈幏鍙栧埌宸ヨ壓鍙傛暟")
+	processModel, err := service.NewTaskService().GetProcessParams(procedure, order)
+	if err != nil || processModel == nil || processModel.ParamsMap == nil {
+		ctx.Fail(ecode.UnknownErr)
 		return
 	}
 
-	processParamsArr := make([]response.ProcessParams, 0, len(paramsMap))
-	for k, v := range data.ParamsMap {
+	processParamsArr := make([]response.ProcessParams, 0, len(processModel.ParamsMap))
+	for k, v := range processModel.ParamsMap {
 		processParamsArr = append(processParamsArr, response.ProcessParams{
 			Key:   k,
 			Value: v,
 		})
 	}
 	resp := response.ProcessParamsResponse{
-		Number: paramsNumber,
+		Number: processModel.Number,
 		Params: processParamsArr,
 	}
 	ctx.OkWithDetailed(resp)
@@ -173,7 +133,7 @@
 		return
 	}
 	id := convertx.Atoi(idx)
-	_, code := service.NewTaskService().GetProcedureById(id)
+	procedure, code := service.NewTaskService().GetProcedureById(id)
 	if code != ecode.OK {
 		ctx.Fail(code)
 		return
@@ -184,6 +144,21 @@
 		ctx.Fail(ecode.UnknownErr)
 		return
 	}
+
+	msg := &common.MsgTaskStatusUpdate{
+		WorkOrderId:  procedure.WorkOrderID,
+		ProcedureID:  procedure.ProceduresInfo.ProcedureID,
+		DeviceId:     procedure.ProceduresInfo.DeviceID,
+		IsProcessing: false,
+		IsFinish:     true,
+	}
+
+	caller := nsq.NewCaller(fmt.Sprintf(constvar.NsqTopicTaskProcedureStatusUpdate, conf.Conf.NsqConf.NodeId), "")
+	err = caller.Send(msg)
+	if err != nil {
+		logx.Errorf("send task status update msg error:%v", err.Error())
+	}
+
 	ctx.Ok()
 }
 
@@ -205,12 +180,13 @@
 		return
 	}
 	id := convertx.Atoi(idx)
-	procedure, code := service.NewTaskService().GetProcedureById(id)
+	taskService := service.NewTaskService()
+	procedure, code := taskService.GetProcedureById(id)
 	if code != ecode.OK {
 		ctx.Fail(code)
 		return
 	}
-	order, err := service.NewTaskService().GetOrderByWorkOrderId(procedure.WorkOrderID)
+	order, err := taskService.GetOrderByWorkOrderId(procedure.WorkOrderID)
 	if err != nil {
 		ctx.Fail(ecode.UnknownErr)
 		return
@@ -221,36 +197,22 @@
 		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("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, "鏈幏鍙栧埌宸ヨ壓鍙傛暟")
+	processModel, err := taskService.GetProcessParams(procedure, order)
+	if err != nil || processModel == nil || processModel.ParamsMap == nil {
+		ctx.Fail(ecode.UnknownErr)
 		return
 	}
 
 	err = model.WithTransaction(func(db *gorm.DB) error {
-		err = service.NewTaskService().UpdateProcedureStatus(db, id, model.ProcedureStatusProcessing)
+		err = taskService.UpdateProcedureStatus(db, id, model.ProcedureStatusProcessing)
 		if err != nil {
 			return err
 		}
-		err = service.NewTaskService().UpdateOrderStatus(db, order.ID, model.OrderStatusProcessing)
+		err = taskService.UpdateOrderStatus(db, order.ID, model.OrderStatusProcessing)
 		if err != nil {
 			return err
 		}
-		return nil
+		return service.NewProgressService().AddProgress(db, procedure, order)
 	})
 	if err != nil {
 		logx.Errorf("SendProcessParams update order and procedure status error:%v", err.Error())
@@ -263,7 +225,7 @@
 		return
 	}
 	plcConfig.MaxTryTimes = 2
-	err = SendParams(result.ParamsMap, plcConfig)
+	err = SendParams(processModel.ParamsMap, plcConfig)
 	if err != nil {
 		logx.Errorf("SendProcessParams: %v", err.Error())
 		ctx.FailWithMsg(ecode.NeedConfirmedErr, "绯熺硶锛屽伐鑹轰笅鍙戝け璐ャ��")
@@ -279,6 +241,21 @@
 		ctx.FailWithMsg(ecode.NeedConfirmedErr, "绯熺硶锛屽伐鑹轰笅鍙戝け璐ャ��")
 		return
 	}
+
+	msg := &common.MsgTaskStatusUpdate{
+		WorkOrderId:  procedure.WorkOrderID,
+		ProcedureID:  procedure.ProceduresInfo.ProcedureID,
+		DeviceId:     procedure.ProceduresInfo.DeviceID,
+		IsProcessing: true,
+		IsFinish:     false,
+	}
+
+	caller := nsq.NewCaller(fmt.Sprintf(constvar.NsqTopicTaskProcedureStatusUpdate, conf.Conf.NsqConf.NodeId), "")
+	err = caller.Send(msg)
+	if err != nil {
+		logx.Errorf("send task status update msg error:%v", err.Error())
+	}
+
 	ctx.Ok()
 }
 

--
Gitblit v1.8.0