Jelajahi Sumber

新增指标获取接口

tuoling805 1 tahun lalu
induk
melakukan
03b2c079f7

+ 78 - 7
controllers/data_manage/edb_info.go

@@ -202,6 +202,7 @@ func (this *EdbInfoController) EdbInfoSearch() {
 				isAdd = true
 			}
 		} else if source == utils.DATA_SOURCE_WIND {
+			fmt.Println("subSource:", subSource)
 			if subSource == utils.DATA_SUB_SOURCE_EDB {
 				dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, utils.DATA_SOURCE_WIND, utils.EDB_DATA_LIMIT)
 				if err != nil && err.Error() != utils.ErrNoRow() {
@@ -1662,17 +1663,87 @@ func (this *EdbInfoController) EdbInfoSearch() {
 		}
 		if isAdd {
 			if subSource == utils.DATA_SUB_SOURCE_DATE {
-				var indexCodeArr []string
+				//wsdData := windWsdRespItem.Data
+				//var buf bytes.Buffer
+				//// 创建一个encoder并指定目标为buf
+				//enc := gob.NewEncoder(&buf)
+				//
+				//// 将data编码到buf中
+				//err = enc.Encode(wsdData)
+				//if err != nil {
+				//	br.Msg = "获取失败"
+				//	br.ErrMsg = "获取数据失败,wind wsd encoding GOB Err:" + err.Error()
+				//	return
+				//}
+				//
+				//wsdDataMap := make(map[string]map[string]interface{})
+				//err = json.Unmarshal(buf.Bytes(), &wsdDataMap)
+				//if err != nil {
+				//	br.Msg = "获取失败"
+				//	br.ErrMsg = "获取数据失败,wind wsd json.Unmarshal Err:" + err.Error()
+				//	return
+				//}
+				//
+				//stockList := make([]*data_manage.StockInfo, 0)
+				//
+				//dataList := make([]*data_manage.EdbInfoSearchData, 0)
+				//for wk, wv := range wsdDataMap {
+				//	for vk, vv := range wv {
+				//		wkInt, err := strconv.ParseInt(wk, 10, 64)
+				//		if err != nil {
+				//			br.Msg = "获取失败"
+				//			br.ErrMsg = "获取数据失败,转换日期类型失败 Err:" + err.Error()
+				//			return
+				//		}
+				//
+				//		vk = strings.ToLower(vk)
+				//		wkInt = wkInt / 1000
+				//		t := time.Unix(wkInt, 0)
+				//		dateTime := t.Format(utils.FormatDate)
+				//		//saveVal := utils.SubFloatToString(val, 20)
+				//		if vv == nil {
+				//			continue
+				//		}
+				//		var saveVal string
+				//		switch vt := vv.(type) {
+				//		case int:
+				//			saveVal = strconv.Itoa(vt)
+				//		case float64:
+				//			saveVal = utils.SubFloatToFloatStr(vt, 20)
+				//		case string:
+				//			saveVal = vt
+				//		}
+				//
+				//		dataItem := new(data_manage.EdbInfoSearchData)
+				//		dataItem.Value = saveVal
+				//		dataItem.DataTime = dateTime
+				//		dataList = append(dataList, dataItem)
+				//		if len(dataList) >= 10 {
+				//			break
+				//		}
+				//	}
+				//}
+				//searchItem.StockList = stockList
+
+				stockList := make([]*data_manage.StockInfo, 0)
 				edbCodeArr := strings.Split(edbCode, ",")
-				stockCodeArr := strings.Split(stockCode, ",")
+				for _, v := range edbCodeArr {
+					indexCode := utils.WindDbWsd + stockCode + v
 
-				for _, sv := range stockCodeArr {
-					for _, ev := range edbCodeArr {
-						indexCode := utils.WindDbWsd + sv + ev
-						indexCodeArr = append(indexCodeArr, indexCode)
+					dataList, err := data_manage.GetEdbDataAllByEdbCodeAndSubSource(indexCode, source, utils.DATA_SUB_SOURCE_DATE, utils.EDB_DATA_LIMIT)
+					if err != nil && err.Error() != utils.ErrNoRow() {
+						br.Msg = "获取失败"
+						br.ErrMsg = "获取数据失败,GetEdbDataAllByEdbCode Err:" + err.Error()
+						return
 					}
-				}
 
+					stockInfo := new(data_manage.StockInfo)
+					stockInfo.StockCode = stockCode
+					stockInfo.EdbCode = v
+					stockInfo.DataList = dataList
+					stockList = append(stockList, stockInfo)
+				}
+				searchItem.StockList = stockList
 			} else {
 				dataList, err := data_manage.GetEdbDataAllByEdbCode(edbCode, source, utils.EDB_DATA_LIMIT)
 				if err != nil && err.Error() != utils.ErrNoRow() {

+ 34 - 0
models/data_manage/edb_data_base.go

@@ -226,3 +226,37 @@ func GetEdbDataBaseByCodeAndDate(source int, edbCode string, startDate string) (
 	err = o.Raw(sql, edbCode, startDate).QueryRow(&count)
 	return
 }
+
+func GetEdbDataAllByEdbCodeAndSubSource(edbCode string, source, subSource, limit int) (items []*EdbInfoSearchData, err error) {
+	var pars []interface{}
+	pars = append(pars, edbCode)
+	o := orm.NewOrmUsingDB("data")
+
+	tableName := GetEdbDataTableNameAndSubSource(source, subSource)
+	sql := ` SELECT * FROM %s WHERE edb_code=? ORDER BY data_time DESC`
+	if limit > 0 {
+		sql += `  LIMIT ?  `
+		pars = append(pars, limit)
+	}
+	sql = fmt.Sprintf(sql, tableName)
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}
+
+// GetEdbDataTableName 指标数据->存储表
+func GetEdbDataTableNameAndSubSource(source, subSource int) (tableName string) {
+	switch source {
+	case utils.DATA_SOURCE_WIND:
+		if subSource == utils.DATA_SUB_SOURCE_EDB {
+			tableName = "edb_data_wind"
+		} else {
+			tableName = "edb_data_wind_wsd"
+		}
+	default:
+		edbSource := EdbSourceIdMap[source]
+		if edbSource != nil {
+			tableName = edbSource.TableName
+		}
+	}
+	return
+}

+ 7 - 0
models/data_manage/edb_info.go

@@ -98,6 +98,13 @@ type EdbInfoSearch struct {
 	Unit      string `description:"单位"`
 	Frequency string `description:"频率"`
 	DataList  []*EdbInfoSearchData
+	StockList []*StockInfo `description:"时序数据"`
+}
+
+type StockInfo struct {
+	StockCode string
+	EdbCode   string
+	DataList  []*EdbInfoSearchData
 }
 
 type EdbInfoSearchData struct {