|
@@ -191,6 +191,8 @@ func RefreshAllCalculate(edbInfoIdArr []*EdbInfo, edbInfoId, source int, edbCode
|
|
|
}
|
|
|
edbInfoIdStr := strconv.Itoa(edbInfoId)
|
|
|
existDataMap := make(map[string]string)
|
|
|
+
|
|
|
+ removeDateList := make([]string, 0) //需要移除的日期
|
|
|
for sk, sv := range saveDataMap {
|
|
|
fmt.Println(sk, sv)
|
|
|
formulaStr = strings.ToUpper(formulaStr)
|
|
@@ -200,6 +202,11 @@ func RefreshAllCalculate(edbInfoIdArr []*EdbInfo, edbInfoId, source int, edbCode
|
|
|
expression := formula.NewExpression(formulaFormStr)
|
|
|
calResult, err := expression.Evaluate()
|
|
|
if err != nil {
|
|
|
+ // 分母为0的报错
|
|
|
+ if strings.Contains(err.Error(), "divide by zero") {
|
|
|
+ removeDateList = append(removeDateList, sk)
|
|
|
+ continue
|
|
|
+ }
|
|
|
err = errors.New("计算失败:Err:" + err.Error() + ";formulaStr:" + formulaFormStr)
|
|
|
fmt.Println(err)
|
|
|
return err
|
|
@@ -234,6 +241,7 @@ func RefreshAllCalculate(edbInfoIdArr []*EdbInfo, edbInfoId, source int, edbCode
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
if isAdd {
|
|
|
addSql = strings.TrimRight(addSql, ",")
|
|
|
_, err = o.Raw(addSql).Exec()
|
|
@@ -242,6 +250,20 @@ func RefreshAllCalculate(edbInfoIdArr []*EdbInfo, edbInfoId, source int, edbCode
|
|
|
return
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ if len(removeDateList) > 0 {
|
|
|
+ removeDateStr := strings.Join(removeDateList, `","`)
|
|
|
+ removeDateStr = `"` + removeDateStr + `"`
|
|
|
+ //如果拼接指标变更了,那么需要删除所有的指标数据
|
|
|
+ tableName := GetEdbDataTableName(source)
|
|
|
+ sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (%s) `, tableName, removeDateStr)
|
|
|
+
|
|
|
+ _, err = o.Raw(sql, edbInfoId).Exec()
|
|
|
+ if err != nil {
|
|
|
+ err = fmt.Errorf("删除计算失败的计算指标数据失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
return
|
|
|
}
|
|
|
|