|
@@ -308,7 +308,7 @@ func getEdbDataMapList(chartInfoId, chartType int, calendar, startDate, endDate
|
|
|
result := new(data_manage.EdbDataResult)
|
|
|
item.DataList = result
|
|
|
} else {
|
|
|
- result, tmpErr := data_manage.AddCalculateQuarterV4(dataList)
|
|
|
+ result, tmpErr := data_manage.AddCalculateQuarterV6(dataList)
|
|
|
if tmpErr != nil {
|
|
|
err = errors.New("获取农历数据失败,Err:" + tmpErr.Error())
|
|
|
return
|
|
@@ -561,12 +561,14 @@ func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, late
|
|
|
//判断横轴的两个时间之间是不是跨年了,如果跨年了,则横轴截止年份比起始年份+1,如果不跨年,截止年份等于起始年份
|
|
|
//根据数据确定最早的年份,和最近年份
|
|
|
//根据横轴的日期,汇总所有的年份
|
|
|
+
|
|
|
startYear := result.List[0].Year
|
|
|
/*if jumpYear == 1 {
|
|
|
if startYear != calendarPreYear {
|
|
|
startYear = startYear - 1
|
|
|
}
|
|
|
}*/
|
|
|
+
|
|
|
itemLength := len(result.List[length-1].Items)
|
|
|
//获取数据的最新日期
|
|
|
lastDate := result.List[length-1].Items[itemLength-1].DataTime
|
|
@@ -611,7 +613,6 @@ func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, late
|
|
|
//如果最新的日期在起始日之前,则跳出循环
|
|
|
break
|
|
|
}
|
|
|
-
|
|
|
if endT.Year() > nowYear {
|
|
|
//如果最新的日期比真实年份要大,则数据全部按照最大的年份补齐
|
|
|
nowYear = endT.Year()
|
|
@@ -622,6 +623,7 @@ func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, late
|
|
|
ShowName: showName,
|
|
|
}
|
|
|
dataMap[showName] = item
|
|
|
+ fmt.Println("年份" + showName + "日期" + startStr + " " + endStr)
|
|
|
chartLegendMap[showName] = idx
|
|
|
idx++
|
|
|
if lastDateT.Before(endT) {
|
|
@@ -645,6 +647,14 @@ func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, late
|
|
|
|
|
|
//判断哪些点应该落在同一条时间线上
|
|
|
maxY := lastDateT.Year()
|
|
|
+ changeFlag := false
|
|
|
+ if lastDateT.Month() >= 11 {
|
|
|
+ maxY = maxY + 1
|
|
|
+ }
|
|
|
+ if maxY < nowYear {
|
|
|
+ changeFlag = true
|
|
|
+ maxY = nowYear
|
|
|
+ }
|
|
|
endTmp := fmt.Sprintf("%d-%s", maxY, xEndDate)
|
|
|
endTmpT, _ := time.Parse(utils.FormatDate, endTmp)
|
|
|
minY := maxY
|
|
@@ -654,9 +664,10 @@ func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, late
|
|
|
startTmp := fmt.Sprintf("%d-%s", minY, xStartDate)
|
|
|
startTmpT, _ := time.Parse(utils.FormatDate, startTmp)
|
|
|
|
|
|
+ fmt.Println("横轴截取日" + startTmpT.Format(utils.FormatDate) + " " + endTmpT.Format(utils.FormatDate))
|
|
|
for name, dateItem := range dataMap {
|
|
|
lv, ok1 := yearDataListMap[dateItem.EndDate.Year()]
|
|
|
- if dateItem.EndDate.Year() > lastDateT.Year() {
|
|
|
+ if changeFlag {
|
|
|
lv, ok1 = yearDataListMap[dateItem.StartDate.Year()]
|
|
|
}
|
|
|
if !ok1 {
|
|
@@ -671,78 +682,27 @@ func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, late
|
|
|
Value: item.Value,
|
|
|
}
|
|
|
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)
|
|
|
- }
|
|
|
- } 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
|
|
|
- }
|
|
|
- }
|
|
|
+ if (startTmpT.Before(dataTimeT) && endTmpT.After(dataTimeT)) || startTmpT == dataTimeT || endTmpT == dataTimeT {
|
|
|
+ tmpV := &tmpVal
|
|
|
+ if findVal, ok := quarterMap[name]; !ok {
|
|
|
+ findVal = append(findVal, tmpV)
|
|
|
+ quarterMap[name] = findVal
|
|
|
+ } else {
|
|
|
+ findVal = append(findVal, tmpV)
|
|
|
+ quarterMap[name] = findVal
|
|
|
}
|
|
|
- } 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
|
|
|
- }
|
|
|
+ if lv.Year >= latestDateYear {
|
|
|
+ // 切割的日期时间字符串
|
|
|
+ cuttingDataTimeStr := latestDate.AddDate(0, 0, lv.BetweenDay).Format(utils.FormatDate)
|
|
|
+ if item.DataTime == cuttingDataTimeStr {
|
|
|
+ dateItem.CuttingDataTimestamp = tmpVal.DataTimestamp
|
|
|
+ dataMap[name] = dateItem
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
+
|
|
|
for k, v := range dataMap {
|
|
|
itemList := quarterMap[k]
|
|
|
quarterItem := new(data_manage.QuarterData)
|
|
@@ -755,7 +715,13 @@ func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, late
|
|
|
}
|
|
|
quarterItem.DataList = itemList
|
|
|
quarterItem.CuttingDataTimestamp = v.CuttingDataTimestamp
|
|
|
-
|
|
|
+ //如果等于最后的实际日期,那么将切割时间戳记录
|
|
|
+ if quarterItem.CuttingDataTimestamp == 0 {
|
|
|
+ //如果大于最后的实际日期,那么第一个点就是切割的时间戳
|
|
|
+ if latestDate.Before(v.StartDate) && len(itemList) > 0 {
|
|
|
+ quarterItem.CuttingDataTimestamp = itemList[0].DataTimestamp - 100
|
|
|
+ }
|
|
|
+ }
|
|
|
quarterDataList = append(quarterDataList, quarterItem)
|
|
|
}
|
|
|
|