From 35fdad4e60dd7efab032ba581fd1d12c488370dd Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期五, 03 十一月 2023 10:09:54 +0800
Subject: [PATCH] update
---
service/cache_store.go | 115 +++++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 82 insertions(+), 33 deletions(-)
diff --git a/service/cache_store.go b/service/cache_store.go
index 9b7b74d..2ac4594 100644
--- a/service/cache_store.go
+++ b/service/cache_store.go
@@ -1,10 +1,11 @@
package service
import (
+ "apsClient/conf"
"apsClient/constvar"
"apsClient/model"
- "apsClient/model/response"
"fmt"
+ "github.com/jinzhu/gorm"
"github.com/spf13/cast"
"sync"
"time"
@@ -47,64 +48,112 @@
}
const (
- PlcCacheKey = "plc:%v:%v" //plc:position:key
- CurrentTaskCacheKey = "current_task"
- CurrentProgressCacheKey = "current_progress:%v" //current_progress:position
- PlcCacheKeyUpdateTime = "finish_number_update_time:%v" //finish_number_update_time:position
+ PlcCacheKey = "plc:%v:%v" //plc:channel:key
+ CurrentTaskCacheKey = "current_task:%v" //current_task:channel
+ CurrentProgressCacheKey = "current_progress:%v" //current_progress:channel
+ PlcCacheKeyUpdateTime = "finish_number_update_time:%v" //finish_number_update_time:channel
+ TaskStartTimeCache = "task_start_time:%v" //task_start_time:channel
+ TaskEndTimeCache = "task_end_time:%v" //task_end_time:channel
)
-func PlcCacheGet(position int, key string) (interface{}, bool) {
- return defaultCacheStore.Get(fmt.Sprintf(PlcCacheKey, position, key))
+func PlcCacheGet(channel int32, key string) (interface{}, bool) {
+ return defaultCacheStore.Get(fmt.Sprintf(PlcCacheKey, channel, key))
}
-func PlcCacheSet(position int, key string, value interface{}) {
+func PlcCacheSet(channel int32, key string, value interface{}) {
if key == constvar.PlcCacheKeyFinishNumber {
- oldFinishNumber, exists := PlcCacheGet(position, key)
+ oldFinishNumber, exists := PlcCacheGet(channel, key)
if !exists || cast.ToInt(oldFinishNumber) != cast.ToInt(value) { //finishNumber鏈変簡鍙樺寲锛岃缃洿鏂版椂闂寸紦瀛�
- FinishUpdateTimeSet(position, time.Now().Unix())
+ FinishUpdateTimeSet(channel, time.Now().Unix())
}
}
- defaultCacheStore.Add(fmt.Sprintf(PlcCacheKey, position, key), value)
+ defaultCacheStore.Add(fmt.Sprintf(PlcCacheKey, channel, key), value)
}
-func FinishUpdateTimeGet(position int) interface{} {
- val, ok := defaultCacheStore.Get(fmt.Sprintf(PlcCacheKeyUpdateTime, position))
+func FinishUpdateTimeGet(channel int32) interface{} {
+ val, ok := defaultCacheStore.Get(fmt.Sprintf(PlcCacheKeyUpdateTime, channel))
if ok {
return val
}
return 0
}
-func FinishUpdateTimeSet(position int, value interface{}) {
- defaultCacheStore.Add(fmt.Sprintf(PlcCacheKeyUpdateTime, position), value)
+func TaskStartTimeSet(channel int32, ts int64) {
+ defaultCacheStore.Add(fmt.Sprintf(TaskStartTimeCache, channel), ts)
}
-func TaskCacheSet(value *response.TaskData) {
- defaultCacheStore.Add(CurrentTaskCacheKey, value)
-}
-
-func TaskCacheUnset() {
- defaultCacheStore.Remove(CurrentTaskCacheKey)
-}
-
-func TaskCacheGet() (*response.TaskData, bool) {
- if v, ok := defaultCacheStore.Get(CurrentTaskCacheKey); ok {
- return v.(*response.TaskData), ok
+func TaskStartTimeGet(channel int32) int64 {
+ if v, ok := defaultCacheStore.Get(fmt.Sprintf(TaskStartTimeCache, channel)); ok {
+ return v.(int64)
}
- return nil, false
+ procedure, err := model.NewProceduresSearch(nil).SetDeviceId(conf.Conf.CurrentDeviceID).SetStatus(model.ProcedureStatusProcessing).SetChannels([]int32{channel}).First() //杩涜涓换鍔�
+ if err == gorm.ErrRecordNotFound {
+ procedure, err = model.NewProceduresSearch(nil).SetDeviceId(conf.Conf.CurrentDeviceID).
+ SetStatus(model.ProcedureStatusFinished).SetChannels([]int32{channel}).SetOrder("real_end_time desc").First() //涓婁竴涓粨鏉熺殑浠诲姟
+ if err == gorm.ErrRecordNotFound { //杩涜涓拰缁撴潫鐨勯兘娌℃湁锛屽紑濮嬫椂闂村拰缁撴潫鏃堕棿閮借缃�0
+ TaskStartTimeSet(channel, int64(0))
+ TaskEndTimeSet(channel, int64(0))
+ return 0
+ } else {
+ TaskStartTimeSet(channel, procedure.RealStartTime)
+ TaskStartTimeSet(channel, procedure.RealEndTime)
+ return 0
+ }
+ } else {
+ TaskStartTimeSet(channel, procedure.RealStartTime)
+ TaskStartTimeSet(channel, int64(0))
+ return procedure.RealStartTime
+ }
}
-func ProgressCacheGet(position int) (*model.ProductionProgress, bool) {
- if v, ok := defaultCacheStore.Get(fmt.Sprintf(CurrentProgressCacheKey, position)); ok {
+func TaskEndTimeSet(channel int32, ts int64) {
+ defaultCacheStore.Add(fmt.Sprintf(TaskEndTimeCache, channel), ts)
+}
+
+func TaskEndTimeGet(channel int32) int64 {
+ if v, ok := defaultCacheStore.Get(fmt.Sprintf(TaskEndTimeCache, channel)); ok {
+ return v.(int64)
+ }
+ return 0
+}
+
+func FinishUpdateTimeSet(channel int32, value interface{}) {
+ defaultCacheStore.Add(fmt.Sprintf(PlcCacheKeyUpdateTime, channel), value)
+}
+
+func TaskFlagSet(channel int32, taskId int) {
+ defaultCacheStore.Add(fmt.Sprintf(CurrentTaskCacheKey, channel), taskId)
+}
+
+func TaskFlagUnset(channel int32) {
+ defaultCacheStore.Add(fmt.Sprintf(CurrentTaskCacheKey, channel), 0)
+}
+
+func TaskFlagGet(channel int32) bool {
+ if v, ok := defaultCacheStore.Get(fmt.Sprintf(CurrentTaskCacheKey, channel)); ok {
+ return v.(int) > 0
+ }
+ procedure, err := model.NewProceduresSearch(nil).SetDeviceId(conf.Conf.CurrentDeviceID).SetStatus(model.ProcedureStatusProcessing).SetChannels([]int32{channel}).First()
+ if err == gorm.ErrRecordNotFound {
+ defaultCacheStore.Add(fmt.Sprintf(CurrentTaskCacheKey, channel), 0)
+ return false
+ } else {
+ defaultCacheStore.Add(fmt.Sprintf(CurrentTaskCacheKey, channel), int(procedure.ID))
+ return true
+ }
+}
+
+func ProgressCacheGet(channel int32) (*model.ProductionProgress, bool) {
+ if v, ok := defaultCacheStore.Get(fmt.Sprintf(CurrentProgressCacheKey, channel)); ok {
return v.(*model.ProductionProgress), ok
}
return nil, false
}
-func ProgressCacheSet(position int, value *model.ProductionProgress) {
- defaultCacheStore.Add(fmt.Sprintf(CurrentProgressCacheKey, position), value)
+func ProgressCacheSet(channel int32, value *model.ProductionProgress) {
+ defaultCacheStore.Add(fmt.Sprintf(CurrentProgressCacheKey, channel), value)
}
-func ProgressCacheUnset(position int) {
- defaultCacheStore.Remove(fmt.Sprintf(CurrentProgressCacheKey, position))
+func ProgressCacheUnset(channel int32) {
+ defaultCacheStore.Remove(fmt.Sprintf(CurrentProgressCacheKey, channel))
}
--
Gitblit v1.8.0