Browse Source

fix:混合表格,兼容年月这种日期格式

Roc 1 year ago
parent
commit
658738cf14
3 changed files with 27 additions and 4 deletions
  1. 1 0
      models/chart.go
  2. 25 3
      services/data/excel_info.go
  3. 1 1
      services/data/predict_edb_info.go

+ 1 - 0
models/chart.go

@@ -113,6 +113,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 == "" {

+ 25 - 3
services/data/excel_info.go

@@ -1144,6 +1144,8 @@ func GetMixedTableCellData(config [][]request.MixedTableCellDataReq) (newMixedTa
 	edbInfoMap := make(map[int]*data_manage.EdbInfo)
 	// 指标数据map
 	edbDataListMap := make(map[int]map[string]float64)
+	// 月度指标数据map
+	edbMonthDataListMap := make(map[int]map[string]float64)
 	for _, edbInfo := range edbInfoList {
 		edbInfoMap[edbInfo.EdbInfoId] = edbInfo
 
@@ -1158,10 +1160,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 {
@@ -1171,10 +1181,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

@@ -82,7 +82,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 []*models.EdbDataList, sourceEdbInfoItem *data_manage.EdbInfo, predictEdbConf *data_manage.PredictEdbConf, err error, errMsg string) {
 	edbInfo, err = data_manage.GetEdbInfoById(edbInfoId)
 	if err != nil {