From 46d841d93d20773dd2cf31fa1caa7199c65fe037 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期四, 07 九月 2023 11:25:37 +0800
Subject: [PATCH] 定时同步生产进度到云端
---
constvar/const.go | 5 +-
service/progress.go | 38 ++++++++++++------
crontask/cron_task.go | 21 ++++++++++
3 files changed, 48 insertions(+), 16 deletions(-)
diff --git a/constvar/const.go b/constvar/const.go
index 9f21401..d92f9f9 100644
--- a/constvar/const.go
+++ b/constvar/const.go
@@ -6,8 +6,9 @@
NsqTopicSendPlcAddress = "aps.%v.sendPlcAddress"
NsqTopicProcessParamsRequest = "aps.%v.processParams.request"
NsqTopicProcessParamsResponse = "aps.%v.processParams.response"
- NsqTopicApsProcessParams = "aps.%v.aps.processParams" //鏈変簡鏂扮殑宸ヨ壓妯″瀷
- NsqTopicTaskProcedureStatusUpdate = "aps.%v.task.procedure.status" //宸ュ簭鐘舵�佹洿鏂�
+ NsqTopicApsProcessParams = "aps.%v.aps.processParams" //鏈変簡鏂扮殑宸ヨ壓妯″瀷
+ NsqTopicTaskProcedureStatusUpdate = "aps.%v.task.procedure.status" //宸ュ簭鐘舵�佹洿鏂�
+ NsqTopicSyncTaskProgress = "aps.%v.task.procedure.progress" //宸ュ簭鐢熶骇杩涘害
)
type PlcStartAddressType int
diff --git a/crontask/cron_task.go b/crontask/cron_task.go
index 35fde2b..28301bf 100644
--- a/crontask/cron_task.go
+++ b/crontask/cron_task.go
@@ -3,9 +3,11 @@
import (
"apsClient/conf"
"apsClient/constvar"
+ "apsClient/nsq"
"apsClient/pkg/ecode"
"apsClient/pkg/logx"
"apsClient/service"
+ "fmt"
"github.com/go-co-op/gocron"
"github.com/spf13/cast"
"time"
@@ -39,7 +41,7 @@
return err
}
- s.Every(totalNumberTimeInterval).Seconds().StartImmediately().Do(func() {
+ s.Every(totalNumberTimeInterval).Seconds().Do(func() {
plcConfig, code := service.NewDevicePlcService().GetDevicePlc()
if code != ecode.OK {
return
@@ -51,6 +53,23 @@
logx.Infof("plc read total number:%v, err:%v", totalNumber, err)
})
+ s.Every(60).Seconds().StartImmediately().Do(SyncProductionProgress) //鍚屾鐢熶骇鏁版嵁
s.StartAsync()
return nil
}
+
+func SyncProductionProgress() {
+ progress, err := service.NewProgressService().GetCurrentProgress()
+ if err != nil {
+ return
+ }
+ if progress == nil {
+ return
+ }
+
+ caller := nsq.NewCaller(fmt.Sprintf(constvar.NsqTopicSyncTaskProgress, conf.Conf.NsqConf.NodeId), "")
+ err = caller.Send(progress)
+ if err != nil {
+ logx.Errorf("SyncProductionProgress error:%v", err.Error())
+ }
+}
diff --git a/service/progress.go b/service/progress.go
index bb0d859..5ebd638 100644
--- a/service/progress.go
+++ b/service/progress.go
@@ -30,19 +30,9 @@
}
func (slf ProgressService) UpdateProgress(finishedQuantity int64) (err error) {
- var progressCache *model.ProductionProgress
- progressCache, ok := ProgressCacheGet()
- if !ok {
- progressCache, err = model.NewProductionProgressSearch(nil).SetOrder("id desc").First()
- if err == gorm.ErrRecordNotFound {
- return errors.New("progress cache not found")
- }
- if err != nil {
- return err
- }
- if progressCache.FinishedQuantity < progressCache.TotalQuantity {
- ProgressCacheSet(progressCache)
- }
+ progressCache, err := slf.GetCurrentProgress()
+ if err != nil {
+ return err
}
if progressCache == nil {
return errors.New("progress cache not found")
@@ -54,3 +44,25 @@
}
return nil
}
+
+func (slf ProgressService) GetCurrentProgress() (progressCache *model.ProductionProgress, err error) {
+ var ok bool
+ progressCache, ok = ProgressCacheGet()
+ if !ok {
+ progressCache, err = model.NewProductionProgressSearch(nil).SetOrder("id desc").First()
+ if err == gorm.ErrRecordNotFound {
+ return nil, errors.New("progress not found")
+ }
+ if err != nil {
+ return nil, err
+ }
+
+ if progressCache.FinishedQuantity >= progressCache.TotalQuantity { //濡傛灉瀹屾垚閲忓ぇ浜庣瓑浜庢�婚噺灏辫鏄庢槸涓婁竴涓凡瀹屾垚鐨勪换鍔★紝涓嶆槸褰撳墠杩涜涓殑浠诲姟銆�
+ progressCache = nil
+ }
+ if progressCache != nil {
+ ProgressCacheSet(progressCache)
+ }
+ }
+ return
+}
--
Gitblit v1.8.0