Roc 2 years ago
parent
commit
c44e23504b
1 changed files with 8 additions and 12 deletions
  1. 8 12
      services/chart/predict_edb_info_rule.go

+ 8 - 12
services/chart/predict_edb_info_rule.go

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