소스 검색

feat:相关性优化

Roc 1 년 전
부모
커밋
ab60be3120
4개의 변경된 파일57개의 추가작업 그리고 9개의 파일을 삭제
  1. 1 8
      controllers/chart_common.go
  2. 1 0
      models/data_manage/chart_info_correlation.go
  3. 4 1
      services/data/correlation/chart_info.go
  4. 51 0
      utils/common.go

+ 1 - 8
controllers/chart_common.go

@@ -446,14 +446,7 @@ func GetCorrelationChartInfoDetailFromUniqueCode(chartInfo *models.ChartInfo, ke
 			return
 		}
 	case utils.CHART_SOURCE_ROLLING_CORRELATION: // 滚动相关性图
-		moveUnitDays, ok := utils.FrequencyDaysMap[correlationChart.BaseCalculateUnit]
-		if !ok {
-			msg = "错误的分析周期"
-			errMsg = "错误的分析周期"
-			return
-		}
-		startDate := time.Now().AddDate(0, 0, -correlationChart.BaseCalculateValue*moveUnitDays).Format(utils.FormatDate)
-		endDate := time.Now().Format(utils.FormatDate)
+		startDate, endDate := utils.GetDateByDateType(correlationChart.DateType, correlationChart.StartDate.Format(utils.FormatDate), correlationChart.EndDate.Format(utils.FormatDate))
 		xDateTimeValue, yDataList, e = correlationServ.GetRollingCorrelationChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB, correlationChart.LeadValue, correlationChart.LeadUnit, correlationChart.CalculateValue, correlationChart.CalculateUnit, startDate, endDate)
 		dataResp = models.RollingCorrelationChartDataResp{
 			XDateTimeValue: xDateTimeValue,

+ 1 - 0
models/data_manage/chart_info_correlation.go

@@ -16,6 +16,7 @@ type ChartInfoCorrelation struct {
 	CalculateUnit          string    `description:"计算频度"`
 	BaseCalculateValue     int       `description:"基础计算窗口(滚动相关性的时候用到)"`
 	BaseCalculateUnit      string    `description:"基础计算频度(滚动相关性的时候用到)"`
+	DateType               int       `description:"日期类型:1:00年至今,2:10年至今,3:15年至今,4:年初至今,5:自定义时间,6:起始日期至今"`
 	StartDate              time.Time `description:"开始日期"`
 	EndDate                time.Time `description:"结束日期"`
 	EdbInfoIdFirst         int       `description:"A指标ID"`

+ 4 - 1
services/data/correlation/chart_info.go

@@ -437,7 +437,10 @@ func GetRollingCorrelationChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *m
 	// 计算 每个日期的相关性值
 	{
 		startDateTime, _ := time.ParseInLocation(utils.FormatDate, startDate, time.Local)
-		endDateTime, _ := time.ParseInLocation(utils.FormatDate, baseEdbInfo.EndDate, time.Local)
+		if endDate == `` {
+			endDate = baseEdbInfo.EndDate
+		}
+		endDateTime, _ := time.ParseInLocation(utils.FormatDate, endDate, time.Local)
 		endDateTime = endDateTime.AddDate(0, 0, -(calculateDay - 1))
 
 		for currDay := startDateTime; !currDay.After(endDateTime); currDay = currDay.AddDate(0, 0, 1) {

+ 51 - 0
utils/common.go

@@ -730,3 +730,54 @@ func InArrayByStr(idStrList []string, searchId string) (has bool) {
 	}
 	return
 }
+
+// GetDateByDateType 通过dateType获取需要的开始/结束日期
+func GetDateByDateType(dateType int, tmpStartDate, tmpEndDate string) (startDate, endDate string) {
+	startDate = tmpStartDate
+	endDate = tmpEndDate
+	switch dateType {
+	case 1:
+		startDate = "2000-01-01"
+		endDate = ""
+	case 2:
+		startDate = "2010-01-01"
+		endDate = ""
+	case 3:
+		startDate = "2015-01-01"
+		endDate = ""
+	case 4:
+		//startDate = strconv.Itoa(time.Now().Year()) + "-01-01"
+		startDate = "2021-01-01"
+		endDate = ""
+	case 5:
+		//startDate = startDate + "-01"
+		//endDate = endDate + "-01"
+	case 6:
+		//startDate = startDate + "-01"
+		endDate = ""
+	case 7:
+		startDate = "2018-01-01"
+		endDate = ""
+	case 8:
+		startDate = "2019-01-01"
+		endDate = ""
+	case 9:
+		startDate = "2020-01-01"
+		endDate = ""
+	case 11:
+		startDate = "2022-01-01"
+		endDate = ""
+	}
+
+	// 兼容日期错误
+	{
+		if strings.Count(startDate, "-") == 1 {
+			startDate = startDate + "-01"
+		}
+		if strings.Count(endDate, "-") == 1 {
+			endDate = endDate + "-01"
+		}
+	}
+
+	return
+}