From 9e3412941ea49942f651506657d90ab174a4329f Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期二, 17 十月 2023 17:10:36 +0800
Subject: [PATCH] 工单开始或结束时保存待同步任务

---
 api/v1/task.go |   76 +++++++++++++++++++++++--------------
 1 files changed, 47 insertions(+), 29 deletions(-)

diff --git a/api/v1/task.go b/api/v1/task.go
index 96a0b1a..c2b864c 100644
--- a/api/v1/task.go
+++ b/api/v1/task.go
@@ -213,9 +213,24 @@
 		ctx.Fail(ecode.ParamsErr)
 		return
 	}
-	err := service.NewTaskService().UpdateProcedureStatus(nil, id, model.ProcedureStatusFinished, procedure.Channel)
+
+	err := model.WithTransaction(func(db *gorm.DB) error {
+		err := service.NewTaskService().UpdateProcedureStatus(db, id, model.ProcedureStatusFinished, procedure.Channel)
+		if err != nil {
+			return err
+		}
+		record := model.TaskStatusSync{
+			WorkOrderId:  procedure.WorkOrderID,
+			ProcedureID:  procedure.ProcedureID,
+			DeviceId:     procedure.DeviceID,
+			IsProcessing: false,
+			IsFinish:     true,
+		}
+		return service.NewTaskService().SaveTaskStatusSync(db, &record)
+	})
+
 	if err != nil {
-		logx.Errorf("UpdateProcedureStatus err: %v", err.Error())
+		logx.Errorf("TaskFinish UpdateProcedureStatus err: %v", err.Error())
 		ctx.Fail(ecode.UnknownErr)
 		return
 	}
@@ -263,7 +278,23 @@
 		ctx.FailWithMsg(ecode.ParamsErr, "鏈幏鍙栧埌宸ヨ壓鍙傛暟锛岃鍦ㄥ伐鑹烘ā鍨嬪簱涓笂浼狅紒")
 		return
 	}
-
+	plcConfig, code := service.NewDevicePlcService().GetDevicePlc()
+	if code != ecode.OK || plcConfig.ID == 0 {
+		ctx.FailWithMsg(ecode.NeedConfirmedErr, "璇峰厛閰嶇疆PLC")
+		return
+	}
+	plcConfig.MaxTryTimes = 2
+	err = SendParams(processModel.ParamsMap, plcConfig)
+	if err != nil {
+		ctx.FailWithMsg(ecode.NeedConfirmedErr, "PLC璇锋眰澶辫触锛岃妫�鏌LC閰嶇疆锛�")
+		return
+	}
+	plcConfig.CurrentTryTimes = 0
+	err = service.PlcWrite(plcConfig, constvar.PlcStartAddressTypeTotalNumber, procedure.Channel, order.Amount.IntPart())
+	if err != nil {
+		ctx.FailWithMsg(ecode.NeedConfirmedErr, "PLC璇锋眰澶辫触锛岃妫�鏌LC閰嶇疆锛�")
+		return
+	}
 	err = model.WithTransaction(func(db *gorm.DB) error {
 		err = taskService.UpdateProcedureStatusAndChannel(db, params.ProcedureId, model.ProcedureStatusProcessing, procedure.Channel, processModel.Number)
 		if err != nil {
@@ -273,38 +304,25 @@
 		if err != nil {
 			return err
 		}
-		return service.NewProgressService().Add(db, procedure, order)
+		err = service.NewProgressService().Add(db, procedure, order)
+		if err != nil {
+			return err
+		}
+		record := model.TaskStatusSync{
+			WorkOrderId:  procedure.WorkOrderID,
+			ProcedureID:  procedure.ProcedureID,
+			DeviceId:     procedure.DeviceID,
+			IsProcessing: true,
+			IsFinish:     false,
+		}
+		return service.NewTaskService().SaveTaskStatusSync(db, &record)
 	})
 	if err != nil {
 		logx.Errorf("SendProcessParams update order and procedure status error:%v", err.Error())
 		ctx.FailWithMsg(ecode.DBErr, "鏇存敼宸ュ崟鐘舵�佸け璐�")
 		return
 	}
-	plcConfig, code := service.NewDevicePlcService().GetDevicePlc()
-	if code != ecode.OK || plcConfig.ID == 0 {
-		ctx.FailWithMsg(ecode.NeedConfirmedErr, "璇峰厛閰嶇疆PLC")
-		return
-	}
-	plcConfig.MaxTryTimes = 2
-	err = SendParams(processModel.ParamsMap, plcConfig)
-	if err != nil {
-		logx.Errorf("SendProcessParams: %v", err.Error())
-		err = model.WithTransaction(func(db *gorm.DB) error {
-			err = taskService.UpdateProcedureStatusAndChannel(db, params.ProcedureId, model.ProcedureStatusWaitProcess, procedure.Channel, "")
-			if err != nil {
-				return err
-			}
-			return nil
-		})
-		ctx.FailWithMsg(ecode.NeedConfirmedErr, "PLC璇锋眰澶辫触锛岃妫�鏌LC閰嶇疆锛�")
-		return
-	}
-	plcConfig.CurrentTryTimes = 0
-	err = service.PlcWrite(plcConfig, constvar.PlcStartAddressTypeTotalNumber, procedure.Channel, order.Amount.IntPart())
-	if err != nil {
-		ctx.FailWithMsg(ecode.NeedConfirmedErr, "PLC璇锋眰澶辫触锛岃妫�鏌LC閰嶇疆")
-		return
-	}
+
 	service.TaskFlagSet(procedure.Channel)
 	ctx.Ok()
 }

--
Gitblit v1.8.0