Browse Source

指标运算bug

xyxie 1 year ago
parent
commit
4d653d5b6f

+ 2 - 2
models/base_from_calculate.go

@@ -356,7 +356,7 @@ func refreshAllCalculate(to orm.TxOrmer, edbInfoIdArr []*EdbInfo, edbInfoId, sou
 	//数据处理,将日期内不全的数据做补全
 	HandleDateSaveDataMap(dateList, maxStartDate, minLatestDate, realSaveDataMap, saveDataMap, edbInfoIdArr, emptyType)
 
-	formulaDateSlice, formulaDateMap, err := utils.HandleFormulaJson(formulaStr, maxStartDate.Format(utils.FormatDate))
+	formulaDateSlice, formulaDateMap, err := utils.HandleFormulaJson(formulaStr, minLatestDate)
 	if err != nil {
 		return
 	}
@@ -399,7 +399,7 @@ func refreshAllCalculate(to orm.TxOrmer, edbInfoIdArr []*EdbInfo, edbInfoId, sou
 		formulaMap := make(map[string]string)
 		formulaStr = ""
 		for _, fv := range formulaDateSlice {
-			if sk >= fv {
+			if sk <= fv {
 				if f, ok := formulaDateMap[fv]; ok {
 					formulaStr = f
 					formulaMap = utils.CheckFormula(formulaStr)

+ 1 - 1
models/base_predict_from_calculate.go

@@ -330,7 +330,7 @@ func refreshAllPredictCalculate(to orm.TxOrmer, edbInfoIdList []*EdbInfo, edbInf
 	//数据处理,将日期内不全的数据做填补
 	HandleDateSaveDataMap(dateList, maxStartDate, minLatestDate, realSaveDataMap, saveDataMap, edbInfoIdList, emptyType)
 
-	formulaDateSlice, formulaDateMap, err := utils.HandleFormulaJson(formulaStr, maxStartDate.Format(utils.FormatDate))
+	formulaDateSlice, formulaDateMap, err := utils.HandleFormulaJson(formulaStr, minLatestDate)
 	if err != nil {
 		return
 	}

+ 1 - 1
models/predict_edb.go

@@ -115,7 +115,7 @@ func CalculateByRuleBy9(to orm.TxOrmer, rule CalculateRule) (resultDataList []*E
 	addDataList := make([]*PredictEdbRuleData, 0)
 
 	// 计算规则
-	formulaDateSlice, formulaDateMap, err := utils.HandleFormulaJson(formulaStr, maxStartDate.Format(utils.FormatDate))
+	formulaDateSlice, formulaDateMap, err := utils.HandleFormulaJson(formulaStr, minLatestDate)
 	if err != nil {
 		return
 	}

+ 1 - 1
services/base_from_predict.go

@@ -145,7 +145,7 @@ func CalculateByRuleByNine(formulaStr string, edbInfoList []*models.EdbInfo, edb
 	dataList = make([]*models.EdbDataList, 0)
 
 	// 计算规则
-	formulaDateSlice, formulaDateMap, err := utils.HandleFormulaJson(formulaStr, maxStartDate.Format(utils.FormatDate))
+	formulaDateSlice, formulaDateMap, err := utils.HandleFormulaJson(formulaStr, minLatestDate)
 	if err != nil {
 		return
 	}

+ 6 - 3
utils/base_from_calculate.go

@@ -5,6 +5,7 @@ import (
 	"fmt"
 	"sort"
 	"strings"
+	"time"
 )
 
 // CheckFormula 检测计算公式是否异常
@@ -37,7 +38,7 @@ type FormulaListItem struct {
 }
 
 // HandleFormulaJson 处理计算公式json串是否异常
-func HandleFormulaJson(formula string, startDate string) (dateSlice []string, formulaMap map[string]string, err error) {
+func HandleFormulaJson(formula string, endDate time.Time) (dateSlice []string, formulaMap map[string]string, err error) {
 	list := make([]FormulaListItem, 0)
 	err = json.Unmarshal([]byte(formula), &list)
 	if err != nil {
@@ -46,16 +47,18 @@ func HandleFormulaJson(formula string, startDate string) (dateSlice []string, fo
 	}
 	formulaMap = make(map[string]string)
 	dateSlice = make([]string, 0)
+	// 查找最后的一天作为首个公式的起始日期
+	maxDate := endDate.AddDate(0, 0, 1).Format(FormatDate)
 	// 日期排序
 	for k, v := range list {
 		if k == 0 { // 首个日期均为起始日
-			v.Date = startDate
+			v.Date = maxDate
 		}
 		formulaMap[v.Date] = v.Formula
 		dateSlice = append(dateSlice, v.Date)
 	}
 	sort.Slice(dateSlice, func(i, j int) bool {
-		return dateSlice[i] > dateSlice[j]
+		return dateSlice[i] < dateSlice[j]
 	})
 
 	return