Browse Source

feat:新增获取单个指标的刷新配置列表接口

Roc 1 year ago
parent
commit
6632b880b3

+ 112 - 350
controllers/data_manage/edb_info_refresh.go

@@ -6,11 +6,10 @@ import (
 	"eta/eta_api/models/data_manage"
 	"eta/eta_api/models/data_manage/edb_refresh"
 	"eta/eta_api/models/data_manage/edb_refresh/request"
+	"eta/eta_api/services/data"
 	"eta/eta_api/utils"
 	"fmt"
 	"github.com/rdlucklib/rdluck_tools/paging"
-	"strings"
-	"time"
 )
 
 // RefreshSourceList
@@ -55,10 +54,10 @@ func (c *EdbInfoController) RefreshSourceList() {
 			for _, v2 := range tmpList {
 				if v2.Source == v.Source {
 					tmp.Child = append(tmp.Child, edb_refresh.EdbRefreshSourceList{
-						Source:        v.Source,
-						SourceName:    v.SourceName,
-						SubSource:     v.SubSource,
-						SubSourceName: v.SubSourceName,
+						Source:        v2.Source,
+						SourceName:    v2.SourceName,
+						SubSource:     v2.SubSource,
+						SubSourceName: v2.SubSourceName,
 						HasChild:      0,
 					})
 				}
@@ -290,7 +289,7 @@ func (c *EdbInfoController) RefreshEdbList() {
 	}
 	startSize = utils.StartIndex(currentIndex, pageSize)
 
-	total, list, err := getList(source, subSource, classifyId, terminalCode, sysUserId, frequency, keyword, status, startSize, pageSize, sortParam, sortType)
+	total, list, err := data.GetList(source, subSource, classifyId, terminalCode, sysUserId, frequency, keyword, status, startSize, pageSize, sortParam, sortType)
 	if err != nil && err.Error() != utils.ErrNoRow() {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
@@ -304,8 +303,14 @@ func (c *EdbInfoController) RefreshEdbList() {
 		List:   list,
 	}
 
-	// todo 数据源中的最新值
-	// todo 刷新时间
+	// 刷新时间格式化
+	list, err, errMsg, isSendEmail := data.HandleRefreshTime(source, subSource, list)
+	if err != nil {
+		br.Msg = errMsg
+		br.ErrMsg = "保存失败,Err:" + err.Error()
+		br.IsSendEmail = isSendEmail
+		return
+	}
 
 	br.Ret = 200
 	br.Success = true
@@ -379,72 +384,12 @@ func (c *EdbInfoController) SaveEdbRefreshDefaultConfig() {
 		return
 	}
 
-	if req.Source <= 0 {
-		br.Msg = "来源不能为空"
-		br.IsSendEmail = false
-		return
-	}
-
-	if req.Frequency == `` {
-		br.Msg = "频度不能为空"
-		br.IsSendEmail = false
-		return
-	}
-
-	lenConf := len(req.List)
-	if lenConf == 0 {
-		br.Msg = "至少需要一个刷新配置"
-		br.IsSendEmail = false
-		return
-	}
-
-	tmpArr := []string{"每周", "每旬", "每月", "每季", "每半年", "每年"}
-	// 配置的map,避免同一种类型配置同一个时间
-	configMap := make(map[string]string)
-	for _, v := range req.List {
-		if utils.InArrayByStr(tmpArr, v.RefreshFrequency) && v.RefreshFrequencyDay < 0 {
-			br.Msg = "请选择具体日期"
-			br.IsSendEmail = false
-			return
-		}
-
-		if v.RefreshTime == "" {
-			br.Msg = "请选择具体时间"
-			br.IsSendEmail = false
-			return
-		}
-
-		// 配置的map,避免同一种类型配置同一个时间
-		key := fmt.Sprint(v.RefreshFrequency, "_", v.RefreshFrequencyDay, "_", v.RefreshTime)
-		if _, ok := configMap[key]; ok {
-			br.Msg = "刷新频率和日期不能重复"
-			br.IsSendEmail = false
-			return
-		}
-		configMap[key] = key
-	}
-
-	addList := make([]*edb_refresh.EdbRefreshDefaultConfig, 0)
-	for _, v := range req.List {
-		addList = append(addList, &edb_refresh.EdbRefreshDefaultConfig{
-			Source:              req.Source,
-			SubSource:           req.SubSource,
-			Frequency:           req.Frequency,
-			RefreshFrequency:    v.RefreshFrequency,
-			RefreshFrequencyDay: v.RefreshFrequencyDay,
-			RefreshAllData:      v.RefreshAllData,
-			RefreshTime:         v.RefreshTime,
-			RefreshDataNum:      v.RefreshDataNum,
-			ModifyTime:          time.Now(),
-			CreateTime:          time.Now(),
-		})
-	}
-
 	// 保存
-	err = edb_refresh.SaveEdbRefreshDefaultConfig(req.Source, req.SubSource, req.Frequency, addList)
+	err, errMsg, isSendEmail := data.SaveEdbRefreshDefaultConfig(req.Source, req.SubSource, req.Frequency, req.List)
 	if err != nil {
-		br.Msg = `保存失败`
+		br.Msg = errMsg
 		br.ErrMsg = "保存失败,Err:" + err.Error()
+		br.IsSendEmail = isSendEmail
 		return
 	}
 
@@ -474,129 +419,12 @@ func (c *EdbInfoController) SaveEdbRefreshConfig() {
 		return
 	}
 
-	if req.Source <= 0 {
-		br.Msg = "来源不能为空"
-		br.IsSendEmail = false
-		return
-	}
-
-	lenConf := len(req.List)
-	if lenConf == 0 {
-		br.Msg = "至少需要一个刷新配置"
-		br.IsSendEmail = false
-		return
-	}
-
-	tmpArr := []string{"每周", "每旬", "每月", "每季", "每半年", "每年"}
-
-	// 配置的map,避免同一种类型配置同一个时间
-	configMap := make(map[string]string)
-	for _, v := range req.List {
-		if utils.InArrayByStr(tmpArr, v.RefreshFrequency) && v.RefreshFrequencyDay < 0 {
-			br.Msg = "请选择具体日期"
-			br.IsSendEmail = false
-			return
-		}
-
-		if v.RefreshTime == "" {
-			br.Msg = "请选择具体时间"
-			br.IsSendEmail = false
-			return
-		}
-
-		// 配置的map,避免同一种类型配置同一个时间
-		key := fmt.Sprint(v.RefreshFrequency, "_", v.RefreshFrequencyDay, "_", v.RefreshTime)
-		if _, ok := configMap[key]; ok {
-			br.Msg = "刷新频率和日期不能重复"
-			br.IsSendEmail = false
-			return
-		}
-		configMap[key] = key
-	}
-
-	edbIdList := make([]int, 0)
-	// 指标id列表
-	if req.IsSelectAll {
-		// 如果是列表全选
-		_, edbList, err := getList(req.Source, req.SubSource, req.ClassifyId, req.TerminalCode, req.SysUserId, req.Frequency, req.Keyword, req.Status, 0, 100000, "", "")
-		if err != nil && err.Error() != utils.ErrNoRow() {
-			br.Msg = "获取失败"
-			br.ErrMsg = "获取数据失败,Err:" + err.Error()
-			return
-		}
-
-		// 不配置的指标id
-		notIdMap := make(map[int]int, 0)
-		for _, v := range req.EdbSelectIdList {
-			notIdMap[v] = v
-		}
-
-		for _, v := range edbList {
-			_, ok := notIdMap[v.EdbInfoId]
-			// 在不配置的指标id列表内的话,那就过滤
-			if ok {
-				continue
-			}
-
-			// 加入到待配置的指标列表id
-			edbIdList = append(edbIdList, v.EdbInfoId)
-		}
-	} else {
-		edbIdList = req.EdbSelectIdList
-	}
-
-	if len(edbIdList) <= 0 {
-		br.Msg = "指标不能为空"
-		br.IsSendEmail = false
-		return
-	}
-
-	// 待添加的配置关系数据
-	addMappingList := make([]*edb_refresh.EdbRefreshMapping, 0)
-
-	// 待添加的日期配置项
-	addConfigList := make([]*edb_refresh.EdbRefreshConfig, 0)
-	for _, v := range req.List {
-		item, err := edb_refresh.GetEdbRefreshConfigListByCondition(v.RefreshFrequency, v.RefreshTime, v.RefreshFrequencyDay, v.RefreshAllData, v.RefreshDataNum)
-		if err != nil {
-			if err.Error() != utils.ErrNoRow() {
-				br.Msg = "保存失败"
-				br.ErrMsg = "保存失败,Err:" + err.Error()
-				return
-			}
-
-			addConfigList = append(addConfigList, &edb_refresh.EdbRefreshConfig{
-				RefreshFrequency:    v.RefreshFrequency,
-				RefreshFrequencyDay: v.RefreshFrequencyDay,
-				RefreshTime:         v.RefreshTime,
-				RefreshAllData:      v.RefreshAllData,
-				RefreshDataNum:      v.RefreshDataNum,
-				ModifyTime:          time.Now(),
-				CreateTime:          time.Now(),
-			})
-			continue
-		}
-
-		for _, edbId := range edbIdList {
-			addMappingList = append(addMappingList, &edb_refresh.EdbRefreshMapping{
-				EdbRefreshMappingId: 0,
-				Source:              req.Source,
-				SubSource:           req.SubSource,
-				EdbInfoId:           edbId,
-				EdbRefreshConfigId:  item.EdbRefreshConfigId,
-				SysUserId:           c.SysUser.AdminId,
-				SysUserRealName:     c.SysUser.RealName,
-				ModifyTime:          time.Now(),
-				CreateTime:          time.Now(),
-			})
-		}
-	}
-
 	// 保存
-	err = edb_refresh.SaveEdbRefreshConfig(req.Source, req.SubSource, c.SysUser.AdminId, c.SysUser.RealName, addConfigList, addMappingList, edbIdList)
+	err, errMsg, isSendEmail := data.SaveEdbRefreshConfig(req.Source, req.SubSource, req.ClassifyId, req.TerminalCode, req.Frequency, req.Keyword, req.Status, req.SysUserId, req.IsSelectAll, req.List, req.EdbSelectIdList, c.SysUser.AdminId, c.SysUser.RealName)
 	if err != nil {
-		br.Msg = `保存失败`
+		br.Msg = errMsg
 		br.ErrMsg = "保存失败,Err:" + err.Error()
+		br.IsSendEmail = isSendEmail
 		return
 	}
 
@@ -637,7 +465,7 @@ func (c *EdbInfoController) SaveEdbRefreshStatus() {
 	// 指标id列表
 	if req.IsSelectAll {
 		// 如果是列表全选
-		_, edbList, err := getList(req.Source, req.SubSource, req.ClassifyId, req.TerminalCode, req.SysUserId, req.Frequency, req.Keyword, req.Status, 0, 100000, "", "")
+		_, edbList, err := data.GetList(req.Source, req.SubSource, req.ClassifyId, req.TerminalCode, req.SysUserId, req.Frequency, req.Keyword, req.Status, 0, 100000, "", "")
 		if err != nil && err.Error() != utils.ErrNoRow() {
 			br.Msg = "获取失败"
 			br.ErrMsg = "获取数据失败,Err:" + err.Error()
@@ -695,177 +523,111 @@ func (c *EdbInfoController) SaveEdbRefreshStatus() {
 	br.Msg = "保存成功"
 }
 
-// getList
-// @Description: 获取指标列表
-// @author: Roc
-// @datetime 2024-01-08 15:14:16
-// @param source int
-// @param subSource int
-// @param classifyId int
-// @param terminalCode string
-// @param sysUserId string
-// @param frequency string
-// @param keyword string
-// @param startSize int
-// @param pageSize int
-// @return total int
-// @return list []*data_manage.BaseEdbInfo
-// @return err error
-func getList(source, subSource, classifyId int, terminalCode, sysUserId, frequency, keyword, status string, startSize, pageSize int, sortParam, sortType string) (total int, list []*data_manage.BaseEdbInfo, err error) {
-	var pars []interface{}
-	var condition string
-
-	list = make([]*data_manage.BaseEdbInfo, 0)
-
-	isStop := -1
-	if status == `暂停` {
-		isStop = 1
-	} else if status == "启用" {
-		isStop = 0
-	}
+// GetEdbRefreshEdbConfig
+// @Title 获取单个指标的刷新配置列表接口
+// @Description 获取单个指标的刷新配置列表接口
+// @Param   Source   query   int  true       "来源:1:同花顺,2:wind,3:彭博"
+// @Param   SubSource   query   int  true       "来源:0:经济数据库,1:日期序列"
+// @Param   EdbInfoId   query   int  false       "指标id"
+// @Success 200 {object} data_manage.RefreshBaseEdbInfoResp
+// @router /edb_info/refresh/edb_config [get]
+func (c *EdbInfoController) GetEdbRefreshEdbConfig() {
+	br := new(models.BaseResponse).Init()
 
-	switch source {
-	case utils.DATA_SOURCE_MYSTEEL_CHEMICAL: // 钢联
-		if classifyId > 0 {
-			condition += " AND base_from_mysteel_chemical_classify_id = ? "
-			pars = append(pars, classifyId)
-		}
-		if terminalCode != `` {
-			condition += " AND terminal_code = ? "
-			pars = append(pars, terminalCode)
-		}
-		if sysUserId != `` {
-			sysUserIdSlice := strings.Split(sysUserId, ",")
-			condition += ` AND sys_user_id IN (` + utils.GetOrmInReplace(len(sysUserIdSlice)) + `)`
-			pars = append(pars, sysUserIdSlice)
-		}
-		if frequency != `` {
-			condition += " AND frequency = ? "
-			pars = append(pars, frequency)
-		}
-		if keyword != `` {
-			keywordSlice := strings.Split(keyword, ",")
-			if len(keywordSlice) > 0 {
-				tmpConditionSlice := make([]string, 0)
-				tmpConditionSlice = append(tmpConditionSlice, ` index_name like ? or index_code like ? `)
-				pars = utils.GetLikeKeywordPars(pars, keyword, 2)
-
-				for _, v := range keywordSlice {
-					tmpConditionSlice = append(tmpConditionSlice, ` index_name like ? or index_code like ? `)
-					pars = utils.GetLikeKeywordPars(pars, v, 2)
-				}
-				condition += ` AND (` + strings.Join(tmpConditionSlice, " or ") + `)`
+	defer func() {
+		c.Data["json"] = br
+		c.ServeJSON()
+	}()
 
-			} else {
-				condition += ` index_name like ? or index_code like ? `
-				pars = utils.GetLikeKeywordPars(pars, keyword, 2)
-			}
-		}
+	source, _ := c.GetInt("Source")
+	subSource, _ := c.GetInt("SubSource")
+	edbInfoId, _ := c.GetInt("EdbInfoId")
 
-		if isStop >= 0 {
-			condition += " AND is_stop = ? "
-			pars = append(pars, isStop)
-		}
-		sortStr := ``
-		if sortParam != `` {
-			sortStr = fmt.Sprintf("%s %s,base_from_mysteel_chemical_index_id desc ", sortParam, sortType)
-		}
-		total, list, err = data_manage.GetMysteelChemicalBaseInfo(condition, pars, sortStr, startSize, pageSize)
-	case utils.DATA_SOURCE_YS: // 有色
-		if classifyId > 0 {
-			condition += " AND classify_id = ? "
-			pars = append(pars, classifyId)
-		}
-		if terminalCode != `` {
-			condition += " AND terminal_code = ? "
-			pars = append(pars, terminalCode)
-		}
-		if frequency != `` {
-			condition += " AND frequency = ? "
-			pars = append(pars, frequency)
-		}
-		if keyword != `` {
-			keywordSlice := strings.Split(keyword, ",")
-			if len(keywordSlice) > 0 {
-				tmpConditionSlice := make([]string, 0)
-				tmpConditionSlice = append(tmpConditionSlice, ` index_name like ? or index_code like ? `)
-				pars = utils.GetLikeKeywordPars(pars, keyword, 2)
-
-				for _, v := range keywordSlice {
-					tmpConditionSlice = append(tmpConditionSlice, ` index_name like ? or index_code like ? `)
-					pars = utils.GetLikeKeywordPars(pars, v, 2)
-				}
-				condition += ` AND (` + strings.Join(tmpConditionSlice, " or ") + `)`
+	if source <= 0 {
+		br.Msg = "来源不能为空"
+		br.IsSendEmail = false
+		return
+	}
 
-			} else {
-				condition += ` index_name like ? or index_code like ? `
-				pars = utils.GetLikeKeywordPars(pars, keyword, 2)
-			}
-		}
+	if edbInfoId <= 0 {
+		br.Msg = "指标不能为空"
+		br.IsSendEmail = false
+		return
+	}
 
-		if isStop >= 0 {
-			condition += " AND is_stop = ? "
-			pars = append(pars, isStop)
-		}
+	// 获取指标的刷新配置列表
+	list, err := edb_refresh.GetEdbRefreshConfigListBySourceAndeEdbInfoId(source, subSource, edbInfoId)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = err.Error()
+		return
+	}
 
-		sortStr := ``
-		if sortParam != `` {
-			sortStr = fmt.Sprintf("%s %s,base_from_smm_index_id desc ", sortParam, sortType)
-		}
+	if len(list) > 0 {
+		br.Ret = 200
+		br.Success = true
+		br.Msg = "获取成功"
+		br.Data = list
+		return
+	}
 
-		total, list, err = data_manage.GetSmmBaseInfo(condition, pars, sortStr, startSize, pageSize)
-	default:
-		condition += ` AND source = ? AND sub_source = ? `
-		pars = append(pars, source, subSource)
+	// 如果没有找到该指标的配置,那么就查询默认配置
 
-		if isStop >= 0 {
-			condition += " AND no_update = ? "
-			pars = append(pars, isStop)
-		}
+	var frequency string
 
-		if classifyId > 0 {
-			condition += " AND classify_id = ? "
-			pars = append(pars, classifyId)
-		}
-		if terminalCode != `` {
-			condition += " AND terminal_code = ? "
-			pars = append(pars, terminalCode)
-		}
-		if sysUserId != `` {
-			sysUserIdSlice := strings.Split(sysUserId, ",")
-			condition += ` AND sys_user_id IN (` + utils.GetOrmInReplace(len(sysUserIdSlice)) + `)`
-			pars = append(pars, sysUserIdSlice)
+	// 根据类型查找指标的频度信息
+	switch source {
+	case utils.DATA_SOURCE_MYSTEEL_CHEMICAL: // 钢联
+		item, err := data_manage.GetBaseFromMysteelChemicalIndexByIndexId(edbInfoId)
+		if err != nil {
+			br.Msg = "获取指标信息失败"
+			br.ErrMsg = err.Error()
+			return
 		}
-		if frequency != `` {
-			condition += " AND frequency = ? "
-			pars = append(pars, frequency)
+		frequency = item.Frequency
+	case utils.DATA_SOURCE_YS: // 有色
+		item, err := data_manage.GetSmmIndexById(edbInfoId)
+		if err != nil {
+			br.Msg = "获取指标信息失败"
+			br.ErrMsg = err.Error()
+			return
 		}
-		if keyword != `` {
-			keywordSlice := strings.Split(keyword, ",")
-			if len(keywordSlice) > 0 {
-				tmpConditionSlice := make([]string, 0)
-				tmpConditionSlice = append(tmpConditionSlice, ` edb_name like ? or edb_code like ? `)
-				pars = utils.GetLikeKeywordPars(pars, keyword, 2)
-
-				for _, v := range keywordSlice {
-					tmpConditionSlice = append(tmpConditionSlice, ` edb_name like ? or edb_code like ? `)
-					pars = utils.GetLikeKeywordPars(pars, v, 2)
-				}
-				condition += ` AND (` + strings.Join(tmpConditionSlice, " or ") + `)`
-
-			} else {
-				condition += ` edb_name like ? or edb_code like ? `
-				pars = utils.GetLikeKeywordPars(pars, keyword, 2)
-			}
+		frequency = item.Frequency
+	default:
+		item, err := data_manage.GetEdbInfoById(edbInfoId)
+		if err != nil {
+			br.Msg = "获取指标信息失败"
+			br.ErrMsg = err.Error()
+			return
 		}
+		frequency = item.Frequency
+	}
 
-		sortStr := ``
-		if sortParam != `` {
-			sortStr = fmt.Sprintf("%s %s,edb_info_id desc ", sortParam, sortType)
-		}
+	if frequency == `` {
+		br.Msg = "获取的指标频度信息异常"
+		br.IsSendEmail = false
+		return
+	}
 
-		total, list, err = data_manage.GetEdbBaseInfo(condition, pars, sortStr, startSize, pageSize)
+	tmpList, err := edb_refresh.GetListBySourceAndFrequency(source, subSource, frequency)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = err.Error()
+		return
+	}
+	list = make([]*edb_refresh.EdbRefreshConfigItem, 0)
+	for _, v := range tmpList {
+		list = append(list, &edb_refresh.EdbRefreshConfigItem{
+			RefreshFrequency:    v.RefreshFrequency,
+			RefreshFrequencyDay: v.RefreshFrequencyDay,
+			RefreshTime:         v.RefreshTime,
+			RefreshAllData:      v.RefreshAllData,
+			RefreshDataNum:      v.RefreshDataNum,
+		})
 	}
 
-	return
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = list
 }

+ 14 - 2
models/data_manage/edb_info.go

@@ -327,6 +327,7 @@ type EdbInfoList struct {
 	SubSourceName    string                  `description:"子数据来源名称"`
 	IndicatorCode    string                  `description:"指标代码"`
 	StockCode        string                  `description:"证券代码"`
+	NoUpdate         int8                    `description:"是否停止更新,0:继续更新;1:停止更新"`
 }
 
 type EdbDataInsertConfigItem struct {
@@ -1737,8 +1738,19 @@ type EdbInfoSmmExistCheckResp struct {
 	ExistAll bool `description:"是否全部重复"`
 }
 
-// GetEdbBaseInfo 获取指标库数据列表
-func GetEdbBaseInfo(condition string, pars []interface{}, orderBy string, startSize, pageSize int) (total int, items []*BaseEdbInfo, err error) {
+// GetEdbBaseInfoList
+// @Description: 获取指标库数据列表
+// @author: Roc
+// @datetime 2024-01-10 14:28:22
+// @param condition string
+// @param pars []interface{}
+// @param orderBy string
+// @param startSize int
+// @param pageSize int
+// @return total int
+// @return items []*BaseEdbInfo
+// @return err error
+func GetEdbBaseInfoList(condition string, pars []interface{}, orderBy string, startSize, pageSize int) (total int, items []*BaseEdbInfo, err error) {
 	o := orm.NewOrmUsingDB("data")
 	// 数量汇总
 	totalSql := ` SELECT count(1) FROM edb_info WHERE 1=1 `

+ 65 - 0
models/data_manage/edb_refresh/edb_refresh_config.go

@@ -172,3 +172,68 @@ func SaveEdbRefreshConfig(source, subSource, sysUserId int, sysUserRealName stri
 	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
+}

+ 17 - 0
models/data_manage/edb_refresh/edb_refresh_default_config.go

@@ -87,6 +87,23 @@ func GetListBySourceAndFrequency(source, subSource int, frequency string) (list
 	return
 }
 
+// GetAllListBySourceList
+// @Description: 根据来源列表获取所有默认刷新配置列表
+// @author: Roc
+// @datetime 2024-01-10 14:54:54
+// @param source int
+// @param subSource int
+// @return list []*EdbRefreshDefaultConfig
+// @return err error
+func GetAllListBySourceList(source, subSource int) (list []*EdbRefreshDefaultConfig, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM edb_refresh_default_config
+         WHERE source = ? AND sub_source = ? ORDER BY id ASC `
+	_, err = o.Raw(sql, source, subSource).QueryRows(&list)
+
+	return
+}
+
 // SaveEdbRefreshDefaultConfig
 // @Description: 保存配置项
 // @author: Roc

+ 15 - 3
models/data_manage/mysteel_chemical_index.go

@@ -31,6 +31,7 @@ type BaseFromMysteelChemicalIndex struct {
 	MergeFilePath                     string    `description:"合并文件"`
 	TerminalCode                      string    `description:"终端编码"`
 	IsStop                            int       `description:"是否停更:1:停更,0:未停更"`
+	EndValue                          float64   `description:"指标的最新值"`
 }
 
 // Update 更新钢联化工指标基础信息
@@ -361,8 +362,19 @@ type RefreshBaseEdbInfoResp struct {
 	List   []*BaseEdbInfo
 }
 
-// GetMysteelChemicalBaseInfo 获取钢联化工数据列表
-func GetMysteelChemicalBaseInfo(condition string, pars []interface{}, orderBy string, startSize, pageSize int) (total int, items []*BaseEdbInfo, err error) {
+// GetMysteelChemicalBaseInfoList
+// @Description: 获取钢联化工数据列表
+// @author: Roc
+// @datetime 2024-01-10 14:28:35
+// @param condition string
+// @param pars []interface{}
+// @param orderBy string
+// @param startSize int
+// @param pageSize int
+// @return total int
+// @return items []*BaseEdbInfo
+// @return err error
+func GetMysteelChemicalBaseInfoList(condition string, pars []interface{}, orderBy string, startSize, pageSize int) (total int, items []*BaseEdbInfo, err error) {
 	o := orm.NewOrmUsingDB("data")
 
 	// 数量汇总
@@ -376,7 +388,7 @@ func GetMysteelChemicalBaseInfo(condition string, pars []interface{}, orderBy st
 	}
 
 	// 列表数据
-	sql := ` SELECT base_from_mysteel_chemical_index_id as edb_info_id, base_from_mysteel_chemical_classify_id as classify_id,index_code,index_name,end_date,sys_user_id,sys_user_real_name,frequency,is_stop,terminal_code FROM base_from_mysteel_chemical_index WHERE 1=1  `
+	sql := ` SELECT base_from_mysteel_chemical_index_id as edb_info_id, base_from_mysteel_chemical_classify_id as classify_id,index_code,index_name,end_date,end_value,sys_user_id,sys_user_real_name,frequency,is_stop,terminal_code FROM base_from_mysteel_chemical_index WHERE 1=1  `
 	if condition != "" {
 		sql += condition
 	}

+ 33 - 3
models/data_manage/smm_data.go

@@ -47,6 +47,8 @@ type SmmIndex struct {
 	FinishTime         string
 	CreateTime         string
 	ModifyTime         string
+	IsStop             int     `description:"是否停更:1:停更,0:未停更"`
+	EndValue           float64 `description:"指标的最新值"`
 }
 
 type SmmIndexItem struct {
@@ -68,6 +70,8 @@ type SmmIndexItem struct {
 	FinishTime         string
 	CreateTime         string
 	ModifyTime         string
+	IsStop             int     `description:"是否停更:1:停更,0:未停更"`
+	EndValue           float64 `description:"指标的最新值"`
 }
 
 func GetSmmIndex(condition string, pars interface{}) (items []*SmmIndex, err error) {
@@ -81,6 +85,21 @@ func GetSmmIndex(condition string, pars interface{}) (items []*SmmIndex, err err
 	return
 }
 
+// GetSmmIndexById
+// @Description: 根据id获取指标信息
+// @author: Roc
+// @datetime 2024-01-10 14:25:26
+// @param basFromSmmIndexId int
+// @return item *SmmIndex
+// @return err error
+func GetSmmIndexById(basFromSmmIndexId int) (item *SmmIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT * FROM base_from_smm_index WHERE base_from_smm_index_id = ?  `
+	err = o.Raw(sql, basFromSmmIndexId).QueryRow(&item)
+
+	return
+}
+
 type SmmExportIndex struct {
 	TypeName   string
 	IndexCode  string
@@ -231,8 +250,19 @@ func GetExportSmmIndexDataByCodes(indexCodes []string) (items []*ExportSmmIndexD
 	return
 }
 
-// GetSmmBaseInfo 获取有色数据列表
-func GetSmmBaseInfo(condition string, pars []interface{}, orderBy string, startSize, pageSize int) (total int, items []*BaseEdbInfo, err error) {
+// GetSmmBaseInfoList
+// @Description: 获取有色数据列表
+// @author: Roc
+// @datetime 2024-01-10 14:28:29
+// @param condition string
+// @param pars []interface{}
+// @param orderBy string
+// @param startSize int
+// @param pageSize int
+// @return total int
+// @return items []*BaseEdbInfo
+// @return err error
+func GetSmmBaseInfoList(condition string, pars []interface{}, orderBy string, startSize, pageSize int) (total int, items []*BaseEdbInfo, err error) {
 	o := orm.NewOrmUsingDB("data")
 
 	// 数量汇总
@@ -246,7 +276,7 @@ func GetSmmBaseInfo(condition string, pars []interface{}, orderBy string, startS
 	}
 
 	// 列表数据
-	sql := ` SELECT base_from_smm_index_id as edb_info_id, classify_id,index_code,index_name,end_date,frequency,is_stop,terminal_code FROM base_from_smm_index WHERE 1=1  `
+	sql := ` SELECT base_from_smm_index_id as edb_info_id, classify_id,index_code,index_name,end_date,end_value,frequency,is_stop,terminal_code FROM base_from_smm_index WHERE 1=1  `
 	if condition != "" {
 		sql += condition
 	}

+ 9 - 0
routers/commentsRouter.go

@@ -2977,6 +2977,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:EdbInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:EdbInfoController"],
+        beego.ControllerComments{
+            Method: "GetEdbRefreshEdbConfig",
+            Router: `/edb_info/refresh/edb_config`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:EdbInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:EdbInfoController"],
         beego.ControllerComments{
             Method: "RefreshEdbList",

+ 618 - 0
services/data/edb_info_refresh.go

@@ -0,0 +1,618 @@
+package data
+
+import (
+	"encoding/json"
+	"errors"
+	"eta/eta_api/models/data_manage"
+	"eta/eta_api/models/data_manage/edb_refresh"
+	"eta/eta_api/models/data_manage/edb_refresh/request"
+	"eta/eta_api/utils"
+	"fmt"
+	"strings"
+	"time"
+)
+
+// 所有刷新配置key
+var allDefaultEdbRefreshConfigKey = `edb_refresh_config:default:all:`
+
+// GetAllDefaultEdbRefreshConfigListBySourceList
+// @Description: 获取默认的所有刷新配置列表
+// @author: Roc
+// @datetime 2024-01-10 15:03:36
+// @param source int
+// @param subSource int
+// @return list []*edb_refresh.EdbRefreshDefaultConfig
+// @return err error
+func GetAllDefaultEdbRefreshConfigListBySourceList(source, subSource int) (list []*edb_refresh.EdbRefreshDefaultConfig, err error) {
+	key := getAllDefaultEdbRefreshConfigKey(source, subSource)
+	if utils.Re == nil {
+		if utils.Re == nil && utils.Rc.IsExist(key) {
+			if data, err1 := utils.Rc.RedisBytes(key); err1 == nil {
+				err = json.Unmarshal(data, &list)
+				return
+			}
+		}
+	}
+
+	list, err = edb_refresh.GetAllListBySourceList(source, subSource)
+	if err != nil {
+		return
+	}
+
+	// 将数据加入缓存
+	if utils.Re == nil {
+		data, _ := json.Marshal(list)
+		utils.Rc.Put(key, data, 2*time.Hour)
+	}
+
+	return
+}
+
+// SaveEdbRefreshDefaultConfig
+// @Description: 设置默认的指标刷新配置接口
+// @author: Roc
+// @datetime 2024-01-10 15:11:19
+// @param source int
+// @param subSource int
+// @param frequency string
+// @param list []request.RefreshConfigReq
+// @return err error
+// @return errMsg string
+// @return isSendEmail bool
+func SaveEdbRefreshDefaultConfig(source, subSource int, frequency string, list []request.RefreshConfigReq) (err error, errMsg string, isSendEmail bool) {
+	isSendEmail = true
+	errMsg = `保存失败`
+
+	if source <= 0 {
+		errMsg = "来源不能为空"
+		err = errors.New(errMsg)
+		isSendEmail = false
+		return
+	}
+
+	if frequency == `` {
+		errMsg = "频度不能为空"
+		err = errors.New(errMsg)
+		isSendEmail = false
+		return
+	}
+
+	lenConf := len(list)
+	if lenConf == 0 {
+		errMsg = "至少需要一个刷新配置"
+		err = errors.New(errMsg)
+		isSendEmail = false
+		return
+	}
+	if lenConf > 5 {
+		errMsg = "刷新时间设置最多不超过5个"
+		err = errors.New(errMsg)
+		isSendEmail = false
+		return
+	}
+
+	tmpArr := []string{"每周", "每旬", "每月", "每季", "每半年", "每年"}
+	// 配置的map,避免同一种类型配置同一个时间
+	configMap := make(map[string]string)
+	for _, v := range list {
+		if utils.InArrayByStr(tmpArr, v.RefreshFrequency) && v.RefreshFrequencyDay < 0 {
+			errMsg = "请选择具体日期"
+			err = errors.New(errMsg)
+			isSendEmail = false
+			return
+		}
+
+		if v.RefreshTime == "" {
+			errMsg = "请选择具体时间"
+			err = errors.New(errMsg)
+			isSendEmail = false
+			return
+		}
+
+		// 配置的map,避免同一种类型配置同一个时间
+		key := fmt.Sprint(v.RefreshFrequency, "_", v.RefreshFrequencyDay, "_", v.RefreshTime)
+		if _, ok := configMap[key]; ok {
+			errMsg = "刷新频率和日期不能重复"
+			err = errors.New(errMsg)
+			isSendEmail = false
+			return
+		}
+		configMap[key] = key
+	}
+
+	addList := make([]*edb_refresh.EdbRefreshDefaultConfig, 0)
+	for _, v := range list {
+		addList = append(addList, &edb_refresh.EdbRefreshDefaultConfig{
+			Source:              source,
+			SubSource:           subSource,
+			Frequency:           frequency,
+			RefreshFrequency:    v.RefreshFrequency,
+			RefreshFrequencyDay: v.RefreshFrequencyDay,
+			RefreshAllData:      v.RefreshAllData,
+			RefreshTime:         v.RefreshTime,
+			RefreshDataNum:      v.RefreshDataNum,
+			ModifyTime:          time.Now(),
+			CreateTime:          time.Now(),
+		})
+	}
+
+	// 保存
+	err = edb_refresh.SaveEdbRefreshDefaultConfig(source, subSource, frequency, addList)
+
+	// 清除缓存
+	{
+		key := getAllDefaultEdbRefreshConfigKey(source, subSource)
+		if utils.Re == nil {
+			_ = utils.Rc.Delete(key)
+		}
+	}
+
+	return
+}
+
+// SaveEdbRefreshConfig
+// @Description: 设置指标刷新配置接口
+// @author: Roc
+// @datetime 2024-01-10 15:41:45
+// @param source int
+// @param subSource int
+// @param classifyId int
+// @param terminalCode string
+// @param frequency string
+// @param keyword string
+// @param status string
+// @param sysUserIdStr string
+// @param isSelectAll bool
+// @param list []request.RefreshConfigReq
+// @param edbSelectIdList []int
+// @param sysUserId int
+// @param sysUserRealName string
+// @return err error
+// @return errMsg string
+// @return isSendEmail bool
+func SaveEdbRefreshConfig(source, subSource, classifyId int, terminalCode, frequency, keyword, status, sysUserIdStr string, isSelectAll bool, list []request.RefreshConfigReq, edbSelectIdList []int, sysUserId int, sysUserRealName string) (err error, errMsg string, isSendEmail bool) {
+	isSendEmail = true
+	errMsg = `保存失败`
+
+	if source <= 0 {
+		errMsg = "来源不能为空"
+		err = errors.New(errMsg)
+		isSendEmail = false
+		return
+	}
+
+	lenConf := len(list)
+	if lenConf == 0 {
+		errMsg = "至少需要一个刷新配置"
+		err = errors.New(errMsg)
+		isSendEmail = false
+		return
+	}
+	if lenConf > 5 {
+		errMsg = "刷新时间设置最多不超过5个"
+		err = errors.New(errMsg)
+		isSendEmail = false
+		return
+	}
+
+	tmpArr := []string{"每周", "每旬", "每月", "每季", "每半年", "每年"}
+
+	// 配置的map,避免同一种类型配置同一个时间
+	configMap := make(map[string]string)
+	for _, v := range list {
+		if utils.InArrayByStr(tmpArr, v.RefreshFrequency) && v.RefreshFrequencyDay < 0 {
+			errMsg = "请选择具体日期"
+			err = errors.New(errMsg)
+			isSendEmail = false
+			return
+		}
+
+		if v.RefreshTime == "" {
+			errMsg = "请选择具体时间"
+			err = errors.New(errMsg)
+			isSendEmail = false
+			return
+		}
+
+		// 配置的map,避免同一种类型配置同一个时间
+		key := fmt.Sprint(v.RefreshFrequency, "_", v.RefreshFrequencyDay, "_", v.RefreshTime)
+		if _, ok := configMap[key]; ok {
+			errMsg = "刷新频率和日期不能重复"
+			err = errors.New(errMsg)
+			isSendEmail = false
+			return
+		}
+		configMap[key] = key
+	}
+
+	edbIdList := make([]int, 0)
+	// 指标id列表
+	if isSelectAll {
+		// 如果是列表全选
+		_, edbList, tmpErr := GetList(source, subSource, classifyId, terminalCode, sysUserIdStr, frequency, keyword, status, 0, 100000, "", "")
+		if tmpErr != nil && tmpErr.Error() != utils.ErrNoRow() {
+			err = tmpErr
+			return
+		}
+
+		// 不配置的指标id
+		notIdMap := make(map[int]int, 0)
+		for _, v := range edbSelectIdList {
+			notIdMap[v] = v
+		}
+
+		for _, v := range edbList {
+			_, ok := notIdMap[v.EdbInfoId]
+			// 在不配置的指标id列表内的话,那就过滤
+			if ok {
+				continue
+			}
+
+			// 加入到待配置的指标列表id
+			edbIdList = append(edbIdList, v.EdbInfoId)
+		}
+	} else {
+		edbIdList = edbSelectIdList
+	}
+
+	if len(edbIdList) <= 0 {
+		errMsg = "指标不能为空"
+		err = errors.New(errMsg)
+		isSendEmail = false
+		return
+	}
+
+	// 待添加的配置关系数据
+	addMappingList := make([]*edb_refresh.EdbRefreshMapping, 0)
+
+	// 待添加的日期配置项
+	addConfigList := make([]*edb_refresh.EdbRefreshConfig, 0)
+	for _, v := range list {
+		item, tmpErr := edb_refresh.GetEdbRefreshConfigListByCondition(v.RefreshFrequency, v.RefreshTime, v.RefreshFrequencyDay, v.RefreshAllData, v.RefreshDataNum)
+		if tmpErr != nil {
+			if tmpErr.Error() != utils.ErrNoRow() {
+				err = tmpErr
+				return
+			}
+
+			addConfigList = append(addConfigList, &edb_refresh.EdbRefreshConfig{
+				RefreshFrequency:    v.RefreshFrequency,
+				RefreshFrequencyDay: v.RefreshFrequencyDay,
+				RefreshTime:         v.RefreshTime,
+				RefreshAllData:      v.RefreshAllData,
+				RefreshDataNum:      v.RefreshDataNum,
+				ModifyTime:          time.Now(),
+				CreateTime:          time.Now(),
+			})
+			continue
+		}
+
+		for _, edbId := range edbIdList {
+			addMappingList = append(addMappingList, &edb_refresh.EdbRefreshMapping{
+				EdbRefreshMappingId: 0,
+				Source:              source,
+				SubSource:           subSource,
+				EdbInfoId:           edbId,
+				EdbRefreshConfigId:  item.EdbRefreshConfigId,
+				SysUserId:           sysUserId,
+				SysUserRealName:     sysUserRealName,
+				ModifyTime:          time.Now(),
+				CreateTime:          time.Now(),
+			})
+		}
+	}
+
+	// 保存
+	err = edb_refresh.SaveEdbRefreshConfig(source, subSource, sysUserId, sysUserRealName, addConfigList, addMappingList, edbIdList)
+
+	return
+}
+
+// HandleRefreshTime
+// @Description: 处理刷新时间的显示
+// @author: Roc
+// @datetime 2024-01-10 17:00:03
+// @param source int
+// @param subSource int
+// @param list []*data_manage.BaseEdbInfo
+// @return newList []*data_manage.BaseEdbInfo
+// @return err error
+// @return errMsg string
+// @return isSendEmail bool
+func HandleRefreshTime(source, subSource int, list []*data_manage.BaseEdbInfo) (newList []*data_manage.BaseEdbInfo, err error, errMsg string, isSendEmail bool) {
+	isSendEmail = true
+	errMsg = "获取失败"
+	newList = list
+
+	// 默认刷新配置
+	defaultEdbRefreshConfigMap := make(map[string]string)
+	{
+		// 获取默认配置
+		allDefaultEdbRefreshConfigList, tmpErr := GetAllDefaultEdbRefreshConfigListBySourceList(source, subSource)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+
+		defaultEdbRefreshConfigListMap := make(map[string][]string)
+		for _, v := range allDefaultEdbRefreshConfigList {
+			tmp, ok := defaultEdbRefreshConfigListMap[v.Frequency]
+			if !ok {
+				tmp = make([]string, 0)
+			}
+			defaultEdbRefreshConfigListMap[v.Frequency] = append(tmp, GetRefreshStr(v.RefreshFrequency, v.RefreshFrequencyDay, v.RefreshTime))
+		}
+		for k, v := range defaultEdbRefreshConfigListMap {
+			defaultEdbRefreshConfigMap[k] = strings.Join(v, ",")
+		}
+
+	}
+
+	edbInfoIdList := make([]int, 0)
+	for _, v := range newList {
+		edbInfoIdList = append(edbInfoIdList, v.EdbInfoId)
+	}
+
+	// 指标的刷新时间配置
+	edbRefreshConfigMap := make(map[int]string)
+	{
+		// 获取指标的单独配置
+		configList, tmpErr := edb_refresh.GetEdbRefreshConfigAndEdbListBySourceAndeEdbInfoId(source, subSource, edbInfoIdList)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+
+		edbRefreshConfigListMap := make(map[int][]string)
+		for _, v := range configList {
+			tmp, ok := edbRefreshConfigListMap[v.EdbInfoId]
+			if !ok {
+				tmp = make([]string, 0)
+			}
+			edbRefreshConfigListMap[v.EdbInfoId] = append(tmp, GetRefreshStr(v.RefreshFrequency, v.RefreshFrequencyDay, v.RefreshTime))
+		}
+		for k, v := range edbRefreshConfigListMap {
+			edbRefreshConfigMap[k] = strings.Join(v, ",")
+		}
+	}
+
+	// 处理刷新时间
+	for _, v := range newList {
+		refreshTime, ok := edbRefreshConfigMap[v.EdbInfoId]
+		if ok {
+			v.RefreshTime = refreshTime
+			continue
+		}
+		v.RefreshTime = defaultEdbRefreshConfigMap[v.Frequency]
+	}
+
+	return
+}
+
+// GetList
+// @Description: 获取指标列表
+// @author: Roc
+// @datetime 2024-01-08 15:14:16
+// @param source int
+// @param subSource int
+// @param classifyId int
+// @param terminalCode string
+// @param sysUserId string
+// @param frequency string
+// @param keyword string
+// @param startSize int
+// @param pageSize int
+// @return total int
+// @return list []*data_manage.BaseEdbInfo
+// @return err error
+func GetList(source, subSource, classifyId int, terminalCode, sysUserId, frequency, keyword, status string, startSize, pageSize int, sortParam, sortType string) (total int, list []*data_manage.BaseEdbInfo, err error) {
+	var pars []interface{}
+	var condition string
+
+	list = make([]*data_manage.BaseEdbInfo, 0)
+
+	isStop := -1
+	if status == `暂停` {
+		isStop = 1
+	} else if status == "启用" {
+		isStop = 0
+	}
+
+	switch source {
+	case utils.DATA_SOURCE_MYSTEEL_CHEMICAL: // 钢联
+		if classifyId > 0 {
+			condition += " AND base_from_mysteel_chemical_classify_id = ? "
+			pars = append(pars, classifyId)
+		}
+		if terminalCode != `` {
+			condition += " AND terminal_code = ? "
+			pars = append(pars, terminalCode)
+		}
+		if sysUserId != `` {
+			sysUserIdSlice := strings.Split(sysUserId, ",")
+			condition += ` AND sys_user_id IN (` + utils.GetOrmInReplace(len(sysUserIdSlice)) + `)`
+			pars = append(pars, sysUserIdSlice)
+		}
+		if frequency != `` {
+			condition += " AND frequency = ? "
+			pars = append(pars, frequency)
+		}
+		if keyword != `` {
+			keywordSlice := strings.Split(keyword, ",")
+			if len(keywordSlice) > 0 {
+				tmpConditionSlice := make([]string, 0)
+				tmpConditionSlice = append(tmpConditionSlice, ` index_name like ? or index_code like ? `)
+				pars = utils.GetLikeKeywordPars(pars, keyword, 2)
+
+				for _, v := range keywordSlice {
+					tmpConditionSlice = append(tmpConditionSlice, ` index_name like ? or index_code like ? `)
+					pars = utils.GetLikeKeywordPars(pars, v, 2)
+				}
+				condition += ` AND (` + strings.Join(tmpConditionSlice, " or ") + `)`
+
+			} else {
+				condition += ` index_name like ? or index_code like ? `
+				pars = utils.GetLikeKeywordPars(pars, keyword, 2)
+			}
+		}
+
+		if isStop >= 0 {
+			condition += " AND is_stop = ? "
+			pars = append(pars, isStop)
+		}
+		sortStr := ``
+		if sortParam != `` {
+			sortStr = fmt.Sprintf("%s %s,base_from_mysteel_chemical_index_id desc ", sortParam, sortType)
+		}
+		total, list, err = data_manage.GetMysteelChemicalBaseInfoList(condition, pars, sortStr, startSize, pageSize)
+	case utils.DATA_SOURCE_YS: // 有色
+		if classifyId > 0 {
+			condition += " AND classify_id = ? "
+			pars = append(pars, classifyId)
+		}
+		if terminalCode != `` {
+			condition += " AND terminal_code = ? "
+			pars = append(pars, terminalCode)
+		}
+		if frequency != `` {
+			condition += " AND frequency = ? "
+			pars = append(pars, frequency)
+		}
+		if keyword != `` {
+			keywordSlice := strings.Split(keyword, ",")
+			if len(keywordSlice) > 0 {
+				tmpConditionSlice := make([]string, 0)
+				tmpConditionSlice = append(tmpConditionSlice, ` index_name like ? or index_code like ? `)
+				pars = utils.GetLikeKeywordPars(pars, keyword, 2)
+
+				for _, v := range keywordSlice {
+					tmpConditionSlice = append(tmpConditionSlice, ` index_name like ? or index_code like ? `)
+					pars = utils.GetLikeKeywordPars(pars, v, 2)
+				}
+				condition += ` AND (` + strings.Join(tmpConditionSlice, " or ") + `)`
+
+			} else {
+				condition += ` index_name like ? or index_code like ? `
+				pars = utils.GetLikeKeywordPars(pars, keyword, 2)
+			}
+		}
+
+		if isStop >= 0 {
+			condition += " AND is_stop = ? "
+			pars = append(pars, isStop)
+		}
+
+		sortStr := ``
+		if sortParam != `` {
+			sortStr = fmt.Sprintf("%s %s,base_from_smm_index_id desc ", sortParam, sortType)
+		}
+
+		total, list, err = data_manage.GetSmmBaseInfoList(condition, pars, sortStr, startSize, pageSize)
+	default:
+		condition += ` AND source = ? AND sub_source = ? `
+		pars = append(pars, source, subSource)
+
+		if isStop >= 0 {
+			condition += " AND no_update = ? "
+			pars = append(pars, isStop)
+		}
+
+		if classifyId > 0 {
+			condition += " AND classify_id = ? "
+			pars = append(pars, classifyId)
+		}
+		if terminalCode != `` {
+			condition += " AND terminal_code = ? "
+			pars = append(pars, terminalCode)
+		}
+		if sysUserId != `` {
+			sysUserIdSlice := strings.Split(sysUserId, ",")
+			condition += ` AND sys_user_id IN (` + utils.GetOrmInReplace(len(sysUserIdSlice)) + `)`
+			pars = append(pars, sysUserIdSlice)
+		}
+		if frequency != `` {
+			condition += " AND frequency = ? "
+			pars = append(pars, frequency)
+		}
+		if keyword != `` {
+			keywordSlice := strings.Split(keyword, ",")
+			if len(keywordSlice) > 0 {
+				tmpConditionSlice := make([]string, 0)
+				tmpConditionSlice = append(tmpConditionSlice, ` edb_name like ? or edb_code like ? `)
+				pars = utils.GetLikeKeywordPars(pars, keyword, 2)
+
+				for _, v := range keywordSlice {
+					tmpConditionSlice = append(tmpConditionSlice, ` edb_name like ? or edb_code like ? `)
+					pars = utils.GetLikeKeywordPars(pars, v, 2)
+				}
+				condition += ` AND (` + strings.Join(tmpConditionSlice, " or ") + `)`
+
+			} else {
+				condition += ` edb_name like ? or edb_code like ? `
+				pars = utils.GetLikeKeywordPars(pars, keyword, 2)
+			}
+		}
+
+		sortStr := ``
+		if sortParam != `` {
+			sortStr = fmt.Sprintf("%s %s,edb_info_id desc ", sortParam, sortType)
+		}
+
+		total, list, err = data_manage.GetEdbBaseInfoList(condition, pars, sortStr, startSize, pageSize)
+	}
+
+	return
+}
+
+// getAllDefaultEdbRefreshConfigKey
+// @Description: 获取默认的所有刷新配置key
+// @author: Roc
+// @datetime 2024-01-10 15:02:49
+// @param source int
+// @param subSource int
+// @return string
+func getAllDefaultEdbRefreshConfigKey(source, subSource int) string {
+	return allDefaultEdbRefreshConfigKey + fmt.Sprintf("%d_%d", source, subSource)
+}
+
+// GetRefreshStr
+// @Description: 获取刷新配置的中文字符串
+// @author: Roc
+// @datetime 2024-01-10 16:05:10
+// @param refreshFrequency string
+// @param refreshFrequencyDay int
+// @param refreshTime string
+// @return string
+func GetRefreshStr(refreshFrequency string, refreshFrequencyDay int, refreshTime string) string {
+	refreshDayStr := ``
+	//if refreshFrequency != "每自然日" && refreshFrequency != "每交易日"
+	switch refreshFrequency {
+	case "每自然日", "每交易日":
+	case "每周":
+		switch refreshFrequencyDay {
+		case 0:
+			refreshDayStr = "日"
+		case 1:
+			refreshDayStr = "一"
+		case 2:
+			refreshDayStr = "二"
+		case 3:
+			refreshDayStr = "三"
+		case 4:
+			refreshDayStr = "四"
+		case 5:
+			refreshDayStr = "五"
+		case 6:
+			refreshDayStr = "六"
+		case 7:
+			refreshDayStr = "日"
+		}
+	default:
+		if refreshFrequencyDay > 0 {
+			refreshDayStr = fmt.Sprintf("第%d天", refreshFrequencyDay)
+		} else {
+			refreshDayStr = `最后一天`
+		}
+	}
+	return refreshFrequency + refreshDayStr + " " + refreshTime
+}