Browse Source

fix:兼容年月这种日期格式

Roc 1 year ago
parent
commit
f9b1f49b83
3 changed files with 28 additions and 5 deletions
  1. 1 0
      models/data_manage/chart_info.go
  2. 26 4
      services/data/excel_info.go
  3. 1 1
      services/data/predict_edb_info.go

+ 1 - 0
models/data_manage/chart_info.go

@@ -320,6 +320,7 @@ type EdbDataList struct {
 	Value         float64 `description:"数据值"`
 }
 
+// GetEdbDataList 获取指标的数据(日期正序返回)
 func GetEdbDataList(source, endInfoId int, startDate, endDate string) (list []*EdbDataList, err error) {
 	tableName := GetEdbDataTableName(source)
 	if tableName == "" {

+ 26 - 4
services/data/excel_info.go

@@ -1253,8 +1253,10 @@ func GetMixedTableCellData(config [][]request.MixedTableCellDataReq) (newMixedTa
 
 	// 指标信息map
 	edbInfoMap := make(map[int]*data_manage.EdbInfo)
-	// 指标数据map
+	// 日度指标数据map
 	edbDataListMap := make(map[int]map[string]float64)
+	// 月度指标数据map
+	edbMonthDataListMap := make(map[int]map[string]float64)
 	for _, edbInfo := range edbInfoList {
 		edbInfoMap[edbInfo.EdbInfoId] = edbInfo
 
@@ -1269,10 +1271,18 @@ func GetMixedTableCellData(config [][]request.MixedTableCellDataReq) (newMixedTa
 		}
 
 		dateValMap := make(map[string]float64)
+		monthValMap := make(map[string]float64)
 		for _, data := range dataList {
+			// 日度数据
 			dateValMap[data.DataTime] = data.Value
+			// 月度数据(取该月份的第一个数据)
+			yearMonth := strings.Join(strings.Split(data.DataTime, "-")[0:2], "-")
+			if _, ok := monthValMap[yearMonth]; !ok {
+				monthValMap[yearMonth] = data.Value
+			}
 		}
 		edbDataListMap[edbInfo.EdbInfoId] = dateValMap
+		edbMonthDataListMap[edbInfo.EdbInfoId] = monthValMap
 	}
 
 	for k, row := range newMixedTableCellDataList {
@@ -1282,10 +1292,22 @@ func GetMixedTableCellData(config [][]request.MixedTableCellDataReq) (newMixedTa
 					cell.ShowValue = edbInfo.EdbName
 				}
 			} else if cell.DataType == 4 {
-				if dateValMap, ok := edbDataListMap[cell.EdbInfoId]; ok {
-					if val, ok2 := dateValMap[cell.DataTime]; ok2 {
-						cell.ShowValue = fmt.Sprint(val)
+				tmpDateList := strings.Split(cell.DataTime, "-")
+				tmpDateValMap := make(map[string]float64)
+				if len(tmpDateList) == 2 {
+					//月度数据
+					if dateValMap, ok := edbMonthDataListMap[cell.EdbInfoId]; ok {
+						tmpDateValMap = dateValMap
+					}
+				} else {
+					// 日度数据
+					if dateValMap, ok := edbDataListMap[cell.EdbInfoId]; ok {
+						tmpDateValMap = dateValMap
 					}
+
+				}
+				if val, ok2 := tmpDateValMap[cell.DataTime]; ok2 {
+					cell.ShowValue = fmt.Sprint(val)
 				}
 			}
 

+ 1 - 1
services/data/predict_edb_info.go

@@ -889,7 +889,7 @@ func getPredictEdbDayList(startDate, endDate time.Time, frequency, dataDateType
 	return
 }
 
-// GetPredictDataListByPredictEdbInfoId 根据预测指标id获取预测指标的数据
+// GetPredictDataListByPredictEdbInfoId 根据预测指标id获取预测指标的数据(日期正序返回)
 func GetPredictDataListByPredictEdbInfoId(edbInfoId int, startDate, endDate string, isTimeBetween bool) (edbInfo *data_manage.EdbInfo, dataList []*data_manage.EdbDataList, sourceEdbInfoItem *data_manage.EdbInfo, predictEdbConf *data_manage.PredictEdbConf, err error, errMsg string) {
 	edbInfo, err = data_manage.GetEdbInfoById(edbInfoId)
 	if err != nil {