Browse Source

fix:兼容mongo配置

Roc 10 months ago
parent
commit
0e67a58af7

+ 5 - 5
controllers/base_from_business.go

@@ -12,7 +12,7 @@ import (
 	"time"
 )
 
-// BusinessIndexController 外部数据(商家)
+// BusinessIndexController 自有数据(商家)
 type BusinessIndexController struct {
 	BaseAuthController
 }
@@ -50,8 +50,8 @@ func (c *BusinessIndexController) HandleBusinessIndexData() {
 }
 
 // Add
-// @Title 新增外部数据(商家)指标接口
-// @Description 新增外部数据(商家)指标接口
+// @Title 新增自有数据(商家)指标接口
+// @Description 新增自有数据(商家)指标接口
 // @Success 200 {object} models.AddEdbBaseInfoReq
 // @router /add [post]
 func (c *BusinessIndexController) Add() {
@@ -147,8 +147,8 @@ func (c *BusinessIndexController) Add() {
 }
 
 // Edit
-// @Title 编辑外部数据(商家)指标接口
-// @Description 编辑外部数据(商家)指标接口
+// @Title 编辑自有数据(商家)指标接口
+// @Description 编辑自有数据(商家)指标接口
 // @Success 200 {object} models.EditEdbBaseInfoReq
 // @router /edit [post]
 func (c *BusinessIndexController) Edit() {

+ 1 - 1
models/base_from_business.go

@@ -30,7 +30,7 @@ type BaseFromBusinessIndex struct {
 }
 
 // EdbBusinessSource
-// @Description: 外部数据(商家)指标来源
+// @Description: 自有数据(商家)指标来源
 type EdbBusinessSource struct {
 	EdbBusinessSourceId int64     `orm:"column(edb_business_source_id);pk"`
 	SourceName          string    `description:"来源名称"` // 来源名称

+ 2 - 2
models/db.go

@@ -77,7 +77,7 @@ func init() {
 	// 初始化指标刷新
 	initEdbRefresh()
 
-	// 外部数据指标
+	// 自有数据指标
 	initBusinessEdb()
 
 	// 初始化部分数据表变量(直接init会有顺序问题=_=!)
@@ -169,6 +169,6 @@ func initEdbRefresh() {
 func initBusinessEdb() {
 	orm.RegisterModel(
 		new(BaseFromBusinessIndex), // 外部指标(商家系统)表
-		new(EdbBusinessSource),     // 外部数据(商家)指标来源
+		new(EdbBusinessSource),     // 自有数据(商家)指标来源
 	)
 }

+ 3 - 3
models/edb_data_business.go

@@ -12,7 +12,7 @@ import (
 	"time"
 )
 
-// Business 外部数据
+// Business 自有数据
 type Business struct {
 }
 
@@ -217,7 +217,7 @@ func (obj Business) refresh(edbInfo *EdbInfo, startDate string) (err error) {
 			queryConditions["data_time"] = bson.M{"$gte": startDateTime}
 		}
 
-		existDataList, err = mogDataObj.GetAllDataList(queryConditions)
+		existDataList, err = mogDataObj.GetAllDataList(queryConditions, []string{"data_time"})
 		if err != nil {
 			fmt.Println(obj.GetSourceName() + ",refresh err;getEdbDataBusinessList Err:" + err.Error())
 			return
@@ -432,7 +432,7 @@ func (obj Business) getBaseBusinessData(edbInfo *EdbInfo, startDate string) (new
 		queryConditions["data_time"] = bson.M{"$gte": startDateTime}
 	}
 
-	baseDataList, err := mogDataObj.GetAllDataList(queryConditions)
+	baseDataList, err := mogDataObj.GetAllDataList(queryConditions, []string{"data_time"})
 	if err != nil {
 		fmt.Println("getBaseBusinessData Err:" + err.Error())
 		return

+ 101 - 3
models/mgo/base_from_business_data.go

@@ -12,7 +12,7 @@ import (
 )
 
 // BaseFromBusinessData
-// @Description: 外部数据集合
+// @Description: 自有数据集合
 type BaseFromBusinessData struct {
 	ID primitive.ObjectID `json:"_id" bson:"_id,omitempty"` // 文档id
 	//ID string `json:"_id" bson:"_id" ` // 文档id
@@ -60,10 +60,11 @@ func (m *BaseFromBusinessData) GetCollection() *qmgo.Collection {
 // @author: Roc
 // @receiver m
 // @datetime 2024-04-26 13:42:19
+// @param sort []string
 // @param whereParams interface{}
 // @return result []BaseFromBusinessData
 // @return err error
-func (m *BaseFromBusinessData) GetAllDataList(whereParams interface{}) (result []*BaseFromBusinessData, err error) {
+func (m *BaseFromBusinessData) GetAllDataList(whereParams interface{}, sort []string) (result []*BaseFromBusinessData, err error) {
 	if utils.MgoDataCli == nil {
 		err = errors.New("mongodb连接失败")
 		return
@@ -75,7 +76,7 @@ func (m *BaseFromBusinessData) GetAllDataList(whereParams interface{}) (result [
 		fmt.Println("MgoGetColl Err:", err.Error())
 		return
 	}
-	err = coll.Find(ctx, whereParams).All(&result)
+	err = coll.Find(ctx, whereParams).Sort(sort...).All(&result)
 	if err != nil {
 		return
 	}
@@ -89,6 +90,103 @@ func (m *BaseFromBusinessData) GetAllDataList(whereParams interface{}) (result [
 	return
 }
 
+// GetLimitDataList
+// @Description: 根据条件获取指定数量数据列表
+// @author: Roc
+// @receiver m
+// @datetime 2024-05-06 17:08:32
+// @param whereParams interface{}
+// @param size int64
+// @return result []*BaseFromBusinessData
+// @return err error
+func (m *BaseFromBusinessData) GetLimitDataList(whereParams interface{}, size int64, sort []string) (result []*BaseFromBusinessData, err error) {
+	if utils.MgoDataCli == nil {
+		err = errors.New("mongodb连接失败")
+		return
+	}
+	db := utils.MgoDataCli.Database(m.DataBaseName())
+	coll := db.Collection(m.CollectionName())
+	ctx := context.TODO()
+	if err != nil {
+		fmt.Println("MgoGetColl Err:", err.Error())
+		return
+	}
+	err = coll.Find(ctx, whereParams).Sort(sort...).Limit(size).All(&result)
+	if err != nil {
+		return
+	}
+
+	for _, v := range result {
+		v.DataTime = v.DataTime.In(time.Local)
+		v.CreateTime = v.CreateTime.In(time.Local)
+		v.ModifyTime = v.ModifyTime.In(time.Local)
+	}
+
+	return
+}
+
+// GetPageDataList
+// @Description: 根据条件获取分页数据列表
+// @author: Roc
+// @receiver m
+// @datetime 2024-05-07 10:21:07
+// @param whereParams interface{}
+// @param startSize int64
+// @param size int64
+// @param sort []string
+// @return result []*BaseFromBusinessData
+// @return err error
+func (m *BaseFromBusinessData) GetPageDataList(whereParams interface{}, startSize, size int64, sort []string) (result []*BaseFromBusinessData, err error) {
+	if utils.MgoDataCli == nil {
+		err = errors.New("mongodb连接失败")
+		return
+	}
+	db := utils.MgoDataCli.Database(m.DataBaseName())
+	coll := db.Collection(m.CollectionName())
+	ctx := context.TODO()
+	if err != nil {
+		fmt.Println("MgoGetColl Err:", err.Error())
+		return
+	}
+	err = coll.Find(ctx, whereParams).Sort(sort...).Skip(startSize).Limit(size).All(&result)
+	if err != nil {
+		return
+	}
+
+	for _, v := range result {
+		v.DataTime = v.DataTime.In(time.Local)
+		v.CreateTime = v.CreateTime.In(time.Local)
+		v.ModifyTime = v.ModifyTime.In(time.Local)
+	}
+
+	return
+}
+
+// GetCountDataList
+// @Description:  根据条件获取数据列表总数
+// @author: Roc
+// @receiver m
+// @datetime 2024-05-07 10:29:00
+// @param whereParams interface{}
+// @return count int64
+// @return err error
+func (m *BaseFromBusinessData) GetCountDataList(whereParams interface{}) (count int64, err error) {
+	if utils.MgoDataCli == nil {
+		err = errors.New("mongodb连接失败")
+		return
+	}
+	db := utils.MgoDataCli.Database(m.DataBaseName())
+	coll := db.Collection(m.CollectionName())
+	ctx := context.TODO()
+	if err != nil {
+		fmt.Println("MgoGetColl Err:", err.Error())
+		return
+	}
+	count, err = coll.Find(ctx, whereParams).Count()
+
+	return
+}
+
 // BatchInsertData
 // @Description: 批量写入数据
 // @author: Roc

+ 102 - 3
models/mgo/edb_data_business.go

@@ -12,7 +12,7 @@ import (
 )
 
 // EdbDataBusiness
-// @Description: 外部数据集合(指标库)
+// @Description: 自有数据集合(指标库)
 type EdbDataBusiness struct {
 	ID            primitive.ObjectID `json:"_id" bson:"_id,omitempty" `            // 文档id
 	EdbInfoId     int                `json:"edb_info_id" bson:"edb_info_id"`       // 指标编码
@@ -61,9 +61,10 @@ func (m *EdbDataBusiness) GetCollection() *qmgo.Collection {
 // @receiver m
 // @datetime 2024-04-26 13:42:19
 // @param whereParams interface{}
+// @param sort []string
 // @return result []EdbDataBusiness
 // @return err error
-func (m *EdbDataBusiness) GetAllDataList(whereParams interface{}) (result []*EdbDataBusiness, err error) {
+func (m *EdbDataBusiness) GetAllDataList(whereParams interface{}, sort []string) (result []*EdbDataBusiness, err error) {
 	if utils.MgoDataCli == nil {
 		err = errors.New("mongodb连接失败")
 		return
@@ -75,7 +76,7 @@ func (m *EdbDataBusiness) GetAllDataList(whereParams interface{}) (result []*Edb
 		fmt.Println("MgoGetColl Err:", err.Error())
 		return
 	}
-	err = coll.Find(ctx, whereParams).All(&result)
+	err = coll.Find(ctx, whereParams).Sort(sort...).All(&result)
 	if err != nil {
 		return
 	}
@@ -89,6 +90,104 @@ func (m *EdbDataBusiness) GetAllDataList(whereParams interface{}) (result []*Edb
 	return
 }
 
+// GetLimitDataList
+// @Description: 根据条件获取指定数量数据列表
+// @author: Roc
+// @receiver m
+// @datetime 2024-05-06 17:08:32
+// @param whereParams interface{}
+// @param size int64
+// @param sort []string
+// @return result []*BaseFromBusinessData
+// @return err error
+func (m *EdbDataBusiness) GetLimitDataList(whereParams interface{}, size int64, sort []string) (result []*EdbDataBusiness, err error) {
+	if utils.MgoDataCli == nil {
+		err = errors.New("mongodb连接失败")
+		return
+	}
+	db := utils.MgoDataCli.Database(m.DataBaseName())
+	coll := db.Collection(m.CollectionName())
+	ctx := context.TODO()
+	if err != nil {
+		fmt.Println("MgoGetColl Err:", err.Error())
+		return
+	}
+	err = coll.Find(ctx, whereParams).Sort(sort...).Limit(size).All(&result)
+	if err != nil {
+		return
+	}
+
+	for _, v := range result {
+		v.DataTime = v.DataTime.In(time.Local)
+		v.CreateTime = v.CreateTime.In(time.Local)
+		v.ModifyTime = v.ModifyTime.In(time.Local)
+	}
+
+	return
+}
+
+// GetPageDataList
+// @Description: 根据条件获取分页数据列表
+// @author: Roc
+// @receiver m
+// @datetime 2024-05-07 10:21:07
+// @param whereParams interface{}
+// @param startSize int64
+// @param size int64
+// @param sort []string
+// @return result []*EdbDataBusiness
+// @return err error
+func (m *EdbDataBusiness) GetPageDataList(whereParams interface{}, startSize, size int64, sort []string) (result []*EdbDataBusiness, err error) {
+	if utils.MgoDataCli == nil {
+		err = errors.New("mongodb连接失败")
+		return
+	}
+	db := utils.MgoDataCli.Database(m.DataBaseName())
+	coll := db.Collection(m.CollectionName())
+	ctx := context.TODO()
+	if err != nil {
+		fmt.Println("MgoGetColl Err:", err.Error())
+		return
+	}
+	err = coll.Find(ctx, whereParams).Sort(sort...).Skip(startSize).Limit(size).All(&result)
+	if err != nil {
+		return
+	}
+
+	for _, v := range result {
+		v.DataTime = v.DataTime.In(time.Local)
+		v.CreateTime = v.CreateTime.In(time.Local)
+		v.ModifyTime = v.ModifyTime.In(time.Local)
+	}
+
+	return
+}
+
+// GetCountDataList
+// @Description:  根据条件获取数据列表总数
+// @author: Roc
+// @receiver m
+// @datetime 2024-05-07 10:29:00
+// @param whereParams interface{}
+// @return count int64
+// @return err error
+func (m *EdbDataBusiness) GetCountDataList(whereParams interface{}) (count int64, err error) {
+	if utils.MgoDataCli == nil {
+		err = errors.New("mongodb连接失败")
+		return
+	}
+	db := utils.MgoDataCli.Database(m.DataBaseName())
+	coll := db.Collection(m.CollectionName())
+	ctx := context.TODO()
+	if err != nil {
+		fmt.Println("MgoGetColl Err:", err.Error())
+		return
+	}
+	count, err = coll.Find(ctx, whereParams).Count()
+
+	return
+}
+
 // BatchInsertData
 // @Description: 批量写入数据
 // @author: Roc

+ 2 - 2
services/base_from_business.go

@@ -126,7 +126,7 @@ func HandleBusinessIndex(indexItem *models.AddBusinessIndexReq) (err error) {
 	mogDataObj := new(mgo.BaseFromBusinessData)
 
 	//获取已存在的所有数据
-	exitDataList, err := mogDataObj.GetAllDataList(bson.M{"index_code": indexItem.IndexCode})
+	exitDataList, err := mogDataObj.GetAllDataList(bson.M{"index_code": indexItem.IndexCode}, []string{"data_time"})
 	if err != nil {
 		fmt.Println("GetIndexDataList Err:" + err.Error())
 		return err
@@ -238,7 +238,7 @@ func refreshEdbBusiness(indexCode string, reqMinDate time.Time) {
 	var errMsg string
 	defer func() {
 		if indexErr != nil {
-			tips := fmt.Sprintf("外部数据刷新-ETA指标刷新异常, 指标编码: %s, err: %s, 错误信息:%s", indexCode, indexErr.Error(), errMsg)
+			tips := fmt.Sprintf("自有数据刷新-ETA指标刷新异常, 指标编码: %s, err: %s, 错误信息:%s", indexCode, indexErr.Error(), errMsg)
 			alarm_msg.SendAlarmMsg(tips, 3)
 		}
 	}()

+ 30 - 1
services/base_from_python.go

@@ -172,7 +172,36 @@ func getPythonFileAbsolutePath(edbCode string) (pythonFile string, err error) {
 // getPythonFrontStr 获取python前面的代码
 func getPythonFrontStr() string {
 	//return "#!/usr/bin/python\n# -*- coding: UTF-8 -*-\nimport json\n\nimport pymysql\nimport pandas as pd\n\nsql_config = {\n    'host': 'rm-uf67kg347rhjfep5c1o.mysql.rds.aliyuncs.com',\n    'port': 3306,#主机号\n    'user': 'hz_technology',#账户名\n    'passwd': 'hongze@2021',#密码\n    'db': 'test_hz_data',\n    'charset': 'utf8mb4',\n    'cursorclass': pymysql.cursors.DictCursor\n}\n\ndb = pymysql.connect(**sql_config)\ndb.autocommit(1)\ncursor = db.cursor()\npandas_fetch_all = pd.read_sql\n\n# 返回数据\nresult = {}\n\n# 格式化返回数据\ndef format_data(data: pd.DataFrame,\n                index_str: str = \"data_time\",\n                value_str: str = \"value\"\n                ) -> pd.DataFrame:\n    \"\"\"\n        Parameters\n        ----------\n        data : pandas的DataFrame数据结构.\n        index_str : 对象下标字符串,在pandas的DataFrame中的列名.\n        value_str : 对象值字符串,在pandas的DataFrame中的列名\n\n        Returns\n        -------\n        DataFrame or Iterator[DataFrame]\n        例子:{'2007-01-09': 3220.0, '2007-01-10': 3230.0}\n\n        \"\"\"\n    index_list = []  # 空列表\n    value_list = []  # 空列表\n\n    for num in range(1, data.index.size):  # 迭代 所有的指标\n        index_list.append(data[index_str][num])\n        value_list.append(data[value_str][num])\n\n    tmp_data = {\n        \"date\": index_list,\n        \"value\": value_list\n    }\n    pd_data = pd.DataFrame(tmp_data)\n    # print(pd_data)\n    return pd_data\n"
-	str := fmt.Sprintf("#!/usr/bin/python\n# -*- coding: UTF-8 -*-\nimport json\n\nimport pymysql\nimport pandas as pd\n\nsql_config = {\n    'host': '%s',\n    'port': 3306,#主机号\n    'user': '%s',#账户名\n    'passwd': '%s',#密码\n    'db': '%s',\n    'charset': 'utf8mb4',\n    'cursorclass': pymysql.cursors.DictCursor\n}\n\ndb = pymysql.connect(**sql_config)\ndb.autocommit(1)\ncursor = db.cursor()\npandas_fetch_all = pd.read_sql\n\n# 返回数据\nresult = {}\n\n# 格式化返回数据\ndef format_data(data: pd.DataFrame,\n                index_str: str = \"data_time\",\n                value_str: str = \"value\"\n                ) -> pd.DataFrame:\n    \"\"\"\n        Parameters\n        ----------\n        data : pandas的DataFrame数据结构.\n        index_str : 对象下标字符串,在pandas的DataFrame中的列名.\n        value_str : 对象值字符串,在pandas的DataFrame中的列名\n\n        Returns\n        -------\n        DataFrame or Iterator[DataFrame]\n        例子:{'2007-01-09': 3220.0, '2007-01-10': 3230.0}\n\n        \"\"\"\n    index_list = []  # 空列表\n    value_list = []  # 空列表\n\n    for num in range(0, data.index.size):  # 迭代 所有的指标\n        date=data[index_str][num]\n        if isinstance(date,str) is False:\n            index_list.append(data[index_str][num].strftime(\"%%Y-%%m-%%d\"))\n        else:\n            index_list.append(data[index_str][num])\n        value_list.append(data[value_str][num])\n\n    tmp_data = {\n        \"date\": index_list,\n        \"value\": value_list\n    }\n    pd_data = pd.DataFrame(tmp_data)\n    return pd_data\n\n", utils.PYTHON_MYSQL_HOST, utils.PYTHON_MYSQL_USER, utils.PYTHON_MYSQL_PASSWD, utils.PYTHON_MYSQL_DB)
+	str := fmt.Sprintf("#!/usr/bin/python\n# -*- coding: UTF-8 -*-\nimport json\n\nimport pymysql\nimport pandas as pd\n\nsql_config = {\n    'host': '%s',\n    'port': 3306,#主机号\n    'user': '%s',#账户名\n    'passwd': '%s',#密码\n    'db': '%s',\n    'charset': 'utf8mb4',\n    'cursorclass': pymysql.cursors.DictCursor\n}\n\ndb = pymysql.connect(**sql_config)\ndb.autocommit(1)\ncursor = db.cursor()\npandas_fetch_all = pd.read_sql\n\n", utils.PYTHON_MYSQL_HOST, utils.PYTHON_MYSQL_USER, utils.PYTHON_MYSQL_PASSWD, utils.PYTHON_MYSQL_DB)
+
+	// mongo部分
+	if utils.PYTHON_MONGO_HOST != `` {
+		str += getPythonFront2Str()
+	}
+
+	// 格式化数据部分
+	str += getPythonFront3Str()
+
+	return str
+}
+
+// getPythonFront2Str
+// @Description: mongo部分
+// @author: Roc
+// @datetime 2024-05-07 18:38:03
+// @return string
+func getPythonFront2Str() string {
+	str := fmt.Sprintf("\nfrom pymongo import MongoClient\n# MongoDB 连接配置\nmongo_config = {\n    'host': '%s',  # 替换为你的 MongoDB 连接字符串\n    'database': '%s',  # 替换为你的数据库名\n    'collection': '%s'  # 替换为你的集合名\n}\n\n# 创建 MongoClient 并连接到数据库\nclient = MongoClient(mongo_config['host'])\ndb = client[mongo_config['database']]\ncollection = db[mongo_config['collection']]\n\n# 定义时区\nutc_tz = pytz.utc\nlocal_tz = pytz.timezone('local')  # 本地时区", utils.PYTHON_MONGO_HOST, utils.PYTHON_MONGO_DATABASE, "edb_data_business")
+	return str
+}
+
+// getPythonFront3Str
+// @Description: 第三部分
+// @author: Roc
+// @datetime 2024-05-07 18:37:56
+// @return string
+func getPythonFront3Str() string {
+	str := fmt.Sprintf("\n# 返回数据\nresult = {}\n\n# 格式化返回数据\ndef format_data(data: pd.DataFrame,\n                index_str: str = \"data_time\",\n                value_str: str = \"value\"\n                ) -> pd.DataFrame:\n    \"\"\"\n        Parameters\n        ----------\n        data : pandas的DataFrame数据结构.\n        index_str : 对象下标字符串,在pandas的DataFrame中的列名.\n        value_str : 对象值字符串,在pandas的DataFrame中的列名\n\n        Returns\n        -------\n        DataFrame or Iterator[DataFrame]\n        例子:{'2007-01-09': 3220.0, '2007-01-10': 3230.0}\n\n        \"\"\"\n    index_list = []  # 空列表\n    value_list = []  # 空列表\n\n    for num in range(0, data.index.size):  # 迭代 所有的指标\n        date=data[index_str][num]\n        if isinstance(date,str) is False:\n            index_list.append(data[index_str][num].strftime(\"%%Y-%%m-%%d\"))\n        else:\n            index_list.append(data[index_str][num])\n        value_list.append(data[value_str][num])\n\n    tmp_data = {\n        \"date\": index_list,\n        \"value\": value_list\n    }\n    pd_data = pd.DataFrame(tmp_data)\n    return pd_data\n\n")
 	return str
 }
 

+ 11 - 5
utils/config.go

@@ -16,11 +16,13 @@ var (
 	MYSQL_URL_GL  string
 	MgoUrlData    string // mongodb数据库连接配置
 
-	PYTHON_MYSQL_HOST   string //python数据库链接主机地址
-	PYTHON_MYSQL_USER   string //python数据库链接账号
-	PYTHON_MYSQL_PASSWD string //python数据库链接密码
-	PYTHON_MYSQL_DB     string //python数据库链接数据库名
-	PYTHON_PATH         string //python可执行文件地址
+	PYTHON_MYSQL_HOST     string // python数据库链接主机地址
+	PYTHON_MYSQL_USER     string // python数据库链接账号
+	PYTHON_MYSQL_PASSWD   string // python数据库链接密码
+	PYTHON_MYSQL_DB       string // python数据库链接数据库名
+	PYTHON_MONGO_HOST     string // python链接mongo主机地址
+	PYTHON_MONGO_DATABASE string // python链接mongo的库名
+	PYTHON_PATH           string // python可执行文件地址
 
 	REDIS_CACHE string //缓存地址
 	//Rc          *cache.Cache //redis缓存
@@ -138,6 +140,10 @@ func init() {
 	PYTHON_MYSQL_USER = config["python_mysql_user"]
 	PYTHON_MYSQL_PASSWD = config["python_mysql_passwd"]
 	PYTHON_MYSQL_DB = config["python_mysql_db"]
+
+	PYTHON_MONGO_HOST = config["python_mongo_host"]   // python链接mongo主机地址
+	PYTHON_MONGO_DATABASE = config["python_mongo_db"] // python链接mongo的库名
+
 	PYTHON_PATH = config["python_path"]
 
 	REDIS_CACHE = config["beego_cache"]

+ 2 - 2
utils/constants.go

@@ -109,7 +109,7 @@ const (
 	DATA_SOURCE_CALCULATE_SUM = 81
 	DATA_SOURCE_CALCULATE_AVG = 82
 	DATA_SOURCE_BLOOMBERG     = 83 // bloomberg彭博数据
-	DATA_SOURCE_BUSINESS      = 84 // 来源于外部数据
+	DATA_SOURCE_BUSINESS      = 84 // 来源于自有数据
 )
 
 // 指标来源的中文展示
@@ -195,7 +195,7 @@ const (
 	DATA_SOURCE_NAME_ICPI          = "ICPI消费价格指数"
 	DATA_SOURCE_NAME_CALCULATE_SUM = `多指标求和`
 	DATA_SOURCE_NAME_CALCULATE_AVG = `多指标求平均`
-	DATA_SOURCE_NAME_BUSINESS      = `外部数据`
+	DATA_SOURCE_NAME_BUSINESS      = `自有数据`
 )
 
 // 基础数据初始化日期