Roc 2 years ago
parent
commit
ffcec2ae82
1 changed files with 8 additions and 12 deletions
  1. 8 12
      models/predict_edb_info_rule.go

+ 8 - 12
models/predict_edb_info_rule.go

@@ -1029,7 +1029,7 @@ func GetChartPredictEdbInfoDataListByRuleTbzscz(edbInfoId int, tbEndValue float6
 		preDate := lastDayTime.AddDate(-1, 0, 0)
 		preDateStr := preDate.Format(utils.FormatDate)
 		if preValue, ok := existMap[preDateStr]; ok { //上一年同期找到
-			lastTb = decimal.NewFromFloat(lastData.Value).Div(decimal.NewFromFloat(preValue))
+			lastTb = (decimal.NewFromFloat(lastData.Value)).Sub(decimal.NewFromFloat(preValue)).Div(decimal.NewFromFloat(preValue))
 		} else {
 			switch frequency {
 			case "月度":
@@ -1039,12 +1039,12 @@ func GetChartPredictEdbInfoDataListByRuleTbzscz(edbInfoId int, tbEndValue float6
 				for i := 0; i <= 35; i++ {
 					nextDateDayStr := nextDateDay.Format(utils.FormatDate)
 					if preValue, ok := existMap[nextDateDayStr]; ok { //上一年同期->下一个月找到
-						lastTb = decimal.NewFromFloat(lastData.Value).Div(decimal.NewFromFloat(preValue))
+						lastTb = (decimal.NewFromFloat(lastData.Value)).Sub(decimal.NewFromFloat(preValue)).Div(decimal.NewFromFloat(preValue))
 						break
 					} else {
 						preDateDayStr := preDateDay.Format(utils.FormatDate)
 						if preValue, ok := existMap[preDateDayStr]; ok { //上一年同期->上一个月找到
-							lastTb = decimal.NewFromFloat(lastData.Value).Div(decimal.NewFromFloat(preValue))
+							lastTb = (decimal.NewFromFloat(lastData.Value)).Sub(decimal.NewFromFloat(preValue)).Div(decimal.NewFromFloat(preValue))
 							break
 						}
 					}
@@ -1054,7 +1054,7 @@ func GetChartPredictEdbInfoDataListByRuleTbzscz(edbInfoId int, tbEndValue float6
 
 			case "季度", "年度":
 				if preValue, ok := existMap[preDateStr]; ok { //上一年同期->下一个月找到
-					lastTb = decimal.NewFromFloat(lastData.Value).Div(decimal.NewFromFloat(preValue))
+					lastTb = (decimal.NewFromFloat(lastData.Value)).Sub(decimal.NewFromFloat(preValue)).Div(decimal.NewFromFloat(preValue))
 					break
 				}
 			default:
@@ -1064,12 +1064,12 @@ func GetChartPredictEdbInfoDataListByRuleTbzscz(edbInfoId int, tbEndValue float6
 				for i := 0; i < 35; i++ {
 					nextDateDayStr := nextDateDay.Format(utils.FormatDate)
 					if preValue, ok := existMap[nextDateDayStr]; ok { //上一年同期->下一个月找到
-						lastTb = decimal.NewFromFloat(lastData.Value).Div(decimal.NewFromFloat(preValue))
+						lastTb = (decimal.NewFromFloat(lastData.Value)).Sub(decimal.NewFromFloat(preValue)).Div(decimal.NewFromFloat(preValue))
 						break
 					} else {
 						preDateDayStr := preDateDay.Format(utils.FormatDate)
 						if preValue, ok := existMap[preDateDayStr]; ok { //上一年同期->上一个月找到
-							lastTb = decimal.NewFromFloat(lastData.Value).Div(decimal.NewFromFloat(preValue))
+							lastTb = (decimal.NewFromFloat(lastData.Value)).Sub(decimal.NewFromFloat(preValue)).Div(decimal.NewFromFloat(preValue))
 							break
 						} else {
 							//fmt.Println("pre not find:", preDateStr, "i:", i)
@@ -1087,17 +1087,13 @@ func GetChartPredictEdbInfoDataListByRuleTbzscz(edbInfoId int, tbEndValue float6
 	tbEndValueDecimal := decimal.NewFromFloat(tbEndValue)
 	avgTbVal := tbEndValueDecimal.Sub(lastTb).Div(decimal.NewFromInt(int64(lenDay)))
 
-	fmt.Println(lastTb.Float64())
-	fmt.Println(decimal.NewFromFloat(tbEndValue).Sub(lastTb))
-	fmt.Println(avgTbVal.Float64())
-
 	predictEdbInfoData = make([]*EdbInfoSearchData, 0)
 	for k, currentDate := range dayList {
 		var tbValue decimal.Decimal
 		if k == lenDay-1 { // 如果是最后的日期了,那么就用终值去计算
-			tbValue = tbEndValueDecimal
+			tbValue = tbEndValueDecimal.Add(decimal.NewFromInt(1))
 		} else { // 最近数据的同比值 + (平均增值乘以当前期数)
-			tbValue = lastTb.Add(avgTbVal.Mul(decimal.NewFromInt(int64(k + 1))))
+			tbValue = lastTb.Add(avgTbVal.Mul(decimal.NewFromInt(int64(k + 1)))).Add(decimal.NewFromInt(1))
 		}
 		tmpData := &EdbInfoSearchData{
 			EdbDataId: edbInfoId + 100000 + index + k,