|
@@ -7,10 +7,8 @@ import (
|
|
|
"eta/eta_api/utils"
|
|
|
"fmt"
|
|
|
"github.com/shopspring/decimal"
|
|
|
- "github.com/yidane/formula"
|
|
|
"math"
|
|
|
"regexp"
|
|
|
- "strconv"
|
|
|
"strings"
|
|
|
"time"
|
|
|
)
|
|
@@ -64,377 +62,6 @@ type CalculateItems struct {
|
|
|
DataMap map[string]float64
|
|
|
}
|
|
|
|
|
|
-func Calculate(edbInfoIdArr []*data_manage.EdbInfo, edbInfoId int, edbCode, formulaStr string, edbInfoIdBytes []string) (err error) {
|
|
|
- defer func() {
|
|
|
- if err != nil {
|
|
|
- utils.FileLog.Info("Calculate Err:%s" + err.Error())
|
|
|
- }
|
|
|
- }()
|
|
|
- saveDataMap := make(map[string]map[int]float64)
|
|
|
- for _, v := range edbInfoIdArr {
|
|
|
- var condition string
|
|
|
- var pars []interface{}
|
|
|
- condition += " AND edb_info_id=? "
|
|
|
- pars = append(pars, v.EdbInfoId)
|
|
|
- dataList, err := data_manage.GetEdbDataListAll(condition, pars, v.Source, v.SubSource, 1)
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
- dataMap := make(map[string]float64)
|
|
|
- for _, dv := range dataList {
|
|
|
- if val, ok := saveDataMap[dv.DataTime]; ok {
|
|
|
- if _, ok := val[v.EdbInfoId]; !ok {
|
|
|
- val[v.EdbInfoId] = dv.Value
|
|
|
- }
|
|
|
- } else {
|
|
|
- temp := make(map[int]float64)
|
|
|
- temp[v.EdbInfoId] = dv.Value
|
|
|
- saveDataMap[dv.DataTime] = temp
|
|
|
- }
|
|
|
- }
|
|
|
- item := new(CalculateItems)
|
|
|
- item.EdbInfoId = v.EdbInfoId
|
|
|
- item.DataMap = dataMap
|
|
|
- }
|
|
|
- formulaMap := CheckFormula(formulaStr)
|
|
|
- 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
|
|
|
- for sk, sv := range saveDataMap {
|
|
|
- formulaStr = strings.ToUpper(formulaStr)
|
|
|
- formulaFormStr := ReplaceFormula(edbInfoIdArr, sv, formulaMap, formulaStr, edbInfoIdBytes)
|
|
|
- if formulaStr == "" {
|
|
|
- return
|
|
|
- }
|
|
|
- if formulaFormStr != "" {
|
|
|
- expression := formula.NewExpression(formulaFormStr)
|
|
|
- calResult, err := expression.Evaluate()
|
|
|
- if err != nil {
|
|
|
- err = errors.New("计算失败:Err:" + err.Error() + ";formulaStr:" + formulaFormStr)
|
|
|
- fmt.Println(err)
|
|
|
- return err
|
|
|
- }
|
|
|
- calVal, err := calResult.Float64()
|
|
|
- if err != nil {
|
|
|
- err = errors.New("计算失败:获取计算值失败 Err:" + err.Error() + ";formulaStr:" + formulaFormStr)
|
|
|
- fmt.Println(err)
|
|
|
- return err
|
|
|
- }
|
|
|
-
|
|
|
- //需要存入的数据
|
|
|
- {
|
|
|
- dataTime, _ := time.Parse(utils.FormatDate, sk)
|
|
|
- timestamp := dataTime.UnixNano() / 1e6
|
|
|
- timeStr := fmt.Sprintf("%d", timestamp)
|
|
|
- addSql += "("
|
|
|
- addSql += strconv.Itoa(edbInfoId) + "," + "'" + edbCode + "'" + "," + "'" + sk + "'" + "," + utils.SubFloatToString(calVal, 4) + "," + "'" + nowStr + "'" +
|
|
|
- "," + "'" + nowStr + "'" + "," + "1"
|
|
|
- addSql += "," + "'" + timeStr + "'"
|
|
|
- addSql += "),"
|
|
|
- isAdd = true
|
|
|
- }
|
|
|
- } else {
|
|
|
- fmt.Println("formulaFormStr is empty")
|
|
|
- }
|
|
|
- }
|
|
|
- if isAdd {
|
|
|
- addSql = strings.TrimRight(addSql, ",")
|
|
|
- data_manage.AddEdbDataCalculateBySql(addSql)
|
|
|
- if err != nil {
|
|
|
- fmt.Println("AddEdbDataCalculate Err:" + err.Error())
|
|
|
- return err
|
|
|
- }
|
|
|
- }
|
|
|
- return
|
|
|
-}
|
|
|
-
|
|
|
-func ReplaceFormula(edbInfoIdArr []*data_manage.EdbInfo, valArr map[int]float64, formulaMap map[string]string, formulaStr string, edbInfoIdBytes []string) string {
|
|
|
- // todo 处理min和max
|
|
|
- funMap := GetFormulaMap()
|
|
|
- for k, v := range funMap {
|
|
|
- formulaStr = strings.Replace(formulaStr, k, v, -1)
|
|
|
- }
|
|
|
- replaceCount := 0
|
|
|
- for dk, dv := range edbInfoIdArr {
|
|
|
- if dk == 0 {
|
|
|
- dKey := edbInfoIdBytes[dk]
|
|
|
- if _, ok := formulaMap[dKey]; ok { //公式中存在
|
|
|
- if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
|
|
|
- dvStr := fmt.Sprintf("%v", val)
|
|
|
- formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
|
|
|
- replaceCount++
|
|
|
- } else {
|
|
|
- fmt.Println("valArr not found:", valArr, valOk)
|
|
|
- }
|
|
|
- } else {
|
|
|
- fmt.Println("formulaMap not found:", dKey, dk)
|
|
|
- }
|
|
|
- }
|
|
|
- if dk == 1 {
|
|
|
- dKey := edbInfoIdBytes[dk]
|
|
|
- if _, ok := formulaMap[dKey]; ok { //公式中存在
|
|
|
- if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
|
|
|
- dvStr := fmt.Sprintf("%v", val)
|
|
|
- formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
|
|
|
- replaceCount++
|
|
|
- } else {
|
|
|
- fmt.Println("valArr not found:", valArr, valOk)
|
|
|
- }
|
|
|
- } else {
|
|
|
- fmt.Println("formulaMap not found:", dKey, dk)
|
|
|
- }
|
|
|
- }
|
|
|
- if dk == 2 {
|
|
|
- dKey := edbInfoIdBytes[dk]
|
|
|
- if _, ok := formulaMap[dKey]; ok { //公式中存在
|
|
|
- if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
|
|
|
- dvStr := fmt.Sprintf("%v", val)
|
|
|
- formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
|
|
|
- replaceCount++
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if dk == 3 {
|
|
|
- dKey := edbInfoIdBytes[dk]
|
|
|
- if _, ok := formulaMap[dKey]; ok { //公式中存在
|
|
|
- if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
|
|
|
- dvStr := fmt.Sprintf("%v", val)
|
|
|
- formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
|
|
|
- replaceCount++
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if dk == 4 {
|
|
|
- dKey := edbInfoIdBytes[dk]
|
|
|
- if _, ok := formulaMap[dKey]; ok { //公式中存在
|
|
|
- if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
|
|
|
- dvStr := fmt.Sprintf("%v", val)
|
|
|
- formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
|
|
|
- replaceCount++
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if dk == 5 {
|
|
|
- dKey := edbInfoIdBytes[dk]
|
|
|
- if _, ok := formulaMap[dKey]; ok { //公式中存在
|
|
|
- if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
|
|
|
- dvStr := fmt.Sprintf("%v", val)
|
|
|
- formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
|
|
|
- replaceCount++
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if dk == 6 {
|
|
|
- dKey := edbInfoIdBytes[dk]
|
|
|
- if _, ok := formulaMap[dKey]; ok { //公式中存在
|
|
|
- if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
|
|
|
- dvStr := fmt.Sprintf("%v", val)
|
|
|
- formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
|
|
|
- replaceCount++
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if dk == 7 {
|
|
|
- dKey := edbInfoIdBytes[dk]
|
|
|
- if _, ok := formulaMap[dKey]; ok { //公式中存在
|
|
|
- if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
|
|
|
- dvStr := fmt.Sprintf("%v", val)
|
|
|
- formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
|
|
|
- replaceCount++
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if dk == 8 {
|
|
|
- dKey := edbInfoIdBytes[dk]
|
|
|
- if _, ok := formulaMap[dKey]; ok { //公式中存在
|
|
|
- if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
|
|
|
- dvStr := fmt.Sprintf("%v", val)
|
|
|
- formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
|
|
|
- replaceCount++
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if dk == 9 {
|
|
|
- dKey := edbInfoIdBytes[dk]
|
|
|
- if _, ok := formulaMap[dKey]; ok { //公式中存在
|
|
|
- if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
|
|
|
- dvStr := fmt.Sprintf("%v", val)
|
|
|
- formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
|
|
|
- replaceCount++
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if dk == 10 {
|
|
|
- dKey := edbInfoIdBytes[dk]
|
|
|
- if _, ok := formulaMap[dKey]; ok { //公式中存在
|
|
|
- if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
|
|
|
- dvStr := fmt.Sprintf("%v", val)
|
|
|
- formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
|
|
|
- replaceCount++
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if dk == 11 {
|
|
|
- dKey := edbInfoIdBytes[dk]
|
|
|
- if _, ok := formulaMap[dKey]; ok { //公式中存在
|
|
|
- if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
|
|
|
- dvStr := fmt.Sprintf("%v", val)
|
|
|
- formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
|
|
|
- replaceCount++
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if dk == 12 {
|
|
|
- dKey := edbInfoIdBytes[dk]
|
|
|
- if _, ok := formulaMap[dKey]; ok { //公式中存在
|
|
|
- if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
|
|
|
- dvStr := fmt.Sprintf("%v", val)
|
|
|
- formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
|
|
|
- replaceCount++
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if dk == 13 {
|
|
|
- dKey := edbInfoIdBytes[dk]
|
|
|
- if _, ok := formulaMap[dKey]; ok { //公式中存在
|
|
|
- if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
|
|
|
- dvStr := fmt.Sprintf("%v", val)
|
|
|
- formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
|
|
|
- replaceCount++
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if dk == 14 {
|
|
|
- dKey := edbInfoIdBytes[dk]
|
|
|
- if _, ok := formulaMap[dKey]; ok { //公式中存在
|
|
|
- if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
|
|
|
- dvStr := fmt.Sprintf("%v", val)
|
|
|
- formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
|
|
|
- replaceCount++
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if dk == 15 {
|
|
|
- dKey := edbInfoIdBytes[dk]
|
|
|
- if _, ok := formulaMap[dKey]; ok { //公式中存在
|
|
|
- if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
|
|
|
- dvStr := fmt.Sprintf("%v", val)
|
|
|
- formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
|
|
|
- replaceCount++
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if dk == 16 {
|
|
|
- dKey := edbInfoIdBytes[dk]
|
|
|
- if _, ok := formulaMap[dKey]; ok { //公式中存在
|
|
|
- if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
|
|
|
- dvStr := fmt.Sprintf("%v", val)
|
|
|
- formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
|
|
|
- replaceCount++
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if dk == 17 {
|
|
|
- dKey := edbInfoIdBytes[dk]
|
|
|
- if _, ok := formulaMap[dKey]; ok { //公式中存在
|
|
|
- if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
|
|
|
- dvStr := fmt.Sprintf("%v", val)
|
|
|
- formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
|
|
|
- replaceCount++
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if dk == 18 {
|
|
|
- dKey := edbInfoIdBytes[dk]
|
|
|
- if _, ok := formulaMap[dKey]; ok { //公式中存在
|
|
|
- if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
|
|
|
- dvStr := fmt.Sprintf("%v", val)
|
|
|
- formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
|
|
|
- replaceCount++
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if dk == 19 {
|
|
|
- dKey := edbInfoIdBytes[dk]
|
|
|
- if _, ok := formulaMap[dKey]; ok { //公式中存在
|
|
|
- if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
|
|
|
- dvStr := fmt.Sprintf("%v", val)
|
|
|
- formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
|
|
|
- replaceCount++
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if dk == 20 {
|
|
|
- dKey := edbInfoIdBytes[dk]
|
|
|
- if _, ok := formulaMap[dKey]; ok { //公式中存在
|
|
|
- if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
|
|
|
- dvStr := fmt.Sprintf("%v", val)
|
|
|
- formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
|
|
|
- replaceCount++
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if dk == 21 {
|
|
|
- dKey := edbInfoIdBytes[dk]
|
|
|
- if _, ok := formulaMap[dKey]; ok { //公式中存在
|
|
|
- if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
|
|
|
- dvStr := fmt.Sprintf("%v", val)
|
|
|
- formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
|
|
|
- replaceCount++
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if dk == 22 {
|
|
|
- dKey := edbInfoIdBytes[dk]
|
|
|
- if _, ok := formulaMap[dKey]; ok { //公式中存在
|
|
|
- if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
|
|
|
- dvStr := fmt.Sprintf("%v", val)
|
|
|
- formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
|
|
|
- replaceCount++
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if dk == 23 {
|
|
|
- dKey := edbInfoIdBytes[dk]
|
|
|
- if _, ok := formulaMap[dKey]; ok { //公式中存在
|
|
|
- if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
|
|
|
- dvStr := fmt.Sprintf("%v", val)
|
|
|
- formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
|
|
|
- replaceCount++
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if dk == 24 {
|
|
|
- dKey := edbInfoIdBytes[dk]
|
|
|
- if _, ok := formulaMap[dKey]; ok { //公式中存在
|
|
|
- if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
|
|
|
- dvStr := fmt.Sprintf("%v", val)
|
|
|
- formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
|
|
|
- replaceCount++
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if dk == 25 {
|
|
|
- dKey := edbInfoIdBytes[dk]
|
|
|
- if _, ok := formulaMap[dKey]; ok { //公式中存在
|
|
|
- if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
|
|
|
- dvStr := fmt.Sprintf("%v", val)
|
|
|
- formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
|
|
|
- replaceCount++
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- for k, v := range funMap {
|
|
|
- formulaStr = strings.Replace(formulaStr, v, k, -1)
|
|
|
- }
|
|
|
- if replaceCount == len(formulaMap) {
|
|
|
- return formulaStr
|
|
|
- } else {
|
|
|
- return ""
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
func GetFormulaMap() map[string]string {
|
|
|
funMap := make(map[string]string)
|
|
|
funMap["MAX"] = "[@@]"
|
|
@@ -449,107 +76,6 @@ func GetFormulaMap() map[string]string {
|
|
|
return funMap
|
|
|
}
|
|
|
|
|
|
-// 刷新数据
|
|
|
-func RefreshCalculate(edbInfoIdArr []*data_manage.EdbInfo, edbInfoId int, edbCode, formulaStr, startDate, endDate string, edbInfoIdBytes []string) (err error) {
|
|
|
- defer func() {
|
|
|
- if err != nil {
|
|
|
- fmt.Println("RefreshCalculate:Err " + err.Error())
|
|
|
- utils.FileLog.Info("Calculate Err:%s" + err.Error())
|
|
|
- }
|
|
|
- }()
|
|
|
- saveDataMap := make(map[string]map[int]float64)
|
|
|
- for _, v := range edbInfoIdArr {
|
|
|
- var condition string
|
|
|
- var pars []interface{}
|
|
|
- condition += " AND edb_info_id=? "
|
|
|
- pars = append(pars, v.EdbInfoId)
|
|
|
- if startDate != "" {
|
|
|
- condition += " AND data_time>=? "
|
|
|
- pars = append(pars, startDate)
|
|
|
- }
|
|
|
- if endDate != "" {
|
|
|
- condition += " AND data_time<=? "
|
|
|
- pars = append(pars, endDate)
|
|
|
- }
|
|
|
- dataList, err := data_manage.GetEdbDataListAll(condition, pars, v.Source, v.SubSource, 1)
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
- dataMap := make(map[string]float64)
|
|
|
- for _, dv := range dataList {
|
|
|
- if val, ok := saveDataMap[dv.DataTime]; ok {
|
|
|
- if _, ok := val[v.EdbInfoId]; !ok {
|
|
|
- val[v.EdbInfoId] = dv.Value
|
|
|
- }
|
|
|
- } else {
|
|
|
- temp := make(map[int]float64)
|
|
|
- temp[v.EdbInfoId] = dv.Value
|
|
|
- saveDataMap[dv.DataTime] = temp
|
|
|
- }
|
|
|
- }
|
|
|
- item := new(CalculateItems)
|
|
|
- item.EdbInfoId = v.EdbInfoId
|
|
|
- item.DataMap = dataMap
|
|
|
- }
|
|
|
-
|
|
|
- formulaMap := CheckFormula(formulaStr)
|
|
|
- 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
|
|
|
-
|
|
|
- for sk, sv := range saveDataMap {
|
|
|
- formulaStr = strings.ToUpper(formulaStr)
|
|
|
- formulaFormStr := ReplaceFormula(edbInfoIdArr, sv, formulaMap, formulaStr, edbInfoIdBytes)
|
|
|
- if formulaFormStr != "" {
|
|
|
- utils.FileLog.Info("formulaFormStr:%s", formulaFormStr)
|
|
|
- expression := formula.NewExpression(formulaFormStr)
|
|
|
- calResult, err := expression.Evaluate()
|
|
|
- if err != nil {
|
|
|
- err = errors.New("计算失败:Err:" + err.Error() + ";formulaStr:" + formulaFormStr)
|
|
|
- fmt.Println(err)
|
|
|
- return err
|
|
|
- }
|
|
|
- calVal, err := calResult.Float64()
|
|
|
- if err != nil {
|
|
|
- err = errors.New("计算失败:获取计算值失败 Err:" + err.Error() + ";formulaStr:" + formulaFormStr)
|
|
|
- fmt.Println(err)
|
|
|
- return err
|
|
|
- }
|
|
|
-
|
|
|
- count, err := data_manage.GetEdbDataCalculateByCodeAndDate(edbCode, sk)
|
|
|
- if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
- return err
|
|
|
- }
|
|
|
- if count <= 0 { //需要存入的数据
|
|
|
- dataTime, _ := time.Parse(utils.FormatDate, sk)
|
|
|
- timestamp := dataTime.UnixNano() / 1e6
|
|
|
- timeStr := fmt.Sprintf("%d", timestamp)
|
|
|
- addSql += "("
|
|
|
- addSql += strconv.Itoa(edbInfoId) + "," + "'" + edbCode + "'" + "," + "'" + sk + "'" + "," + utils.SubFloatToString(calVal, 4) + "," + "'" + nowStr + "'" +
|
|
|
- "," + "'" + nowStr + "'" + "," + "1"
|
|
|
- addSql += "," + "'" + timeStr + "'"
|
|
|
- addSql += "),"
|
|
|
- isAdd = true
|
|
|
- } else {
|
|
|
- calVal = utils.FixFloat(calVal, 4)
|
|
|
- err = data_manage.ModifyEdbDataCalculate(int64(edbInfoId), sk, calVal)
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if isAdd {
|
|
|
- addSql = strings.TrimRight(addSql, ",")
|
|
|
- data_manage.AddEdbDataCalculateBySql(addSql)
|
|
|
- if err != nil {
|
|
|
- fmt.Println("AddEdbDataCalculate Err:" + err.Error())
|
|
|
- return err
|
|
|
- }
|
|
|
- }
|
|
|
- return
|
|
|
-}
|
|
|
-
|
|
|
// 处理整个数据
|
|
|
func handleDateSaveDataMap(dateList []string, realSaveDataMap, saveDataMap map[string]map[int]float64, edbInfoIdArr []*data_manage.EdbInfo, emptyType int) {
|
|
|
var startDate, endDate string
|