Explorar o código

修复预测数据

kobe6258 hai 5 días
pai
achega
8ae714236d
Modificáronse 1 ficheiros con 13 adicións e 5 borrados
  1. 13 5
      services/data/predict_edb_info_rule.go

+ 13 - 5
services/data/predict_edb_info_rule.go

@@ -14,7 +14,6 @@ import (
 	"time"
 )
 
-
 type RuleParams struct {
 	EdbInfoId              int
 	DayList                []time.Time
@@ -1560,6 +1559,7 @@ func getReplaceValue(replaceValueMap map[string]float64, days, dayStep int, curr
 func GetChartPredictEdbInfoDataListByRuleDynamicYOYComparisonOrDifference(ruleType, edbInfoId int, configValue string, dayList []time.Time, realPredictEdbInfoData []*data_manage.EdbDataList, existMap map[string]float64) (newPredictEdbInfoData []*data_manage.EdbDataList, minValue, maxValue float64, err error) {
 	//预测指标的去年同期数据
 	baseDynamicDataList := make(map[string]decimal.Decimal, len(dayList))
+	//动态同比同差指标
 	DynamicCalculateDataList := make(map[string]decimal.Decimal, len(dayList))
 	index := len(realPredictEdbInfoData)
 	if index <= 0 {
@@ -1602,10 +1602,18 @@ func GetChartPredictEdbInfoDataListByRuleDynamicYOYComparisonOrDifference(ruleTy
 			baseDynamicDataList[preDateStr] = decimal.NewFromFloat(preValue)
 			predictDayList = append(predictDayList, date)
 		} else {
-			if baseDynamicDataList[preDateStr], ok = getReplaceValue(existMap, 0, -1, preDate); !ok {
-				continue
+			if replaceValue, replaceOk := getReplaceValue(existMap, 35, -1, preDate); !replaceOk {
+				replaceValue, replaceOk = getReplaceValue(existMap, 35, 1, preDate)
+				if !replaceOk {
+					continue
+				} else {
+					baseDynamicDataList[preDateStr] = replaceValue
+					predictDayList = append(predictDayList, date)
+				}
+			} else {
+				baseDynamicDataList[preDateStr] = replaceValue
+				predictDayList = append(predictDayList, date)
 			}
-			predictDayList = append(predictDayList, date)
 		}
 	}
 
@@ -1614,7 +1622,7 @@ func GetChartPredictEdbInfoDataListByRuleDynamicYOYComparisonOrDifference(ruleTy
 	for k, currentDate := range predictDayList {
 		var calculateValue decimal.Decimal
 		var dateStr = currentDate.Format(utils.FormatDate)
-		if _, ok := DynamicCalculateDataList[dateStr]; !ok {
+		if _, ok := DynamicCalculateDataList[dateStr]; ok {
 			switch ruleType {
 			case 17:
 				calculateValue = baseDynamicDataList[dateStr].Mul(DynamicCalculateDataList[dateStr].Add(decimal.NewFromInt(1)))