|
@@ -60,6 +60,7 @@ func RefreshCalculate(edbInfoIdArr []*data_manage.EdbInfo, edbInfoId int, edbCod
|
|
|
addSql := ` INSERT INTO edb_data_calculate(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
|
|
|
nowStr := time.Now().Format(utils.FormatDateTime)
|
|
|
var isAdd bool
|
|
|
+ removeDateList := make([]string, 0) //需要移除的日期
|
|
|
|
|
|
for sk, sv := range saveDataMap {
|
|
|
formulaStr = strings.ToUpper(formulaStr)
|
|
@@ -69,6 +70,11 @@ func RefreshCalculate(edbInfoIdArr []*data_manage.EdbInfo, edbInfoId int, edbCod
|
|
|
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("计算失败,edbCode:" + fmt.Sprint(edbCode) + ":Err:" + err.Error() + ";formulaStr:" + formulaFormStr)
|
|
|
fmt.Println(err)
|
|
|
return err
|
|
@@ -105,11 +111,22 @@ func RefreshCalculate(edbInfoIdArr []*data_manage.EdbInfo, edbInfoId int, edbCod
|
|
|
}
|
|
|
if isAdd {
|
|
|
addSql = strings.TrimRight(addSql, ",")
|
|
|
- data_manage.AddEdbDataCalculateBySql(addSql)
|
|
|
+ err = data_manage.AddEdbDataCalculateBySql(addSql)
|
|
|
if err != nil {
|
|
|
fmt.Println("AddEdbDataCalculate Err:" + err.Error())
|
|
|
return err
|
|
|
}
|
|
|
}
|
|
|
+ if len(removeDateList) > 0 {
|
|
|
+ removeDateStr := strings.Join(removeDateList, `","`)
|
|
|
+ removeDateStr = `"` + removeDateStr + `"`
|
|
|
+ //如果拼接指标变更了,那么需要删除所有的指标数据
|
|
|
+ sql := fmt.Sprintf(` DELETE FROM edb_data_calculate WHERE edb_info_id = ? and data_time in (%s) `, removeDateStr)
|
|
|
+ err = data_manage.DeleteEdbDataCalculateBySql(sql)
|
|
|
+ if err != nil {
|
|
|
+ err = fmt.Errorf("删除计算失败的计算指标数据失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
return
|
|
|
}
|