|
@@ -1094,3 +1094,70 @@ func calculate(calculateFormula string, TagMap map[string]float64) (calVal, errM
|
|
|
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+// GetMixedTableCellData 获取混合表格数据
|
|
|
+func GetMixedTableCellData(config [][]request.MixedTableCellDataReq) (newMixedTableCellDataList [][]request.MixedTableCellDataReq, err error) {
|
|
|
+ newMixedTableCellDataList = config
|
|
|
+
|
|
|
+ edbInfoIdList := make([]int, 0)
|
|
|
+ dataEdbInfoIdList := make([]int, 0)
|
|
|
+ for _, row := range config {
|
|
|
+ for _, cell := range row {
|
|
|
+ if cell.DataType == 2 {
|
|
|
+ edbInfoIdList = append(edbInfoIdList, cell.EdbInfoId)
|
|
|
+ } else if cell.DataType == 4 {
|
|
|
+ dataEdbInfoIdList = append(dataEdbInfoIdList, cell.EdbInfoId)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ edbInfoList, err := data_manage.GetEdbInfoByIdList(edbInfoIdList)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 指标信息map
|
|
|
+ edbInfoMap := make(map[int]*data_manage.EdbInfo)
|
|
|
+ // 指标数据map
|
|
|
+ edbDataListMap := make(map[int]map[string]float64)
|
|
|
+ for _, edbInfo := range edbInfoList {
|
|
|
+ edbInfoMap[edbInfo.EdbInfoId] = edbInfo
|
|
|
+
|
|
|
+ dataList := make([]*models.EdbDataList, 0)
|
|
|
+ switch edbInfo.EdbInfoType {
|
|
|
+ case 0:
|
|
|
+ dataList, _ = models.GetEdbDataList(edbInfo.Source, edbInfo.EdbInfoId, ``, ``)
|
|
|
+ case 1:
|
|
|
+ _, dataList, _, _, _, _ = GetPredictDataListByPredictEdbInfoId(edbInfo.EdbInfoId, ``, ``, false)
|
|
|
+ default:
|
|
|
+ err = errors.New(fmt.Sprint("获取失败,指标类型异常", edbInfo.EdbInfoType))
|
|
|
+ }
|
|
|
+
|
|
|
+ dateValMap := make(map[string]float64)
|
|
|
+ for _, data := range dataList {
|
|
|
+ dateValMap[data.DataTime] = data.Value
|
|
|
+ }
|
|
|
+ edbDataListMap[edbInfo.EdbInfoId] = dateValMap
|
|
|
+ }
|
|
|
+
|
|
|
+ for k, row := range newMixedTableCellDataList {
|
|
|
+ for i, cell := range row {
|
|
|
+ if cell.DataType == 2 {
|
|
|
+ if edbInfo, ok := edbInfoMap[cell.EdbInfoId]; ok {
|
|
|
+ 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)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ row[i] = cell
|
|
|
+ }
|
|
|
+ newMixedTableCellDataList[k] = row
|
|
|
+ }
|
|
|
+
|
|
|
+ return
|
|
|
+}
|