|
@@ -729,8 +729,7 @@ func getEdbDataMapList(chartInfoId, chartType int, calendar, startDate, endDate
|
|
|
}
|
|
|
|
|
|
if chartType == 2 {
|
|
|
- latestDateStr := v.LatestDate //实际数据的截止日期
|
|
|
- _, tmpErr := time.Parse(utils.FormatDate, v.LatestDate)
|
|
|
+ latestDate, tmpErr := time.Parse(utils.FormatDate, v.LatestDate)
|
|
|
if tmpErr != nil {
|
|
|
//item.DataList = dataList
|
|
|
item.IsNullData = true
|
|
@@ -739,20 +738,18 @@ func getEdbDataMapList(chartInfoId, chartType int, calendar, startDate, endDate
|
|
|
err = errors.New(fmt.Sprint("获取最后实际数据的日期失败,Err:" + tmpErr.Error() + ";LatestDate:" + v.LatestDate))
|
|
|
return
|
|
|
}
|
|
|
- //latestDateYear := latestDate.Year() //实际数据截止年份
|
|
|
|
|
|
if calendar == "农历" {
|
|
|
if len(dataList) <= 0 {
|
|
|
result := new(data_manage.EdbDataResult)
|
|
|
item.DataList = result
|
|
|
} else {
|
|
|
- // todo 关于处理 calendarPreYear 上一年的数据
|
|
|
result, tmpErr := data_manage.AddCalculateQuarterV4(dataList)
|
|
|
if tmpErr != nil {
|
|
|
err = errors.New("获取农历数据失败,Err:" + tmpErr.Error())
|
|
|
return
|
|
|
}
|
|
|
- quarterDataList, tErr := GetSeasonEdbInfoDataListByXDateNong(result, latestDateStr, seasonExtraConfig, calendarPreYear)
|
|
|
+ quarterDataList, tErr := GetSeasonEdbInfoDataListByXDateNong(result, latestDate, seasonExtraConfig, calendarPreYear)
|
|
|
if tErr != nil {
|
|
|
err = errors.New("获取季节性图表数据失败,Err:" + tErr.Error())
|
|
|
return
|
|
@@ -761,7 +758,7 @@ func getEdbDataMapList(chartInfoId, chartType int, calendar, startDate, endDate
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
- quarterDataList, tErr := GetSeasonEdbInfoDataListByXDate(dataList, latestDateStr, seasonExtraConfig)
|
|
|
+ quarterDataList, tErr := GetSeasonEdbInfoDataListByXDate(dataList, latestDate, seasonExtraConfig)
|
|
|
if tErr != nil {
|
|
|
err = errors.New("获取季节性图表数据失败,Err:" + tErr.Error())
|
|
|
return
|
|
@@ -780,7 +777,7 @@ func getEdbDataMapList(chartInfoId, chartType int, calendar, startDate, endDate
|
|
|
}
|
|
|
|
|
|
// GetSeasonEdbInfoDataListByXDate 季节性图的指标数据根据横轴展示
|
|
|
-func GetSeasonEdbInfoDataListByXDate(dataList []*data_manage.EdbDataList, latestDateStr string, seasonExtraConfig string) (quarterDataListSort data_manage.QuarterDataList, err error) {
|
|
|
+func GetSeasonEdbInfoDataListByXDate(dataList []*data_manage.EdbDataList, latestDate time.Time, seasonExtraConfig string) (quarterDataListSort data_manage.QuarterDataList, err error) {
|
|
|
xStartDate := "01-01"
|
|
|
xEndDate := "12-31"
|
|
|
jumpYear := 0
|
|
@@ -810,6 +807,8 @@ func GetSeasonEdbInfoDataListByXDate(dataList []*data_manage.EdbDataList, latest
|
|
|
legendMap[v.Name] = v.Value
|
|
|
}
|
|
|
}
|
|
|
+ latestDateStr := latestDate.Format(utils.FormatDate)
|
|
|
+
|
|
|
//判断横轴的两个时间之间是不是跨年了,如果跨年了,则横轴截止年份比起始年份+1,如果不跨年,截止年份等于起始年份
|
|
|
//根据数据确定最早的年份,和最近年份
|
|
|
//根据横轴的日期,汇总所有的年份
|
|
@@ -920,7 +919,6 @@ func GetSeasonEdbInfoDataListByXDate(dataList []*data_manage.EdbDataList, latest
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- latestDate, _ := time.Parse(utils.FormatDate, latestDateStr)
|
|
|
for k, v := range dataMap {
|
|
|
itemList := quarterMap[k]
|
|
|
quarterItem := new(data_manage.QuarterData)
|
|
@@ -942,7 +940,6 @@ func GetSeasonEdbInfoDataListByXDate(dataList []*data_manage.EdbDataList, latest
|
|
|
quarterDataList = append(quarterDataList, quarterItem)
|
|
|
}
|
|
|
|
|
|
- // todo 处理图例名称
|
|
|
if len(quarterDataList) > 0 {
|
|
|
quarterDataListSort = quarterDataList
|
|
|
sort.Sort(quarterDataListSort)
|
|
@@ -951,7 +948,7 @@ func GetSeasonEdbInfoDataListByXDate(dataList []*data_manage.EdbDataList, latest
|
|
|
}
|
|
|
|
|
|
// GetSeasonEdbInfoDataListByXDateNong 季节性图的指标数据根据横轴选择农历时展示
|
|
|
-func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, latestDateStr string, seasonExtraConfig string, calendarPreYear 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
|
|
@@ -981,6 +978,7 @@ func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, late
|
|
|
legendMap[v.Name] = v.Value
|
|
|
}
|
|
|
}
|
|
|
+ latestDateYear := latestDate.Year()
|
|
|
//判断横轴的两个时间之间是不是跨年了,如果跨年了,则横轴截止年份比起始年份+1,如果不跨年,截止年份等于起始年份
|
|
|
//根据数据确定最早的年份,和最近年份
|
|
|
//根据横轴的日期,汇总所有的年份
|
|
@@ -1086,7 +1084,6 @@ func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, late
|
|
|
|
|
|
for _, item := range lv.Items {
|
|
|
dataTimeT, _ := time.Parse(utils.FormatDate, item.DataTime)
|
|
|
- //查出当前年份里最大的数据的年份,和第二大的年份
|
|
|
if (startTmpT.Before(dataTimeT) && endTmpT.After(dataTimeT)) || startTmpT == dataTimeT || endTmpT == dataTimeT {
|
|
|
if findVal, ok := quarterMap[name]; !ok {
|
|
|
findVal = append(findVal, item)
|
|
@@ -1095,18 +1092,20 @@ func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, late
|
|
|
findVal = append(findVal, item)
|
|
|
quarterMap[name] = findVal
|
|
|
}
|
|
|
- // todo 统计截止日
|
|
|
- if lv.Year == endYear && item.DataTime == latestDateStr {
|
|
|
- if dv, ok1 := dataMap[name]; ok1 {
|
|
|
- dv.CuttingDataTimestamp = item.DataTimestamp
|
|
|
- dataMap[name] = dv
|
|
|
+
|
|
|
+ if lv.Year >= latestDateYear {
|
|
|
+ // 切割的日期时间字符串
|
|
|
+ cuttingDataTimeStr := latestDate.AddDate(0, 0, lv.BetweenDay).Format(utils.FormatDate)
|
|
|
+ if item.DataTime == cuttingDataTimeStr {
|
|
|
+ if dv, ok1 := dataMap[name]; ok1 {
|
|
|
+ dv.CuttingDataTimestamp = item.DataTimestamp
|
|
|
+ dataMap[name] = dv
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- latestDate, _ := time.Parse(utils.FormatDate, latestDateStr)
|
|
|
for k, v := range dataMap {
|
|
|
itemList := quarterMap[k]
|
|
|
quarterItem := new(data_manage.QuarterData)
|
|
@@ -1118,13 +1117,6 @@ 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)
|
|
|
}
|
|
|
|