Bladeren bron

Merge branch 'pool/160' into debug

Roc 2 jaren geleden
bovenliggende
commit
d130111700
1 gewijzigde bestanden met toevoegingen van 1 en 71 verwijderingen
  1. 1 71
      models/edb_data_calculate_cjjx.go

+ 1 - 71
models/edb_data_calculate_cjjx.go

@@ -7,7 +7,6 @@ import (
 	"github.com/nosixtools/solarlunar"
 	"github.com/shopspring/decimal"
 	"hongze/hongze_edb_lib/utils"
-	"math"
 	"strconv"
 	"strings"
 	"time"
@@ -255,7 +254,7 @@ func refreshAllCalculateCjjx(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo
 
 	// 通过插值法补全所有数据(包含周末)
 	handleDataMap := make(map[string]float64)
-	err = handleDataByLinearRegression(dataList, handleDataMap)
+	err = HandleDataByLinearRegression(dataList, handleDataMap)
 	if err != nil {
 		return
 	}
@@ -471,72 +470,3 @@ func CjjxSub(currValue float64, pastValue []float64) (value string) {
 	valStr := decimal.NewFromFloat(val).RoundCeil(4).String()
 	return valStr
 }
-
-// handleDataByLinearRegression 插值法补充数据(线性方程式)
-func handleDataByLinearRegression(edbInfoDataList []*EdbInfoSearchData, handleDataMap map[string]float64) (err error) {
-	if len(edbInfoDataList) < 2 {
-		return
-	}
-
-	var startEdbInfoData *EdbInfoSearchData
-	for _, v := range edbInfoDataList {
-		handleDataMap[v.DataTime] = v.Value
-
-		// 第一个数据就给过滤了,给后面的试用
-		if startEdbInfoData == nil {
-			startEdbInfoData = v
-			continue
-		}
-
-		// 获取两条数据之间相差的天数
-		startDataTime, _ := time.ParseInLocation(utils.FormatDate, startEdbInfoData.DataTime, time.Local)
-		currDataTime, _ := time.ParseInLocation(utils.FormatDate, v.DataTime, time.Local)
-		betweenHour := int(currDataTime.Sub(startDataTime).Hours())
-		betweenDay := betweenHour / 24
-
-		// 如果相差一天,那么过滤
-		if betweenDay <= 1 {
-			startEdbInfoData = v
-			continue
-		}
-
-		// 生成线性方程式
-		var a, b float64
-		{
-			coordinateData := make([]utils.Coordinate, 0)
-			tmpCoordinate1 := utils.Coordinate{
-				X: 1,
-				Y: startEdbInfoData.Value,
-			}
-			coordinateData = append(coordinateData, tmpCoordinate1)
-			tmpCoordinate2 := utils.Coordinate{
-				X: float64(betweenDay) + 1,
-				Y: v.Value,
-			}
-			coordinateData = append(coordinateData, tmpCoordinate2)
-
-			a, b = utils.GetLinearResult(coordinateData)
-			if math.IsNaN(a) || math.IsNaN(b) {
-				err = errors.New("线性方程公式生成失败")
-				return
-			}
-		}
-
-		// 生成对应的值
-		{
-			for i := 1; i < betweenDay; i++ {
-				tmpDataTime := startDataTime.AddDate(0, 0, i)
-				aDecimal := decimal.NewFromFloat(a)
-				xDecimal := decimal.NewFromInt(int64(i) + 1)
-				bDecimal := decimal.NewFromFloat(b)
-
-				val, _ := aDecimal.Mul(xDecimal).Add(bDecimal).RoundCeil(4).Float64()
-				handleDataMap[tmpDataTime.Format(utils.FormatDate)] = val
-			}
-		}
-
-		startEdbInfoData = v
-	}
-
-	return
-}