zwxi 1 year ago
parent
commit
5c4de1ee54

+ 11 - 4
models/data_manage/chart_edb_mapping.go

@@ -30,6 +30,11 @@ type ChartEdbMapping struct {
 	ChartWidth        float64   `description:"线条大小"`
 	Source            int       `description:"1:ETA图库;2:商品价格曲线"`
 	EdbAliasName      string    `description:"中文别名"`
+	IsConvert         int       `description:"是否数据转换 0不转 1转"`
+	ConvertType       int       `description:"数据转换类型 1乘 2除 3对数"`
+	ConvertValue      float64   `description:"数据转换值"`
+	ConvertUnit       string    `description:"数据转换单位"`
+	ConvertEnUnit     string    `description:"数据转换单位"`
 }
 
 func AddChartEdbMapping(items []*ChartEdbMapping) (err error) {
@@ -78,10 +83,12 @@ func GetChartEdbMappingListByEdbInfoIdList(edbIdList []int) (list []*ChartEdbInf
 		return
 	}
 	o := orm.NewOrmUsingDB("data")
-	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,edb_type
-             FROM edb_info
-			 WHERE edb_info_id IN(` + utils.GetOrmInReplace(num) + `)
-			ORDER BY FIELD(edb_info_id,` + utils.GetOrmInReplace(num) + `)
+	sql := ` SELECT a.edb_info_id,a.source_name,a.source,a.sub_source,a.edb_code,a.edb_name,a.edb_name_en,a.frequency,a.unit,
+			a.unit_en,a.start_date,a.end_date,a.modify_time,a.latest_date,a.latest_value,a.unique_code,a.edb_info_type AS edb_info_category_type,a.max_value,min_value,a.edb_type,
+			b.is_convert, b.convert_type, b.convert_value, b.convert_unit, b.convert_en_unit 
+             FROM edb_info as a left join chart_edb_mapping as b 
+			 WHERE a.edb_info_id IN(` + utils.GetOrmInReplace(num) + `)
+			ORDER BY FIELD(a.edb_info_id,` + utils.GetOrmInReplace(num) + `)
               `
 	_, err = o.Raw(sql, edbIdList, edbIdList).QueryRows(&list)
 	return

+ 5 - 0
models/data_manage/chart_info.go

@@ -476,6 +476,11 @@ type ChartEdbInfoMapping struct {
 	MappingSource       int    `description:"1:ETA图库;2:商品价格曲线"`
 	RegionType          string `description:"交易所来源,海外还是国内" json:"-"`
 	ClassifyId          int    `description:"分类id"`
+	IsConvert           int    `description:"是否数据转换 0不转 1转"`
+	ConvertType         int    `description:"数据转换类型 1乘 2除 3对数"`
+	ConvertValue        float64    `description:"数据转换值"`
+	ConvertUnit         string `description:"数据转换单位"`
+	ConvertEnUnit       string `description:"数据转换单位"`
 }
 
 type QuarterData struct {

+ 26 - 1
services/data/chart_info.go

@@ -465,6 +465,11 @@ func getEdbDataMapList(chartInfoId, chartType int, calendar, startDate, endDate
 		item.UniqueCode = v.UniqueCode
 		item.MoveLatestDate = v.LatestDate
 		item.EdbAliasName = v.EdbAliasName
+		item.IsConvert = v.IsConvert
+		item.ConvertType = v.ConvertType
+		item.ConvertValue = v.ConvertValue
+		item.ConvertUnit = v.ConvertUnit
+		item.ConvertEnUnit = v.ConvertEnUnit
 
 		var startDateReal string
 		var diffSeconds int64
@@ -538,7 +543,6 @@ func getEdbDataMapList(chartInfoId, chartType int, calendar, startDate, endDate
 		if err != nil {
 			return
 		}
-		edbDataListMap[v.EdbInfoId] = dataList
 
 		if diffSeconds != 0 && v.EdbInfoType == 0 {
 			dataListLen := len(dataList)
@@ -584,6 +588,27 @@ func getEdbDataMapList(chartInfoId, chartType int, calendar, startDate, endDate
 				}
 				item.DataList = quarterDataList
 			}
+
+			if v.IsConvert == 1 {
+				switch v.ConvertType {
+				case 1:
+					for i, data := range dataList {
+						dataList[i].Value = data.Value * v.ConvertValue
+					}
+				case 2:
+					for i, data := range dataList {
+						dataList[i].Value = data.Value / v.ConvertValue
+					}
+				case 3:
+					for i, data := range dataList {
+						dataList[i].Value =  math.Log(data.Value) / math.Log(v.ConvertValue)
+					}
+				}
+
+			}
+
+			edbDataListMap[v.EdbInfoId] = dataList
+
 		} else if chartType == 7 || chartType == utils.CHART_TYPE_RADAR { //柱方图
 			//item.DataList = dataList
 		} else {