From cf96f6bc1fb484fde16bd5ed6d49534c96958022 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期一, 25 九月 2023 15:43:12 +0800
Subject: [PATCH] fix

---
 crontask/cron_task.go |   42 ++++++++++++++++++++++++++----------------
 1 files changed, 26 insertions(+), 16 deletions(-)

diff --git a/crontask/cron_task.go b/crontask/cron_task.go
index 505156d..9454dbe 100644
--- a/crontask/cron_task.go
+++ b/crontask/cron_task.go
@@ -24,19 +24,24 @@
 		totalNumberTimeInterval = 60
 	}
 	s := gocron.NewScheduler(time.UTC)
-	_, err := s.Every(finishNumberTimeInterval).Seconds().StartImmediately().Do(func() {
+	_, err := s.Every(finishNumberTimeInterval).Seconds().Do(func() {
 		plcConfig, code := service.NewDevicePlcService().GetDevicePlc()
 		if code != ecode.OK {
 			return
 		}
 		for _, addressItem := range plcConfig.Details {
 			if addressItem.FieldName == constvar.PlcStartAddressTypeFinishNumber {
-				finishNumber, err := service.PlcReadDirect(plcConfig, addressItem.StartAddress, addressItem.Position)
-				if err == nil && finishNumber != 0 {
-					service.PlcCacheSet(addressItem.Position, constvar.PlcCacheKeyFinishNumber, finishNumber)
-					_ = service.NewProgressService().UpdateProgress(addressItem.Position, cast.ToInt64(finishNumber))
+				value, err := service.PlcReadDirect(plcConfig, addressItem.StartAddress, addressItem.Length, addressItem.Type)
+				if err != nil {
+					logx.Infof("plc read finish number err: %v", err)
+					continue
 				}
-				logx.Infof("plc read finish number:%v, err:%v", finishNumber, err)
+				finishNumber := cast.ToInt64(value)
+				if finishNumber != 0 {
+					service.PlcCacheSet(addressItem.Channel, constvar.PlcCacheKeyFinishNumber, finishNumber)
+					_ = service.NewProgressService().UpdateProgress(addressItem.Channel, cast.ToInt64(finishNumber))
+				}
+				logx.Infof("plc read finish number: %v", finishNumber)
 			}
 		}
 
@@ -52,18 +57,23 @@
 		}
 		for _, addressItem := range plcConfig.Details {
 			if addressItem.FieldName == constvar.PlcStartAddressTypeTotalNumber {
-				totalNumber, err := service.PlcReadDirect(plcConfig, addressItem.StartAddress, addressItem.Position)
-				if err == nil && totalNumber != 0 {
-					service.PlcCacheSet(addressItem.Position, constvar.PlcCacheKeyTotalNumber, totalNumber)
-					_ = service.NewProgressService().UpdateProgress(addressItem.Position, cast.ToInt64(totalNumber))
+				value, err := service.PlcReadDirect(plcConfig, addressItem.StartAddress, addressItem.Length, addressItem.Type)
+				if err != nil {
+					logx.Infof("plc read total number err: %v", err)
+					continue
 				}
-				logx.Infof("plc read total number:%v, err:%v", totalNumber, err)
+				totalNumber := cast.ToInt64(value)
+				if totalNumber != 0 {
+					service.PlcCacheSet(addressItem.Channel, constvar.PlcCacheKeyTotalNumber, totalNumber)
+					_ = service.NewProgressService().UpdateProgress(addressItem.Channel, cast.ToInt64(totalNumber))
+				}
+				logx.Infof("plc read total number: %v", totalNumber)
 			}
 		}
 
 	})
 
-	s.Every(60).Seconds().StartImmediately().Do(SyncProductionProgress) //鍚屾鐢熶骇鏁版嵁
+	s.Every(180).Seconds().Do(SyncProductionProgress) //鍚屾鐢熶骇鏁版嵁
 	s.StartAsync()
 	return nil
 }
@@ -73,14 +83,14 @@
 	if code != ecode.OK {
 		return
 	}
-	var positions []int
+	var channels []int32
 	for _, item := range plcConfig.Details {
 		if item.FieldName == constvar.PlcStartAddressTypeFinishNumber {
-			positions = append(positions, item.Position)
+			channels = append(channels, item.Channel)
 		}
 	}
-	for _, position := range positions {
-		progress, err := service.NewProgressService().GetCurrentProgress(position)
+	for _, channel := range channels {
+		progress, err := service.NewProgressService().GetCurrentProgress(channel)
 		if err != nil {
 			return
 		}

--
Gitblit v1.8.0