Browse Source

fix:计算公式中,分母为0的bug修复

Roc 6 months ago
parent
commit
08ae718d49

+ 5 - 0
logic/profit_chart_info.go

@@ -523,6 +523,11 @@ func ProfitChartChartData(baseDataList []*models.EdbDataList, futureGoodEdbInfoM
 			calVal, err := engine.ParseAndExec(formulaFormStr)
 			//calVal, err := calResult.Float64()
 			if err != nil {
+				// 分母为0的报错,忽略该循环
+				if utils.IsDivideZero(err) {
+					//removeDateList = append(removeDateList, sk)
+					continue
+				}
 				err = errors.New("计算失败:获取计算值失败 Err:" + err.Error() + ";formulaStr:" + formulaFormStr)
 				fmt.Println(err)
 				return nil, nil, err

+ 6 - 0
models/base_from_calculate.go

@@ -481,6 +481,12 @@ func refreshAllCalculate(to orm.TxOrmer, edbInfoIdArr []*EdbInfo, edbInfoTag map
 		calVal, err := engine.ParseAndExec(formulaFormStr)
 		//calVal, err := calResult.Float64()
 		if err != nil {
+			// 分母为0的报错,忽略该循环
+			if utils.IsDivideZero(err) {
+				//removeDateList = append(removeDateList, sk)
+				continue
+			}
+
 			err = errors.New("计算失败:获取计算值失败 Err:" + err.Error() + ";formulaStr:" + formulaFormStr)
 			fmt.Println(err)
 			return err

+ 5 - 0
models/base_predict_from_calculate.go

@@ -460,6 +460,11 @@ func refreshAllPredictCalculate(to orm.TxOrmer, edbInfoIdList []*EdbInfo, edbInf
 			calVal, err := engine.ParseAndExec(formulaFormStr)
 			//calVal, err := calResult.Float64()
 			if err != nil {
+				// 分母为0的报错,忽略该循环
+				if utils.IsDivideZero(err) {
+					removeDateList = append(removeDateList, sk)
+					continue
+				}
 				err = errors.New("计算失败:获取计算值失败 Err:" + err.Error() + ";formulaStr:" + formulaFormStr)
 				return "", 0, err
 			}

+ 5 - 0
models/predict_edb.go

@@ -210,6 +210,11 @@ func CalculateByRuleBy9(to orm.TxOrmer, rule CalculateRule) (resultDataList []*E
 		calVal, err := engine.ParseAndExec(formulaFormStr)
 		//calVal, err := calResult.Float64()
 		if err != nil {
+			// 分母为0的报错,忽略该循环
+			if utils.IsDivideZero(err) {
+				//removeDateList = append(removeDateList, sk)
+				continue
+			}
 			err = errors.New("计算失败:获取计算值失败 Err:" + err.Error() + ";formulaStr:" + formulaFormStr)
 			fmt.Println(err)
 			return nil, err

+ 19 - 0
utils/common.go

@@ -1325,3 +1325,22 @@ func FormatFloatPlaces(val float64, places int32) (newVal float64, err error) {
 	newVal, _ = di.Float64()
 	return
 }
+
+// IsDivideZero
+// @Description: 判断是否分母为0的bug
+// @author: Roc
+// @datetime 2024-08-23 11:21:25
+// @param err error
+// @return bool
+func IsDivideZero(err error) bool {
+	if err == nil {
+		return false
+	}
+	//if strings.Contains(err.Error(), "divide by zero") {
+	//	return true
+	//}
+	if strings.Contains(err.Error(), "division by zero") {
+		return true
+	}
+	return false
+}