Эх сурвалжийг харах

fix:修复指标最新日期的配置显示

Roc 1 жил өмнө
parent
commit
39b8966439

+ 73 - 34
services/data/table/mixed_table.go

@@ -124,7 +124,13 @@ func GetMixedTableCellData(mixedTableReq request.MixedTableReq) (newMixedTableCe
 		for i, cell := range row {
 			// 单元格是日期类型,且是日导入指标日期(指标库的最新日期)
 			if cell.DataType == request.DateDT && cell.DataTimeType == request.EdbDateDT {
-				if edbInfo, ok := edbInfoMap[cell.EdbInfoId]; ok {
+				// 指标id是在配置里面
+				var edbDateConfig request.EdbDateConf
+				err = json.Unmarshal([]byte(cell.Value), &edbDateConfig)
+				if err != nil {
+					return
+				}
+				if edbInfo, ok := edbInfoMap[edbDateConfig.EdbInfoId]; ok {
 					cell.ShowValue = edbInfo.EndDate
 					cell.DataTime = edbInfo.EndDate
 					config[k][i] = cell
@@ -156,37 +162,69 @@ func GetMixedTableCellData(mixedTableReq request.MixedTableReq) (newMixedTableCe
 					cell.ShowValue = edbInfo.EdbName
 				}
 			case request.InsertDataDT, request.PopInsertDataDT: // 数据类型
-				if cell.DataTime == `` {
-					// 指标的最新日期
-					if dateValList, ok := edbDataListMap[cell.EdbInfoId]; ok {
-						tmpLenData := len(dateValList)
-						if tmpLenData > 0 {
-							cellKeyVal[cell.Uid] = dateValList[tmpLenData-1].Value
-							//cell.ShowValue = utils.FormatTableDataShowValue(dateValList[tmpLenData-1].Value)
-							cell.ShowValue = fmt.Sprint(dateValList[tmpLenData-1].Value)
-						}
+				// 日期关系配置不存在,则默认最新数据
+				if relationConf, ok := cellRelationConfMap[cell.Uid]; ok {
+					if relationConf.RelationDate.Key == `` {
+						// 日期关系配置未绑定
+						continue
 					}
-				} else {
-					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 := edbDayDataListMap[cell.EdbInfoId]; ok {
-							tmpDateValMap = dateValMap
-						}
+					// 配置
+					relationCell, ok := cellDataRelationMap[relationConf.RelationDate.Key]
+					if !ok {
+						// 找不到对应日期的单元格
+						continue
+					}
+
+					// 确实是找到了这个关联日期的单元格,那么就先清空当前单元格的数据,通过日期重新获取数据值
+					cell.ShowValue = ``
+					cell.Value = ``
 
+					tmpDateValMap := make(map[string]float64)
+					// 日度数据
+					if dateValMap, ok := edbDayDataListMap[cell.EdbInfoId]; ok {
+						tmpDateValMap = dateValMap
 					}
-					if val, ok2 := tmpDateValMap[cell.DataTime]; ok2 {
+
+					if val, ok2 := tmpDateValMap[relationCell.DataTime]; ok2 {
 						//cell.ShowValue = fmt.Sprint(val)
 						cellKeyVal[cell.Uid] = val
-						//cell.ShowValue = utils.FormatTableDataShowValue(val)
 						cell.ShowValue = fmt.Sprint(val)
 					}
+				} else {
+					// 如果不是取得一个关联的日期,那么就是指定日期
+					// 如果没有指定日期,则默认最新数据
+					if cell.DataTime == `` {
+						// 指标的最新日期
+						if dateValList, ok := edbDataListMap[cell.EdbInfoId]; ok {
+							tmpLenData := len(dateValList)
+							if tmpLenData > 0 {
+								cellKeyVal[cell.Uid] = dateValList[tmpLenData-1].Value
+								//cell.ShowValue = utils.FormatTableDataShowValue(dateValList[tmpLenData-1].Value)
+								cell.ShowValue = fmt.Sprint(dateValList[tmpLenData-1].Value)
+							}
+						}
+					} else {
+						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 := edbDayDataListMap[cell.EdbInfoId]; ok {
+								tmpDateValMap = dateValMap
+							}
+
+						}
+						if val, ok2 := tmpDateValMap[cell.DataTime]; ok2 {
+							//cell.ShowValue = fmt.Sprint(val)
+							cellKeyVal[cell.Uid] = val
+							//cell.ShowValue = utils.FormatTableDataShowValue(val)
+							cell.ShowValue = fmt.Sprint(val)
+						}
+					}
 				}
 
 				calculateCellMap[cell.Uid] = Cell{
@@ -448,6 +486,16 @@ func handleConfig(configList [][]request.MixedTableCellDataReq) (newConfig [][]r
 				dataEdbInfoIdList = append(dataEdbInfoIdList, cell.EdbInfoId)
 
 			case request.DateDT: // 日期类型
+				date, tmpErr, tmpErrMsg := handleDate(cell.DataTimeType, cell.Value)
+				if tmpErr != nil {
+					err = tmpErr
+					errMsg = tmpErrMsg
+					return
+				}
+				rowList[rk].DataTime = date
+				rowList[rk].ShowValue = date
+
+				// 指标日期类型单元格的需要额外将指标id取出来
 				if cell.DataTimeType == request.EdbDateDT {
 					var config request.EdbDateConf
 					err = json.Unmarshal([]byte(cell.Value), &config)
@@ -455,15 +503,6 @@ func handleConfig(configList [][]request.MixedTableCellDataReq) (newConfig [][]r
 						return
 					}
 					edbInfoIdList = append(edbInfoIdList, config.EdbInfoId)
-				} else {
-					date, tmpErr, tmpErrMsg := handleDate(cell.DataTimeType, cell.Value)
-					if tmpErr != nil {
-						err = tmpErr
-						errMsg = tmpErrMsg
-						return
-					}
-					rowList[rk].DataTime = date
-					rowList[rk].ShowValue = date
 				}
 			}
 		}