浏览代码

Merge branch 'bug/5659' into debug

# Conflicts:
#	controllers/base_from_calculate.go
#	models/base_from_calculate.go
#	models/edb_data_calculate_bp.go
#	models/edb_info.go
#	models/predict_edb_data_calculate_bp.go
#	utils/common.go
Roc 7 月之前
父节点
当前提交
8bfa4f2c9b

+ 0 - 2
controllers/base_from_calculate.go

@@ -819,10 +819,8 @@ func (this *CalculateController) BatchSave() {
 		br.ErrMsg = "保存失败,Err:" + err.Error()
 		return
 	}
-
 	// 判断是否需要禁用
 	go services.DisableEdbInfoNoUpdate(edbInfo)
-
 	resp := models.AddEdbInfoResp{
 		EdbInfoId:  edbInfo.EdbInfoId,
 		UniqueCode: edbInfo.UniqueCode,

+ 5 - 0
logic/profit_chart_info.go

@@ -528,6 +528,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

@@ -478,6 +478,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

@@ -469,6 +469,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
 			}

+ 1 - 1
models/edb_data_calculate_bp.go

@@ -45,8 +45,8 @@ func AddCalculateBp(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edb
 		edbInfo.EdbNameEn = req.EdbName
 		edbInfo.UnitEn = req.Unit
 		edbInfo.EdbType = 2
-		edbInfo.Sort = GetAddEdbMaxSortByClassifyId(req.ClassifyId, utils.EDB_INFO_TYPE)
 		edbInfo.EmptyType = req.EmptyType
+		edbInfo.Sort = GetAddEdbMaxSortByClassifyId(req.ClassifyId, utils.EDB_INFO_TYPE)
 		newEdbInfoId, tmpErr := to.Insert(edbInfo)
 		if tmpErr != nil {
 			err = tmpErr

+ 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

+ 1 - 1
models/predict_edb_data_calculate_bp.go

@@ -46,8 +46,8 @@ func SavePredictCalculateBp(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbI
 		edbInfo.UnitEn = req.Unit
 		edbInfo.CalculateFormula = req.Formula
 		edbInfo.EdbType = 2
-		edbInfo.Sort = GetAddEdbMaxSortByClassifyId(req.ClassifyId, utils.PREDICT_EDB_INFO_TYPE)
 		edbInfo.EmptyType = req.EmptyType
+		edbInfo.Sort = GetAddEdbMaxSortByClassifyId(req.ClassifyId, utils.PREDICT_EDB_INFO_TYPE)
 		newEdbInfoId, tmpErr := to.Insert(edbInfo)
 		if tmpErr != nil {
 			err = tmpErr

+ 19 - 0
utils/common.go

@@ -1470,3 +1470,22 @@ func CompareFloatByOpStrings(op string, a, b float64) bool {
 	}
 	return false
 }
+
+// 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
+}