新增测点配置
This commit is contained in:
14
api/v1/common.go
Normal file
14
api/v1/common.go
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
package v1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"energy-management-system/response"
|
||||||
|
"energy-management-system/service"
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Common struct{}
|
||||||
|
|
||||||
|
func (r *Common) GetEnergyTypeMap(c *gin.Context) {
|
||||||
|
respData := service.GroupServices.Common.GetEnergyTypeMap()
|
||||||
|
response.SuccessData(respData, c)
|
||||||
|
}
|
||||||
22
api/v1/device_point.go
Normal file
22
api/v1/device_point.go
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
package v1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"energy-management-system/form"
|
||||||
|
"energy-management-system/request"
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
)
|
||||||
|
|
||||||
|
type DevicePoint struct{}
|
||||||
|
|
||||||
|
// 获取测点名称select
|
||||||
|
// PointNameSelect 季度列表
|
||||||
|
func (r *DevicePoint) PointNameSelect(c *gin.Context) {
|
||||||
|
var req form.PointNameSelectReq
|
||||||
|
request.BindParam(c, &req)
|
||||||
|
//respData := service.GroupServices.PeakValley.PeakValleyQuarterPage(&req)
|
||||||
|
//response.SuccessData(respData, c)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// 创建设备测点
|
||||||
|
// 修改设备测点
|
||||||
@@ -1,8 +1,10 @@
|
|||||||
package v1
|
package v1
|
||||||
|
|
||||||
type Controller struct {
|
type Controller struct {
|
||||||
|
Common
|
||||||
TestApi
|
TestApi
|
||||||
PeakValley // 谷峰规则
|
PeakValley // 谷峰规则
|
||||||
|
DevicePoint //
|
||||||
//UserApi // 用户管理
|
//UserApi // 用户管理
|
||||||
//DictApi // 字典管理
|
//DictApi // 字典管理
|
||||||
//ProductApi // 产品管理
|
//ProductApi // 产品管理
|
||||||
|
|||||||
@@ -5,9 +5,7 @@ import (
|
|||||||
"energy-management-system/request"
|
"energy-management-system/request"
|
||||||
"energy-management-system/response"
|
"energy-management-system/response"
|
||||||
"energy-management-system/service"
|
"energy-management-system/service"
|
||||||
"energy-management-system/utils/exception"
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"strconv"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type PeakValley struct{}
|
type PeakValley struct{}
|
||||||
@@ -40,9 +38,10 @@ func (r *PeakValley) UpdatePeakValleyQuarter(c *gin.Context) {
|
|||||||
// PeakValleyQuarterEditDetail 查看季度
|
// PeakValleyQuarterEditDetail 查看季度
|
||||||
func (r *PeakValley) PeakValleyQuarterEditDetail(c *gin.Context) {
|
func (r *PeakValley) PeakValleyQuarterEditDetail(c *gin.Context) {
|
||||||
var req form.PeakValleyQuarterEditDetailReq
|
var req form.PeakValleyQuarterEditDetailReq
|
||||||
id, err := strconv.Atoi(c.Param("id"))
|
request.BindParam(c, &req)
|
||||||
exception.PBM(err != nil, "参数有误")
|
//id, err := strconv.Atoi(c.Param("id"))
|
||||||
req.Id = id
|
//exception.PBM(err != nil, "参数有误")
|
||||||
|
//req.Id = id
|
||||||
respData := service.GroupServices.PeakValley.PeakValleyQuarterEditDetail(&req)
|
respData := service.GroupServices.PeakValley.PeakValleyQuarterEditDetail(&req)
|
||||||
response.SuccessData(respData, c)
|
response.SuccessData(respData, c)
|
||||||
}
|
}
|
||||||
@@ -80,18 +79,21 @@ func (r *PeakValley) UpdatePeakValleyRule(c *gin.Context) {
|
|||||||
// PeakValleyRuleDetail 谷峰规则详情
|
// PeakValleyRuleDetail 谷峰规则详情
|
||||||
func (r *PeakValley) PeakValleyRuleDetail(c *gin.Context) {
|
func (r *PeakValley) PeakValleyRuleDetail(c *gin.Context) {
|
||||||
var req form.PeakValleyRuleDetailReq
|
var req form.PeakValleyRuleDetailReq
|
||||||
id, err := strconv.Atoi(c.Param("id"))
|
request.BindParam(c, &req)
|
||||||
exception.PBM(err != nil, "参数有误")
|
|
||||||
req.RuleId = id
|
//id, err := strconv.Atoi(c.Param("id"))
|
||||||
|
//exception.PBM(err != nil, "参数有误")
|
||||||
|
//req.RuleId = id
|
||||||
respData := service.GroupServices.PeakValley.PeakValleyRuleDetail(&req)
|
respData := service.GroupServices.PeakValley.PeakValleyRuleDetail(&req)
|
||||||
response.SuccessData(respData, c)
|
response.SuccessData(respData, c)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *PeakValley) PeakValleyRuleEditDetail(c *gin.Context) {
|
func (r *PeakValley) PeakValleyRuleEditDetail(c *gin.Context) {
|
||||||
var req form.PeakValleyRuleEditDetailReq
|
var req form.PeakValleyRuleEditDetailReq
|
||||||
id, err := strconv.Atoi(c.Param("id"))
|
request.BindParam(c, &req)
|
||||||
exception.PBM(err != nil, "参数有误")
|
//id, err := strconv.Atoi(c.Param("id"))
|
||||||
req.RuleId = id
|
//exception.PBM(err != nil, "参数有误")
|
||||||
|
//req.RuleId = id
|
||||||
respData := service.GroupServices.PeakValley.PeakValleyRuleEditDetail(&req)
|
respData := service.GroupServices.PeakValley.PeakValleyRuleEditDetail(&req)
|
||||||
response.SuccessData(respData, c)
|
response.SuccessData(respData, c)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
is_debug: true
|
is_debug: true
|
||||||
|
|
||||||
|
|
||||||
service:
|
service:
|
||||||
http:
|
http:
|
||||||
host: 0.0.0.0 # 默认localhost
|
host: 0.0.0.0 # 默认localhost
|
||||||
@@ -16,3 +18,9 @@ db:
|
|||||||
slow_threshold: 200
|
slow_threshold: 200
|
||||||
idle_conns: 10
|
idle_conns: 10
|
||||||
open_conns: 50
|
open_conns: 50
|
||||||
|
|
||||||
|
influxdb:
|
||||||
|
# host: "http://192.168.0.47:18086"
|
||||||
|
# token: "BfG_zW41Wddgbuig0GXt6TuDWpHjUgjTJGDFi9ZI6fOXeYwyWKhakTrwbRT8f4uqFQCWXbRGxs8f5GaChW5tqw=="
|
||||||
|
host: "http://192.168.0.9:8086"
|
||||||
|
token: "4Sz5qRK-VY0aGh7m7sYDkG5tWCwKjbDYAlkgFpvUcZTBn7XahGqczeye7BQCRjcWP8fqsefPeNkwfvUnqa69oA=="
|
||||||
@@ -14,7 +14,8 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
IsDebug bool `mapstructure:"is_debug" json:"is_debug" yaml:"is_debug"`
|
IsDebug bool `mapstructure:"is_debug" json:"is_debug" yaml:"is_debug"`
|
||||||
Db DbConf `mapstructure:"db" json:"db" yaml:"db"`
|
Db DbConf `mapstructure:"db" json:"db" yaml:"db"`
|
||||||
Service ServiceConf `mapstructure:"service" json:"service" yaml:"service"`
|
Service ServiceConf `mapstructure:"service" json:"service" yaml:"service"`
|
||||||
|
InFluxDb InFluxDbConf `mapstructure:"influxdb" json:"influxdb" yaml:"influxdb"`
|
||||||
}
|
}
|
||||||
|
|||||||
6
config/influxdb.go
Normal file
6
config/influxdb.go
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
package config
|
||||||
|
|
||||||
|
type InFluxDbConf struct {
|
||||||
|
Host string `mapstructure:"host" json:"host" yaml:"host"`
|
||||||
|
Token string `mapstructure:"token" json:"token" yaml:"token"`
|
||||||
|
}
|
||||||
@@ -1,33 +1,96 @@
|
|||||||
package cron
|
package cron
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"energy-management-system/utils"
|
"energy-management-system/global"
|
||||||
|
"energy-management-system/utils/exception"
|
||||||
"energy-management-system/utils/recovery"
|
"energy-management-system/utils/recovery"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/robfig/cron/v3"
|
"github.com/robfig/cron/v3"
|
||||||
|
"os"
|
||||||
"reflect"
|
"reflect"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
var servers server
|
var funs customFunc
|
||||||
|
var jobs customJob
|
||||||
|
|
||||||
type server struct {
|
type customFunc struct {
|
||||||
Cron []string
|
Specs []string
|
||||||
Func []func()
|
Func []func()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *server) register(cron string, f func()) {
|
func (c *customFunc) register(spec string, f func()) {
|
||||||
c.Cron = append(c.Cron, cron)
|
c.Specs = append(c.Specs, spec)
|
||||||
c.Func = append(c.Func, f)
|
c.Func = append(c.Func, f)
|
||||||
}
|
}
|
||||||
|
|
||||||
func CronRun() {
|
// RegisterCronFunc 参数:规则(s m h d m w),函数
|
||||||
c := cron.New()
|
func RegisterCronFunc(spec string, f func()) {
|
||||||
for k, v := range servers.Cron {
|
funs.register(spec, f)
|
||||||
eid, err := c.AddFunc(v, wrap(servers.Func[k]))
|
}
|
||||||
fmt.Println("定时任务:", eid, "添加成功")
|
|
||||||
utils.Exit(err, "添加定时器错误:")
|
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()
|
c.Start()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -37,8 +100,3 @@ func wrap(f func()) func() {
|
|||||||
f()
|
f()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Register 参数:规则(s m h d m w),函数
|
|
||||||
func Register(rule string, f func()) {
|
|
||||||
servers.register(rule, f)
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package gorm
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"energy-management-system/global"
|
"energy-management-system/global"
|
||||||
|
"energy-management-system/model"
|
||||||
"energy-management-system/model/init-db-data"
|
"energy-management-system/model/init-db-data"
|
||||||
peak_valley "energy-management-system/model/peak-valley"
|
peak_valley "energy-management-system/model/peak-valley"
|
||||||
"fmt"
|
"fmt"
|
||||||
@@ -66,6 +67,9 @@ func AutoMigrate(db *gorm.DB) {
|
|||||||
|
|
||||||
new(peak_valley.PeakValleyQuarter),
|
new(peak_valley.PeakValleyQuarter),
|
||||||
new(peak_valley.PeakValleyRule),
|
new(peak_valley.PeakValleyRule),
|
||||||
|
|
||||||
|
new(model.DevicePoint),
|
||||||
|
new(model.PointName),
|
||||||
//new(model.Role),
|
//new(model.Role),
|
||||||
//new(model.UserRole),
|
//new(model.UserRole),
|
||||||
//new(model.Api),
|
//new(model.Api),
|
||||||
|
|||||||
22
core/influxdb/influxdb.go
Normal file
22
core/influxdb/influxdb.go
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
package influxdb
|
||||||
|
|
||||||
|
import (
|
||||||
|
"energy-management-system/global"
|
||||||
|
influxdb2 "github.com/influxdata/influxdb-client-go/v2"
|
||||||
|
)
|
||||||
|
|
||||||
|
func InitInFluxDb() {
|
||||||
|
|
||||||
|
// Create a new client using an InfluxDB server base URL and an authentication token
|
||||||
|
client := influxdb2.NewClient(global.AppConf.InFluxDb.Host, global.AppConf.InFluxDb.Token)
|
||||||
|
// Use blocking write client for writes to desired bucket
|
||||||
|
|
||||||
|
//获取非阻塞式写入对象
|
||||||
|
//writeAPI = client.WriteAPI("my-org", "my-bucket")
|
||||||
|
//writeAPI := client.WriteAPIBlocking("my-org", "my-bucket")
|
||||||
|
|
||||||
|
//获取阻塞式写入对象
|
||||||
|
//writeBlockingAPI := client.WriteAPIBlocking("iuu", "iuu-bucket")
|
||||||
|
|
||||||
|
global.InFluxDb = client
|
||||||
|
}
|
||||||
@@ -6,6 +6,7 @@ import (
|
|||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/fsnotify/fsnotify"
|
"github.com/fsnotify/fsnotify"
|
||||||
|
"github.com/gookit/goutil/dump"
|
||||||
"github.com/spf13/viper"
|
"github.com/spf13/viper"
|
||||||
"os"
|
"os"
|
||||||
)
|
)
|
||||||
@@ -54,6 +55,6 @@ func InitViper(path ...string) {
|
|||||||
}
|
}
|
||||||
fmt.Println("[+]加载配置文件完成")
|
fmt.Println("[+]加载配置文件完成")
|
||||||
|
|
||||||
//dump.P(global.AppConf)
|
dump.P(global.AppConf)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
5
form/device_point.go
Normal file
5
form/device_point.go
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
package form
|
||||||
|
|
||||||
|
type PointNameSelectReq struct {
|
||||||
|
Keyword string `form:"keyword" json:"keyword"`
|
||||||
|
}
|
||||||
@@ -11,7 +11,7 @@ type CreatePeakValleyQuarterReq struct {
|
|||||||
QuarterName string `json:"quarter_name"`
|
QuarterName string `json:"quarter_name"`
|
||||||
StartTime string `json:"start_time"`
|
StartTime string `json:"start_time"`
|
||||||
EndTime string `json:"end_time"`
|
EndTime string `json:"end_time"`
|
||||||
RuleId uint `json:"rule_id"`
|
RuleId int `json:"rule_id"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type UpdatePeakValleyQuarterReq struct {
|
type UpdatePeakValleyQuarterReq struct {
|
||||||
@@ -19,7 +19,7 @@ type UpdatePeakValleyQuarterReq struct {
|
|||||||
QuarterName string `json:"quarter_name"`
|
QuarterName string `json:"quarter_name"`
|
||||||
StartTime string `json:"start_time"`
|
StartTime string `json:"start_time"`
|
||||||
EndTime string `json:"end_time"`
|
EndTime string `json:"end_time"`
|
||||||
RuleId uint `json:"rule_id"`
|
RuleId int `json:"rule_id"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type PeakValleyRuleListReq struct {
|
type PeakValleyRuleListReq struct {
|
||||||
@@ -48,7 +48,7 @@ type UpdatePeakValleyRuleReq struct {
|
|||||||
|
|
||||||
type TimeBlockPriceReq struct {
|
type TimeBlockPriceReq struct {
|
||||||
CustomName string `json:"custom_name"`
|
CustomName string `json:"custom_name"`
|
||||||
PeakValleyType uint `json:"peak_valley_type"`
|
PeakValleyType int `json:"peak_valley_type"`
|
||||||
StartTime string `json:"start_time"`
|
StartTime string `json:"start_time"`
|
||||||
EndTime string `json:"end_time"`
|
EndTime string `json:"end_time"`
|
||||||
Price int `json:"price"`
|
Price int `json:"price"`
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ package global
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"energy-management-system/config"
|
"energy-management-system/config"
|
||||||
|
"github.com/influxdata/influxdb-client-go/v2"
|
||||||
|
"github.com/robfig/cron/v3"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -11,9 +13,9 @@ var (
|
|||||||
// Db 数据库
|
// Db 数据库
|
||||||
Db *gorm.DB
|
Db *gorm.DB
|
||||||
|
|
||||||
|
InFluxDb influxdb2.Client
|
||||||
|
|
||||||
Log *Logger
|
Log *Logger
|
||||||
|
|
||||||
// Trans 定义一个全局翻译器T
|
Cron *cron.Cron
|
||||||
//Trans ut.Translator
|
|
||||||
//Validate *validator.Validate
|
|
||||||
)
|
)
|
||||||
|
|||||||
8
go.mod
8
go.mod
@@ -9,7 +9,10 @@ require (
|
|||||||
github.com/go-playground/universal-translator v0.18.1
|
github.com/go-playground/universal-translator v0.18.1
|
||||||
github.com/go-playground/validator/v10 v10.20.0
|
github.com/go-playground/validator/v10 v10.20.0
|
||||||
github.com/gookit/color v1.5.4
|
github.com/gookit/color v1.5.4
|
||||||
|
github.com/gookit/goutil v0.6.16
|
||||||
|
github.com/influxdata/influxdb-client-go/v2 v2.14.0
|
||||||
github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible
|
github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible
|
||||||
|
github.com/robfig/cron/v3 v3.0.0
|
||||||
github.com/sirupsen/logrus v1.9.3
|
github.com/sirupsen/logrus v1.9.3
|
||||||
github.com/spf13/viper v1.19.0
|
github.com/spf13/viper v1.19.0
|
||||||
gorm.io/driver/postgres v1.5.9
|
gorm.io/driver/postgres v1.5.9
|
||||||
@@ -17,6 +20,7 @@ require (
|
|||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect
|
||||||
github.com/bytedance/sonic v1.11.6 // indirect
|
github.com/bytedance/sonic v1.11.6 // indirect
|
||||||
github.com/bytedance/sonic/loader v0.1.1 // indirect
|
github.com/bytedance/sonic/loader v0.1.1 // indirect
|
||||||
github.com/cloudwego/base64x v0.1.4 // indirect
|
github.com/cloudwego/base64x v0.1.4 // indirect
|
||||||
@@ -24,7 +28,9 @@ require (
|
|||||||
github.com/gabriel-vasile/mimetype v1.4.3 // indirect
|
github.com/gabriel-vasile/mimetype v1.4.3 // indirect
|
||||||
github.com/gin-contrib/sse v0.1.0 // indirect
|
github.com/gin-contrib/sse v0.1.0 // indirect
|
||||||
github.com/goccy/go-json v0.10.2 // indirect
|
github.com/goccy/go-json v0.10.2 // indirect
|
||||||
|
github.com/google/uuid v1.4.0 // indirect
|
||||||
github.com/hashicorp/hcl v1.0.0 // indirect
|
github.com/hashicorp/hcl v1.0.0 // indirect
|
||||||
|
github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839 // indirect
|
||||||
github.com/jackc/pgpassfile v1.0.0 // indirect
|
github.com/jackc/pgpassfile v1.0.0 // indirect
|
||||||
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect
|
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect
|
||||||
github.com/jackc/pgx/v5 v5.5.5 // indirect
|
github.com/jackc/pgx/v5 v5.5.5 // indirect
|
||||||
@@ -41,9 +47,9 @@ require (
|
|||||||
github.com/mitchellh/mapstructure v1.5.0 // indirect
|
github.com/mitchellh/mapstructure v1.5.0 // indirect
|
||||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||||
github.com/modern-go/reflect2 v1.0.2 // indirect
|
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||||
|
github.com/oapi-codegen/runtime v1.0.0 // indirect
|
||||||
github.com/pelletier/go-toml/v2 v2.2.2 // indirect
|
github.com/pelletier/go-toml/v2 v2.2.2 // indirect
|
||||||
github.com/pkg/errors v0.9.1 // indirect
|
github.com/pkg/errors v0.9.1 // indirect
|
||||||
github.com/robfig/cron/v3 v3.0.0 // indirect
|
|
||||||
github.com/sagikazarmark/locafero v0.4.0 // indirect
|
github.com/sagikazarmark/locafero v0.4.0 // indirect
|
||||||
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
|
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
|
||||||
github.com/sourcegraph/conc v0.3.0 // indirect
|
github.com/sourcegraph/conc v0.3.0 // indirect
|
||||||
|
|||||||
16
go.sum
16
go.sum
@@ -1,3 +1,7 @@
|
|||||||
|
github.com/RaveNoX/go-jsoncommentstrip v1.0.0/go.mod h1:78ihd09MekBnJnxpICcwzCMzGrKSKYe4AqU6PDYYpjk=
|
||||||
|
github.com/apapsch/go-jsonmerge/v2 v2.0.0 h1:axGnT1gRIfimI7gJifB699GoE/oq+F2MU7Dml6nw9rQ=
|
||||||
|
github.com/apapsch/go-jsonmerge/v2 v2.0.0/go.mod h1:lvDnEdqiQrp0O42VQGgmlKpxL1AP2+08jFMw88y4klk=
|
||||||
|
github.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvFv1sNto9p6w=
|
||||||
github.com/bytedance/sonic v1.11.6 h1:oUp34TzMlL+OY1OUWxHqsdkgC/Zfc85zGqw9siXjrc0=
|
github.com/bytedance/sonic v1.11.6 h1:oUp34TzMlL+OY1OUWxHqsdkgC/Zfc85zGqw9siXjrc0=
|
||||||
github.com/bytedance/sonic v1.11.6/go.mod h1:LysEHSvpvDySVdC2f87zGWf6CIKJcAvqab1ZaiQtds4=
|
github.com/bytedance/sonic v1.11.6/go.mod h1:LysEHSvpvDySVdC2f87zGWf6CIKJcAvqab1ZaiQtds4=
|
||||||
github.com/bytedance/sonic/loader v0.1.1 h1:c+e5Pt1k/cy5wMveRDyk2X4B9hF4g7an8N3zCYjJFNM=
|
github.com/bytedance/sonic/loader v0.1.1 h1:c+e5Pt1k/cy5wMveRDyk2X4B9hF4g7an8N3zCYjJFNM=
|
||||||
@@ -33,10 +37,18 @@ github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MG
|
|||||||
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
|
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
|
||||||
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||||
|
github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4=
|
||||||
|
github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/gookit/color v1.5.4 h1:FZmqs7XOyGgCAxmWyPslpiok1k05wmY3SJTytgvYFs0=
|
github.com/gookit/color v1.5.4 h1:FZmqs7XOyGgCAxmWyPslpiok1k05wmY3SJTytgvYFs0=
|
||||||
github.com/gookit/color v1.5.4/go.mod h1:pZJOeOS8DM43rXbp4AZo1n9zCU2qjpcRko0b6/QJi9w=
|
github.com/gookit/color v1.5.4/go.mod h1:pZJOeOS8DM43rXbp4AZo1n9zCU2qjpcRko0b6/QJi9w=
|
||||||
|
github.com/gookit/goutil v0.6.16 h1:9fRMCF4X9abdRD5+2HhBS/GwafjBlTUBjRtA5dgkvuw=
|
||||||
|
github.com/gookit/goutil v0.6.16/go.mod h1:op2q8AoPDFSiY2+qkHxcBWQMYxOLQ1GbLXqe7vrwscI=
|
||||||
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
|
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
|
||||||
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
|
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
|
||||||
|
github.com/influxdata/influxdb-client-go/v2 v2.14.0 h1:AjbBfJuq+QoaXNcrova8smSjwJdUHnwvfjMF71M1iI4=
|
||||||
|
github.com/influxdata/influxdb-client-go/v2 v2.14.0/go.mod h1:Ahpm3QXKMJslpXl3IftVLVezreAUtBOTZssDrjZEFHI=
|
||||||
|
github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839 h1:W9WBk7wlPfJLvMCdtV4zPulc4uCPrlywQOmbFOhgQNU=
|
||||||
|
github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo=
|
||||||
github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
|
github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
|
||||||
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
|
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
|
||||||
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk=
|
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk=
|
||||||
@@ -53,6 +65,7 @@ github.com/jonboulle/clockwork v0.4.0 h1:p4Cf1aMWXnXAUh8lVfewRBx1zaTSYKrKMF2g3ST
|
|||||||
github.com/jonboulle/clockwork v0.4.0/go.mod h1:xgRqUGwRcjKCO1vbZUEtSLrqKoPSsUpK7fnezOII0kc=
|
github.com/jonboulle/clockwork v0.4.0/go.mod h1:xgRqUGwRcjKCO1vbZUEtSLrqKoPSsUpK7fnezOII0kc=
|
||||||
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
|
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
|
||||||
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
|
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
|
||||||
|
github.com/juju/gnuflag v0.0.0-20171113085948-2ce1bb71843d/go.mod h1:2PavIy+JPciBPrBUjwbNvtwB6RQlve+hkpll6QSNmOE=
|
||||||
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
||||||
github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM=
|
github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM=
|
||||||
github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
|
github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
|
||||||
@@ -80,6 +93,8 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w
|
|||||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||||
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
|
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
|
||||||
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
|
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
|
||||||
|
github.com/oapi-codegen/runtime v1.0.0 h1:P4rqFX5fMFWqRzY9M/3YF9+aPSPPB06IzP2P7oOxrWo=
|
||||||
|
github.com/oapi-codegen/runtime v1.0.0/go.mod h1:LmCUMQuPB4M/nLXilQXhHw+BLZdDb18B34OO356yJ/A=
|
||||||
github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
|
github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
|
||||||
github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=
|
github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=
|
||||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||||
@@ -107,6 +122,7 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
|
|||||||
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||||
github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI=
|
github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI=
|
||||||
github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg=
|
github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg=
|
||||||
|
github.com/spkg/bom v0.0.0-20160624110644-59b7046e48ad/go.mod h1:qLr4V1qq6nMqFKkMo8ZTx3f+BZEkzsRUY10Xsm2mwU0=
|
||||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
||||||
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
||||||
|
|||||||
5
jobs/job.go
Normal file
5
jobs/job.go
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
package jobs
|
||||||
|
|
||||||
|
type Job interface {
|
||||||
|
GetJobName() string
|
||||||
|
}
|
||||||
24
jobs/test.go
Normal file
24
jobs/test.go
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
package jobs
|
||||||
|
|
||||||
|
import (
|
||||||
|
"energy-management-system/utils/exception"
|
||||||
|
"energy-management-system/utils/recovery"
|
||||||
|
"fmt"
|
||||||
|
"reflect"
|
||||||
|
"runtime"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Test struct {
|
||||||
|
Name string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *Test) Run() {
|
||||||
|
defer recovery.CronRecovery(runtime.FuncForPC(reflect.ValueOf(t.Run).Pointer()).Name())
|
||||||
|
exception.PM("定时任务错误")
|
||||||
|
//t.GetJobName()
|
||||||
|
fmt.Println(t.GetJobName() + "Test Run")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *Test) GetJobName() string {
|
||||||
|
return t.Name
|
||||||
|
}
|
||||||
21
main.go
21
main.go
@@ -4,6 +4,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"energy-management-system/core/cron"
|
"energy-management-system/core/cron"
|
||||||
"energy-management-system/core/gorm"
|
"energy-management-system/core/gorm"
|
||||||
|
"energy-management-system/core/influxdb"
|
||||||
"energy-management-system/core/logger"
|
"energy-management-system/core/logger"
|
||||||
"energy-management-system/core/viper"
|
"energy-management-system/core/viper"
|
||||||
"energy-management-system/global"
|
"energy-management-system/global"
|
||||||
@@ -22,22 +23,28 @@ func init() {
|
|||||||
viper.InitViper()
|
viper.InitViper()
|
||||||
// 日志
|
// 日志
|
||||||
logger.InitLogger()
|
logger.InitLogger()
|
||||||
|
// InFluxDb
|
||||||
|
influxdb.InitInFluxDb()
|
||||||
// 数据库
|
// 数据库
|
||||||
gorm.InitGorm()
|
gorm.InitGorm()
|
||||||
// gin验证器
|
|
||||||
validator.InitTrans()
|
|
||||||
// 可选初始化表结构
|
// 可选初始化表结构
|
||||||
gorm.AutoMigrate(global.Db)
|
gorm.AutoMigrate(global.Db)
|
||||||
// 可选初始化表数据
|
// 可选初始化表数据
|
||||||
gorm.AutoInitDbData()
|
//gorm.AutoInitDbData()
|
||||||
|
// gin验证器
|
||||||
|
validator.InitTrans()
|
||||||
|
|
||||||
}
|
}
|
||||||
func main() {
|
func main() {
|
||||||
|
|
||||||
cron.Register("0/1 * * * * ", func() {
|
cron.InitCron()
|
||||||
fmt.Println(time.Now())
|
|
||||||
})
|
//cron.RegisterCronJob("0/2 * * * * ?", &jobs.Test{Name: "测试任务"})
|
||||||
cron.CronRun()
|
//cron.RegisterCronFunc("0/2 * * * * ?", func() {
|
||||||
|
// exception.PM("定时任务错误")
|
||||||
|
// //panic("xxxxx")
|
||||||
|
// fmt.Println(111)
|
||||||
|
//})
|
||||||
|
|
||||||
r := router.InitRouter()
|
r := router.InitRouter()
|
||||||
host := global.AppConf.Service.Http.Host
|
host := global.AppConf.Service.Http.Host
|
||||||
|
|||||||
23
model/device_point.go
Normal file
23
model/device_point.go
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"energy-management-system/global"
|
||||||
|
"gorm.io/gorm"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// DevicePoint 设备测点配置
|
||||||
|
type DevicePoint struct {
|
||||||
|
Id int `gorm:"column:id;primaryKey" json:"id"`
|
||||||
|
DriverId int `gorm:"column:driver_id;comment:设备ID" json:"driver_id"`
|
||||||
|
PointId int `gorm:"column:point_id;comment:测点ID" json:"point_id"`
|
||||||
|
EnergyType int `gorm:"column:energy_type;comment:能源类型" json:"energy_type"`
|
||||||
|
PointNameId int `gorm:"column:point_name_id;comment:测点名称ID" json:"point_name_id"`
|
||||||
|
Created time.Time `gorm:"column:created;autoCreateTime;comment:创建时间" json:"created"`
|
||||||
|
Updated time.Time `gorm:"column:updated;autoUpdateTime;comment:修改时间" json:"updated"`
|
||||||
|
DeletedAt gorm.DeletedAt `gorm:"index;comment:删除时间" json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *DevicePoint) TableName() string {
|
||||||
|
return global.AppConf.Db.TablePrefix + "device_point_configs"
|
||||||
|
}
|
||||||
@@ -21,7 +21,10 @@ func initDB(InitDBFunctions ...InitDBFunc) (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func InitDbData() {
|
func InitDbData() {
|
||||||
err := initDB(initPeakValleyTimeBlockData)
|
err := initDB(
|
||||||
|
initPeakValleyTimeBlockData,
|
||||||
|
initPointNameData,
|
||||||
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("[-]初始化基础数据失败:", err)
|
fmt.Println("[-]初始化基础数据失败:", err)
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
|
|||||||
56
model/init-db-data/point_name.go
Normal file
56
model/init-db-data/point_name.go
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
package init_db_data
|
||||||
|
|
||||||
|
import (
|
||||||
|
"energy-management-system/global"
|
||||||
|
"energy-management-system/model"
|
||||||
|
"github.com/gookit/color"
|
||||||
|
"gorm.io/gorm"
|
||||||
|
)
|
||||||
|
|
||||||
|
type InitPointNameData struct{}
|
||||||
|
|
||||||
|
var initPointNameData = new(InitPointNameData)
|
||||||
|
|
||||||
|
// type api struct{}
|
||||||
|
//func buildData() (dataList []*peak_valley_model.PeakValleyTimeBlock) {
|
||||||
|
// // 一天有24小时,即1440分钟
|
||||||
|
// totalMinutes := 24 * 60
|
||||||
|
// // 时间块的持续时间:10分钟
|
||||||
|
// blockDuration := 10
|
||||||
|
// // 遍历一天中的所有时间块
|
||||||
|
// for i := 0; i < totalMinutes; i += blockDuration {
|
||||||
|
// startTime := i
|
||||||
|
// endTime := i + blockDuration
|
||||||
|
// dataList = append(dataList, &peak_valley_model.PeakValleyTimeBlock{
|
||||||
|
// StartTime: uint(startTime),
|
||||||
|
// EndTime: uint(endTime),
|
||||||
|
// })
|
||||||
|
// }
|
||||||
|
// return dataList
|
||||||
|
//}
|
||||||
|
|
||||||
|
var pointNames = []model.PointName{
|
||||||
|
{Name: "测点-用电量"},
|
||||||
|
{Name: "测点-用水量"},
|
||||||
|
}
|
||||||
|
|
||||||
|
// Init 初始化用户数据
|
||||||
|
func (i *InitPointNameData) Init() error {
|
||||||
|
return global.Db.Transaction(func(tx *gorm.DB) error {
|
||||||
|
m := &model.PointName{}
|
||||||
|
var count int64
|
||||||
|
err := tx.Model(&model.PointName{}).Count(&count).Error
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if count > 0 {
|
||||||
|
color.Danger.Println("\n[PGSQL] --> " + m.TableName() + " 表的初始数据已存在!")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
if err := tx.Create(&pointNames).Error; err != nil { // 遇到错误时回滚事务
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
color.Info.Println("\n[PGSQL] --> " + m.TableName() + " 表初始数据成功!")
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -7,11 +7,11 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type PeakValleyQuarter struct {
|
type PeakValleyQuarter struct {
|
||||||
Id uint `gorm:"column:id;primaryKey" json:"id"`
|
Id int `gorm:"column:id;primaryKey" json:"id"`
|
||||||
QuarterName string `gorm:"column:quarter_name;comment:季度名称" json:"quarter_name"`
|
QuarterName string `gorm:"column:quarter_name;comment:季度名称" json:"quarter_name"`
|
||||||
StartTime time.Time `gorm:"column:start_time;type:date;comment:开始时间" json:"start_time"`
|
StartTime time.Time `gorm:"column:start_time;type:date;comment:开始时间" json:"start_time"`
|
||||||
EndTime time.Time `gorm:"column:end_time;type:date;comment:结束时间" json:"end_time"`
|
EndTime time.Time `gorm:"column:end_time;type:date;comment:结束时间" json:"end_time"`
|
||||||
Rid uint `gorm:"column:rid;comment:季度使用规则" json:"rid"`
|
Rid int `gorm:"column:rid;comment:季度使用规则" json:"rid"`
|
||||||
Created time.Time `gorm:"column:created;autoCreateTime;comment:创建时间" json:"created"`
|
Created time.Time `gorm:"column:created;autoCreateTime;comment:创建时间" json:"created"`
|
||||||
Updated time.Time `gorm:"column:updated;autoUpdateTime;comment:修改时间" json:"updated"`
|
Updated time.Time `gorm:"column:updated;autoUpdateTime;comment:修改时间" json:"updated"`
|
||||||
DeletedAt gorm.DeletedAt `gorm:"index;comment:删除时间" json:"-"`
|
DeletedAt gorm.DeletedAt `gorm:"index;comment:删除时间" json:"-"`
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import (
|
|||||||
//(将时间段 转化为十分钟区块 查找到对应十分钟区块 创建该规则的电价)
|
//(将时间段 转化为十分钟区块 查找到对应十分钟区块 创建该规则的电价)
|
||||||
|
|
||||||
type PeakValleyRule struct {
|
type PeakValleyRule struct {
|
||||||
RuleId uint `gorm:"column:rule_id;primaryKey" json:"rule_id"`
|
RuleId int `gorm:"column:rule_id;primaryKey" json:"rule_id"`
|
||||||
RuleName string `gorm:"column:rule_name;comment:规则名称" json:"rule_name"`
|
RuleName string `gorm:"column:rule_name;comment:规则名称" json:"rule_name"`
|
||||||
Description string `gorm:"column:description;comment:描述" json:"description"`
|
Description string `gorm:"column:description;comment:描述" json:"description"`
|
||||||
Created time.Time `gorm:"column:created;autoCreateTime;comment:创建时间" json:"created"`
|
Created time.Time `gorm:"column:created;autoCreateTime;comment:创建时间" json:"created"`
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ const MinutesInADay = 24 * 60
|
|||||||
|
|
||||||
// PeakValleyTimeBlock 峰谷时间区块
|
// PeakValleyTimeBlock 峰谷时间区块
|
||||||
type PeakValleyTimeBlock struct {
|
type PeakValleyTimeBlock struct {
|
||||||
BlockIndex uint `gorm:"column:block_index;primaryKey;comment:区块编号" json:"block_index"`
|
BlockIndex int `gorm:"column:block_index;primaryKey;comment:区块编号" json:"block_index"`
|
||||||
StartTime uint `gorm:"column:start_time;comment:开始时间" json:"start_time"`
|
StartTime uint `gorm:"column:start_time;comment:开始时间" json:"start_time"`
|
||||||
EndTime uint `gorm:"column:end_time;comment:结束时间" json:"end_time"`
|
EndTime uint `gorm:"column:end_time;comment:结束时间" json:"end_time"`
|
||||||
Created time.Time `gorm:"column:created;autoCreateTime;comment:创建时间" json:"created"`
|
Created time.Time `gorm:"column:created;autoCreateTime;comment:创建时间" json:"created"`
|
||||||
|
|||||||
@@ -35,12 +35,12 @@ type PeakValleyType struct {
|
|||||||
|
|
||||||
// PeakValleyTimeBlockPrice 峰谷时间区块价格
|
// PeakValleyTimeBlockPrice 峰谷时间区块价格
|
||||||
type PeakValleyTimeBlockPrice struct {
|
type PeakValleyTimeBlockPrice struct {
|
||||||
Id uint `gorm:"column:id;primaryKey" json:"id"`
|
Id int `gorm:"column:id;primaryKey" json:"id"`
|
||||||
BlockId uint `gorm:"column:block_id;comment:时间区块编号" json:"block_id"`
|
BlockId int `gorm:"column:block_id;comment:时间区块编号" json:"block_id"`
|
||||||
Price int `gorm:"column:price;comment:价格" json:"price"`
|
Price int `gorm:"column:price;comment:价格" json:"price"`
|
||||||
CustomName string `gorm:"column:custom_name;comment:自定义名称" json:"custom_name"`
|
CustomName string `gorm:"column:custom_name;comment:自定义名称" json:"custom_name"`
|
||||||
PeakValleyRuleId uint `gorm:"column:peak_valley_rule_id;comment:峰谷规则" json:"peak_valley_rule_id"`
|
PeakValleyRuleId int `gorm:"column:peak_valley_rule_id;comment:峰谷规则" json:"peak_valley_rule_id"`
|
||||||
PeakValleyType uint `gorm:"column:peak_valley_type;default:1;size:10;comment:峰谷类型[1:尖,2:峰,3:平,4:谷,5:深谷]" json:"peak_valley_type"` // 峰谷类型
|
PeakValleyType int `gorm:"column:peak_valley_type;default:1;size:10;comment:峰谷类型[1:尖,2:峰,3:平,4:谷,5:深谷]" json:"peak_valley_type"` // 峰谷类型
|
||||||
Created time.Time `gorm:"column:created;autoCreateTime;comment:创建时间" json:"created"`
|
Created time.Time `gorm:"column:created;autoCreateTime;comment:创建时间" json:"created"`
|
||||||
Updated time.Time `gorm:"column:updated;autoUpdateTime;comment:修改时间" json:"updated"`
|
Updated time.Time `gorm:"column:updated;autoUpdateTime;comment:修改时间" json:"updated"`
|
||||||
DeletedAt gorm.DeletedAt `gorm:"index;comment:删除时间" json:"-"`
|
DeletedAt gorm.DeletedAt `gorm:"index;comment:删除时间" json:"-"`
|
||||||
|
|||||||
20
model/point_name.go
Normal file
20
model/point_name.go
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"energy-management-system/global"
|
||||||
|
"gorm.io/gorm"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// PointName 测点名称
|
||||||
|
type PointName struct {
|
||||||
|
Id int `gorm:"column:id;primaryKey" json:"id"`
|
||||||
|
Name string `gorm:"column:name;comment:测点名称" json:"name"`
|
||||||
|
Created time.Time `gorm:"column:created;autoCreateTime;comment:创建时间" json:"created"`
|
||||||
|
Updated time.Time `gorm:"column:updated;autoUpdateTime;comment:修改时间" json:"updated"`
|
||||||
|
DeletedAt gorm.DeletedAt `gorm:"index;comment:删除时间" json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *PointName) TableName() string {
|
||||||
|
return global.AppConf.Db.TablePrefix + "point_names"
|
||||||
|
}
|
||||||
@@ -6,7 +6,7 @@ import (
|
|||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (r *PeakValley) GetTimeBlockIdsByTimeBlock(tx *gorm.DB, startTime, endTime uint) (ids []uint, err error) {
|
func (r *PeakValley) GetTimeBlockIdsByTimeBlock(tx *gorm.DB, startTime, endTime uint) (ids []int, err error) {
|
||||||
err = tx.Model(&peak_valley_model.PeakValleyTimeBlock{}).
|
err = tx.Model(&peak_valley_model.PeakValleyTimeBlock{}).
|
||||||
Where("start_time < ? AND end_time > ?", endTime, startTime).
|
Where("start_time < ? AND end_time > ?", endTime, startTime).
|
||||||
Pluck("block_index", &ids).Error
|
Pluck("block_index", &ids).Error
|
||||||
|
|||||||
@@ -50,7 +50,9 @@ func InitRouter() *gin.Engine {
|
|||||||
//apiV1.Use(middleware.CasbinRBAC())
|
//apiV1.Use(middleware.CasbinRBAC())
|
||||||
|
|
||||||
{
|
{
|
||||||
|
routes.GroupRoutes.Common.InitCommon(apiV1)
|
||||||
routes.GroupRoutes.PeakValley.InitPeakValley(apiV1)
|
routes.GroupRoutes.PeakValley.InitPeakValley(apiV1)
|
||||||
|
routes.GroupRoutes.DevicePoint.InitDevicePoint(apiV1)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
17
router/routes/common.go
Normal file
17
router/routes/common.go
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
package routes
|
||||||
|
|
||||||
|
import (
|
||||||
|
v1 "energy-management-system/api/v1"
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Common struct{}
|
||||||
|
|
||||||
|
func (r *Common) InitCommon(Router *gin.RouterGroup) {
|
||||||
|
commonApi := Router.Group("common")
|
||||||
|
{
|
||||||
|
|
||||||
|
commonApi.GET("energyTypes", v1.Controllers.Common.GetEnergyTypeMap)
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
17
router/routes/device_point.go
Normal file
17
router/routes/device_point.go
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
package routes
|
||||||
|
|
||||||
|
import (
|
||||||
|
v1 "energy-management-system/api/v1"
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
)
|
||||||
|
|
||||||
|
type DevicePoint struct{}
|
||||||
|
|
||||||
|
func (r *DevicePoint) InitDevicePoint(Router *gin.RouterGroup) {
|
||||||
|
devicePointApi := Router.Group("devicePoint")
|
||||||
|
{
|
||||||
|
|
||||||
|
devicePointApi.GET("pointNameSelect", v1.Controllers.DevicePoint.PointNameSelect)
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,7 +1,9 @@
|
|||||||
package routes
|
package routes
|
||||||
|
|
||||||
type groupRoutes struct {
|
type groupRoutes struct {
|
||||||
|
Common
|
||||||
PeakValley
|
PeakValley
|
||||||
|
DevicePoint
|
||||||
}
|
}
|
||||||
|
|
||||||
var GroupRoutes = new(groupRoutes)
|
var GroupRoutes = new(groupRoutes)
|
||||||
|
|||||||
@@ -15,13 +15,13 @@ func (r *PeakValley) InitPeakValley(Router *gin.RouterGroup) {
|
|||||||
peakValleyApi.GET("rulePage", v1.Controllers.PeakValley.GetPeakValleyRulePage)
|
peakValleyApi.GET("rulePage", v1.Controllers.PeakValley.GetPeakValleyRulePage)
|
||||||
peakValleyApi.POST("createRule", v1.Controllers.PeakValley.CreatePeakValleyRule)
|
peakValleyApi.POST("createRule", v1.Controllers.PeakValley.CreatePeakValleyRule)
|
||||||
peakValleyApi.PUT("updateRule", v1.Controllers.PeakValley.UpdatePeakValleyRule)
|
peakValleyApi.PUT("updateRule", v1.Controllers.PeakValley.UpdatePeakValleyRule)
|
||||||
peakValleyApi.GET("ruleDetail/:id", v1.Controllers.PeakValley.PeakValleyRuleDetail)
|
peakValleyApi.GET("ruleDetail", v1.Controllers.PeakValley.PeakValleyRuleDetail)
|
||||||
peakValleyApi.GET("ruleEditDetail/:id", v1.Controllers.PeakValley.PeakValleyRuleEditDetail)
|
peakValleyApi.GET("ruleEditDetail", v1.Controllers.PeakValley.PeakValleyRuleEditDetail)
|
||||||
|
|
||||||
peakValleyApi.GET("quarterPage", v1.Controllers.PeakValley.PeakValleyQuarterPage)
|
peakValleyApi.GET("quarterPage", v1.Controllers.PeakValley.PeakValleyQuarterPage)
|
||||||
peakValleyApi.POST("createQuarter", v1.Controllers.PeakValley.CreatePeakValleyQuarter)
|
peakValleyApi.POST("createQuarter", v1.Controllers.PeakValley.CreatePeakValleyQuarter)
|
||||||
peakValleyApi.PUT("updateQuarter", v1.Controllers.PeakValley.UpdatePeakValleyQuarter)
|
peakValleyApi.PUT("updateQuarter", v1.Controllers.PeakValley.UpdatePeakValleyQuarter)
|
||||||
peakValleyApi.GET("quarterEditDetail/:id", v1.Controllers.PeakValley.PeakValleyQuarterEditDetail)
|
peakValleyApi.GET("quarterEditDetail", v1.Controllers.PeakValley.PeakValleyQuarterEditDetail)
|
||||||
|
|
||||||
//userapi.DELETE(":id", api.Controllers.UserApi.DeleteUser)
|
//userapi.DELETE(":id", api.Controllers.UserApi.DeleteUser)
|
||||||
|
|
||||||
|
|||||||
17
service/common.go
Normal file
17
service/common.go
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
package service
|
||||||
|
|
||||||
|
const (
|
||||||
|
WATER = iota + 1 // WATER 水
|
||||||
|
ELECTRICITY // ELECTRICITY 电
|
||||||
|
)
|
||||||
|
|
||||||
|
var EnergyTypeStrMap = map[int]string{
|
||||||
|
WATER: "水",
|
||||||
|
ELECTRICITY: "电",
|
||||||
|
}
|
||||||
|
|
||||||
|
type Common struct{}
|
||||||
|
|
||||||
|
func (r *Common) GetEnergyTypeMap() map[int]string {
|
||||||
|
return EnergyTypeStrMap
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
package service
|
package service
|
||||||
|
|
||||||
type groupService struct {
|
type groupService struct {
|
||||||
|
Common
|
||||||
PeakValley
|
PeakValley
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -112,8 +112,8 @@ func (r *PeakValley) CreatePeakValleyRule(req *form.CreatePeakValleyRuleReq) {
|
|||||||
var total, start, end, blockTotal = 0, 0, 0, 0
|
var total, start, end, blockTotal = 0, 0, 0, 0
|
||||||
|
|
||||||
// 每个时间段的时间区块ID
|
// 每个时间段的时间区块ID
|
||||||
var timeBlockIds []uint
|
var timeBlockIds []int
|
||||||
var timeBlockIdsMap = make(map[string][]uint)
|
var timeBlockIdsMap = make(map[string][]int)
|
||||||
|
|
||||||
var timeGroup [][]int
|
var timeGroup [][]int
|
||||||
for _, item := range req.RuleItem {
|
for _, item := range req.RuleItem {
|
||||||
@@ -207,8 +207,8 @@ func (r *PeakValley) UpdatePeakValleyRule(req *form.UpdatePeakValleyRuleReq) {
|
|||||||
var total, start, end, blockTotal = 0, 0, 0, 0
|
var total, start, end, blockTotal = 0, 0, 0, 0
|
||||||
|
|
||||||
// 每个时间段的时间区块ID
|
// 每个时间段的时间区块ID
|
||||||
var timeBlockIds []uint
|
var timeBlockIds []int
|
||||||
var timeBlockIdsMap = make(map[string][]uint)
|
var timeBlockIdsMap = make(map[string][]int)
|
||||||
|
|
||||||
var timeGroup [][]int
|
var timeGroup [][]int
|
||||||
for _, item := range req.RuleItem {
|
for _, item := range req.RuleItem {
|
||||||
|
|||||||
Reference in New Issue
Block a user