Browse Source

区间计算

xyxie 6 months ago
parent
commit
f67ca344c2
2 changed files with 31 additions and 11 deletions
  1. 17 11
      models/edb_data_calculate_qjjs.go
  2. 14 0
      models/edb_info.go

+ 17 - 11
models/edb_data_calculate_qjjs.go

@@ -8,6 +8,7 @@ import (
 	"github.com/beego/beego/v2/client/orm"
 	"github.com/shopspring/decimal"
 	"math"
+	"sort"
 	"strconv"
 	"strings"
 	"time"
@@ -529,8 +530,8 @@ func HandleRangeAnalysisDataByCalculateType(originList []*ChartRangeAnalysisDate
 					if len(calDataList) == 0 {
 						continue
 					}
-					baseVal = calDataList[len(calDataList)-1].Value
-					baseDate := calDataList[len(calDataList)-1].DataTime
+					baseVal = calDataList[0].Value
+					baseDate := calDataList[0].DataTime
 					if baseVal == 0 {
 						continue
 					}
@@ -552,8 +553,8 @@ func HandleRangeAnalysisDataByCalculateType(originList []*ChartRangeAnalysisDate
 				if len(item.DataList) == 0 {
 					break
 				}
-				baseVal := item.DataList[len(item.DataList)-1].Value
-				baseDate := item.DataList[len(item.DataList)-1].DataTime
+				baseVal := item.DataList[0].Value
+				baseDate := item.DataList[0].DataTime
 				if baseVal == 0 {
 					break
 				}
@@ -585,8 +586,8 @@ func HandleRangeAnalysisDataByCalculateType(originList []*ChartRangeAnalysisDate
 					if len(calDataList) == 0 {
 						continue
 					}
-					baseVal = calDataList[len(calDataList)-1].Value
-					baseDate = calDataList[len(calDataList)-1].DataTime
+					baseVal = calDataList[0].Value
+					baseDate = calDataList[0].DataTime
 					if v.DataTime == baseDate {
 						continue
 					}
@@ -617,8 +618,8 @@ func HandleRangeAnalysisDataByCalculateType(originList []*ChartRangeAnalysisDate
 				if len(item.DataList) == 0 {
 					break
 				}
-				baseVal := item.DataList[len(item.DataList)-1].Value
-				baseDate := item.DataList[len(item.DataList)-1].DataTime
+				baseVal := item.DataList[0].Value
+				baseDate := item.DataList[0].DataTime
 				if baseVal == 0 {
 					break
 				}
@@ -743,9 +744,9 @@ func GetRangeAnalysisChartDataByEdbInfo(fromEdbInfo *EdbInfo, calculateFormula R
 		dataList, err = GetEdbDataListAll(fromEdbInfo.Source, fromEdbInfo.SubSource,
 			FindEdbDataListAllCond{
 				EdbInfoId: fromEdbInfo.EdbInfoId,
-			}, 0)
+			}, 1)
 	case 1:
-		dataList, err = GetPredictEdbDataListAllByStartDate(fromEdbInfo, 0, "")
+		dataList, err = GetPredictEdbDataListAllByStartDate(fromEdbInfo, 1, "")
 	default:
 		err = errors.New(fmt.Sprint("获取失败,指标base类型异常", fromEdbInfo.EdbInfoType))
 		return
@@ -903,7 +904,12 @@ func GetRangeAnalysisChartDataByEdbInfo(fromEdbInfo *EdbInfo, calculateFormula R
 func GetEdbDateByMoveForward(startDate string, moveForward int, edbDataList []*EdbInfoSearchData) (date string) {
 	// 根据日期进行排序
 	index := 0
-	for _, v := range edbDataList {
+	// 倒序处理
+	// 把正序的指标改成倒序
+	var dataList SortEdbDataList
+	dataList = edbDataList
+	sort.Sort(dataList)
+	for _, v := range dataList {
 		if v.DataTime == startDate {
 			index += 1
 			continue

+ 14 - 0
models/edb_info.go

@@ -1562,3 +1562,17 @@ func TransEdbInfoDataList2SearchData(items []*EdbDataList) (list []*EdbInfoSearc
 	}
 	return
 }
+
+type SortEdbDataList []*EdbInfoSearchData
+
+func (m SortEdbDataList) Len() int {
+	return len(m)
+}
+
+func (m SortEdbDataList) Less(i, j int) bool {
+	return m[i].DataTime > m[j].DataTime
+}
+
+func (m SortEdbDataList) Swap(i, j int) {
+	m[i], m[j] = m[j], m[i]
+}