|
@@ -8,7 +8,6 @@ import (
|
|
|
"fmt"
|
|
|
"github.com/shopspring/decimal"
|
|
|
"math"
|
|
|
- "regexp"
|
|
|
"sort"
|
|
|
"strings"
|
|
|
"time"
|
|
@@ -63,399 +62,6 @@ type CalculateItems struct {
|
|
|
DataMap map[string]float64
|
|
|
}
|
|
|
|
|
|
-func ReplaceFormula(edbInfoIdArr []*data_manage.EdbInfo, valArr map[int]float64, formulaMap map[string]string, formulaStr string, edbInfoIdBytes []string) string {
|
|
|
-
|
|
|
- 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"] = "[@@]"
|
|
|
- funMap["MIN"] = "[@!]"
|
|
|
- funMap["ABS"] = "[@#]"
|
|
|
- funMap["CEIL"] = "[@$]"
|
|
|
- funMap["COS"] = "[@%]"
|
|
|
- funMap["FLOOR"] = "[@^]"
|
|
|
- funMap["MOD"] = "[@&]"
|
|
|
- funMap["POW"] = "[@*]"
|
|
|
- funMap["ROUND"] = "[@(]"
|
|
|
- return funMap
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-func handleDateSaveDataMap(dateList []string, realSaveDataMap, saveDataMap map[string]map[int]float64, edbInfoIdArr []*data_manage.EdbInfo, emptyType int) {
|
|
|
- var startDate, endDate string
|
|
|
- var startDateT, endDateT time.Time
|
|
|
- if emptyType == 2 || emptyType == 3 {
|
|
|
- for k, _ := range realSaveDataMap {
|
|
|
- if k > endDate {
|
|
|
- endDate = k
|
|
|
- }
|
|
|
- if k < startDate || startDate == "" {
|
|
|
- startDate = k
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- startDateT, _ = time.ParseInLocation(utils.FormatDate, startDate, time.Local)
|
|
|
- endDateT, _ = time.ParseInLocation(utils.FormatDate, endDate, time.Local)
|
|
|
- }
|
|
|
- for _, date := range dateList {
|
|
|
- tmpDataMap := realSaveDataMap[date]
|
|
|
- for _, edbInfo := range edbInfoIdArr {
|
|
|
- tmpEdbInfoId := edbInfo.EdbInfoId
|
|
|
-
|
|
|
- if _, ok := tmpDataMap[tmpEdbInfoId]; !ok {
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- switch emptyType {
|
|
|
- case 0:
|
|
|
- handleDateDataMap(realSaveDataMap, saveDataMap, date, tmpEdbInfoId, 35)
|
|
|
- case 2:
|
|
|
- handleDateDataMapBefore(realSaveDataMap, saveDataMap, date, tmpEdbInfoId, startDateT, endDateT)
|
|
|
- case 3:
|
|
|
- handleDateDataMapAfter(realSaveDataMap, saveDataMap, date, tmpEdbInfoId, startDateT, endDateT)
|
|
|
- case 4:
|
|
|
- handleDateDataMapZero(saveDataMap, date, tmpEdbInfoId)
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-func handleDateDataMap(realSaveDataMap, saveDataMap map[string]map[int]float64, date string, edbInfoId, day int) {
|
|
|
- currDate, _ := time.ParseInLocation(utils.FormatDate, date, time.Local)
|
|
|
-
|
|
|
-
|
|
|
- nextDateDayStr := currDate.AddDate(0, 0, 1).Format(utils.FormatDate)
|
|
|
-
|
|
|
-
|
|
|
- preDateDayStr := currDate.AddDate(0, 0, -1).Format(utils.FormatDate)
|
|
|
-
|
|
|
- for i := 1; i <= day; i++ {
|
|
|
-
|
|
|
-
|
|
|
- {
|
|
|
- if i >= 1 {
|
|
|
- nextDateDayStr = currDate.AddDate(0, 0, i).Format(utils.FormatDate)
|
|
|
- }
|
|
|
- if findDataMap, hasFindDataMap := realSaveDataMap[nextDateDayStr]; hasFindDataMap {
|
|
|
- if val, hasFindItem := findDataMap[edbInfoId]; hasFindItem {
|
|
|
- saveDataMap[date][edbInfoId] = val
|
|
|
- return
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- {
|
|
|
- if i >= 1 {
|
|
|
- preDateDayStr = currDate.AddDate(0, 0, -i).Format(utils.FormatDate)
|
|
|
- }
|
|
|
- if findDataMap, hasFindDataMap := realSaveDataMap[preDateDayStr]; hasFindDataMap {
|
|
|
- if val, hasFindItem := findDataMap[edbInfoId]; hasFindItem {
|
|
|
- saveDataMap[date][edbInfoId] = val
|
|
|
- return
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
|
|
|
func handleDataByLinearRegression(edbInfoDataList []*data_manage.EdbDataList, handleDataMap map[string]float64) (err error) {
|
|
|
if len(edbInfoDataList) < 2 {
|
|
@@ -552,115 +158,6 @@ func CallCalculateComputeCorrelation(data *data_manage.EdbInfoCalculateBatchSave
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-func handleDateDataMapBefore(realSaveDataMap, saveDataMap map[string]map[int]float64, date string, edbInfoId int, startDateT, endDateT time.Time) {
|
|
|
- currDate, _ := time.ParseInLocation(utils.FormatDate, date, time.Local)
|
|
|
-
|
|
|
-
|
|
|
- nextDateDay := currDate
|
|
|
-
|
|
|
-
|
|
|
- preDateDay := currDate
|
|
|
-
|
|
|
- for i := 1; preDateDay.After(startDateT) || preDateDay == startDateT; i++ {
|
|
|
-
|
|
|
- {
|
|
|
- preDateDay = currDate.AddDate(0, 0, -i)
|
|
|
- preDateDayStr := preDateDay.Format(utils.FormatDate)
|
|
|
- if findDataMap, hasFindDataMap := realSaveDataMap[preDateDayStr]; hasFindDataMap {
|
|
|
- if val, hasFindItem := findDataMap[edbInfoId]; hasFindItem {
|
|
|
- fmt.Println(fmt.Sprintf("date:%s, 无值,取%s的值%.4f", date, preDateDayStr, val))
|
|
|
- saveDataMap[date][edbInfoId] = val
|
|
|
- return
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- for i := 1; nextDateDay.Before(endDateT) || nextDateDay == endDateT; i++ {
|
|
|
-
|
|
|
- {
|
|
|
- nextDateDay = currDate.AddDate(0, 0, i)
|
|
|
- nextDateDayStr := nextDateDay.Format(utils.FormatDate)
|
|
|
- if findDataMap, hasFindDataMap := realSaveDataMap[nextDateDayStr]; hasFindDataMap {
|
|
|
- if val, hasFindItem := findDataMap[edbInfoId]; hasFindItem {
|
|
|
- fmt.Println(fmt.Sprintf("date:%s, 无值,取%s的值%.4f", date, nextDateDayStr, val))
|
|
|
- saveDataMap[date][edbInfoId] = val
|
|
|
- return
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-func handleDateDataMapAfter(realSaveDataMap, saveDataMap map[string]map[int]float64, date string, edbInfoId int, startDateT, endDateT time.Time) {
|
|
|
- currDate, _ := time.ParseInLocation(utils.FormatDate, date, time.Local)
|
|
|
-
|
|
|
-
|
|
|
- nextDateDay := currDate
|
|
|
-
|
|
|
-
|
|
|
- preDateDay := currDate
|
|
|
-
|
|
|
- for i := 1; nextDateDay.Before(endDateT) || nextDateDay == endDateT; i++ {
|
|
|
-
|
|
|
- {
|
|
|
- nextDateDay = currDate.AddDate(0, 0, i)
|
|
|
- nextDateDayStr := nextDateDay.Format(utils.FormatDate)
|
|
|
- if findDataMap, hasFindDataMap := realSaveDataMap[nextDateDayStr]; hasFindDataMap {
|
|
|
- if val, hasFindItem := findDataMap[edbInfoId]; hasFindItem {
|
|
|
- fmt.Println(fmt.Sprintf("date:%s, 无值,取%s的值%.4f", date, nextDateDayStr, val))
|
|
|
- saveDataMap[date][edbInfoId] = val
|
|
|
- return
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- for i := 1; preDateDay.After(startDateT) || preDateDay == startDateT; i++ {
|
|
|
-
|
|
|
- {
|
|
|
- preDateDay = currDate.AddDate(0, 0, -i)
|
|
|
- preDateDayStr := preDateDay.Format(utils.FormatDate)
|
|
|
- if findDataMap, hasFindDataMap := realSaveDataMap[preDateDayStr]; hasFindDataMap {
|
|
|
- if val, hasFindItem := findDataMap[edbInfoId]; hasFindItem {
|
|
|
- fmt.Println(fmt.Sprintf("date:%s, 无值,取%s的值%.4f", date, preDateDayStr, val))
|
|
|
- saveDataMap[date][edbInfoId] = val
|
|
|
- return
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-func handleDateDataMapZero(saveDataMap map[string]map[int]float64, date string, edbInfoId int) {
|
|
|
- saveDataMap[date][edbInfoId] = 0
|
|
|
- return
|
|
|
-}
|
|
|
-
|
|
|
-func GetMaxMinEdbInfo(formula string) string {
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- regex := regexp.MustCompile(`(?i)(MAX|MIN)\((.*?)\)`)
|
|
|
- matches := regex.FindAllStringSubmatch(formula, -1)
|
|
|
-
|
|
|
- for _, match := range matches {
|
|
|
- if len(match) == 3 {
|
|
|
- parameter := strings.ToLower(match[0])
|
|
|
- formula = strings.ReplaceAll(formula, match[0], parameter)
|
|
|
- fmt.Printf("formula: %s\n", formula)
|
|
|
- }
|
|
|
- }
|
|
|
- formula = strings.ReplaceAll(formula, "max", "MAX")
|
|
|
- formula = strings.ReplaceAll(formula, "min", "MIN")
|
|
|
- return formula
|
|
|
-}
|
|
|
-
|
|
|
|
|
|
func HandleDataByLinearRegressionToList(edbInfoDataList []*data_manage.EdbDataList, handleDataMap map[string]float64) (dataTimeList []string, valueList []float64, err error) {
|
|
|
if len(edbInfoDataList) < 2 {
|