完善季度
This commit is contained in:
@@ -12,17 +12,52 @@ import (
|
||||
|
||||
type PeakValley struct{}
|
||||
|
||||
// PeakValleyQuarterPage 季度列表
|
||||
func (r *PeakValley) PeakValleyQuarterPage(c *gin.Context) {
|
||||
var req form.PeakValleyQuarterListReq
|
||||
request.BindParam(c, &req)
|
||||
respData := service.GroupServices.PeakValley.PeakValleyQuarterPage(&req)
|
||||
response.SuccessData(respData, c)
|
||||
|
||||
}
|
||||
|
||||
// CreatePeakValleyQuarter 创建季度
|
||||
func (r *PeakValley) CreatePeakValleyQuarter(c *gin.Context) {
|
||||
var req form.CreatePeakValleyQuarterReq
|
||||
request.BindJson(c, &req)
|
||||
service.GroupServices.PeakValley.CreatePeakValleyQuarter(&req)
|
||||
response.Success(c)
|
||||
}
|
||||
|
||||
// UpdatePeakValleyQuarter 修改季度
|
||||
func (r *PeakValley) UpdatePeakValleyQuarter(c *gin.Context) {
|
||||
var req form.UpdatePeakValleyQuarterReq
|
||||
request.BindJson(c, &req)
|
||||
service.GroupServices.PeakValley.UpdatePeakValleyQuarter(&req)
|
||||
response.Success(c)
|
||||
}
|
||||
|
||||
// PeakValleyQuarterEditDetail 查看季度
|
||||
func (r *PeakValley) PeakValleyQuarterEditDetail(c *gin.Context) {
|
||||
var req form.PeakValleyQuarterEditDetailReq
|
||||
id, err := strconv.Atoi(c.Param("id"))
|
||||
exception.PanicMsgBool(err != nil, "参数有误")
|
||||
req.Id = id
|
||||
respData := service.GroupServices.PeakValley.PeakValleyQuarterEditDetail(&req)
|
||||
response.SuccessData(respData, c)
|
||||
}
|
||||
|
||||
// GetPeakValleyTypes 获取峰谷类型
|
||||
func (r *PeakValley) GetPeakValleyTypes(c *gin.Context) {
|
||||
types := service.GroupServices.PeakValley.GetPeakValleyType()
|
||||
response.SuccessData(gin.H{"types": types}, c)
|
||||
}
|
||||
|
||||
// PeakValleyRuleList 谷峰规则列表
|
||||
func (r *PeakValley) PeakValleyRuleList(c *gin.Context) {
|
||||
// GetPeakValleyRulePage 谷峰规则列表
|
||||
func (r *PeakValley) GetPeakValleyRulePage(c *gin.Context) {
|
||||
var req form.PeakValleyRuleListReq
|
||||
request.BindParam(c, &req)
|
||||
respData := service.GroupServices.PeakValley.PeakValleyRuleList(&req)
|
||||
respData := service.GroupServices.PeakValley.GetPeakValleyRulePage(&req)
|
||||
response.SuccessData(respData, c)
|
||||
}
|
||||
|
||||
@@ -39,7 +74,7 @@ func (r *PeakValley) UpdatePeakValleyRule(c *gin.Context) {
|
||||
var req form.UpdatePeakValleyRuleReq
|
||||
request.BindJson(c, &req)
|
||||
service.GroupServices.PeakValley.UpdatePeakValleyRule(&req)
|
||||
//response.Success(c)
|
||||
response.Success(c)
|
||||
}
|
||||
|
||||
// PeakValleyRuleDetail 谷峰规则详情
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package core
|
||||
|
||||
import (
|
||||
init_db_data "energy-management-system/core/init-db-data"
|
||||
"energy-management-system/global"
|
||||
peak_valley "energy-management-system/model/peak-valley"
|
||||
"fmt"
|
||||
@@ -62,7 +63,8 @@ func AutoMigrate(db *gorm.DB) {
|
||||
err := db.AutoMigrate(
|
||||
new(peak_valley.PeakValleyTimeBlock),
|
||||
new(peak_valley.PeakValleyTimeBlockPrice),
|
||||
new(peak_valley.PeakValleyQuarterRule),
|
||||
|
||||
new(peak_valley.PeakValleyQuarter),
|
||||
new(peak_valley.PeakValleyRule),
|
||||
//new(model.Role),
|
||||
//new(model.UserRole),
|
||||
@@ -76,3 +78,7 @@ func AutoMigrate(db *gorm.DB) {
|
||||
os.Exit(0)
|
||||
}
|
||||
}
|
||||
|
||||
func AutoInitDbData() {
|
||||
init_db_data.InitDbData()
|
||||
}
|
||||
|
||||
31
core/init-db-data/init.go
Normal file
31
core/init-db-data/init.go
Normal file
@@ -0,0 +1,31 @@
|
||||
package init_db_data
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
)
|
||||
|
||||
type InitDBFunc interface {
|
||||
Init() (err error)
|
||||
}
|
||||
|
||||
// 初始化数据库
|
||||
func initDB(InitDBFunctions ...InitDBFunc) (err error) {
|
||||
for _, v := range InitDBFunctions {
|
||||
err = v.Init()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func InitDbData() {
|
||||
err := initDB(initPeakValleyTimeBlockData)
|
||||
if err != nil {
|
||||
fmt.Println("[-]初始化基础数据失败:", err)
|
||||
os.Exit(0)
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
56
core/init-db-data/peak_valley_time_block.go
Normal file
56
core/init-db-data/peak_valley_time_block.go
Normal file
@@ -0,0 +1,56 @@
|
||||
package init_db_data
|
||||
|
||||
import (
|
||||
"energy-management-system/global"
|
||||
peak_valley_model "energy-management-system/model/peak-valley"
|
||||
"github.com/gookit/color"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type InitPeakValleyTimeBlockData struct{}
|
||||
|
||||
var initPeakValleyTimeBlockData = new(InitPeakValleyTimeBlockData)
|
||||
|
||||
// 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
|
||||
}
|
||||
|
||||
// Init 初始化用户数据
|
||||
func (i *InitPeakValleyTimeBlockData) Init() error {
|
||||
return global.Db.Transaction(func(tx *gorm.DB) error {
|
||||
|
||||
m := &peak_valley_model.PeakValleyTimeBlock{}
|
||||
var count int64
|
||||
|
||||
err := tx.Model(&peak_valley_model.PeakValleyTimeBlock{}).Count(&count).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if count == 144 {
|
||||
color.Danger.Println("\n[PGSQL] --> " + m.TableName() + " 表的初始数据已存在!")
|
||||
return nil
|
||||
}
|
||||
|
||||
dataList := buildData()
|
||||
if err := tx.Create(&dataList).Error; err != nil { // 遇到错误时回滚事务
|
||||
return err
|
||||
}
|
||||
color.Info.Println("\n[PGSQL] --> " + m.TableName() + "表初始数据成功!")
|
||||
return nil
|
||||
})
|
||||
}
|
||||
@@ -1,13 +1,26 @@
|
||||
package form
|
||||
|
||||
// 一天的完整谷峰规则
|
||||
// 发电 (光伏)
|
||||
// 用电 (电机、生产)
|
||||
type PeakValleyQuarterListReq struct {
|
||||
Page `json:"page"`
|
||||
}
|
||||
|
||||
//新建规则
|
||||
//
|
||||
//选择时间段 设置电价
|
||||
//(将时间段 转化为十分钟区块 查找到对应十分钟区块 创建该规则的电价)
|
||||
type PeakValleyQuarterEditDetailReq struct {
|
||||
Id int `form:"id" json:"id"`
|
||||
}
|
||||
type CreatePeakValleyQuarterReq struct {
|
||||
QuarterName string `json:"quarter_name"`
|
||||
StartTime string `json:"start_time"`
|
||||
EndTime string `json:"end_time"`
|
||||
RuleId uint `json:"rule_id"`
|
||||
}
|
||||
|
||||
type UpdatePeakValleyQuarterReq struct {
|
||||
Id int `json:"id" binding:"required"`
|
||||
QuarterName string `json:"quarter_name"`
|
||||
StartTime string `json:"start_time"`
|
||||
EndTime string `json:"end_time"`
|
||||
RuleId uint `json:"rule_id"`
|
||||
}
|
||||
|
||||
type PeakValleyRuleListReq struct {
|
||||
Page `json:"page"`
|
||||
|
||||
10
main.go
10
main.go
@@ -15,12 +15,16 @@ import (
|
||||
)
|
||||
|
||||
func init() {
|
||||
// 配置
|
||||
core.InitViper()
|
||||
// 数据库
|
||||
core.InitGorm()
|
||||
//init_model_data.InitDbData()
|
||||
//core.InitCasbin()
|
||||
// gin验证器
|
||||
request.InitTrans()
|
||||
//core.AutoMigrate(global.Db)
|
||||
// 可选初始化表结构
|
||||
core.AutoMigrate(global.Db)
|
||||
// 可选初始化表数据
|
||||
core.AutoInitDbData()
|
||||
|
||||
}
|
||||
func main() {
|
||||
|
||||
23
model/peak-valley/peak_valley_quarter.go
Normal file
23
model/peak-valley/peak_valley_quarter.go
Normal file
@@ -0,0 +1,23 @@
|
||||
package peak_valley
|
||||
|
||||
import (
|
||||
"energy-management-system/global"
|
||||
"gorm.io/gorm"
|
||||
"time"
|
||||
)
|
||||
|
||||
type PeakValleyQuarter struct {
|
||||
Id uint `gorm:"column:id;primaryKey" json:"id"`
|
||||
QuarterName string `gorm:"column:quarter_name;comment:季度名称" json:"quarter_name"`
|
||||
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"`
|
||||
Rid uint `gorm:"column:rid;comment:季度使用规则" json:"rid"`
|
||||
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:"-"`
|
||||
Rule PeakValleyRule `gorm:"foreignKey:rid;references:rule_id"`
|
||||
}
|
||||
|
||||
func (r *PeakValleyQuarter) TableName() string {
|
||||
return global.AppConf.Db.TablePrefix + "peak_valley_quarters"
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
package peak_valley
|
||||
|
||||
import (
|
||||
"energy-management-system/global"
|
||||
"gorm.io/gorm"
|
||||
"time"
|
||||
)
|
||||
|
||||
// 季度谷峰规则
|
||||
|
||||
// 开始时间
|
||||
// 结束时间
|
||||
// 谷峰规则ID
|
||||
|
||||
type PeakValleyQuarterRule struct {
|
||||
RuleId uint `gorm:"column:rule_id;primaryKey" json:"rule_id"`
|
||||
StartTime uint `gorm:"column:start_time;comment:开始时间" json:"start_time"`
|
||||
EndTime uint `gorm:"column:end_time;comment:结束时间" json:"end_time"`
|
||||
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 *PeakValleyQuarterRule) TableName() string {
|
||||
return global.AppConf.Db.TablePrefix + "peak_valley_quarter_rules"
|
||||
}
|
||||
43
repository/peak-valley/peak_valley_quarter.go
Normal file
43
repository/peak-valley/peak_valley_quarter.go
Normal file
@@ -0,0 +1,43 @@
|
||||
package peak_valley
|
||||
|
||||
import (
|
||||
"energy-management-system/form"
|
||||
"energy-management-system/global"
|
||||
peak_valley_model "energy-management-system/model/peak-valley"
|
||||
)
|
||||
|
||||
// 季度谷峰规则
|
||||
|
||||
// 开始时间
|
||||
// 结束时间
|
||||
// 谷峰规则ID
|
||||
|
||||
func (r *PeakValley) GetPeakValleyQuarterPage(req *form.PeakValleyQuarterListReq) (count int64, list []*peak_valley_model.PeakValleyQuarter, err error) {
|
||||
db := global.Db.Model(&peak_valley_model.PeakValleyQuarter{})
|
||||
|
||||
//for key, value := range qr {
|
||||
// db = db.Where(key, value)
|
||||
//}
|
||||
err = db.Count(&count).Error
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = db.Offset((req.Page.GetPageIndex() - 1) * req.Page.GetPageSize()).Limit(req.Page.GetPageSize()).Order("id desc").Preload("Rule").Find(&list).Error
|
||||
return
|
||||
}
|
||||
|
||||
func (r *PeakValley) CreatePeakValleyQuarter(d *peak_valley_model.PeakValleyQuarter) error {
|
||||
return global.Db.Create(d).Error
|
||||
}
|
||||
func (r *PeakValley) UpdatePeakValleyQuarter(d *peak_valley_model.PeakValleyQuarter) error {
|
||||
return global.Db.Save(d).Error
|
||||
}
|
||||
|
||||
func (r *PeakValley) GetOnePeakValleyQuarter(qr map[string]interface{}) (d *peak_valley_model.PeakValleyQuarter, err error) {
|
||||
db := global.Db
|
||||
for key, value := range qr {
|
||||
db = db.Where(key, value)
|
||||
}
|
||||
err = db.First(&d).Error
|
||||
return
|
||||
}
|
||||
@@ -19,11 +19,11 @@ type PeakValley struct {
|
||||
//选择时间段 设置电价
|
||||
//(将时间段 转化为十分钟区块 查找到对应十分钟区块 创建该规则的电价)
|
||||
|
||||
func (r *PeakValley) CreatePeakValleyRule(tx *gorm.DB, d *peak_valley_model.PeakValleyRule) error {
|
||||
func (r *PeakValley) CreatePeakValleyRuleTx(tx *gorm.DB, d *peak_valley_model.PeakValleyRule) error {
|
||||
return tx.Create(d).Error
|
||||
}
|
||||
|
||||
func (r *PeakValley) UpdatePeakValleyRule(tx *gorm.DB, d *peak_valley_model.PeakValleyRule) error {
|
||||
func (r *PeakValley) UpdatePeakValleyRuleTx(tx *gorm.DB, d *peak_valley_model.PeakValleyRule) error {
|
||||
return tx.Save(d).Error
|
||||
}
|
||||
|
||||
|
||||
@@ -75,13 +75,3 @@ func (r *PeakValley) GetPeakValleyRuleCustomName(ruleId int) (list []*peak_valle
|
||||
Find(&list).Error
|
||||
return
|
||||
}
|
||||
|
||||
//type ByCustomNameNumber []*peak_valley_model.PeakValleyRuleCustomName
|
||||
//
|
||||
//func (a ByCustomNameNumber) Len() int { return len(a) }
|
||||
//func (a ByCustomNameNumber) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
|
||||
//func (a ByCustomNameNumber) Less(i, j int) bool {
|
||||
// numI, _ := utils.ExtractNumber(a[i].CustomName)
|
||||
// numJ, _ := utils.ExtractNumber(a[j].CustomName)
|
||||
// return numI < numJ // 升序排序
|
||||
//}
|
||||
|
||||
@@ -12,12 +12,17 @@ func (r *PeakValley) InitPeakValley(Router *gin.RouterGroup) {
|
||||
{
|
||||
|
||||
peakValleyApi.GET("types", v1.Controllers.PeakValley.GetPeakValleyTypes)
|
||||
peakValleyApi.GET("ruleList", v1.Controllers.PeakValley.PeakValleyRuleList)
|
||||
peakValleyApi.GET("rulePage", v1.Controllers.PeakValley.GetPeakValleyRulePage)
|
||||
peakValleyApi.POST("createRule", v1.Controllers.PeakValley.CreatePeakValleyRule)
|
||||
peakValleyApi.PUT("updateRule", v1.Controllers.PeakValley.UpdatePeakValleyRule)
|
||||
peakValleyApi.GET("ruleDetail/:id", v1.Controllers.PeakValley.PeakValleyRuleDetail)
|
||||
peakValleyApi.GET("ruleEditDetail/:id", v1.Controllers.PeakValley.PeakValleyRuleEditDetail)
|
||||
|
||||
peakValleyApi.GET("quarterPage", v1.Controllers.PeakValley.PeakValleyQuarterPage)
|
||||
peakValleyApi.POST("createQuarter", v1.Controllers.PeakValley.CreatePeakValleyQuarter)
|
||||
peakValleyApi.PUT("updateQuarter", v1.Controllers.PeakValley.UpdatePeakValleyQuarter)
|
||||
peakValleyApi.GET("quarterEditDetail/:id", v1.Controllers.PeakValley.PeakValleyQuarterEditDetail)
|
||||
|
||||
//userapi.DELETE(":id", api.Controllers.UserApi.DeleteUser)
|
||||
|
||||
//// 个人信息管理
|
||||
|
||||
@@ -11,10 +11,64 @@ import (
|
||||
"fmt"
|
||||
"sort"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
type PeakValley struct{}
|
||||
|
||||
// PeakValleyQuarterPage 季度列表
|
||||
func (r *PeakValley) PeakValleyQuarterPage(req *form.PeakValleyQuarterListReq) map[string]interface{} {
|
||||
count, list, err := repository.GroupRepositorys.PeakValley.GetPeakValleyQuarterPage(req)
|
||||
if err != nil {
|
||||
exception.PanicMsgErr(err, "获取列表失败")
|
||||
//return
|
||||
}
|
||||
ListRsp := make(map[string]interface{})
|
||||
ListRsp["total"] = count
|
||||
ListRsp["list"] = list
|
||||
return ListRsp
|
||||
}
|
||||
|
||||
// PeakValleyQuarterEditDetail 获取季度详情-编辑使用
|
||||
func (r *PeakValley) PeakValleyQuarterEditDetail(req *form.PeakValleyQuarterEditDetailReq) *peak_valley_model.PeakValleyQuarter {
|
||||
pvq, err := repository.GroupRepositorys.PeakValley.GetOnePeakValleyQuarter(map[string]interface{}{"id": req.Id})
|
||||
exception.PanicMsgBool(err != nil, "获取季度详情失败")
|
||||
return pvq
|
||||
}
|
||||
|
||||
// CreatePeakValleyQuarter 创建季度
|
||||
func (r *PeakValley) CreatePeakValleyQuarter(req *form.CreatePeakValleyQuarterReq) {
|
||||
var err error
|
||||
pvq := &peak_valley_model.PeakValleyQuarter{}
|
||||
pvq.QuarterName = req.QuarterName
|
||||
pvq.Rid = req.RuleId
|
||||
startTime, err := time.Parse("2006-01-02", req.StartTime)
|
||||
endTime, err := time.Parse("2006-01-02", req.EndTime)
|
||||
exception.PanicMsgBool(err != nil, "时间解析失败")
|
||||
pvq.StartTime = startTime
|
||||
pvq.EndTime = endTime
|
||||
err = repository.GroupRepositorys.PeakValley.CreatePeakValleyQuarter(pvq)
|
||||
exception.PanicMsgBool(err != nil, "创建季度失败")
|
||||
return
|
||||
}
|
||||
|
||||
// UpdatePeakValleyQuarter 修改季度
|
||||
func (r *PeakValley) UpdatePeakValleyQuarter(req *form.UpdatePeakValleyQuarterReq) {
|
||||
var err error
|
||||
pvq, err := repository.GroupRepositorys.PeakValley.GetOnePeakValleyQuarter(map[string]interface{}{"id": req.Id})
|
||||
exception.PanicMsgBool(err != nil, "修改季度失败")
|
||||
startTime, err := time.Parse("2006-01-02", req.StartTime)
|
||||
endTime, err := time.Parse("2006-01-02", req.EndTime)
|
||||
exception.PanicMsgBool(err != nil, "时间解析失败")
|
||||
pvq.QuarterName = req.QuarterName
|
||||
pvq.Rid = req.RuleId
|
||||
pvq.StartTime = startTime
|
||||
pvq.EndTime = endTime
|
||||
err = repository.GroupRepositorys.PeakValley.UpdatePeakValleyQuarter(pvq)
|
||||
exception.PanicMsgBool(err != nil, "修改季度失败")
|
||||
return
|
||||
}
|
||||
|
||||
// GetPeakValleyType 获取峰谷类型
|
||||
func (r *PeakValley) GetPeakValleyType() (typeList []*peak_valley_model.PeakValleyType) {
|
||||
types := repository.GroupRepositorys.PeakValley.GetPeakValleyTypes()
|
||||
@@ -51,7 +105,7 @@ func (r *PeakValley) CreatePeakValleyRule(req *form.CreatePeakValleyRuleReq) {
|
||||
pvr := &peak_valley_model.PeakValleyRule{}
|
||||
pvr.RuleName = req.RuleName
|
||||
pvr.Description = req.Description
|
||||
err = repository.GroupRepositorys.PeakValley.CreatePeakValleyRule(tx, pvr)
|
||||
err = repository.GroupRepositorys.PeakValley.CreatePeakValleyRuleTx(tx, pvr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@@ -130,7 +184,7 @@ func (r *PeakValley) UpdatePeakValleyRule(req *form.UpdatePeakValleyRuleReq) {
|
||||
}
|
||||
pvr.RuleName = req.RuleName
|
||||
pvr.Description = req.Description
|
||||
err = repository.GroupRepositorys.PeakValley.UpdatePeakValleyRule(tx, pvr)
|
||||
err = repository.GroupRepositorys.PeakValley.UpdatePeakValleyRuleTx(tx, pvr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@@ -186,8 +240,8 @@ func (r *PeakValley) UpdatePeakValleyRule(req *form.UpdatePeakValleyRuleReq) {
|
||||
return
|
||||
}
|
||||
|
||||
// PeakValleyRuleList 峰谷规则列表
|
||||
func (r *PeakValley) PeakValleyRuleList(req *form.PeakValleyRuleListReq) map[string]interface{} {
|
||||
// GetPeakValleyRulePage 峰谷规则列表
|
||||
func (r *PeakValley) GetPeakValleyRulePage(req *form.PeakValleyRuleListReq) map[string]interface{} {
|
||||
count, list, err := repository.GroupRepositorys.PeakValley.GetPeakValleyRulePage(req)
|
||||
if err != nil {
|
||||
exception.PanicMsgErr(err, "获取列表失败")
|
||||
|
||||
Reference in New Issue
Block a user