Files
energy-management-system/repository/peak-valley/peak_valley_time_block_price.go
2024-08-29 09:05:26 +08:00

78 lines
3.0 KiB
Go

package peak_valley
import (
"energy-management-system/global"
peak_valley_model "energy-management-system/model/peak-valley"
"gorm.io/gorm"
)
func (r *PeakValley) CreatePeakValleyTimeBlockPrices(tx *gorm.DB, ds []*peak_valley_model.PeakValleyTimeBlockPrice) error {
return tx.Create(ds).Error
}
func (r *PeakValley) DeletePeakValleyTimeBlockPricesByRuleId(tx *gorm.DB, ruleId uint, unscoped bool) error {
db := tx.Where("peak_valley_rule_id", ruleId)
if unscoped {
db = db.Unscoped()
}
return db.Delete(&peak_valley_model.PeakValleyTimeBlockPrice{}).Error
}
func (r *PeakValley) GetPeakValleyTypes() map[int]string {
return peak_valley_model.PeakValleyTypes
}
// 获取指定规则的某个类型的时间段
func (r *PeakValley) GetPeakValleyRulePriceByTypeAndRuleID(ruleId uint, pvType uint) (blockIds []int, err error) {
db := global.Db.Model(&peak_valley_model.PeakValleyTimeBlockPrice{})
//for key, value := range qr {
db = db.Where("peak_valley_rule_id = ?", ruleId)
db = db.Where("peak_valley_type = ?", pvType)
err = db.Order("block_id ASC").Pluck("block_id", &blockIds).Error
return
}
// 获取指定规则的某个类型的时间段
func (r *PeakValley) GetPeakValleyRulePriceByCustomNameAndRuleID(ruleId uint, customName string) (blockIds []int, err error) {
db := global.Db.Model(&peak_valley_model.PeakValleyTimeBlockPrice{})
//for key, value := range qr {
db = db.Where("peak_valley_rule_id = ?", ruleId)
db = db.Where("custom_name = ?", customName)
err = db.Order("block_id ASC").Pluck("block_id", &blockIds).Error
return
}
func (r *PeakValley) GetPeakValleyRulePriceCustomName(blockId int, ruleId uint) (customName string, err error) {
var peakValleyTimeBlockPriceModel peak_valley_model.PeakValleyTimeBlockPrice
err = global.Db.Model(&peak_valley_model.PeakValleyTimeBlockPrice{}).
Where("block_id = ?", blockId).
Where("peak_valley_rule_id = ?", ruleId).
First(&peakValleyTimeBlockPriceModel).Error
if err != nil {
return "", err
}
return peakValleyTimeBlockPriceModel.CustomName, nil
}
// GetPeakValleyRuleTypes 获取规则下 五种类型
func (r *PeakValley) GetPeakValleyRuleTypes(ruleId int) (list []*peak_valley_model.PeakValleyRuleType, err error) {
// 查询指定规则下的所有不同的 peak_valley_type
err = global.Db.Model(&peak_valley_model.PeakValleyTimeBlockPrice{}).
//Select("DISTINCT peak_valley_type,custom_name").
Select("DISTINCT peak_valley_type,price").
Where("peak_valley_rule_id = ?", ruleId).
Find(&list).Error
return
}
// GetPeakValleyRuleCustomName 规则下 五种类型 + 自定义名称 + 价格
func (r *PeakValley) GetPeakValleyRuleCustomName(ruleId int) (list []*peak_valley_model.PeakValleyRuleCustomName, err error) {
// 查询指定规则下的所有不同的 peak_valley_type
err = global.Db.Model(&peak_valley_model.PeakValleyTimeBlockPrice{}).
//Select("DISTINCT peak_valley_type,custom_name").
Select("DISTINCT custom_name,peak_valley_type,price").
Where("peak_valley_rule_id = ?", ruleId).
Find(&list).Error
return
}