|
@@ -566,3 +566,75 @@ func getLinearResult(s []Coordinate) (gradient, intercept float64) {
|
|
|
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+func GetChartPredictEdbInfoDataListByRuleTrendsHC(edbInfoId, configId int, startDate, endDate time.Time, frequency string, realPredictEdbInfoData, predictEdbInfoData []*EdbInfoSearchData, existMap map[string]float64) (newPredictEdbInfoData []*EdbInfoSearchData, minValue, maxValue float64) {
|
|
|
+ allDataList := make([]*EdbInfoSearchData, 0)
|
|
|
+ allDataList = append(allDataList, realPredictEdbInfoData...)
|
|
|
+ allDataList = append(allDataList, predictEdbInfoData...)
|
|
|
+ newPredictEdbInfoData = predictEdbInfoData
|
|
|
+
|
|
|
+ lenAllData := len(allDataList)
|
|
|
+ if lenAllData <= 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ hcDataMap := make(map[string]float64)
|
|
|
+
|
|
|
+ tmpPredictEdbRuleDataList, err := GetPredictEdbRuleDataItemList(edbInfoId, configId, startDate.Format(utils.FormatDate), endDate.Format(utils.FormatDate))
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, v := range tmpPredictEdbRuleDataList {
|
|
|
+ hcDataMap[v.DataTime] = v.Value
|
|
|
+ }
|
|
|
+
|
|
|
+ dayList := getPredictEdbDayList(startDate, endDate, frequency)
|
|
|
+ for k, currentDate := range dayList {
|
|
|
+
|
|
|
+ tmpLenAllDataList := len(allDataList)
|
|
|
+ lastValue := allDataList[tmpLenAllDataList-1].Value
|
|
|
+
|
|
|
+
|
|
|
+ currentDateStr := currentDate.Format(utils.FormatDate)
|
|
|
+ hcVal, ok := hcDataMap[currentDateStr]
|
|
|
+ if !ok {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ lastValueDecimal := decimal.NewFromFloat(lastValue)
|
|
|
+ hcValDecimal := decimal.NewFromFloat(hcVal)
|
|
|
+
|
|
|
+ val, _ := lastValueDecimal.Add(hcValDecimal).RoundCeil(4).Float64()
|
|
|
+
|
|
|
+ tmpData := &EdbInfoSearchData{
|
|
|
+ EdbDataId: edbInfoId + 10000000000 + lenAllData + k,
|
|
|
+
|
|
|
+ DataTime: currentDateStr,
|
|
|
+ Value: val,
|
|
|
+
|
|
|
+ }
|
|
|
+ newPredictEdbInfoData = append(newPredictEdbInfoData, tmpData)
|
|
|
+ allDataList = append(allDataList, tmpData)
|
|
|
+ existMap[currentDateStr] = val
|
|
|
+
|
|
|
+
|
|
|
+ if val < minValue {
|
|
|
+ minValue = val
|
|
|
+ }
|
|
|
+ if val > maxValue {
|
|
|
+ maxValue = val
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|