From 2d6875c93b25d0b7336c7fa11e066d213259fe2e Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期四, 25 四月 2024 10:02:01 +0800
Subject: [PATCH] 更改定时任务时区设置

---
 api/v1/task.go |   58 +++++++++++++++++++++++++++++++++-------------------------
 1 files changed, 33 insertions(+), 25 deletions(-)

diff --git a/api/v1/task.go b/api/v1/task.go
index afe8397..6e3c295 100644
--- a/api/v1/task.go
+++ b/api/v1/task.go
@@ -105,10 +105,12 @@
 		return taskResponse.Tasks[i].Channel < taskResponse.Tasks[i].Channel
 	})
 
-	nowTs := time.Now().Unix()
 	flagMap := make(map[int32]struct{}, 0)
 	for _, task := range taskResponse.Tasks {
-		if _, ok := flagMap[task.Channel]; !ok && !service.TaskFlagGet(conf.Conf.CurrentDeviceID, task.Channel) && task.Procedure.StartTime <= nowTs {
+		if task.Procedure.Status != model.ProcedureStatusWaitProcess {
+			continue
+		}
+		if _, ok := flagMap[task.Channel]; !ok && !service.TaskFlagGet(conf.Conf.CurrentDeviceID, task.Channel) {
 			task.CanStarted = true
 			flagMap[task.Channel] = struct{}{}
 		}
@@ -225,11 +227,13 @@
 			return err
 		}
 		record := model.TaskStatusSync{
-			WorkOrderId:  procedure.WorkOrderID,
-			ProcedureID:  procedure.ProcedureID,
-			DeviceId:     procedure.DeviceID,
-			IsProcessing: false,
-			IsFinish:     true,
+			WorkOrderId:        procedure.WorkOrderID,
+			ProcedureID:        procedure.ProcedureID,
+			DeviceId:           procedure.DeviceID,
+			ProductProcedureID: procedure.ProductProcedureID,
+			IsProcessing:       false,
+			IsFinish:           true,
+			FinishedQuantity:   procedure.FinishedQuantity,
 		}
 		return service.NewTaskService().SaveTaskStatusSync(db, &record)
 	})
@@ -240,8 +244,8 @@
 		return
 	}
 
-	service.TaskFlagUnset(conf.Conf.CurrentDeviceID, procedure.Channel)
-	service.TaskEndTimeSet(conf.Conf.CurrentDeviceID, procedure.Channel, time.Now().Unix()) //璁剧疆宸ュ簭杩愯缁撴潫鏃堕棿
+	service.TaskFlagUnset(procedure.DeviceID, procedure.Channel)
+	service.TaskEndTimeSet(procedure.DeviceID, procedure.Channel, time.Now().Unix()) //璁剧疆宸ュ簭杩愯缁撴潫鏃堕棿
 	ctx.Ok()
 }
 
@@ -306,8 +310,14 @@
 			processModelNumber = processModel.Number
 		}
 
+		fieldType := constvar.PlcStartAddressTypeTotalNumber
+		for _, pc := range plcConfig.Details { //濡傛灉鏈夊啓鍏ュ湴鍧�锛屼紭鍏堝線鍐欏叆鍦板潃鍐欏叆锛屾病鏈夌殑璇濆線璇诲彇鍦板潃鍐欏叆
+			if pc.FieldName == constvar.PlcStartAddressTypeTotalNumberWrite && pc.Channel == procedure.Channel {
+				fieldType = constvar.PlcStartAddressTypeTotalNumberWrite
+			}
+		}
 		plcConfig.CurrentTryTimes = 0
-		err = service.PlcWrite(plcConfig, constvar.PlcStartAddressTypeTotalNumber, procedure.Channel, order.Amount.IntPart())
+		err = service.PlcWrite(plcConfig, fieldType, procedure.Channel, order.Amount.IntPart())
 		if err != nil {
 			ctx.FailWithMsg(ecode.NeedConfirmedErr, "PLC璇锋眰澶辫触锛岃妫�鏌LC閰嶇疆锛�")
 			return
@@ -323,16 +333,13 @@
 		if err != nil {
 			return err
 		}
-		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,
+			WorkOrderId:        procedure.WorkOrderID,
+			ProcedureID:        procedure.ProcedureID,
+			DeviceId:           procedure.DeviceID,
+			ProductProcedureID: procedure.ProductProcedureID,
+			IsProcessing:       true,
+			IsFinish:           false,
 		}
 		return service.NewTaskService().SaveTaskStatusSync(db, &record)
 	})
@@ -342,9 +349,9 @@
 		return
 	}
 
-	service.TaskFlagSet(conf.Conf.CurrentDeviceID, procedure.Channel, int(procedure.ID))
-	service.TaskStartTimeSet(conf.Conf.CurrentDeviceID, procedure.Channel, time.Now().Unix()) //璁剧疆宸ュ簭杩愯寮�濮嬫椂闂�
-	service.TaskEndTimeSet(conf.Conf.CurrentDeviceID, procedure.Channel, 0)                   //璁剧疆宸ュ簭杩愯缁撴潫鏃堕棿
+	service.TaskFlagSet(procedure.DeviceID, procedure.Channel, int(procedure.ID))
+	service.TaskStartTimeSet(procedure.DeviceID, procedure.Channel, time.Now().Unix()) //璁剧疆宸ュ簭杩愯寮�濮嬫椂闂�
+	service.TaskEndTimeSet(procedure.DeviceID, procedure.Channel, 0)                   //璁剧疆宸ュ簭杩愯缁撴潫鏃堕棿
 	ctx.Ok()
 }
 
@@ -422,7 +429,9 @@
 			logx.Errorf("miss param address, k:%v, v:%v", k, v)
 			continue
 		}
-		err := service.PlcWriteDirect(plcConfig, address, v)
+		err := service.PlcWriteDirect(plcConfig, v, &model.DevicePlcAddress{
+			StartAddress: address,
+		})
 		if err != nil {
 			plcConfig.CurrentErr = err
 			failedNumbers++
@@ -500,10 +509,9 @@
 		return
 	}
 
-	nowTs := time.Now().Unix()
 	flagMap := make(map[int32]struct{}, 0)
 	for _, task := range taskResponse.Tasks {
-		if _, ok := flagMap[task.Channel]; !ok && !service.TaskFlagGet(conf.Conf.CurrentDeviceID, task.Channel) && task.Procedure.StartTime <= nowTs {
+		if _, ok := flagMap[task.Channel]; !ok && !service.TaskFlagGet(conf.Conf.CurrentDeviceID, task.Channel) {
 			task.CanStarted = true
 			flagMap[task.Channel] = struct{}{}
 		}

--
Gitblit v1.8.0