123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239 |
- package edb_refresh
- import (
- "errors"
- "eta/eta_api/utils"
- "github.com/beego/beego/v2/client/orm"
- "time"
- )
- // EdbRefreshConfig
- // @Description: 指标的刷新时间配置表
- type EdbRefreshConfig struct {
- EdbRefreshConfigId int `orm:"column(edb_refresh_config_id);pk"`
- RefreshFrequency string `description:"刷新频率"`
- RefreshFrequencyDay int `description:"具体刷新的日期"`
- RefreshTime string `description:"刷新时间"`
- RefreshAllData int `description:"是否刷新所有数据,0:否,1:刷新所有数据"`
- RefreshDataNum int `description:"刷新单元格数"`
- ModifyTime time.Time `description:"最晚一次的更新时间"`
- CreateTime time.Time `description:"添加时间"`
- }
- // Add
- // @Description: 添加
- // @author: Roc
- // @receiver m
- // @datetime 2023-12-14 16:11:10
- // @param cols []string
- // @return err error
- func (m *EdbRefreshConfig) Add() (err error) {
- if m.EdbRefreshConfigId > 0 {
- err = errors.New("该配置已存在")
- return
- }
- o := orm.NewOrmUsingDB("data")
- lastId, err := o.Insert(m)
- if err != nil {
- return
- }
- m.EdbRefreshConfigId = int(lastId)
- return
- }
- // Update
- // @Description: 更新
- // @author: Roc
- // @receiver m
- // @datetime 2023-12-14 16:11:10
- // @param cols []string
- // @return err error
- func (m *EdbRefreshConfig) Update(cols []string) (err error) {
- o := orm.NewOrmUsingDB("data")
- _, err = o.Update(m, cols...)
- return
- }
- // Delete
- // @Description: 删除
- // @author: Roc
- // @receiver m
- // @datetime 2023-12-14 16:11:10
- // @return err error
- func (m *EdbRefreshConfig) Delete() (err error) {
- o := orm.NewOrmUsingDB("data")
- _, err = o.Delete(m)
- return
- }
- // GetEdbRefreshConfigListByCondition
- // @Description: 根据条件获取刷新配置列表
- // @author: Roc
- // @datetime 2024-01-08 14:07:10
- // @param refreshFrequency string
- // @param refreshTime string
- // @param refreshFrequencyDay int
- // @param refreshAllData int
- // @param refreshDataNum int
- // @return item *EdbRefreshConfig
- // @return err error
- func GetEdbRefreshConfigListByCondition(refreshFrequency, refreshTime string, refreshFrequencyDay, refreshAllData, refreshDataNum int) (item *EdbRefreshConfig, err error) {
- o := orm.NewOrmUsingDB("data")
- sql := `SELECT * FROM edb_refresh_config
- WHERE refresh_frequency = ? AND refresh_frequency_day = ? AND refresh_time = ? AND refresh_all_data = ? AND refresh_data_num = ? ORDER BY edb_refresh_config_id ASC `
- err = o.Raw(sql, refreshFrequency, refreshFrequencyDay, refreshTime, refreshAllData, refreshDataNum).QueryRow(&item)
- return
- }
- // SaveEdbRefreshConfig
- // @Description: 保存刷新配置
- // @author: Roc
- // @datetime 2024-01-08 15:13:23
- // @param source int
- // @param subSource int
- // @param sysUserId int
- // @param sysUserRealName string
- // @param newConfigList []*EdbRefreshConfig
- // @param addMapping []*EdbRefreshMapping
- // @param edbIdList []int
- // @return err error
- func SaveEdbRefreshConfig(source, subSource, sysUserId int, sysUserRealName string, newConfigList []*EdbRefreshConfig, addMapping []*EdbRefreshMapping, edbIdList []int) (err error) {
- num := len(edbIdList)
- if num <= 0 {
- return
- }
- o, err := orm.NewOrmUsingDB("data").Begin()
- if err != nil {
- return
- }
- defer func() {
- if err != nil {
- _ = o.Rollback()
- return
- }
- _ = o.Commit()
- }()
- for _, v := range newConfigList {
- lastId, tmpErr := o.Insert(v)
- if tmpErr != nil {
- err = tmpErr
- return
- }
- v.EdbRefreshConfigId = int(lastId)
- for _, edbId := range edbIdList {
- addMapping = append(addMapping, &EdbRefreshMapping{
- EdbRefreshMappingId: 0,
- Source: source,
- SubSource: subSource,
- EdbInfoId: edbId,
- EdbRefreshConfigId: v.EdbRefreshConfigId,
- SysUserId: sysUserId,
- SysUserRealName: sysUserRealName,
- ModifyTime: time.Now(),
- CreateTime: time.Now(),
- })
- }
- }
- // 先删除
- sql := `DELETE FROM edb_refresh_mapping WHERE source =? AND sub_source =? AND edb_info_id in (` + utils.GetOrmInReplace(num) + `)`
- _, err = o.Raw(sql, source, subSource, edbIdList).Exec()
- // 再写入
- if len(addMapping) > 0 {
- tmpAddDataList := make([]*EdbRefreshMapping, 0)
- i := 0
- for _, v := range addMapping {
- tmpAddDataList = append(tmpAddDataList, v)
- i++
- if i >= 500 {
- _, err = o.InsertMulti(len(tmpAddDataList), tmpAddDataList)
- if err != nil {
- return
- }
- i = 0
- tmpAddDataList = make([]*EdbRefreshMapping, 0)
- }
- }
- if len(tmpAddDataList) > 0 {
- _, err = o.InsertMulti(len(tmpAddDataList), tmpAddDataList)
- if err != nil {
- return
- }
- }
- }
- return
- }
- // EdbRefreshConfigItem
- // @Description: 指标的刷新时间配置项
- type EdbRefreshConfigItem struct {
- RefreshFrequency string `description:"刷新频率"`
- RefreshFrequencyDay int `description:"具体刷新的日期"`
- RefreshTime string `description:"刷新时间"`
- RefreshAllData int `description:"是否刷新所有数据,0:否,1:刷新所有数据"`
- RefreshDataNum int `description:"刷新单元格数"`
- }
- // GetEdbRefreshConfigListBySourceAndeEdbInfoId
- // @Description: 根据来源和指标获取其配置列表
- // @author: Roc
- // @datetime 2024-01-10 14:18:21
- // @param source int
- // @param subSource int
- // @param edbInfoId int
- // @return list []*EdbRefreshDefaultConfig
- // @return err error
- func GetEdbRefreshConfigListBySourceAndeEdbInfoId(source, subSource, edbInfoId int) (list []*EdbRefreshConfigItem, err error) {
- o := orm.NewOrmUsingDB("data")
- sql := `SELECT a.* FROM edb_refresh_config a
- JOIN edb_refresh_mapping b ON a.edb_refresh_config_id = b.edb_refresh_config_id
- WHERE b.source = ? AND b.sub_source = ? AND b.edb_info_id = ? ORDER BY a.edb_refresh_config_id ASC `
- _, err = o.Raw(sql, source, subSource, edbInfoId).QueryRows(&list)
- return
- }
- // EdbRefreshConfigAndEdbItem
- // @Description: 指标的刷新时间配置项
- type EdbRefreshConfigAndEdbItem struct {
- RefreshFrequency string `description:"刷新频率"`
- RefreshFrequencyDay int `description:"具体刷新的日期"`
- RefreshTime string `description:"刷新时间"`
- RefreshAllData int `description:"是否刷新所有数据,0:否,1:刷新所有数据"`
- RefreshDataNum int `description:"刷新单元格数"`
- EdbInfoId int `description:"指标id,如果是数据源(钢联、有色金属)的,那么就是数据源里面的id"`
- Source int `description:"来源"`
- SubSource int `description:"子来源"`
- }
- // GetEdbRefreshConfigAndEdbListBySourceAndeEdbInfoId
- // @Description: 根据来源和指标获取其配置列表
- // @author: Roc
- // @datetime 2024-01-10 14:18:21
- // @param source int
- // @param subSource int
- // @param edbInfoId int
- // @return list []*EdbRefreshDefaultConfig
- // @return err error
- func GetEdbRefreshConfigAndEdbListBySourceAndeEdbInfoId(source, subSource int, edbInfoIdList []int) (list []*EdbRefreshConfigAndEdbItem, err error) {
- num := len(edbInfoIdList)
- if num <= 0 {
- return
- }
- o := orm.NewOrmUsingDB("data")
- sql := `SELECT a.*,b.source,b.sub_source,b.edb_info_id FROM edb_refresh_config a
- JOIN edb_refresh_mapping b ON a.edb_refresh_config_id = b.edb_refresh_config_id
- WHERE b.source = ? AND b.sub_source = ? AND b.edb_info_id in (` + utils.GetOrmInReplace(num) + `) ORDER BY a.edb_refresh_config_id ASC `
- _, err = o.Raw(sql, source, subSource, edbInfoIdList).QueryRows(&list)
- return
- }
|