From f2d80dbaa80a1283bf1c0fe9ae1d280832652d7f Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期四, 02 十一月 2023 18:14:22 +0800 Subject: [PATCH] 增加问题诊断定时任务和查询接口,增加按channel查询工序开始和结束时间 --- service/cache_store.go | 55 ++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 48 insertions(+), 7 deletions(-) diff --git a/service/cache_store.go b/service/cache_store.go index 1d9b7d1..2ac4594 100644 --- a/service/cache_store.go +++ b/service/cache_store.go @@ -52,6 +52,8 @@ 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(channel int32, key string) (interface{}, bool) { @@ -76,28 +78,67 @@ return 0 } +func TaskStartTimeSet(channel int32, ts int64) { + defaultCacheStore.Add(fmt.Sprintf(TaskStartTimeCache, channel), ts) +} + +func TaskStartTimeGet(channel int32) int64 { + if v, ok := defaultCacheStore.Get(fmt.Sprintf(TaskStartTimeCache, channel)); ok { + return v.(int64) + } + 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 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) { - defaultCacheStore.Add(fmt.Sprintf(CurrentTaskCacheKey, channel), true) +func TaskFlagSet(channel int32, taskId int) { + defaultCacheStore.Add(fmt.Sprintf(CurrentTaskCacheKey, channel), taskId) } func TaskFlagUnset(channel int32) { - defaultCacheStore.Add(fmt.Sprintf(CurrentTaskCacheKey, channel), false) + defaultCacheStore.Add(fmt.Sprintf(CurrentTaskCacheKey, channel), 0) } func TaskFlagGet(channel int32) bool { if v, ok := defaultCacheStore.Get(fmt.Sprintf(CurrentTaskCacheKey, channel)); ok { - return v.(bool) + return v.(int) > 0 } - _, err := model.NewProceduresSearch(nil).SetDeviceId(conf.Conf.CurrentDeviceID).SetStatus(model.ProcedureStatusProcessing).SetChannels([]int32{channel}).First() + 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), false) + defaultCacheStore.Add(fmt.Sprintf(CurrentTaskCacheKey, channel), 0) return false } else { - defaultCacheStore.Add(fmt.Sprintf(CurrentTaskCacheKey, channel), true) + defaultCacheStore.Add(fmt.Sprintf(CurrentTaskCacheKey, channel), int(procedure.ID)) return true } } -- Gitblit v1.8.0