xyxie 1 year ago
parent
commit
2b3446503e
1 changed files with 31 additions and 76 deletions
  1. 31 76
      services/data/chart_info.go

+ 31 - 76
services/data/chart_info.go

@@ -749,9 +749,7 @@ func getEdbDataMapList(chartInfoId, chartType int, calendar, startDate, endDate
 						err = errors.New("获取农历数据失败,Err:" + tmpErr.Error())
 						return
 					}
-					endDateTmp := dataList[len(dataList)-1].DataTime
-					endDateForm, _ := time.Parse(utils.FormatDate, endDateTmp)
-					quarterDataList, tErr := GetSeasonEdbInfoDataListByXDateNong(result, latestDate, seasonExtraConfig, calendarPreYear, int(endDateForm.Month()))
+					quarterDataList, tErr := GetSeasonEdbInfoDataListByXDateNong(result, latestDate, seasonExtraConfig, calendarPreYear)
 					if tErr != nil {
 						err = errors.New("获取季节性图表数据失败,Err:" + tErr.Error())
 						return
@@ -965,7 +963,7 @@ func GetSeasonEdbInfoDataListByXDate(dataList []*data_manage.EdbDataList, latest
 }
 
 // GetSeasonEdbInfoDataListByXDateNong 季节性图的指标数据根据横轴选择农历时展示
-func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, latestDate time.Time, seasonExtraConfig string, calendarPreYear, thisMonth int) (quarterDataListSort data_manage.QuarterDataList, err error) {
+func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, latestDate time.Time, seasonExtraConfig string, calendarPreYear int) (quarterDataListSort data_manage.QuarterDataList, err error) {
 	xStartDate := "01-01"
 	xEndDate := "12-31"
 	jumpYear := 0
@@ -1023,6 +1021,7 @@ func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, late
 
 	//整理出日期
 	leftNameFlag := true
+	maxY := 0
 	for currentStartYear := startYear; currentStartYear <= endYear; currentStartYear++ {
 		startStr := fmt.Sprintf("%d-%s", currentStartYear, xStartDate)
 		currentEndYear := currentStartYear
@@ -1057,6 +1056,9 @@ func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, late
 			//如果最新的日期比真实年份要大,则数据全部按照最大的年份补齐
 			nowYear = endT.Year()
 		}
+		if endT.Year() > maxY {
+			maxY = endT.Year()
+		}
 		item := data_manage.QuarterXDateItem{
 			StartDate: startT,
 			EndDate:   endT,
@@ -1085,15 +1087,6 @@ func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, late
 	}
 
 	//判断哪些点应该落在同一条时间线上
-	maxY := lastDateT.Year()
-	/*for _, lv := range result.List {
-		for _, item := range lv.Items {
-			dataTimeT, _ := time.Parse(utils.FormatDate, item.DataTime)
-			if dataTimeT.Year() > maxY {
-				maxY = dataTimeT.Year()
-			}
-		}
-	}*/
 	endTmp := fmt.Sprintf("%d-%s", maxY, xEndDate)
 	endTmpT, _ := time.Parse(utils.FormatDate, endTmp)
 	minY := maxY
@@ -1105,9 +1098,6 @@ func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, late
 
 	for name, dateItem := range dataMap {
 		lv, ok1 := yearDataListMap[dateItem.EndDate.Year()]
-		/*if thisMonth > 11 {
-			lv, ok1 = yearDataListMap[dateItem.EndDate.Year()+1]
-		}*/
 		if dateItem.EndDate.Year() > lastDateT.Year() {
 			lv, ok1 = yearDataListMap[dateItem.StartDate.Year()]
 		}
@@ -1125,70 +1115,35 @@ func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, late
 			dataTimeT, _ := time.Parse(utils.FormatDate, item.DataTime)
 			year := dataTimeT.Year()
 			newItemDate := dataTimeT.AddDate(nowYear-year, 0, 0)
-			if dateItem.EndDate.Year() > maxY {
-				if (dateItem.StartDate.Before(dataTimeT) && dateItem.EndDate.After(dataTimeT)) || dateItem.StartDate == dataTimeT || dateItem.EndDate == dataTimeT {
-					if jumpYear == 1 {
-						//计算前一年最大的日期, 只补齐数据到去年
-						beforeYearMaxDate := fmt.Sprintf("%d-12-31", dateItem.StartDate.Year())
-						beforeYearMaxDateT, _ := time.Parse(utils.FormatDate, beforeYearMaxDate)
-						if dataTimeT.Before(beforeYearMaxDateT) || dataTimeT == beforeYearMaxDateT {
-							newItemDate = dataTimeT.AddDate(nowYear-year-1, 0, 0)
-						} else {
-							newItemDate = dataTimeT.AddDate(nowYear-year, 0, 0)
-						}
+			if (startTmpT.Before(dataTimeT) && endTmpT.After(dataTimeT)) || startTmpT == dataTimeT || endTmpT == dataTimeT {
+				if jumpYear == 1 {
+					//计算前一年最大的日期, 只补齐数据到去年
+					beforeYearMaxDate := fmt.Sprintf("%d-12-31", startTmpT.Year())
+					beforeYearMaxDateT, _ := time.Parse(utils.FormatDate, beforeYearMaxDate)
+					if dataTimeT.Before(beforeYearMaxDateT) || dataTimeT == beforeYearMaxDateT {
+						newItemDate = dataTimeT.AddDate(nowYear-year-1, 0, 0)
 					} else {
 						newItemDate = dataTimeT.AddDate(nowYear-year, 0, 0)
 					}
-					timestamp := newItemDate.UnixNano() / 1e6
-					tmpVal.DataTimestamp = timestamp
-					tmpV := &tmpVal
-					if findVal, ok := quarterMap[name]; !ok {
-						findVal = append(findVal, tmpV)
-						quarterMap[name] = findVal
-					} else {
-						findVal = append(findVal, tmpV)
-						quarterMap[name] = findVal
-					}
-					if lv.Year >= latestDateYear {
-						// 切割的日期时间字符串
-						cuttingDataTimeStr := latestDate.AddDate(0, 0, lv.BetweenDay).Format(utils.FormatDate)
-						if item.DataTime == cuttingDataTimeStr {
-							dateItem.CuttingDataTimestamp = timestamp
-							dataMap[name] = dateItem
-						}
-					}
+				} else {
+					newItemDate = dataTimeT.AddDate(nowYear-year, 0, 0)
 				}
-			} else {
-				if (startTmpT.Before(dataTimeT) && endTmpT.After(dataTimeT)) || startTmpT == dataTimeT || endTmpT == dataTimeT {
-					if jumpYear == 1 {
-						//计算前一年最大的日期, 只补齐数据到去年
-						beforeYearMaxDate := fmt.Sprintf("%d-12-31", startTmpT.Year())
-						beforeYearMaxDateT, _ := time.Parse(utils.FormatDate, beforeYearMaxDate)
-						if dataTimeT.Before(beforeYearMaxDateT) || dataTimeT == beforeYearMaxDateT {
-							newItemDate = dataTimeT.AddDate(nowYear-year-1, 0, 0)
-						} else {
-							newItemDate = dataTimeT.AddDate(nowYear-year, 0, 0)
-						}
-					} else {
-						newItemDate = dataTimeT.AddDate(nowYear-year, 0, 0)
-					}
-					timestamp := newItemDate.UnixNano() / 1e6
-					tmpVal.DataTimestamp = timestamp
-					tmpV := &tmpVal
-					if findVal, ok := quarterMap[name]; !ok {
-						findVal = append(findVal, tmpV)
-						quarterMap[name] = findVal
-					} else {
-						findVal = append(findVal, tmpV)
-						quarterMap[name] = findVal
-					}
-					if lv.Year >= latestDateYear {
-						// 切割的日期时间字符串
-						cuttingDataTimeStr := latestDate.AddDate(0, 0, lv.BetweenDay).Format(utils.FormatDate)
-						if item.DataTime == cuttingDataTimeStr {
-							dateItem.CuttingDataTimestamp = timestamp
-							dataMap[name] = dateItem
-						}
+				timestamp := newItemDate.UnixNano() / 1e6
+				tmpVal.DataTimestamp = timestamp
+				tmpV := &tmpVal
+				if findVal, ok := quarterMap[name]; !ok {
+					findVal = append(findVal, tmpV)
+					quarterMap[name] = findVal
+				} else {
+					findVal = append(findVal, tmpV)
+					quarterMap[name] = findVal
+				}
+				if lv.Year >= latestDateYear {
+					// 切割的日期时间字符串
+					cuttingDataTimeStr := latestDate.AddDate(0, 0, lv.BetweenDay).Format(utils.FormatDate)
+					if item.DataTime == cuttingDataTimeStr {
+						dateItem.CuttingDataTimestamp = timestamp
+						dataMap[name] = dateItem
 					}
 				}
 			}