|
@@ -134,12 +134,13 @@ func CalculateByRuleBy9(to orm.TxOrmer, rule CalculateRule) (resultDataList []*E
|
|
|
return
|
|
|
}
|
|
|
dataMap := make(map[string]*PredictEdbRuleData)
|
|
|
+ removeDateMap := make(map[string]*PredictEdbRuleData) //需要移除的日期
|
|
|
for _, v := range dataList {
|
|
|
dataMap[v.DataTime] = v
|
|
|
+ removeDateMap[v.DataTime] = v
|
|
|
}
|
|
|
existDataMap := make(map[string]string)
|
|
|
|
|
|
- removeDateList := make([]string, 0) //需要移除的日期
|
|
|
// 判断是否特殊处理max和min函数
|
|
|
maxDealFlag := false
|
|
|
if rule.EmptyType == 4 && rule.MaxEmptyType == 2 {
|
|
@@ -184,7 +185,6 @@ func CalculateByRuleBy9(to orm.TxOrmer, rule CalculateRule) (resultDataList []*E
|
|
|
formulaFormStr := ReplaceFormula(rule.EdbInfoList, sv, svMax, formulaMap, formulaStr, rule.EdbInfoIdBytes, maxDealFlag)
|
|
|
//计算公式异常,那么就移除该指标
|
|
|
if formulaFormStr == "" {
|
|
|
- removeDateList = append(removeDateList, sk)
|
|
|
continue
|
|
|
}
|
|
|
|
|
@@ -194,7 +194,6 @@ func CalculateByRuleBy9(to orm.TxOrmer, rule CalculateRule) (resultDataList []*E
|
|
|
if tmpErr != nil {
|
|
|
// 分母为0的报错
|
|
|
if strings.Contains(tmpErr.Error(), "divide by zero") {
|
|
|
- removeDateList = append(removeDateList, sk)
|
|
|
continue
|
|
|
}
|
|
|
err = errors.New("计算失败:Err:" + tmpErr.Error() + ";formulaStr:" + formulaFormStr)
|
|
@@ -209,9 +208,12 @@ func CalculateByRuleBy9(to orm.TxOrmer, rule CalculateRule) (resultDataList []*E
|
|
|
}
|
|
|
nanCheck := fmt.Sprintf("%0.f", calVal)
|
|
|
if nanCheck == "NaN" || nanCheck == "+Inf" || nanCheck == "-Inf" {
|
|
|
- removeDateList = append(removeDateList, sk)
|
|
|
continue
|
|
|
}
|
|
|
+
|
|
|
+ // 移除不存在的日期
|
|
|
+ delete(removeDateMap, sk)
|
|
|
+
|
|
|
saveValue := decimal.NewFromFloat(calVal).RoundCeil(4).String() //utils.SubFloatToString(calVal, 4)
|
|
|
existPredictEdbRuleData, ok := dataMap[sk]
|
|
|
if !ok {
|
|
@@ -267,8 +269,12 @@ func CalculateByRuleBy9(to orm.TxOrmer, rule CalculateRule) (resultDataList []*E
|
|
|
}
|
|
|
|
|
|
//删除多余的值
|
|
|
- lenRemoveDateList := len(removeDateList)
|
|
|
+ lenRemoveDateList := len(removeDateMap)
|
|
|
if lenRemoveDateList > 0 {
|
|
|
+ removeDateList := make([]string, 0) //需要移除的日期
|
|
|
+ for date, _ := range removeDateMap {
|
|
|
+ removeDateList = append(removeDateList, date)
|
|
|
+ }
|
|
|
//如果拼接指标变更了,那么需要删除所有的指标数据
|
|
|
sql := ` DELETE FROM predict_edb_rule_data WHERE config_id = ? and data_time in (` + utils.GetOrmInReplace(lenRemoveDateList) + `) `
|
|
|
|