device_daily_running_record.go 2.5 KB
package redis

import (
	"encoding/json"
	"fmt"
	"github.com/go-redis/redis"
	"gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/constant"
	"gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/domain"
	"time"
)

// 获取每日设备运行数据
func GetDeviceDailyRunningRecord(t time.Time, deviceCode string) (*domain.DeviceDailyRunningRecord, error) {
	client := GetRedis()
	key := DeviceDailyRunningRecordKey(t, deviceCode)
	return getDeviceDailyRunningRecord(client, key)
}

func getDeviceDailyRunningRecord(client *redis.Client, key string) (*domain.DeviceDailyRunningRecord, error) {
	result := client.Get(key)
	data, err := result.Bytes()
	if err == redis.Nil {
		return nil, domain.ErrorNotFound
	}
	var record = &domain.DeviceDailyRunningRecord{}
	if err = json.Unmarshal(data, record); err != nil {
		return nil, err
	}
	return record, nil
}

// 保存每日设备运行数据
func SaveDeviceDailyRunningRecord(record *domain.DeviceDailyRunningRecord) error {
	client := GetRedis()
	key := DeviceDailyRunningRecordKey(record.ProductDate.Local(), record.DeviceCode)
	recordData, err := json.Marshal(record)
	result := client.Set(key, recordData, time.Hour*24*5)
	_, err = result.Result()
	return err
}

// 保存每日设备运行数据
func RemoveDeviceDailyRunningRecord(t time.Time, deviceCode string) error {
	client := GetRedis()
	key := DeviceDailyRunningRecordKey(t.Local(), deviceCode)
	result := client.Del(key)
	_, err := result.Result()
	return err
}

func DeviceDailyRunningRecordKey(t time.Time, deviceCode string) string {
	str := fmt.Sprintf("%v:device-daily-record:%v-%v:%v:%v", constant.CACHE_PREFIX, constant.MANUFACTURE_DEFAULT_COMPANYID, constant.MANUFACTURE_DEFAULT_ORGID, t.Local().Format("2006-01-02"), deviceCode)
	return str
}

// 获取设备每日所有数据记录
func GetDeviceDailyAllRecord(t time.Time) ([]*domain.DeviceDailyRunningRecord, error) {
	client := GetRedis()
	sliceResult := client.Keys(DeviceDailyAllRecordKey(t))
	keys, err := sliceResult.Result()
	var records = make([]*domain.DeviceDailyRunningRecord, 0)
	if err != nil {
		return nil, err
	}
	for _, v := range keys {
		record, err := getDeviceDailyRunningRecord(client, v)
		if err != nil {
			return nil, err
		}
		records = append(records, record)
	}
	return records, nil
}

func DeviceDailyAllRecordKey(t time.Time) string {
	str := fmt.Sprintf("%v:device-daily-record:%v-%v:%v:*", constant.CACHE_PREFIX, constant.MANUFACTURE_DEFAULT_COMPANYID, constant.MANUFACTURE_DEFAULT_ORGID, t.Format("2006-01-02"))
	return str
}