Bläddra i källkod

Merge branch 'aj_wind_wsd'

tuoling805 1 år sedan
förälder
incheckning
f87d257da1

+ 6 - 5
models/tables/chart_edb_mapping/query.go

@@ -12,6 +12,7 @@ type ChartEdbInfoMapping struct {
 	EdbInfoId         int       `description:"指标id"`
 	SourceName        string    `description:"来源名称"`
 	Source            int       `description:"来源id"`
+	SubSource         int       `description:"来源id"`
 	EdbCode           string    `description:"指标编码"`
 	EdbName           string    `description:"指标名称"`
 	EdbAliasName      string    `description:"指标名称(别名)"`
@@ -61,7 +62,7 @@ type ChartEdbInfoMappingList struct {
 func GetMappingListByChartInfoId(chartInfoId int) (list []*ChartEdbInfoMapping, err error) {
 	aField := `a.chart_edb_mapping_id,a.chart_info_id,a.edb_info_id,a.create_time,a.modify_time,a.unique_code,a.max_data,a.min_data,a.is_order,a.is_axis,a.edb_info_type,a.lead_value,a.lead_unit,a.chart_style,a.chart_color,a.predict_chart_color,a.chart_width,a.source as mapping_source`
 
-	sql := ` SELECT ` + aField + `,b.source_name,b.source,b.edb_code,b.edb_name,b.edb_name_en,b.frequency,b.unit,b.unit_en,b.start_date,b.end_date,b.modify_time,b.latest_date,b.latest_value,b.unique_code,b.edb_info_type AS edb_info_category_type,b.edb_type
+	sql := ` SELECT ` + aField + `,b.source_name,b.source,b.sub_source,b.edb_code,b.edb_name,b.edb_name_en,b.frequency,b.unit,b.unit_en,b.start_date,b.end_date,b.modify_time,b.latest_date,b.latest_value,b.unique_code,b.edb_info_type AS edb_info_category_type,b.edb_type
              FROM chart_edb_mapping AS a
 			 INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id
 			 WHERE chart_info_id=? 
@@ -73,7 +74,7 @@ func GetMappingListByChartInfoId(chartInfoId int) (list []*ChartEdbInfoMapping,
 
 // GetMappingListByEdbInfoId 根据指标ID获取指标映射列表
 func GetMappingListByEdbInfoId(edbInfoStr string) (list []*ChartEdbInfoMapping, err error) {
-	sql := ` SELECT edb_info_id,source_name,source,edb_code,edb_name,edb_name_en,frequency,unit,unit_en,start_date,end_date,modify_time,latest_date,latest_value,unique_code,edb_info_type AS edb_info_category_type,max_value,min_value FROM edb_info WHERE edb_info_id IN(` + edbInfoStr + `) ORDER BY FIELD(edb_info_id,` + edbInfoStr + `) `
+	sql := ` SELECT edb_info_id,source_name,source,sub_source,edb_code,edb_name,edb_name_en,frequency,unit,unit_en,start_date,end_date,modify_time,latest_date,latest_value,unique_code,edb_info_type AS edb_info_category_type,max_value,min_value FROM edb_info WHERE edb_info_id IN(` + edbInfoStr + `) ORDER BY FIELD(edb_info_id,` + edbInfoStr + `) `
 	err = global.MYSQL["data"].Raw(sql).Scan(&list).Error
 	return
 }
@@ -81,7 +82,7 @@ func GetMappingListByEdbInfoId(edbInfoStr string) (list []*ChartEdbInfoMapping,
 // GetEtaEdbChartEdbMapping       商品曲线图查询对应的普通指标
 func GetEtaEdbChartEdbMapping(chartInfoId int) (item *ChartEdbInfoMappingList, err error) {
 	aField := `a.chart_edb_mapping_id,a.chart_info_id,a.edb_info_id,a.create_time,a.modify_time,a.unique_code,a.max_data,a.min_data,a.is_order,a.is_axis,a.edb_info_type,a.lead_value,a.lead_unit,a.chart_style,a.chart_color,a.predict_chart_color,a.chart_width,a.source as mapping_source`
-	sql := ` SELECT ` + aField + `,b.source_name,b.source,b.edb_code,b.edb_name,b.edb_name_en,b.frequency,b.unit,b.unit_en,b.start_date,b.end_date,b.modify_time,b.latest_date,b.latest_value,b.unique_code,b.edb_info_type AS edb_info_category_type
+	sql := ` SELECT ` + aField + `,b.source_name,b.source,b.sub_source,b.edb_code,b.edb_name,b.edb_name_en,b.frequency,b.unit,b.unit_en,b.start_date,b.end_date,b.modify_time,b.latest_date,b.latest_value,b.unique_code,b.edb_info_type AS edb_info_category_type
              FROM chart_edb_mapping AS a
 			 INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id
 			 WHERE a.chart_info_id=? AND a.source = ?
@@ -116,7 +117,7 @@ func GetFutureGoodEdbChartEdbMappingList(chartInfoId int) (items []*ChartEdbInfo
 
 // GetChartEdbMappingByEdbInfoId 根据指标id获取edb_mapping
 func GetChartEdbMappingByEdbInfoId(edbInfoId int) (item *ChartEdbInfoMapping, err error) {
-	sql := ` SELECT edb_info_id,source_name,source,edb_code,edb_name,edb_name_en,frequency,unit,unit_en,start_date,end_date,modify_time,latest_date,latest_value,unique_code,edb_info_type AS edb_info_category_type,max_value,min_value
+	sql := ` SELECT edb_info_id,source_name,source,sub_source,edb_code,edb_name,edb_name_en,frequency,unit,unit_en,start_date,end_date,modify_time,latest_date,latest_value,unique_code,edb_info_type AS edb_info_category_type,max_value,min_value
              FROM edb_info
 			 WHERE edb_info_id = ? limit 1`
 	err = global.MYSQL["data"].Raw(sql, edbInfoId).First(&item).Error
@@ -129,7 +130,7 @@ func GetChartEdbMappingListByEdbInfoIdList(edbIdList []int) (list []*ChartEdbInf
 	if num <= 0 {
 		return
 	}
-	sql := ` SELECT edb_info_id,source_name,source,edb_code,edb_name,edb_name_en,frequency,unit,unit_en,start_date,end_date,modify_time,latest_date,latest_value,unique_code,edb_info_type AS edb_info_category_type,max_value,min_value
+	sql := ` SELECT edb_info_id,source_name,source,sub_source,edb_code,edb_name,edb_name_en,frequency,unit,unit_en,start_date,end_date,modify_time,latest_date,latest_value,unique_code,edb_info_type AS edb_info_category_type,max_value,min_value
              FROM edb_info
 			 WHERE edb_info_id IN(?)
 			ORDER BY FIELD(edb_info_id,?)

+ 11 - 7
models/tables/edb_data/query.go

@@ -9,13 +9,17 @@ import (
 	"time"
 )
 
-// 指标数据->存储表
-func GetEdbDataTableName(source int) (tableName string) {
+// GetEdbDataTableName 指标数据->存储表
+func GetEdbDataTableName(source, subSource int) (tableName string) {
 	switch source {
 	case utils.DATA_SOURCE_THS:
 		tableName = "edb_data_ths"
 	case utils.DATA_SOURCE_WIND:
-		tableName = "edb_data_wind"
+		if subSource == utils.DATA_SUB_SOURCE_DATE {
+			tableName = "edb_data_wind_wsd"
+		} else {
+			tableName = "edb_data_wind"
+		}
 	case utils.DATA_SOURCE_PB, utils.DATA_SOURCE_PB_FINANCE: //彭博经济数据、彭博财务数据
 		tableName = "edb_data_pb"
 	case utils.DATA_SOURCE_CALCULATE:
@@ -226,8 +230,8 @@ func (m QuarterDataList) Swap(i, j int) {
 }
 
 // GetEdbDataList 获取指标数据
-func GetEdbDataList(source, endInfoId int, startDate, endDate string) (list []*EdbDataList, err error) {
-	tableName := GetEdbDataTableName(source)
+func GetEdbDataList(source, subSource, endInfoId int, startDate, endDate string) (list []*EdbDataList, err error) {
+	tableName := GetEdbDataTableName(source, subSource)
 	if tableName == "" {
 		err = errors.New("无效的渠道:" + strconv.Itoa(source))
 		list = make([]*EdbDataList, 0)
@@ -269,9 +273,9 @@ type EdbInfoMaxAndMinInfo struct {
 	LatestValue float64 `description:"最新值"`
 }
 
-func GetEdbInfoMaxAndMinInfo(source int, edbCode string) (item *EdbInfoMaxAndMinInfo, err error) {
+func GetEdbInfoMaxAndMinInfo(source, subSource int, edbCode string) (item *EdbInfoMaxAndMinInfo, err error) {
 	sql := ``
-	tableName := GetEdbDataTableName(source)
+	tableName := GetEdbDataTableName(source, subSource)
 	sql = ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(value) AS min_value,MAX(value) AS max_value FROM %s WHERE edb_code=? `
 	sql = fmt.Sprintf(sql, tableName)
 	err = global.MYSQL["data"].Raw(sql, edbCode).Scan(&item).Error

+ 2 - 0
models/tables/edb_info/edb_info.go

@@ -8,6 +8,8 @@ type EdbInfo struct {
 	EdbInfoType      uint8     `gorm:"column:edb_info_type;type:tinyint(9) unsigned;default:0" json:"edbInfoType"`                       // 指标类型,0:普通指标,1:预测指标
 	SourceName       string    `gorm:"column:source_name;type:varchar(100)" json:"sourceName"`                                           // 来源名称
 	Source           int       `gorm:"uniqueIndex:idx_code_source;uniqueIndex:idx_edb_name;column:source;type:tinyint(4)" json:"source"` // 来源:1:同花顺,2:wind,3:彭博,4:指标运算,5:累计值转月,6:同比值,7:同差值,8:N数值移动平均计算,9:手工指标,10:隆众,11:有色,12:环比值,13:环差值,14:变频,15:钢联
+	SubSource        int       `gorm:"column:sub_source;type:tinyint(4)" json:"subSource"`                                               // 子来源,0:经济数据库,1:日期序列
+	SubSourceName    string    `gorm:"column:sub_source_name;type:varchar(100)" json:"subSourceName"`                                    // 子数据来源名称
 	EdbCode          string    `gorm:"uniqueIndex:idx_code_source;unique;column:edb_code;type:varchar(255);default:''" json:"edbCode"`   // 指标编码
 	EdbName          string    `gorm:"uniqueIndex:idx_edb_name;column:edb_name;type:varchar(255);default:''" json:"edbName"`             // 指标名称
 	EdbNameSource    string    `gorm:"column:edb_name_source;type:varchar(255);default:''" json:"edbNameSource"`                         // 指标名称_来源

+ 2 - 2
models/tables/edb_info/query.go

@@ -94,10 +94,10 @@ type EdbInfoSearchData struct {
 }
 
 // GetEdbDataListAll order:1升序,其余值为降序
-func GetEdbDataListAll(condition string, pars []interface{}, source, order int) (items []*EdbInfoSearchData, err error) {
+func GetEdbDataListAll(condition string, pars []interface{}, source, subSource, order int) (items []*EdbInfoSearchData, err error) {
 	items = make([]*EdbInfoSearchData, 0)
 	sql := ``
-	tableName := edb_data.GetEdbDataTableName(source)
+	tableName := edb_data.GetEdbDataTableName(source, subSource)
 	sql = ` SELECT * FROM %s WHERE 1=1 `
 	sql = fmt.Sprintf(sql, tableName)
 

+ 3 - 2
services/chart/chart_info.go

@@ -322,6 +322,7 @@ func RefreshChart(chartInfoId int) (err error) {
 	var startDate string
 	for _, bv := range newBaseEdbInfoArr {
 		source := bv.Source
+		subSource := bv.SubSource
 		edbInfoId := bv.EdbInfoId
 		edbCode := bv.EdbCode
 		startDate = bv.StartDate.Format(utils.FormatDate)
@@ -350,7 +351,7 @@ func RefreshChart(chartInfoId int) (err error) {
 		startDate = sTime.AddDate(0, 0, -limitDay).Format(utils.FormatDate)
 
 		fmt.Println("source:", source)
-		respItem, err := RefreshEdbData(edbInfoId, source, edbCode, startDate)
+		respItem, err := RefreshEdbData(edbInfoId, source, subSource, edbCode, startDate)
 		if err != nil {
 			errMsg = errors.New("RefreshEdbData Err:" + err.Error()).Error()
 			return err
@@ -603,7 +604,7 @@ func getEdbDataMapList(chartInfoId, chartType int, calendar, startDate, endDate
 		//var newEdbInfo *edbInfoModel.EdbInfo
 		switch v.EdbInfoCategoryType {
 		case 0:
-			dataList, err = edbDataModel.GetEdbDataList(v.Source, v.EdbInfoId, startDateReal, endDate)
+			dataList, err = edbDataModel.GetEdbDataList(v.Source, v.SubSource, v.EdbInfoId, startDateReal, endDate)
 		case 1:
 			_, dataList, _, _, err, _ = GetPredictDataListByPredictEdbInfoId(v.EdbInfoId, startDateReal, endDate, false)
 			//if item.MaxValue < newEdbInfo.MaxValue {

+ 4 - 4
services/chart/correlation/chart_info.go

@@ -235,7 +235,7 @@ func GetChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *chart_edb_mapping.C
 	aDataList := make([]*edb_data.EdbDataList, 0)
 	switch baseEdbInfo.EdbInfoCategoryType {
 	case 0:
-		aDataList, err = edb_data.GetEdbDataList(baseEdbInfo.Source, baseEdbInfo.EdbInfoId, startDate, endDate)
+		aDataList, err = edb_data.GetEdbDataList(baseEdbInfo.Source, baseEdbInfo.SubSource, baseEdbInfo.EdbInfoId, startDate, endDate)
 	case 1:
 		_, aDataList, _, _, err, _ = chart.GetPredictDataListByPredictEdbInfoId(baseEdbInfo.EdbInfoId, startDate, endDate, false)
 	default:
@@ -247,7 +247,7 @@ func GetChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *chart_edb_mapping.C
 	bDataList := make([]*edb_data.EdbDataList, 0)
 	switch changeEdbInfo.EdbInfoCategoryType {
 	case 0:
-		bDataList, err = edb_data.GetEdbDataList(changeEdbInfo.Source, changeEdbInfo.EdbInfoId, "", "")
+		bDataList, err = edb_data.GetEdbDataList(changeEdbInfo.Source, changeEdbInfo.SubSource, changeEdbInfo.EdbInfoId, "", "")
 	case 1:
 		_, bDataList, _, _, err, _ = chart.GetPredictDataListByPredictEdbInfoId(changeEdbInfo.EdbInfoId, "", "", false)
 	default:
@@ -438,7 +438,7 @@ func GetRollingCorrelationChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *c
 	aDataList := make([]*edb_data.EdbDataList, 0)
 	switch baseEdbInfo.EdbInfoCategoryType {
 	case 0:
-		aDataList, err = edb_data.GetEdbDataList(baseEdbInfo.Source, baseEdbInfo.EdbInfoId, startDate, endDate)
+		aDataList, err = edb_data.GetEdbDataList(baseEdbInfo.Source, baseEdbInfo.SubSource, baseEdbInfo.EdbInfoId, startDate, endDate)
 	case 1:
 		_, aDataList, _, _, err, _ = chart.GetPredictDataListByPredictEdbInfoId(baseEdbInfo.EdbInfoId, startDate, endDate, false)
 	default:
@@ -450,7 +450,7 @@ func GetRollingCorrelationChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *c
 	bDataList := make([]*edb_data.EdbDataList, 0)
 	switch changeEdbInfo.EdbInfoCategoryType {
 	case 0:
-		bDataList, err = edb_data.GetEdbDataList(changeEdbInfo.Source, changeEdbInfo.EdbInfoId, "", "")
+		bDataList, err = edb_data.GetEdbDataList(changeEdbInfo.Source, changeEdbInfo.SubSource, changeEdbInfo.EdbInfoId, "", "")
 	case 1:
 		_, bDataList, _, _, err, _ = chart.GetPredictDataListByPredictEdbInfoId(changeEdbInfo.EdbInfoId, "", "", false)
 	default:

+ 6 - 2
services/chart/edb_data.go

@@ -22,7 +22,7 @@ type RefreshResponse struct {
 }
 
 // RefreshEdbData 刷新指标数据
-func RefreshEdbData(edbInfoId, source int, edbCode, startDate string) (resp *RefreshResponse, err error) {
+func RefreshEdbData(edbInfoId, source, subSource int, edbCode, startDate string) (resp *RefreshResponse, err error) {
 	param := make(map[string]interface{})
 	param["EdbCode"] = edbCode
 	param["EdbInfoId"] = edbInfoId
@@ -32,7 +32,11 @@ func RefreshEdbData(edbInfoId, source int, edbCode, startDate string) (resp *Ref
 	case utils.DATA_SOURCE_THS:
 		urlStr = "/ths/refresh"
 	case utils.DATA_SOURCE_WIND:
-		urlStr = "/wind/refresh"
+		if subSource == 0 {
+			urlStr = "wind/refresh"
+		} else {
+			urlStr = "wind/wsd/refresh"
+		}
 	case utils.DATA_SOURCE_PB:
 		urlStr = "/pb/refresh"
 	case utils.DATA_SOURCE_PB_FINANCE:

+ 2 - 2
services/chart/edb_info.go

@@ -63,7 +63,7 @@ func EdbInfoRefreshAllFromBase(edbInfoIdList []int, refreshAll bool) (err error,
 			}
 			startDate = sTime.AddDate(0, 0, -limitDay).Format(utils.FormatDate)
 		}
-		result, tmpErr := RefreshEdbData(bv.EdbInfoId, bv.Source, bv.EdbCode, startDate)
+		result, tmpErr := RefreshEdbData(bv.EdbInfoId, bv.Source, bv.SubSource, bv.EdbCode, startDate)
 		if tmpErr != nil {
 			err = tmpErr
 			fmt.Println(bv.EdbInfoId, "RefreshBaseEdbData err", time.Now())
@@ -213,7 +213,7 @@ func EdbInfoRefreshAllFromBase(edbInfoIdList []int, refreshAll bool) (err error,
 			return
 		}
 		for _, bv := range predictEdbConfCalculateMappingDetailList {
-			result, tmpErr := RefreshEdbData(bv.EdbInfoId, utils.DATA_SOURCE_PREDICT, bv.EdbCode, "")
+			result, tmpErr := RefreshEdbData(bv.EdbInfoId, utils.DATA_SOURCE_PREDICT, utils.DATA_SUB_SOURCE_EDB, bv.EdbCode, "")
 			if tmpErr != nil {
 				err = tmpErr
 				fmt.Println(bv.EdbInfoId, "RefreshBasePredictEdbData err", time.Now())

+ 1 - 1
services/chart/future_good/chart_info.go

@@ -75,7 +75,7 @@ func GetChartEdbData(chartInfoId int, startDate, endDate string, edbInfoMapping,
 	{
 		dataList := make([]*edbDataModel.EdbDataList, 0)
 
-		dataList, err = edbDataModel.GetEdbDataList(edbInfoMapping.Source, edbInfoMapping.EdbInfoId, startDate, endDate)
+		dataList, err = edbDataModel.GetEdbDataList(edbInfoMapping.Source, edbInfoMapping.SubSource, edbInfoMapping.EdbInfoId, startDate, endDate)
 		edbDataListMap[edbInfoMapping.EdbInfoId] = dataList
 		item.DataList = dataList
 

+ 3 - 3
services/chart/predict_edb_info.go

@@ -382,13 +382,13 @@ func GetPredictDataListByPredictEdbInfo(edbInfo *edbInfoModel.EdbInfo, startDate
 
 	allDataList := make([]*edbDataModel.EdbDataList, 0)
 	//获取指标数据(实际已生成)
-	dataList, err = edbDataModel.GetEdbDataList(sourceEdbInfoItem.Source, sourceEdbInfoItem.EdbInfoId, startDate, endDate)
+	dataList, err = edbDataModel.GetEdbDataList(sourceEdbInfoItem.Source, sourceEdbInfoItem.SubSource, sourceEdbInfoItem.EdbInfoId, startDate, endDate)
 	if err != nil {
 		return
 	}
 	// 如果选择了日期,那么需要筛选所有的数据,用于未来指标的生成
 	if startDate != `` {
-		allDataList, err = edbDataModel.GetEdbDataList(sourceEdbInfoItem.Source, sourceEdbInfoItem.EdbInfoId, "", "")
+		allDataList, err = edbDataModel.GetEdbDataList(sourceEdbInfoItem.Source, sourceEdbInfoItem.SubSource, sourceEdbInfoItem.EdbInfoId, "", "")
 		if err != nil {
 			return
 		}
@@ -431,6 +431,6 @@ func GetPredictDataListByPredictEdbInfo(edbInfo *edbInfoModel.EdbInfo, startDate
 
 // GetPredictCalculateDataListByPredictEdbInfo 根据预测运算指标信息获取预测指标的数据
 func GetPredictCalculateDataListByPredictEdbInfo(edbInfo *edbInfoModel.EdbInfo, startDate, endDate string) (dataList []*edbDataModel.EdbDataList, sourceEdbInfoItem *edbInfoModel.EdbInfo, predictEdbConf *predictEdbConfModel.PredictEdbConf, err error, errMsg string) {
-	dataList, err = edbDataModel.GetEdbDataList(edbInfo.Source, edbInfo.EdbInfoId, startDate, endDate)
+	dataList, err = edbDataModel.GetEdbDataList(edbInfo.Source, edbInfo.SubSource, edbInfo.EdbInfoId, startDate, endDate)
 	return
 }

+ 1 - 1
services/chart/predict_edb_info_rule.go

@@ -1339,7 +1339,7 @@ func getCalculateNhccData(secondDataList []*edbDataModel.EdbDataList, ruleConf R
 		var firstDataList []*edbDataModel.EdbDataList
 		switch edbInfo.EdbInfoType {
 		case 0:
-			firstDataList, err = edbDataModel.GetEdbDataList(edbInfo.Source, edbInfo.EdbInfoId, ``, ``)
+			firstDataList, err = edbDataModel.GetEdbDataList(edbInfo.Source, edbInfo.SubSource, edbInfo.EdbInfoId, ``, ``)
 		case 1:
 			_, firstDataList, _, _, err, _ = GetPredictDataListByPredictEdbInfoId(edbInfo.EdbInfoId, ``, ``, false)
 		default:

+ 6 - 0
utils/constants.go

@@ -338,3 +338,9 @@ var DataSourceEnMap = map[int]string{
 	DATA_SOURCE_BAIINFO:          "BAIINFO",
 	DATA_SOURCE_MYSTEEL_CHEMICAL: "Horizon Insights",
 }
+
+// 子数据来源渠道
+const (
+	DATA_SUB_SOURCE_EDB  = iota //经济数据库
+	DATA_SUB_SOURCE_DATE        //日期序列
+)