zwxi 1 year ago
parent
commit
5cc28a27f8

+ 147 - 116
controllers/data_manage/edb_info.go

@@ -5370,101 +5370,117 @@ func (this *EdbInfoController) EdbInfoBatchAdd() {
 // @Param   EdbCode   query   string  false       "指标编码/指标代码"
 // @Param   StockCode   query   string  false       "证券代码"
 // @Success 200 {object} data_manage.EdbInfoExistCheckResp
-// @router /edb_info/smm/exist/check [get]
+// @router /edb_info/smm/exist/check [post]
 func (this *EdbInfoController) SmmExistCheck() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		this.Data["json"] = br
 		this.ServeJSON()
 	}()
-	selectAll, err := this.GetBool("SelectAll", false)
+
+	var req data_manage.SmmIndexExistCheckReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
 	if err != nil {
-		br.Msg = "参数解析失败"
+		br.Msg = "参数解析异常!"
 		br.ErrMsg = "参数解析失败,Err:" + err.Error()
 		return
 	}
-	types := this.GetString("Types")
-	frequency := this.GetString("Frequency")
-	dataState := this.GetString("DataState")
-	edbCode := this.GetString("EdbCode")
+
+	types := req.Types
+	frequency := req.Frequency
+	dataState := req.DataState
+	selectAll := req.SelectAll
+	keyword := req.Keyword
+
+	edbCode := req.EdbCode
 	edbCode = strings.Trim(edbCode, "\t")
 	edbCode = strings.Trim(edbCode, " ")
 	edbCode = strings.Replace(edbCode, "\t", "", -1)
 
