Browse Source

复合年化增长率修改

xyxie 6 months ago
parent
commit
c389b5e7a7
1 changed files with 25 additions and 16 deletions
  1. 25 16
      services/data/range_analysis/chart_info.go

+ 25 - 16
services/data/range_analysis/chart_info.go

@@ -174,9 +174,13 @@ func HandleDataByCalculateType(originList []*data_manage.ChartRangeAnalysisDateD
 						continue
 					}
 					baseVal = calDataList[len(calDataList)-1].Value
+					baseDate := calDataList[len(calDataList)-1].DataTime
 					if baseVal == 0 {
 						continue
 					}
+					if v.DataTime == baseDate {
+						continue
+					}
 
 					val := (v.Value - baseVal) / baseVal
 					val, _ = decimal.NewFromFloat(val).Round(4).Float64()
@@ -189,13 +193,17 @@ func HandleDataByCalculateType(originList []*data_manage.ChartRangeAnalysisDateD
 			}
 		} else {
 			for _, item := range originList {
-				var baseVal float64
-				for k, v := range item.DataList {
-					if k == 0 {
-						baseVal = v.Value
-						if baseVal == 0 {
-							break
-						}
+				if len(item.DataList) == 0 {
+					break
+				}
+				baseVal := item.DataList[len(item.DataList)-1].Value
+				baseDate := item.DataList[len(item.DataList)-1].DataTime
+				if baseVal == 0 {
+					break
+				}
+				for _, v := range item.DataList {
+					if v.DataTime == baseDate {
+						continue
 					}
 					val := (v.Value - baseVal) / baseVal
 					val, _ = decimal.NewFromFloat(val).Round(4).Float64()
@@ -250,15 +258,16 @@ func HandleDataByCalculateType(originList []*data_manage.ChartRangeAnalysisDateD
 			}
 		} else {
 			for _, item := range originList {
-				var baseVal float64
-				var baseDate string
-				for k, v := range item.DataList {
-					if k == 0 {
-						baseVal = v.Value
-						baseDate = v.DataTime
-						if baseVal == 0 {
-							break
-						}
+				if len(item.DataList) == 0 {
+					break
+				}
+				baseVal := item.DataList[len(item.DataList)-1].Value
+				baseDate := item.DataList[len(item.DataList)-1].DataTime
+				if baseVal == 0 {
+					break
+				}
+				for _, v := range item.DataList {
+					if v.DataTime == baseDate {
 						continue
 					}
 					baseDateT, e := time.ParseInLocation(utils.FormatDate, baseDate, time.Local)