zwxi 7 months ago
parent
commit
2fcee2d3da
1 changed files with 97 additions and 75 deletions
  1. 97 75
      services/data/chart_info.go

+ 97 - 75
services/data/chart_info.go

@@ -3326,6 +3326,22 @@ func SeasonChartData(dataList []*data_manage.ChartEdbInfoMapping, seasonExtraCon
 			minValueMap := make(map[time.Time]float64)
 
 			maxMinDataList := make([]*data_manage.MaxMinLimitsData, 0)
+			var startDateStr string
+			var endDateStr string
+			var newDate time.Time
+
+			startDateStr = fmt.Sprintf("%d-%s", time.Now().Year(), seasonConfig.XStartDate)
+			endDateStr = fmt.Sprintf("%d-%s", time.Now().Year(), seasonConfig.XEndDate)
+			startDate, e := time.Parse(utils.FormatDate, startDateStr)
+			if e != nil {
+				err = e
+				return
+			}
+			endDate, e := time.Parse(utils.FormatDate, endDateStr)
+			if e != nil {
+				err = e
+				return
+			}
 			// 日度 周度插值
 			for _, v := range quarterDataList {
 				if mappingItem.Frequency == "日度" || mappingItem.Frequency == "周度" {
@@ -3349,54 +3365,85 @@ func SeasonChartData(dataList []*data_manage.ChartEdbInfoMapping, seasonExtraCon
 						if dateTime.Month() == 2 && dateTime.Day() == 29 {
 							continue
 						}
-						var startDateStr string
+
 						if seasonConfig.JumpYear == 1 {
-							startDateStr = fmt.Sprintf("%d-%s", time.Now().Year()-1, seasonConfig.XStartDate)
-						} else {
-							startDateStr = fmt.Sprintf("%d-%s", time.Now().Year(), seasonConfig.XStartDate)
-						}
-						startDate, e := time.Parse(utils.FormatDate, startDateStr)
-						if e != nil {
-							err = e
-							return
-						}
-						//endDateStr := fmt.Sprintf("%d-%s", time.Now().Year(), seasonConfig.XEndDate)
-						//endDate, e := time.Parse(utils.FormatDate, endDateStr)
-						//if e != nil {
-						//	err =e
-						//	return
-						//}
-						var newDate time.Time
-						lastdate := time.Date(dateTime.Year()+1, 1, 1, 23, 59, 59, 0, time.Now().Location()).AddDate(0,0,-1)
-						if dateTime.Before(lastdate) {
-							newDate = dateTime.AddDate(time.Now().Year()-dateTime.Year()-1, 0, 0)
-						} else {
-							newDate = dateTime.AddDate(time.Now().Year()-dateTime.Year(), 0, 0)
-						}
+							if startDate.After(endDate) {
+								// 如果跨年且不到一年
+								// 全年截取一部分
+								newDate = dateTime.AddDate(time.Now().Year()-dateTime.Year(), 0, 0)
+								if newDate.Before(startDate) && newDate.After(endDate) {
+									continue
+								}
+								if newDate.After(startDate) {
+									// 减一年
+									newDate = newDate.AddDate(-1, 0, 0)
+								}
+								// 处理上下限列表
+								if value, ok := maxValueMap[newDate]; ok {
+									if value < handleDataMap[date] {
+										maxValueMap[newDate] = handleDataMap[date]
+									}
+								} else {
+									maxValueMap[newDate] = handleDataMap[date]
+								}
+
+								if value, ok := minValueMap[newDate]; ok {
+									if value > handleDataMap[date] {
+										minValueMap[newDate] = handleDataMap[date]
+									}
+								} else {
+									minValueMap[newDate] = handleDataMap[date]
+								}
+
+								dataTimeMap[newDate] = newDate
+							} else {
+								// 如果跨年且大于等于一年
+								// double后截取
+								newDate = dateTime.AddDate(time.Now().Year()-dateTime.Year(), 0, 0)
+
+								// 处理上下限列表
+								if value, ok := maxValueMap[newDate]; ok {
+									if value < handleDataMap[date] {
+										maxValueMap[newDate] = handleDataMap[date]
+									}
+								} else {
+									maxValueMap[newDate] = handleDataMap[date]
+								}
+
+								if value, ok := minValueMap[newDate]; ok {
+									if value > handleDataMap[date] {
+										minValueMap[newDate] = handleDataMap[date]
+									}
+								} else {
+									minValueMap[newDate] = handleDataMap[date]
+								}
+
+								dataTimeMap[newDate] = newDate
 
-						if newDate.Before(startDate) {
-							continue
-						}
-						// 处理上下限列表
-						if value, ok := maxValueMap[newDate]; ok {
-							if value < handleDataMap[date] {
-								maxValueMap[newDate] = handleDataMap[date]
 							}
 						} else {
-							maxValueMap[newDate] = handleDataMap[date]
-						}
+							// 如果不跨年 正常获取
+							// 获取当前日期所在区间
+							// 处理上下限列表
+							if value, ok := maxValueMap[newDate]; ok {
+								if value < handleDataMap[date] {
+									maxValueMap[newDate] = handleDataMap[date]
+								}
+							} else {
+								maxValueMap[newDate] = handleDataMap[date]
+							}
 
-						if value, ok := minValueMap[newDate]; ok {
-							if value > handleDataMap[date] {
+							if value, ok := minValueMap[newDate]; ok {
+								if value > handleDataMap[date] {
+									minValueMap[newDate] = handleDataMap[date]
+								}
+							} else {
 								minValueMap[newDate] = handleDataMap[date]
 							}
-						} else {
-							minValueMap[newDate] = handleDataMap[date]
-						}
 
-						dataTimeMap[newDate] = newDate
+							dataTimeMap[newDate] = newDate
+						}
 					}
-
 				} else {
 					// 旬度、月度、季度、半年度 不插值,需要先把日期列表和数据map取出来
 					for _, vv := range v.DataList {
@@ -3413,41 +3460,7 @@ func SeasonChartData(dataList []*data_manage.ChartEdbInfoMapping, seasonExtraCon
 						if dateTime.Month() == 2 && dateTime.Day() == 29 {
 							continue
 						}
-						var startDateStr string
-						if seasonConfig.JumpYear == 1 {
-							startDateStr = fmt.Sprintf("%d-%s", time.Now().Year()-1, seasonConfig.XStartDate)
-						} else {
-							startDateStr = fmt.Sprintf("%d-%s", time.Now().Year(), seasonConfig.XStartDate)
-						}
-						startDate, e := time.Parse(utils.FormatDate, startDateStr)
-						if e != nil {
-							err = e
-							return
-						}
-						endDateStr := fmt.Sprintf("%d-%s", time.Now().Year(), seasonConfig.XEndDate)
-						endDate, e := time.Parse(utils.FormatDate, endDateStr)
-						if e != nil {
-							err =e
-							return
-						}
-						// 开始日期 年份的最后一天
-						var newDate time.Time
-						lastdate := time.Date(startDate.Year()+1, 1, 1, 23, 59, 59, 0, time.Now().Location()).AddDate(0,0,-1)
-						if dateTime.Before(lastdate) {
-							newDate = dateTime.AddDate(time.Now().Year()-dateTime.Year()-1, 0, 0)
-						} else {
-							newDate = dateTime.AddDate(time.Now().Year()-dateTime.Year(), 0, 0)
-						}
-
-						if newDate.Before(endDate) {
-							continue
-						}
-						if newDate.After(startDate) {
-							continue
-						}
-						if seasonConfig.JumpYear == 1 {
-
-						}
+						newDate := dateTime.AddDate(time.Now().Year()-dateTime.Year(), 0, 0)
 
 						if value, ok := maxValueMap[newDate]; ok {
 							if value < vv.Value {
@@ -3465,7 +3478,7 @@ func SeasonChartData(dataList []*data_manage.ChartEdbInfoMapping, seasonExtraCon
 							minValueMap[newDate] = vv.Value
 						}
 						dataTimeMap[newDate] = newDate
-					
+
 					}
 				}
 			}
@@ -3483,6 +3496,15 @@ func SeasonChartData(dataList []*data_manage.ChartEdbInfoMapping, seasonExtraCon
 				} else {
 					maxMinItem.MinValue = maxValueMap[v]
 				}
+				//if seasonConfig.JumpYear == 1 {
+				//	if startDate.After(endDate) {
+				//		maxMinItem.DataTime = v.Format(utils.FormatDate)
+				//		maxMinItem.DataTimestamp = v.UnixNano() / 1e6
+				//
+				//		maxMinDataList = append(maxMinDataList, maxMinItem)
+				//	}
+				//}
+
 				maxMinItem.DataTime = v.Format(utils.FormatDate)
 				maxMinItem.DataTimestamp = v.UnixNano() / 1e6