-	selectCode := this.GetString("SelectCode")
-	selectCode = strings.Trim(selectCode, "\t")
-	selectCode = strings.Trim(selectCode, " ")
-	selectCode = strings.Replace(selectCode, "\t", "", -1)
-
 	var edbCodeArr []string
 	var codeArr []string
 
 	if selectAll {
 		// 如果勾了列表全选,那么EdbCode传的就是排除的code
-		if selectCode == "" {
-			// 无勾选code,走查询
-			var condition string
-			var pars []interface{}
 
-			if types != "" {
-				typeArr := strings.Split(types, ",")
+		var condition string
+		var pars []interface{}
+
+		if len(types) > 0 {
+			condition += " AND ( "
+			for _, v := range types {
+				typeArr := strings.Split(v, ",")
 				for i, v := range typeArr {
+					if i == 0 {
+						condition += " ( "
+					}
 					typeStr := "type_"
 					typeStr += fmt.Sprintf("%d", i+1)
-					condition += " AND " + typeStr + " =? "
+					condition += typeStr + " =? "
 					pars = append(pars, v)
+					if i == len(typeArr)-1 {
+						condition += " ) "
+					} else {
+						condition += " AND "
+					}
 				}
+				condition += " OR "
 			}
+			condition = strings.Trim(condition, "OR ")
+			condition += " ) "
+		}
 
-			if dataState != "" {
-				if dataState == "normal" {
-					condition += " AND (data_state = 'normal' OR data_state = '') "
-					pars = append(pars)
-				} else {
-					condition += " AND data_state = ? "
-					pars = append(pars, dataState)
-				}
-			}
-
-			if frequency != "" {
-				condition += " AND frequency = ? "
-				pars = append(pars, frequency)
-			}
+		if frequency != "" {
+			frequencyArr := strings.Split(frequency, ",")
+			condition += ` AND frequency IN (` + utils.GetOrmInReplace(len(frequencyArr)) + `) `
+			pars = append(pars, frequencyArr)
+		}
 
-			indexList, err := data_manage.GetSmmIndexDataListNoPage(condition, pars)
-			if err != nil {
-				br.Msg = "获取指标列表失败"
-				br.ErrMsg = "获取指标列表失败,Err:" + err.Error()
-				return
+		if dataState != "" {
+			stateArr := strings.Split(dataState, ",")
+			if strings.Contains(dataState, "normal") {
+				stateArr = append(stateArr, "")
+				condition += ` AND data_state IN (` + utils.GetOrmInReplace(len(stateArr)) + `) `
+				pars = append(pars, stateArr)
+			} else {
+				condition += ` AND data_state IN (` + utils.GetOrmInReplace(len(stateArr)) + `) `
+				pars = append(pars, stateArr)
 			}
+		}
 
-			for _, v := range indexList {
-				codeArr = append(codeArr, v.IndexCode)
+		if keyword != "" {
+			keyWordArr := strings.Split(keyword, " ")
+			if len(keyWordArr) > 0 {
+				condition += " AND ( "
+				for _, v := range keyWordArr {
+					condition += ` CONCAT(index_name,index_code) LIKE '%` + v + `%' OR`
+				}
+				condition = strings.TrimRight(condition, "OR")
+				condition += " ) "
 			}
+		}
 
-			noUseCodeArr := strings.Split(edbCode, ",")
+		indexList, err := data_manage.GetSmmIndexDataListNoPage(condition, pars)
+		if err != nil {
+			br.Msg = "获取指标列表失败"
+			br.ErrMsg = "获取指标列表失败,Err:" + err.Error()
+			return
+		}
 
-			for _, code := range codeArr {
-				// 检查code是否在noUseCodeArr数组中
-				if !utils.ArrContainsStr(noUseCodeArr, code) {
-					// 如果不在,将其添加到结果数组中
-					edbCodeArr = append(edbCodeArr, code)
-				}
-			}
-		} else {
-			// 有勾选,不查询
-			codeArr = strings.Split(selectCode, ",")
+		for _, v := range indexList {
+			codeArr = append(codeArr, v.IndexCode)
+		}
 
-			noUseCodeArr := strings.Split(edbCode, ",")
+		noUseCodeArr := strings.Split(edbCode, ",")
 
-			for _, code := range codeArr {
-				// 检查code是否在noUseCodeArr数组中
-				if !utils.ArrContainsStr(noUseCodeArr, code) {
-					// 如果不在,将其添加到结果数组中
-					edbCodeArr = append(edbCodeArr, code)
-				}
+		for _, code := range codeArr {
+			// 检查code是否在noUseCodeArr数组中
+			if !utils.ArrContainsStr(noUseCodeArr, code) {
+				// 如果不在,将其添加到结果数组中
+				edbCodeArr = append(edbCodeArr, code)
 			}
 		}
+
 	} else {
 		//未勾选全选EdbCode就是需要的code
 		edbCodeArr = strings.Split(edbCode, ",")
@@ -5525,101 +5541,116 @@ func (this *EdbInfoController) SmmExistCheck() {
 // @Param   EdbCode   query   string  false       "指标编码/指标代码"
 // @Param   StockCode   query   string  false       "证券代码"
 // @Success 200 {object} data_manage.EdbInfoSearchResp
-// @router /edb_info/smm/search [get]
+// @router /edb_info/smm/search [post]
 func (this *EdbInfoController) EdbInfoSmmSearch() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		this.Data["json"] = br
 		this.ServeJSON()
 	}()
-	selectAll, err := this.GetBool("SelectAll", false)
+
+	var req data_manage.SmmIndexExistCheckReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
 	if err != nil {
-		br.Msg = "参数解析失败"
+		br.Msg = "参数解析异常!"
 		br.ErrMsg = "参数解析失败,Err:" + err.Error()
 		return
 	}
-	types := this.GetString("Types")
-	frequency := this.GetString("Frequency")
-	dataState := this.GetString("DataState")
-	edbCode := this.GetString("EdbCode")
+
+	types := req.Types
+	frequency := req.Frequency
+	dataState := req.DataState
+	selectAll := req.SelectAll
+	keyword := req.Keyword
+	edbCode := req.EdbCode
 	edbCode = strings.Trim(edbCode, "\t")
 	edbCode = strings.Trim(edbCode, " ")
 	edbCode = strings.Replace(edbCode, "\t", "", -1)
 
-	selectCode := this.GetString("SelectCode")
-	selectCode = strings.Trim(selectCode, "\t")
-	selectCode = strings.Trim(selectCode, " ")
-	selectCode = strings.Replace(selectCode, "\t", "", -1)
-
 	var edbCodeArr []string
 	var codeArr []string
 
 	if selectAll {
 		// 如果勾了列表全选,那么EdbCode传的就是排除的code
-		if selectCode == "" {
-			// 无勾选code,走查询
-			var condition string
-			var pars []interface{}
 
-			if types != "" {
-				typeArr := strings.Split(types, ",")
+		var condition string
+		var pars []interface{}
+
+		if len(types) > 0 {
+			condition += " AND ( "
+			for _, v := range types {
+				typeArr := strings.Split(v, ",")
 				for i, v := range typeArr {
+					if i == 0 {
+						condition += " ( "
+					}
 					typeStr := "type_"
 					typeStr += fmt.Sprintf("%d", i+1)
-					condition += " AND " + typeStr + " =? "
+					condition += typeStr + " =? "
 					pars = append(pars, v)
+					if i == len(typeArr)-1 {
+						condition += " ) "
+					} else {
+						condition += " AND "
+					}
 				}
+				condition += " OR "
 			}
+			condition = strings.Trim(condition, "OR ")
+			condition += " ) "
+		}
 
-			if dataState != "" {
-				if dataState == "normal" {
-					condition += " AND (data_state = 'normal' OR data_state = '') "
-					pars = append(pars)
-				} else {
-					condition += " AND data_state = ? "
-					pars = append(pars, dataState)
-				}
-			}
-
-			if frequency != "" {
-				condition += " AND frequency = ? "
-				pars = append(pars, frequency)
-			}
+		if frequency != "" {
+			frequencyArr := strings.Split(frequency, ",")
+			condition += ` AND frequency IN (` + utils.GetOrmInReplace(len(frequencyArr)) + `) `
+			pars = append(pars, frequencyArr)
+		}
 
-			indexList, err := data_manage.GetSmmIndexDataListNoPage(condition, pars)
-			if err != nil {
-				br.Msg = "获取指标列表失败"
-				br.ErrMsg = "获取指标列表失败,Err:" + err.Error()
-				return
+		if dataState != "" {
+			stateArr := strings.Split(dataState, ",")
+			if strings.Contains(dataState, "normal") {
+				stateArr = append(stateArr, "")
+				condition += ` AND data_state IN (` + utils.GetOrmInReplace(len(stateArr)) + `) `
+				pars = append(pars, stateArr)
+			} else {
+				condition += ` AND data_state IN (` + utils.GetOrmInReplace(len(stateArr)) + `) `
+				pars = append(pars, stateArr)
 			}
+		}
 
-			for _, v := range indexList {
-				codeArr = append(codeArr, v.IndexCode)
+		if keyword != "" {
+			keyWordArr := strings.Split(keyword, " ")
+			if len(keyWordArr) > 0 {
+				condition += " AND ( "
+				for _, v := range keyWordArr {
+					condition += ` CONCAT(index_name,index_code) LIKE '%` + v + `%' OR`
+				}
+				condition = strings.TrimRight(condition, "OR")
+				condition += " ) "
 			}
+		}
 
-			noUseCodeArr := strings.Split(edbCode, ",")
+		indexList, err := data_manage.GetSmmIndexDataListNoPage(condition, pars)
+		if err != nil {
+			br.Msg = "获取指标列表失败"
+			br.ErrMsg = "获取指标列表失败,Err:" + err.Error()
+			return
+		}
 
-			for _, code := range codeArr {
-				// 检查code是否在noUseCodeArr数组中
-				if !utils.ArrContainsStr(noUseCodeArr, code) {
-					// 如果不在,将其添加到结果数组中
-					edbCodeArr = append(edbCodeArr, code)
-				}
-			}
-		} else {
-			// 有勾选,不查询
-			codeArr = strings.Split(selectCode, ",")
+		for _, v := range indexList {
+			codeArr = append(codeArr, v.IndexCode)
+		}
 
-			noUseCodeArr := strings.Split(edbCode, ",")
+		noUseCodeArr := strings.Split(edbCode, ",")
 
-			for _, code := range codeArr {
-				// 检查code是否在noUseCodeArr数组中
-				if !utils.ArrContainsStr(noUseCodeArr, code) {
-					// 如果不在,将其添加到结果数组中
-					edbCodeArr = append(edbCodeArr, code)
-				}
+		for _, code := range codeArr {
+			// 检查code是否在noUseCodeArr数组中
+			if !utils.ArrContainsStr(noUseCodeArr, code) {
+				// 如果不在,将其添加到结果数组中
+				edbCodeArr = append(edbCodeArr, code)
 			}
 		}
+
 	} else {
 		//未勾选全选EdbCode就是需要的code
 		edbCodeArr = strings.Split(edbCode, ",")

+ 63 - 26
controllers/data_manage/smm_api.go

@@ -1,6 +1,7 @@
 package data_manage
 
 import (
+	"encoding/json"
 	"eta/eta_api/models"
 	"eta/eta_api/models/data_manage"
 	"eta/eta_api/utils"
@@ -13,7 +14,7 @@ import (
 // @Title 有色api数据指标列表
 // @Description 有色api数据指标列表
 // @Success 200 {object} data_manage.SmmClassify
-// @router /smm/api/list [get]
+// @router /smm/api/list [post]
 func (this *EdbInfoController) SmmApiList() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
@@ -27,15 +28,27 @@ func (this *EdbInfoController) SmmApiList() {
 		br.Ret = 408
 		return
 	}
-	types := this.GetString("Types")
-	frequency := this.GetString("Frequency")
-	dataState := this.GetString("DataState")
-	keyword := this.GetString("Keyword")
-	indexCodes := this.GetString("IndexCodes")
-	sortType := this.GetString("SortType", "desc")
-	sortParam := this.GetString("SortParam")
-	pageSize, _ := this.GetInt("PageSize")
-	currentIndex, _ := this.GetInt("CurrentIndex")
+	var req data_manage.SmmIndexListReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+
+	types := req.Types
+	frequency := req.Frequency
+	dataState := req.DataState
+	keyword := req.Keyword
+	indexCodes := req.IndexCodes
+	sortType := req.SortType
+	sortParam := req.SortParam
+	pageSize := req.PageSize
+	currentIndex := req.CurrentIndex
+
+	if sortType == "" {
+		sortType = "desc"
+	}
 
 	var startSize int
 	if pageSize <= 0 {
@@ -49,34 +62,58 @@ func (this *EdbInfoController) SmmApiList() {
 	var condition string
 	var pars []interface{}
 
-	if types != "" {
-		typeArr := strings.Split(types,",")
-		for i, v := range typeArr {
-			typeStr := "type_"
-			typeStr += fmt.Sprintf("%d", i+1)
-			condition += " AND "+typeStr+" =? "
-			pars = append(pars, v)
+	if len(types) > 0 {
+		condition += " AND ( "
+		for _, v := range types {
+			typeArr := strings.Split(v,",")
+			for i, v := range typeArr {
+				if i == 0 {
+					condition += " ( "
+				}
+				typeStr := "type_"
+				typeStr += fmt.Sprintf("%d", i+1)
+				condition += typeStr+" =? "
+				pars = append(pars, v)
+				if i == len(typeArr) - 1 {
+					condition += " ) "
+				} else {
+					condition += " AND "
+				}
+			}
+			condition += " OR "
 		}
+		condition = strings.Trim(condition, "OR ")
+		condition += " ) "
 	}
 
 	if frequency != "" {
-		condition += " AND frequency = ? "
-		pars = append(pars, frequency)
+		frequencyArr := strings.Split(frequency,",")
+		condition += ` AND frequency IN (` + utils.GetOrmInReplace(len(frequencyArr)) + `) `
+		pars = append(pars, frequencyArr)
 	}
 
 	if dataState != "" {
-		if dataState == "normal" {
-			condition += " AND (data_state = 'normal' OR data_state = '') "
-			pars = append(pars)
+		stateArr := strings.Split(dataState,",")
+		if strings.Contains(dataState, "normal") {
+			stateArr = append(stateArr, "")
+			condition += ` AND data_state IN (` + utils.GetOrmInReplace(len(stateArr)) + `) `
+			pars = append(pars, stateArr)
 		} else {
-			condition += " AND data_state = ? "
-			pars = append(pars, dataState)
+			condition += ` AND data_state IN (` + utils.GetOrmInReplace(len(stateArr)) + `) `
+			pars = append(pars, stateArr)
 		}
 	}
 
 	if keyword != "" {
-		condition += " AND (index_name LIKE ? OR index_code LIKE ?) "
-		pars = utils.GetLikeKeywordPars(pars, keyword, 2)
+		keyWordArr := strings.Split(keyword, " ")
+		if len(keyWordArr) > 0 {
+			condition += " AND ( "
+			for _, v := range keyWordArr {
+				condition += ` CONCAT(index_name,index_code) LIKE '%` + v + `%' OR`
+			}
+			condition = strings.TrimRight(condition, "OR")
+			condition += " ) "
+		}
 	}
 
 	if indexCodes != "" {

+ 26 - 4
models/data_manage/base_from_smm.go

@@ -394,7 +394,6 @@ type BaseFromSmmIndexTypeList struct {
 	Type3 string `orm:"column(type_3)"`
 }
 
-
 // GetBaseFromSmmIndexTypeList
 func GetBaseFromSmmIndexTypeList() (list []BaseFromSmmIndexTypeList, err error) {
 	o := orm.NewOrmUsingDB("data")
@@ -404,7 +403,7 @@ func GetBaseFromSmmIndexTypeList() (list []BaseFromSmmIndexTypeList, err error)
 }
 
 type TypeListRespItem struct {
-	Type string
+	Type  string
 	Child []TypeListRespItem
 }
 
@@ -422,6 +421,29 @@ func GetSmmIndexDataListNoPage(condition string, pars []interface{}) (items []*B
 func GetBaseFromSmmIndexByIndexCodes(indexCodes string) (list []*BaseFromSmmIndex, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := ` SELECT * FROM base_from_smm_index WHERE index_code IN (` + indexCodes + `)`
-	_,err = o.Raw(sql).QueryRows(&list)
+	_, err = o.Raw(sql).QueryRows(&list)
 	return
-}
+}
+
+// SmmIndexListReq
+type SmmIndexListReq struct {
+	Types        []string `description:"分类"`
+	Frequency    string   `description:"频度"`
+	DataState    string   `description:"数据状态"`
+	Keyword      string   `description:"关键字"`
+	IndexCodes   string   `description:"指标代码"`
+	SortType     string   `description:"排序类型"`
+	SortParam    string   `description:"排序参数"`
+	PageSize     int
+	CurrentIndex int
+}
+
+// SmmIndexExistCheckReq
+type SmmIndexExistCheckReq struct {
+	Types      []string `description:"分类"`
+	Frequency  string   `description:"频度"`
+	DataState  string   `description:"数据状态"`
+	EdbCode    string   `description:"指标代码"`
+	SelectAll  bool     `description:"是否全选"`
+	Keyword    string   `description:"关键字"`
+}

+ 2 - 0
models/data_manage/edb_data_base.go

@@ -291,6 +291,8 @@ func GetEdbDataTableNameAndSubSource(source, subSource int) (tableName string) {
 		} else {
 			tableName = "edb_data_ths_ds"
 		}
+	case utils.DATA_SOURCE_YS:
+		tableName = "edb_data_ys"
 	default:
 		edbSource := EdbSourceIdMap[source]
 		if edbSource != nil {

+ 3 - 3
routers/commentsRouter.go

@@ -2909,7 +2909,7 @@ func init() {
         beego.ControllerComments{
             Method: "SmmExistCheck",
             Router: `/edb_info/smm/exist/check`,
-            AllowHTTPMethods: []string{"get"},
+            AllowHTTPMethods: []string{"post"},
             MethodParams: param.Make(),
             Filters: nil,
             Params: nil})
@@ -2918,7 +2918,7 @@ func init() {
         beego.ControllerComments{
             Method: "EdbInfoSmmSearch",
             Router: `/edb_info/smm/search`,
-            AllowHTTPMethods: []string{"get"},
+            AllowHTTPMethods: []string{"post"},
             MethodParams: param.Make(),
             Filters: nil,
             Params: nil})
@@ -3377,7 +3377,7 @@ func init() {
         beego.ControllerComments{
             Method: "SmmApiList",
             Router: `/smm/api/list`,
-            AllowHTTPMethods: []string{"get"},
+            AllowHTTPMethods: []string{"post"},
             MethodParams: param.Make(),
             Filters: nil,
             Params: nil})

+ 136 - 0
services/data/edb_info.go

@@ -3114,3 +3114,139 @@ func BatchRefreshEdbByEdbIds(edbIdList []int, redisKey string, refreshKeys []str
 	}
 	return
 }
+
+// EdbInfoSmmApiAdd 添加指标到指标库
+func EdbInfoSmmApiAdd(item *data_manage.EdbInfo) (edbInfo *data_manage.EdbInfo, err error, errMsg string, isSendEmail bool) {
+	isSendEmail = true
+	//判断指标名称是否存在
+	var condition string
+	var pars []interface{}
+
+	condition += " AND edb_name=? "
+	pars = append(pars, item.EdbName)
+
+	count, err := data_manage.GetEdbInfoCountByCondition(condition, pars)
+	if err != nil {
+		errMsg = "判断指标名称是否存在失败"
+		err = errors.New("判断指标名称是否存在失败,Err:" + err.Error())
+		return
+	}
+
+	if count > 0 {
+		errMsg = "指标名称已存在,请重新填写"
+		err = errors.New(errMsg)
+		isSendEmail = false
+		return
+	}
+
+	source := item.Source
+
+	edbInfo = new(data_manage.EdbInfo)
+	edbInfo.Source = source
+	sourceNameMap := map[int]string{
+		utils.DATA_SOURCE_THS:                 "同花顺",
+		utils.DATA_SOURCE_WIND:                "wind",
+		utils.DATA_SOURCE_PB:                  "彭博",
+		utils.DATA_SOURCE_PB_FINANCE:          "彭博财务",
+		utils.DATA_SOURCE_MANUAL:              "手工数据",
+		utils.DATA_SOURCE_LZ:                  "隆众",
+		utils.DATA_SOURCE_YS:                  "SMM",
+		utils.DATA_SOURCE_GL:                  "钢联",
+		utils.DATA_SOURCE_ZZ:                  "郑商所",
+		utils.DATA_SOURCE_DL:                  "大商所",
+		utils.DATA_SOURCE_SH:                  "上期所",
+		utils.DATA_SOURCE_CFFEX:               "中金所",
+		utils.DATA_SOURCE_SHFE:                "上期能源",
+		utils.DATA_SOURCE_GIE:                 "欧洲天然气",
+		utils.DATA_SOURCE_LT:                  "路透",
+		utils.DATA_SOURCE_COAL:                "中国煤炭网",
+		utils.DATA_SOURCE_GOOGLE_TRAVEL:       "our world in data",
+		utils.DATA_SOURCE_MYSTEEL_CHEMICAL:    "钢联化工",
+		utils.DATA_SOURCE_EIA_STEO:            "EIA STEO报告",
+		utils.DATA_SOURCE_COM_TRADE:           "UN",
+		utils.DATA_SOURCE_SCI:                 "SCI",
+		utils.DATA_SOURCE_BAIINFO:             "BAIINFO",
+		utils.DATA_SOURCE_STOCK_PLANT:         "存量装置",
+		utils.DATA_SOURCE_NATIONAL_STATISTICS: "国家统计局",
+		utils.DATA_SOURCE_FUBAO:               "富宝数据",
+	}
+
+	sourceName, ok := sourceNameMap[source]
+	if !ok {
+		edbSource := data_manage.EdbSourceIdMap[source]
+		if edbSource != nil {
+			sourceName = edbSource.SourceName
+		}
+		if sourceName == "" {
+			errMsg = "指标来源异常"
+			err = errors.New(errMsg)
+			return
+		}
+	}
+	edbInfo.SourceName = sourceName
+
+	edbType := 1 //基础指标
+	if source == utils.DATA_SOURCE_STOCK_PLANT {
+		edbType = 2 //计算指标
+	}
+	//从缓存中获取
+	serverUrl := ``
+	if edbInfo.Source == utils.DATA_SOURCE_WIND {
+		windCacheKey := utils.CACHE_WIND_URL + ":" + item.EdbCode
+		serverUrl, _ = utils.Rc.RedisString(windCacheKey)
+		if serverUrl == `` {
+			if len(utils.Hz_Data_WIND_Url_List) >= 1 {
+				serverUrl = utils.Hz_Data_WIND_Url_List[len(utils.Hz_Data_WIND_Url_List)-1] //默认是最后一个服务器地址
+			}
+		}
+	}
+	//获取该层级下最大的排序数
+	maxSort, err := GetEdbClassifyMaxSort(item.ClassifyId, 0)
+	if err != nil {
+		errMsg = "获取失败"
+		err = errors.New("查询排序信息失败,Err:" + err.Error())
+		return
+	}
+
+	edbInfo.EdbCode = item.EdbCode
+	edbInfo.EdbName = item.EdbName
+	edbInfo.EdbNameSource = item.EdbName
+	edbInfo.Frequency = item.Frequency
+	edbInfo.Unit = item.Unit
+	edbInfo.ClassifyId = item.ClassifyId
+	edbInfo.SysUserId = item.SysUserId
+	edbInfo.SysUserRealName = item.SysUserRealName
+	edbInfo.CreateTime = time.Now()
+	edbInfo.ModifyTime = time.Now()
+	edbInfo.ServerUrl = serverUrl
+	edbInfo.Sort = maxSort + 1
+	edbInfo.DataDateType = `交易日`
+	timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
+	edbInfo.UniqueCode = utils.MD5(utils.DATA_PREFIX + "_" + timestamp)
+	edbInfo.EdbType = edbType
+	edbInfo.SubSource = item.SubSource
+	edbInfo.SubSourceName = ""
+	edbInfo.IndicatorCode = item.IndicatorCode
+	edbInfo.StockCode = item.StockCode
+	edbInfoId, err := data_manage.AddEdbInfo(edbInfo)
+	if err != nil {
+		errMsg = "保存失败"
+		err = errors.New("保存失败,Err:" + err.Error())
+		return
+	}
+	edbInfo.EdbInfoId = int(edbInfoId)
+	//保存数据
+	err = data_manage.ModifyEdbInfoWindWsdDataStatus(source, item.SubSource, edbInfoId, item.EdbCode)
+	if err != nil {
+		errMsg = "保存失败"
+		err = errors.New("修改数据对应指标ID失败,Err:" + err.Error())
+		return
+	}
+	maxAndMinItem, _ := data_manage.GetEdbInfoWsdMaxAndMinInfo(source, item.SubSource, item.EdbCode)
+	if maxAndMinItem != nil {
+		err = data_manage.ModifyEdbInfoMaxAndMinInfo(int(edbInfoId), maxAndMinItem)
+	}
+	//添加es
+	AddOrEditEdbInfoToEs(int(edbInfoId))
+	return
+}