Browse Source

feat:相关性优化

Roc 1 year ago
parent
commit
9cd49a1236

+ 1 - 8
controller/chart/chart_common.go

@@ -589,14 +589,7 @@ func getCorrelationChartInfoDetail(chartInfo *chartInfoModel.ChartInfoView, myCh
 			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 = correlation.GetRollingCorrelationChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB, correlationChart.LeadValue, correlationChart.LeadUnit, correlationChart.CalculateValue, correlationChart.CalculateUnit, startDate, endDate)
 		dataResp = chart_info.RollingCorrelationChartDataResp{
 			XDateTimeValue: xDateTimeValue,

+ 1 - 0
models/tables/chart_info_correlation/entity.go

@@ -11,6 +11,7 @@ type ChartInfoCorrelation struct {
 	CalculateUnit          string    `gorm:"column:calculate_unit;type:varchar(16);default:null;default:''" json:"calculateUnit"`          // 计算窗口的单位
 	BaseCalculateValue     int       `gorm:"column:base_calculate_value;type:int(9);default:null;default:0" json:"baseCalculateValue"`     // 基础计算窗口(滚动相关性的时候用到)
 	BaseCalculateUnit      string    `gorm:"column:base_calculate_unit;type:varchar(16);default:null;default:''" json:"baseCalculateUnit"` // 基础计算窗口的单位(滚动相关性的时候用到)
+	DateType               int       `gorm:"column:date_type;type:int(11);default:0" json:"dateType"`                                      // 日期类型:1:00年至今,2:10年至今,3:15年至今,4:年初至今,5:自定义时间,6:起始日期至今
 	StartDate              time.Time `gorm:"column:start_date;type:date" json:"startDate"`                                                 // 开始日期
 	EndDate                time.Time `gorm:"column:end_date;type:date" json:"endDate"`                                                     // 结束日期
 	EdbInfoIdFirst         int       `gorm:"column:edb_info_id_first;type:int(10) unsigned;not null;default:0" json:"edbInfoIdFirst"`      // A指标ID

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

@@ -446,7 +446,10 @@ func GetRollingCorrelationChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *c
 	// 计算 每个日期的相关性值
 	{
 		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

@@ -1101,3 +1101,54 @@ func TimeTransferString(format string, t time.Time) string {
 	}
 	return str
 }
+
+// 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
+}