zwxi 1 year ago
parent
commit
a95d0543ee
2 changed files with 33 additions and 0 deletions
  1. 5 0
      models/chart.go
  2. 28 0
      services/data/chart_info.go

+ 5 - 0
models/chart.go

@@ -104,6 +104,11 @@ type ChartEdbInfoMapping struct {
 	SubSourceName       string  `description:"子数据来源名称"`
 	IndicatorCode       string  `description:"指标代码"`
 	StockCode           string  `description:"证券代码"`
+	IsConvert           int     `description:"是否数据转换 0不转 1转"`
+	ConvertType         int     `description:"数据转换类型 1乘 2除 3对数"`
+	ConvertValue        float64 `description:"数据转换值"`
+	ConvertUnit         string  `description:"数据转换单位"`
+	ConvertEnUnit       string  `description:"数据转换单位"`
 }
 
 func GetChartEdbMappingList(chartInfoId int) (list []*ChartEdbInfoMapping, err error) {

+ 28 - 0
services/data/chart_info.go

@@ -220,6 +220,11 @@ func getEdbDataMapList(chartInfoId, chartType int, calendar, startDate, endDate
 		item.LatestDate = v.LatestDate
 		item.UniqueCode = v.UniqueCode
 		item.MoveLatestDate = v.LatestDate
+		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
@@ -292,6 +297,29 @@ func getEdbDataMapList(chartInfoId, chartType int, calendar, startDate, endDate
 		if err != nil {
 			return
 		}
+		if v.IsConvert == 1 {
+			switch v.ConvertType {
+			case 1:
+				for i, data := range dataList {
+					dataList[i].Value = data.Value * v.ConvertValue
+				}
+				//item.MaxData = item.MaxData * v.ConvertValue
+				//item.MinData = item.MinData * v.ConvertValue
+			case 2:
+				for i, data := range dataList {
+					dataList[i].Value = data.Value / v.ConvertValue
+				}
+				//item.MaxData = item.MaxData / v.ConvertValue
+				//item.MinData = item.MinData / v.ConvertValue
+			case 3:
+				for i, data := range dataList {
+					dataList[i].Value = math.Log(data.Value) / math.Log(v.ConvertValue)
+				}
+				//item.MaxData = math.Log(item.MaxData) / math.Log(v.ConvertValue)
+				//item.MinData = math.Log(item.MinData) / math.Log(v.ConvertValue)
+			}
+		}
+
 		edbDataListMap[v.EdbInfoId] = dataList
 
 		if diffSeconds != 0 && v.EdbInfoType == 0 {