Procházet zdrojové kódy

fix:领先滞后后,无数据的日期,不参与计算

Roc před 1 rokem
rodič
revize
e69760551b
1 změnil soubory, kde provedl 18 přidání a 29 odebrání
  1. 18 29
      services/data/correlation/chart_info.go

+ 18 - 29
services/data/correlation/chart_info.go

@@ -202,6 +202,10 @@ func GetChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *models.ChartEdbInfo
 		}
 	}
 
+	// 计算窗口,不包含第一天
+	startDateTime, _ := time.ParseInLocation(utils.FormatDate, startDate, time.Local)
+	startDate = startDateTime.AddDate(0, 0, 1).Format(utils.FormatDate)
+
 	//// 2023-03-02 时间序列始终以指标B为基准, 始终是A进行平移
 	//baseEdbInfo := edbInfoMappingB
 	//changeEdbInfo := edbInfoMappingA
@@ -221,19 +225,6 @@ func GetChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *models.ChartEdbInfo
 		return
 	}
 
-	// 移除多余的一组数据(开始日期的数据不能用作计算)
-	{
-		divDay, tmpErr := utils.GetDaysBetween2Date(utils.FormatDate, endDate, startDate)
-		if tmpErr != nil {
-			err = tmpErr
-			return
-		}
-		lenAData := len(aDataList)
-		if lenAData > divDay {
-			aDataList = aDataList[lenAData-divDay:]
-		}
-	}
-
 	// 获取变频指标所有日期的值, 插值法完善数据
 	bDataList := make([]*models.EdbDataList, 0)
 	switch changeEdbInfo.EdbInfoCategoryType {
@@ -366,6 +357,10 @@ func GetRollingCorrelationChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *m
 	xDateTimeValue = make([]string, 0)
 	yData := make([]float64, 0)
 
+	// 计算窗口,不包含第一天
+	startDateTime, _ := time.ParseInLocation(utils.FormatDate, startDate, time.Local)
+	startDate = startDateTime.AddDate(0, 0, 1).Format(utils.FormatDate)
+
 	baseEdbInfo := edbInfoMappingA
 	changeEdbInfo := edbInfoMappingB
 
@@ -381,19 +376,6 @@ func GetRollingCorrelationChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *m
 		return
 	}
 
-	// 移除多余的一组数据(开始日期的数据不能用作计算)
-	{
-		divDay, tmpErr := utils.GetDaysBetween2Date(utils.FormatDate, endDate, startDate)
-		if tmpErr != nil {
-			err = tmpErr
-			return
-		}
-		lenAData := len(aDataList)
-		if lenAData > divDay {
-			aDataList = aDataList[lenAData-divDay:]
-		}
-	}
-
 	// 获取变频指标所有日期的值, 插值法完善数据
 	bDataList := make([]*models.EdbDataList, 0)
 	switch changeEdbInfo.EdbInfoCategoryType {
@@ -451,8 +433,15 @@ func GetRollingCorrelationChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *m
 			// 取出对应的基准日期的值
 			for i := 0; i < calculateDay; i++ {
 				iDay := currDay.AddDate(0, 0, i).Format(utils.FormatDate)
-				baseCalculateData = append(baseCalculateData, baseDataMap[iDay])
-				yCalculateData = append(yCalculateData, changeDataMap[iDay])
+
+				tmpBaseValue, ok1 := baseDataMap[iDay]
+				tmpChangeValue, ok2 := changeDataMap[iDay]
+				if ok1 && ok2 {
+					baseCalculateData = append(baseCalculateData, tmpBaseValue)
+					yCalculateData = append(yCalculateData, tmpChangeValue)
+				} else {
+					continue
+				}
 			}
 
 			// 公式计算出领先/滞后频度对应点的相关性系数
@@ -461,7 +450,7 @@ func GetRollingCorrelationChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *m
 				ratio = utils.CalculateCorrelationByIntArr(baseCalculateData, yCalculateData)
 			}
 			yData = append(yData, ratio)
-			xDateTimeValue = append(xDateTimeValue, currDay.AddDate(0, 0, calculateDay).Format(utils.FormatDate))
+			xDateTimeValue = append(xDateTimeValue, currDay.AddDate(0, 0, calculateDay-1).Format(utils.FormatDate))
 		}
 	}