Browse Source

fix:最新日期

Roc 1 year ago
parent
commit
125f35860e
2 changed files with 51 additions and 32 deletions
  1. 1 1
      models/data_manage/excel/request/mixed_table.go
  2. 50 31
      services/data/excel/mixed_table.go

+ 1 - 1
models/data_manage/excel/request/mixed_table.go

@@ -8,7 +8,7 @@ const (
 	InsertDataDT                        // 4 插值(插入指标值,表格上,自动判断日期和指标的交集位置,插入值)
 	PopInsertDataDT                     // 5 弹框插值(在表格上选择日期,然后空白单元格选择弹框并选择指标,插入该指标与该日期的值)
 	FormulateCalculateDataDT            // 6 公式计算(A+B这种)
-	InsertEdbCalculateDataDT            // 6 插入指标计算公式生成的值	//TODO 不是这个id
+	InsertEdbCalculateDataDT            // 7 插入指标计算公式生成的值
 )
 
 // 单元格的日期类型类型

+ 50 - 31
services/data/excel/mixed_table.go

@@ -120,46 +120,63 @@ func GetMixedTableCellData(cellRelationConf string, config [][]request.MixedTabl
 					cell.ShowValue = edbInfo.EdbName
 				}
 			case request.InsertDataDT, request.PopInsertDataDT: // 数据类型
-				tmpDateList := strings.Split(cell.DataTime, "-")
-				tmpDateValMap := make(map[string]float64)
-				if len(tmpDateList) == 2 {
-					//月度数据
-					if dateValMap, ok := edbMonthDataListMap[cell.EdbInfoId]; ok {
-						tmpDateValMap = dateValMap
+				if cell.DataTime == `` {
+					// 指标的最新日期
+					if dateValList, ok := edbDataListMap[cell.EdbInfoId]; ok {
+						tmpLenData := len(dateValList)
+						if tmpLenData > 0 {
+							cell.ShowValue = utils.FormatTableDataShowValue(dateValList[tmpLenData-1].Value)
+						}
 					}
 				} else {
-					// 日度数据
-					if dateValMap, ok := edbDayDataListMap[cell.EdbInfoId]; ok {
-						tmpDateValMap = dateValMap
-					}
+					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)
+						cell.ShowValue = utils.FormatTableDataShowValue(val)
+					}
 				}
-				if val, ok2 := tmpDateValMap[cell.DataTime]; ok2 {
-					//cell.ShowValue = fmt.Sprint(val)
-					cell.ShowValue = utils.FormatTableDataShowValue(val)
-				}
+
 			case request.InsertEdbCalculateDataDT: // 指标类型
-				// 日期
-				relationConf, ok := cellRelationConfMap[cell.Uid]
-				if !ok {
-					// 日期关系配置不存在
-					continue
+				if cell.Uid == `951cab4c0c4dce3ab1c8b6498632a064` {
+					fmt.Println("a")
 				}
-				if relationConf.RelationDate.Key == `` {
-					// 日期关系配置未绑定
-					continue
+				if cell.Uid == "dd301ffe98b5e7009454de1f362c58d0" {
+					fmt.Println("b")
 				}
-
-				relationCell, ok := cellDataRelationMap[relationConf.RelationDate.Key]
-				if relationConf.RelationDate.Key == `` {
-					// 找不到对应日期的单元格
-					continue
+				// 日期
+				var cellDateTime string
+				// 日期关系配置不存在,则默认最新数据
+				if relationConf, ok := cellRelationConfMap[cell.Uid]; ok {
+					if relationConf.RelationDate.Key == `` {
+						// 日期关系配置未绑定
+						continue
+					}
+					// 配置
+					relationCell, ok := cellDataRelationMap[relationConf.RelationDate.Key]
+					if !ok {
+						// 找不到对应日期的单元格
+						continue
+					}
+					cellDateTime = relationCell.DataTime
 				}
 
 				var tmpDataMap map[string]float64
 
 				key := utils.MD5(cell.Value)
-				tmpDataMap, ok = edbSourceDataMap[key]
+				tmpDataMap, ok := edbSourceDataMap[key]
 				if !ok {
 					// 对应的配置值
 					var tmpConfig request.CalculateConf
@@ -209,12 +226,14 @@ func GetMixedTableCellData(cellRelationConf string, config [][]request.MixedTabl
 					tmpDataMap = respItem.Data.DataMap
 					// 计算结果存一份,万一存在重复的计算方式,那么省的重新计算一下
 					edbSourceDataMap[key] = tmpDataMap
-				}
 
-				val := tmpDataMap[relationCell.DataTime]
+					if cellDateTime == `` && len(respItem.Data.DateList) > 0 {
+						cellDateTime = respItem.Data.DateList[0]
+					}
+				}
 
+				val := tmpDataMap[cellDateTime]
 				cell.ShowValue = utils.FormatTableDataShowValue(val)
-				//
 			}
 
 			row[i] = cell