Browse Source

优化计算指标数据刷新

longyu 2 years ago
parent
commit
af97574c40
2 changed files with 20 additions and 4 deletions
  1. 7 4
      models/base_from_calculate.go
  2. 13 0
      models/edb_data_base.go

+ 7 - 4
models/base_from_calculate.go

@@ -4,6 +4,7 @@ import (
 	"errors"
 	"fmt"
 	"github.com/beego/beego/v2/client/orm"
+	"github.com/shopspring/decimal"
 	"github.com/yidane/formula"
 	"hongze/hongze_edb_lib/services"
 	"hongze/hongze_edb_lib/utils"
@@ -149,7 +150,7 @@ func RefreshAllCalculate(edbInfoIdArr []*EdbInfo, edbInfoId, source int, edbCode
 		//	condition += " AND data_time<=? "
 		//	pars = append(pars, endDate)
 		//}
-		fmt.Println("v.Source:", v.Source)
+		//fmt.Println("v.Source:", v.Source)
 		dataList, err := GetEdbDataListAll(condition, pars, v.Source, 1)
 		if err != nil {
 			return err
@@ -193,7 +194,7 @@ func RefreshAllCalculate(edbInfoIdArr []*EdbInfo, edbInfoId, source int, edbCode
 
 	removeDateList := make([]string, 0) //需要移除的日期
 	for sk, sv := range saveDataMap {
-		fmt.Println(sk, sv)
+		//fmt.Println(sk, sv)
 		formulaStr = strings.ToUpper(formulaStr)
 		formulaFormStr := ReplaceFormula(edbInfoIdArr, sv, formulaMap, formulaStr, edbInfoIdBytes)
 		if formulaFormStr != "" {
@@ -217,7 +218,7 @@ func RefreshAllCalculate(edbInfoIdArr []*EdbInfo, edbInfoId, source int, edbCode
 				return err
 			}
 
-			saveValue := utils.SubFloatToString(calVal, 4)
+			saveValue := decimal.NewFromFloat(calVal).RoundCeil(4).String() //utils.SubFloatToString(calVal, 4)
 			if existVal, ok := dataMap[sk]; !ok {
 				dataTime, _ := time.Parse(utils.FormatDate, sk)
 				timestamp := dataTime.UnixNano() / 1e6
@@ -229,7 +230,9 @@ func RefreshAllCalculate(edbInfoIdArr []*EdbInfo, edbInfoId, source int, edbCode
 				}
 				existDataMap[sk] = sk
 			} else {
-				if existVal != saveValue {
+				existValDecimal, err := decimal.NewFromString(existVal)
+				existStr := existValDecimal.String()
+				if existStr != saveValue {
 					sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
 					sql = fmt.Sprintf(sql, dataTableName)
 					_, err = o.Raw(sql, saveValue, edbInfoId, sk).Exec()

+ 13 - 0
models/edb_data_base.go

@@ -130,3 +130,16 @@ func GetAllEdbDataList(edbInfoId, source int) (existDataList []*EdbData, err err
 	_, err = o.Raw(sql, edbInfoId).QueryRows(&existDataList)
 	return
 }
+
+//新版本
+type EdbDataV1 struct {
+	EdbDataId     int `orm:"column(edb_data_id);pk"`
+	EdbInfoId     int
+	EdbCode       string
+	DataTime      string
+	Value         string
+	Status        int
+	CreateTime    time.Time
+	ModifyTime    time.Time
+	DataTimestamp int64
+}