新增测点配置

This commit is contained in:
2024-09-03 15:52:38 +08:00
parent bfb284c4cc
commit 3b53e9f9b7
37 changed files with 429 additions and 66 deletions

View File

@@ -1,33 +1,96 @@
package cron
import (
"energy-management-system/utils"
"energy-management-system/global"
"energy-management-system/utils/exception"
"energy-management-system/utils/recovery"
"fmt"
"github.com/robfig/cron/v3"
"os"
"reflect"
"runtime"
"time"
)
var servers server
var funs customFunc
var jobs customJob
type server struct {
Cron []string
Func []func()
type customFunc struct {
Specs []string
Func []func()
}
func (c *server) register(cron string, f func()) {
c.Cron = append(c.Cron, cron)
func (c *customFunc) register(spec string, f func()) {
c.Specs = append(c.Specs, spec)
c.Func = append(c.Func, f)
}
func CronRun() {
c := cron.New()
for k, v := range servers.Cron {
eid, err := c.AddFunc(v, wrap(servers.Func[k]))
fmt.Println("定时任务:", eid, "添加成功")
utils.Exit(err, "添加定时器错误:")
// RegisterCronFunc 参数规则s m h d m w函数
func RegisterCronFunc(spec string, f func()) {
funs.register(spec, f)
}
func RegisterRuntimeCronFunc(spec string, f func()) {
_, err := global.Cron.AddFunc(spec, wrap(f))
if err != nil {
exception.PEM(err, "添加定时func失败")
return
}
}
type customJob struct {
Specs []string
Jobs []cron.Job
}
func (c *customJob) register(spec string, f cron.Job) {
c.Specs = append(c.Specs, spec)
c.Jobs = append(c.Jobs, f)
}
// RegisterCronJob 参数规则s m h d m w函数
func RegisterCronJob(spec string, job cron.Job) {
jobs.register(spec, job)
}
func RegisterRuntimeCronJob(spec string, job cron.Job) {
_, err := global.Cron.AddJob(spec, job)
if err != nil {
exception.PEM(err, "添加定时job失败")
return
}
}
func InitCron() {
// 设置时区
loc, _ := time.LoadLocation("Asia/Shanghai")
location := cron.WithLocation(loc)
// 开启秒
withSeconds := cron.WithSeconds()
// 自定义规则
withParser := cron.WithParser(cron.NewParser(cron.SecondOptional | cron.Minute | cron.Hour | cron.Dom | cron.Month | cron.Dow | cron.Descriptor))
// cron初始化
c := cron.New(location, withSeconds, withParser)
// 初始化预定Job
for idx, spec := range jobs.Specs {
_, err := c.AddJob(spec, jobs.Jobs[idx])
//_, err := c.AddFunc(v, wrap(servers.Func[k]))
if err != nil {
fmt.Printf("[-]注册初始定时job失败: %s \n", err)
os.Exit(1)
}
}
// 初始化预定func
for idx, spec := range funs.Specs {
_, err := c.AddFunc(spec, wrap(funs.Func[idx]))
if err != nil {
fmt.Printf("[-]注册初始定时func失败: %s \n", err)
os.Exit(1)
}
}
global.Cron = c
c.Start()
}
@@ -37,8 +100,3 @@ func wrap(f func()) func() {
f()
}
}
// Register 参数规则s m h d m w函数
func Register(rule string, f func()) {
servers.register(rule, f)
}