瀏覽代碼

优化图表显示

xyxie 11 月之前
父節點
當前提交
e29a0509dd

+ 1 - 1
controllers/data_manage/chart_common.go

@@ -182,7 +182,7 @@ func getBalanceChartInfoDetailFromUniqueCode(chartInfo *data_manage.ChartInfoVie
 	}
 	msg = `获取失败`
 	// 相关联指标
-	mappingListTmp, dataListMap, err, errMsg := excel.GetBalanceExcelChartSingle(chartInfo, "")
+	mappingListTmp, dataListMap, err, errMsg := excel.GetBalanceExcelChartSingle(chartInfo.ChartInfoId, 0, "")
 	if err != nil {
 		errMsg = "获取失败"
 		err = fmt.Errorf(" 获取图表,指标信息失败 Err:%s", err.Error())

+ 82 - 0
models/data_manage/excel/excel_chart_data.go

@@ -1,6 +1,8 @@
 package excel
 
 import (
+	"eta/eta_mobile/models/data_manage"
+	"fmt"
 	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
@@ -9,6 +11,7 @@ type ExcelChartData struct {
 	ExcelChartDataId int `orm:"column(excel_chart_data_id);pk"`
 	ExcelInfoId      int `description:"表格id"`
 	ExcelChartEdbId  int `description:"指标ID"`
+	ChartInfoId      int `description:"图表id"`
 	DataTime         string
 	Value            float64
 	ModifyTime       time.Time `description:"修改时间"`
@@ -42,3 +45,82 @@ func (e *ExcelChartData) Delete() (err error) {
 }
 
 // 查询
+func GetExcelChartDataByExcelInfoId(excelInfoId int) (list []*ExcelChartData, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT *
+             FROM excel_chart_data
+			 WHERE excel_info_id=? 
+             ORDER BY excel_chart_edb_id ASC, excel_chart_data_id ASC `
+	_, err = o.Raw(sql, excelInfoId).QueryRows(&list)
+	return
+}
+
+func BatchUpdateChartEdbData(excelInfoId int, excelEdbMap map[int]*ExcelChartEdb, excelDataMap map[int][]*data_manage.EdbDataList) (err error) {
+	o, err := orm.NewOrmUsingDB("data").Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			_ = o.Rollback()
+		} else {
+			_ = o.Commit()
+		}
+	}()
+	//如果有数据则删除所有的数据
+	sql := `delete from excel_chart_data where excel_info_id = ?`
+	_, err = o.Raw(sql, excelInfoId).Exec()
+	if err != nil {
+		return
+	}
+
+	// 图表指标数据入库
+	addList := make([]*ExcelChartData, 0)
+	for chartEdbId, dataList := range excelDataMap {
+		chartEdb, ok := excelEdbMap[chartEdbId]
+		if !ok {
+			err = fmt.Errorf("chartEdbId:%d not exist", chartEdbId)
+			return
+		}
+		for _, v := range dataList {
+			chartData := &ExcelChartData{
+				ExcelInfoId:     chartEdb.ExcelInfoId,
+				ExcelChartEdbId: chartEdb.ExcelChartEdbId,
+				ChartInfoId:     chartEdb.ChartInfoId,
+				DataTime:        v.DataTime,
+				Value:           v.Value,
+				DataTimestamp:   v.DataTimestamp,
+				ModifyTime:      time.Now(),
+				CreateTime:      time.Now(),
+			}
+			addList = append(addList, chartData)
+			// data信息入库
+			if len(addList) > 1000 {
+				_, err = o.InsertMulti(len(addList), addList)
+				if err != nil {
+					return
+				}
+				addList = addList[:0]
+			}
+		}
+	}
+
+	// data信息入库
+	if len(addList) > 0 {
+		_, err = o.InsertMulti(len(addList), addList)
+		if err != nil {
+			return
+		}
+	}
+	return
+}
+
+func GetExcelChartDataByChartInfoId(chartInfoId int) (list []*ExcelChartData, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT *
+             FROM excel_chart_Data
+			 WHERE chart_info_id=? 
+             ORDER BY excel_chart_edb_id ASC `
+	_, err = o.Raw(sql, chartInfoId).QueryRows(&list)
+	return
+}

+ 51 - 21
models/data_manage/excel/excel_chart_edb.go

@@ -97,8 +97,7 @@ func (e *ExcelChartEdb) Delete() (err error) {
 
 type AddChartEdbAndDataItem struct {
 	ChartEdb *ExcelChartEdb
-	DateList []string  `description:"日期列表"`
-	ValList  []float64 `description:"数据列表"`
+	DataList []*ExcelChartData `description:"数据列表"`
 }
 
 // 同时添加指标和指标数据
@@ -117,7 +116,7 @@ func (e *ExcelChartEdb) AddChartEdbAndData(list []*AddChartEdbAndDataItem, chart
 
 	// 先删除原先的绑定的指标
 	if len(deleteEdbIds) > 0 && chartInfo.ChartInfoId > 0 {
-		sql := `DELETE FROM excel_chart_edb WHERE excel_chart_info_id = ? AND excel_chart_edb_id in (` + utils.GetOrmInReplace(len(deleteEdbIds)) + `)`
+		sql := `DELETE FROM excel_chart_edb WHERE chart_info_id = ? AND excel_chart_edb_id in (` + utils.GetOrmInReplace(len(deleteEdbIds)) + `)`
 		_, err = o.Raw(sql, chartInfo.ChartInfoId, deleteEdbIds).Exec()
 		if err != nil {
 			err = fmt.Errorf("删除原先的指标失败:%v", err)
@@ -128,7 +127,7 @@ func (e *ExcelChartEdb) AddChartEdbAndData(list []*AddChartEdbAndDataItem, chart
 	updateIds := make([]int, 0)
 	var edbInfoIdArrStr []string
 	for _, item := range list {
-		err = addChartEdbAndData(o, item.ChartEdb, item.DateList, item.ValList)
+		err = addChartEdbAndData(o, item.ChartEdb, item.DataList)
 		if err != nil {
 			return
 		}
@@ -154,7 +153,7 @@ func (e *ExcelChartEdb) AddChartEdbAndData(list []*AddChartEdbAndDataItem, chart
 	}
 
 	//更新图表id
-	sql := `update excel_chart_edb set chart_info_id = ? where excel_chart_edb_id in (` + utils.GetOrmInReplace(len(updateIds)) + `)`
+	sql := `update excel_chart_edb set chart_info_id = ? where excel_chart_edb_id in (` + utils.GetOrmInReplace(len(updateIds)) + `) and chart_info_id=0`
 	_, err = o.Raw(sql, chartInfoId, updateIds).Exec()
 	if err != nil {
 		err = fmt.Errorf("更新图表id失败,AddChartEdbAndData: %v", err)
@@ -170,7 +169,7 @@ func (e *ExcelChartEdb) AddChartEdbAndData(list []*AddChartEdbAndDataItem, chart
 	return
 }
 
-func addChartEdbAndData(o orm.TxOrmer, chartEdb *ExcelChartEdb, dateList []string, valList []float64) (err error) {
+func addChartEdbAndData(o orm.TxOrmer, chartEdb *ExcelChartEdb, dataList []*ExcelChartData) (err error) {
 	// 图表指标信息入库
 	excelChartEdbId := chartEdb.ExcelChartEdbId
 	if chartEdb.ExcelChartEdbId <= 0 {
@@ -198,28 +197,22 @@ func addChartEdbAndData(o orm.TxOrmer, chartEdb *ExcelChartEdb, dateList []strin
 
 	// 图表指标数据入库
 	addList := make([]*ExcelChartData, 0)
-	if len(dateList) > 0 && len(valList) > 0 {
-		for k, v := range dateList {
+	if len(dataList) > 0 {
+		for _, v := range dataList {
 			chartData := &ExcelChartData{
 				ExcelInfoId:     chartEdb.ExcelInfoId,
 				ExcelChartEdbId: chartEdb.ExcelChartEdbId,
-				DataTime:        v,
-				Value:           valList[k],
+				ChartInfoId:     chartEdb.ChartInfoId,
+				DataTime:        v.DataTime,
+				Value:           v.Value,
+				DataTimestamp:   v.DataTimestamp,
 				ModifyTime:      time.Now(),
 				CreateTime:      time.Now(),
 			}
-			//时间戳
-			currentDate, er := time.Parse(utils.FormatDate, v)
-			if er != nil {
-				err = fmt.Errorf("时间格式化失败 err:%v", er)
-				return
-			}
-			timestamp := currentDate.UnixNano() / 1e6
-			chartData.DataTimestamp = timestamp
 			addList = append(addList, chartData)
 			// data信息入库
 			if len(addList) > 1000 {
-				_, err = o.InsertMulti(len(addList), len(addList))
+				_, err = o.InsertMulti(len(addList), addList)
 				if err != nil {
 					return
 				}
@@ -230,7 +223,7 @@ func addChartEdbAndData(o orm.TxOrmer, chartEdb *ExcelChartEdb, dateList []strin
 
 	// data信息入库
 	if len(addList) > 0 {
-		_, err = o.InsertMulti(len(addList), len(addList))
+		_, err = o.InsertMulti(len(addList), addList)
 		if err != nil {
 			return
 		}
@@ -243,7 +236,7 @@ func GetExcelChartEdbMappingByExcelInfoId(excelInfoId int) (list []*ExcelChartEd
 	sql := ` SELECT *
              FROM excel_chart_edb 
 			 WHERE excel_info_id=? 
-             ORDER BY excel_chart_edb_id ASC `
+             ORDER BY chart_info_id asc, excel_chart_edb_id ASC `
 	_, err = o.Raw(sql, excelInfoId).QueryRows(&list)
 	return
 }
@@ -331,3 +324,40 @@ func DeleteExcelChartEdbAndData(excelInfoIds []int, chartInfoIds []int) (err err
 	}
 	return
 }
+
+// 删除平衡表中的指标和数据
+func DeleteBalanceExcelChartInfoAndData(chartInfoId int) (err error) {
+	o := orm.NewOrmUsingDB("data")
+	to, err := o.Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			_ = to.Rollback()
+		} else {
+			_ = to.Commit()
+		}
+	}()
+
+	sql := ` DELETE FROM chart_info WHERE chart_info_id=? `
+	_, err = to.Raw(sql, chartInfoId).Exec()
+	if err != nil {
+		err = fmt.Errorf("删除平衡表图表失败 %s", err.Error())
+		return
+	}
+	sql = ` DELETE FROM  excel_chart_edb WHERE chart_info_id=? `
+	_, err = to.Raw(sql, chartInfoId).Exec()
+	if err != nil {
+		err = fmt.Errorf("删除平衡表图表指标失败 %s", err.Error())
+		return
+	}
+	// 删除表格里的数据
+	sql = ` DELETE FROM  excel_chart_data WHERE chart_info_id=? `
+	_, err = to.Raw(sql, chartInfoId).Exec()
+	if err != nil {
+		err = fmt.Errorf("删除平衡表图表指标失败 %s", err.Error())
+		return
+	}
+	return
+}

+ 79 - 72
services/data/chart_info_excel_balance.go

@@ -56,72 +56,9 @@ func GetBalanceExcelChartDetail(chartInfo *data_manage.ChartInfoView, mappingLis
 		calendar = "公历"
 	}
 
-	mappingList := make([]*data_manage.ChartEdbInfoMapping, 0)
-	//循环组装映射关系
-	for _, v := range mappingListTmp {
-		dataList := make([]*data_manage.EdbDataList, 0)
-		dataListTmp, ok := dataListMap[v.ExcelChartEdbId]
-		if ok {
-			dataList = dataListTmp
-		} else {
-			err = errors.New(fmt.Sprint("获取失败,指标类型异常", v.ExcelChartEdbId))
-			return
-		}
-		startDateStr, endDateStr, _, endVal, maxValue, minValue := getBalanceDataListStartDateAndValue(dataList)
-		mapping := &data_manage.ChartEdbInfoMapping{
-			EdbInfoId:         v.ExcelChartEdbId,
-			SourceName:        "",
-			Source:            0,
-			SubSource:         0,
-			EdbCode:           v.EdbCode,
-			EdbName:           v.EdbName,
-			EdbAliasName:      v.EdbName,
-			EdbNameEn:         "",
-			EdbAliasNameEn:    "",
-			EdbType:           0,
-			Frequency:         "",
-			FrequencyEn:       "",
-			Unit:              "",
-			UnitEn:            "",
-			StartDate:         startDateStr,
-			EndDate:           endDateStr,
-			ModifyTime:        v.ModifyTime.Format(utils.FormatDateTime),
-			ChartEdbMappingId: v.ExcelChartEdbId,
-			ChartInfoId:       chartInfoId,
-			MaxData:           v.MaxData,
-			MinData:           v.MinData,
-			IsOrder:           v.IsOrder,
-			IsAxis:            v.IsAxis,
-			EdbInfoType:       v.EdbInfoType,
-			//EdbInfoCategoryType: 0,
-			LeadValue:         v.LeadValue,
-			LeadUnit:          v.LeadUnit,
-			LeadUnitEn:        "",
-			ChartStyle:        "",
-			ChartColor:        "",
-			PredictChartColor: "",
-			ChartWidth:        v.ChartWidth,
-			ChartType:         chartType,
-			LatestDate:        endDateStr,
-			LatestValue:       endVal,
-			MoveLatestDate:    "",
-			UniqueCode:        "",
-			MinValue:          minValue,
-			MaxValue:          maxValue,
-			DataList:          nil,
-			IsNullData:        false,
-			MappingSource:     0,
-			RegionType:        "",
-			ClassifyId:        0,
-			IsConvert:         0,
-			ConvertType:       0,
-			ConvertValue:      0,
-			ConvertUnit:       "",
-			ConvertEnUnit:     "",
-			IsJoinPermission:  0,
-			HaveOperaAuth:     true,
-		}
-		mappingList = append(mappingList, mapping)
+	mappingList, err := TransferChartEdbToEdbMappingFormat(chartInfoId, chartType, mappingListTmp, dataListMap)
+	if err != nil {
+		return
 	}
 	if chartType == 2 {
 		startDate = seasonStartDate
@@ -253,8 +190,8 @@ func GetBalanceExcelChartDetail(chartInfo *data_manage.ChartInfoView, mappingLis
 		resp.EdbInfoList = mappingList
 	}
 
-	//图表操作权限
-	chartInfo.IsEdit = CheckOpChartPermission(sysUser, chartInfo.SysUserId, chartInfo.HaveOperaAuth)
+	// todo 平衡表图表操作权限平衡表表格的操作权限保持一致,前端未用到该按钮权限,故不处理
+	//chartInfo.IsEdit = CheckOpChartPermission(sysUser, chartInfo.SysUserId, chartInfo.HaveOperaAuth)
 	chartInfo.Button = data_manage.ChartViewButton{
 		IsEdit:    chartInfo.IsEdit,
 		IsEnChart: chartInfo.IsEnChart,
@@ -305,7 +242,7 @@ func GetBalanceExcelEdbDataMapList(chartInfoId, chartType int, calendar, startDa
 			item.EdbInfoType = 1
 			item.ChartStyle = ""
 			item.ChartColor = ""
-			item.ChartWidth = 0
+			item.ChartWidth = 1
 			item.MaxData = v.MaxValue
 			item.MinData = v.MinValue
 		} else {
@@ -398,8 +335,8 @@ func GetBalanceExcelEdbDataMapList(chartInfoId, chartType int, calendar, startDa
 		if ok {
 			dataList = dataListTmp
 		} else {
-			err = errors.New(fmt.Sprint("获取失败,指标类型异常", v.EdbInfoId))
-			return
+			//err = errors.New(fmt.Sprint("获取失败,指标类型异常", v.EdbInfoId))
+			utils.FileLog.Info(fmt.Sprintf("获取失败,指标数据异常 %d", v.EdbInfoId))
 		}
 		if v.IsConvert == 1 {
 			switch v.ConvertType {
@@ -623,7 +560,6 @@ func CheckBalanceChartCacheAndPermission(chartInfo *data_manage.ChartInfoView, i
 	}
 	return
 }
-
 func getBalanceDataListStartDateAndValue(dataList []*data_manage.EdbDataList) (startDate, endDate string, startVal, endVal, maxVal, minVal float64) {
 	if len(dataList) == 0 {
 		return
@@ -652,3 +588,74 @@ func getBalanceDataListStartDateAndValue(dataList []*data_manage.EdbDataList) (s
 	}
 	return
 }
+
+func TransferChartEdbToEdbMappingFormat(chartInfoId, chartType int, mappingListTmp []*excelModel.ExcelChartEdb, dataListMap map[int][]*data_manage.EdbDataList) (mappingList []*data_manage.ChartEdbInfoMapping, err error) {
+	mappingList = make([]*data_manage.ChartEdbInfoMapping, 0)
+	//循环组装映射关系
+	for _, v := range mappingListTmp {
+		dataList := make([]*data_manage.EdbDataList, 0)
+		dataListTmp, ok := dataListMap[v.ExcelChartEdbId]
+		if ok {
+			dataList = dataListTmp
+		} else {
+			//err = errors.New(fmt.Sprint("获取失败,指标类型异常", v.ExcelChartEdbId))
+			utils.FileLog.Info(fmt.Sprintf("获取失败,指标数据异常 %d", v.ExcelChartEdbId))
+		}
+		startDateStr, endDateStr, _, endVal, maxValue, minValue := getBalanceDataListStartDateAndValue(dataList)
+		mapping := &data_manage.ChartEdbInfoMapping{
+			EdbInfoId:         v.ExcelChartEdbId,
+			SourceName:        "平衡表",
+			Source:            0,
+			SubSource:         0,
+			EdbCode:           v.EdbCode,
+			EdbName:           v.EdbName,
+			EdbAliasName:      v.EdbName,
+			EdbNameEn:         "",
+			EdbAliasNameEn:    "",
+			EdbType:           0,
+			Frequency:         "",
+			FrequencyEn:       "",
+			Unit:              "",
+			UnitEn:            "",
+			StartDate:         startDateStr,
+			EndDate:           endDateStr,
+			ModifyTime:        v.ModifyTime.Format(utils.FormatDateTime),
+			ChartEdbMappingId: v.ExcelChartEdbId,
+			ChartInfoId:       chartInfoId,
+			MaxData:           v.MaxData,
+			MinData:           v.MinData,
+			IsOrder:           v.IsOrder,
+			IsAxis:            v.IsAxis,
+			EdbInfoType:       v.EdbInfoType,
+			//EdbInfoCategoryType: 0,
+			LeadValue:         v.LeadValue,
+			LeadUnit:          v.LeadUnit,
+			LeadUnitEn:        "",
+			ChartStyle:        "",
+			ChartColor:        "",
+			PredictChartColor: "",
+			ChartWidth:        v.ChartWidth,
+			ChartType:         chartType,
+			LatestDate:        endDateStr,
+			LatestValue:       endVal,
+			MoveLatestDate:    "",
+			UniqueCode:        "",
+			MinValue:          minValue,
+			MaxValue:          maxValue,
+			DataList:          nil,
+			IsNullData:        false,
+			MappingSource:     0,
+			RegionType:        "",
+			ClassifyId:        0,
+			IsConvert:         0,
+			ConvertType:       0,
+			ConvertValue:      0,
+			ConvertUnit:       "",
+			ConvertEnUnit:     "",
+			IsJoinPermission:  0,
+			HaveOperaAuth:     true,
+		}
+		mappingList = append(mappingList, mapping)
+	}
+	return
+}

+ 20 - 2
services/data/chart_info_interface.go

@@ -1,9 +1,13 @@
 package data
 
-import "eta/eta_mobile/models/data_manage"
+import (
+	"eta/eta_mobile/models/data_manage"
+	"eta/eta_mobile/models/data_manage/excel"
+)
 
 type ChartInfoDataShow interface {
 	GetEdbDataMapList(chartInfoId, chartType int, calendar, startDate, endDate string, mappingList []*data_manage.ChartEdbInfoMapping, seasonExtraConfig string) (edbDataListMap map[int][]*data_manage.EdbDataList, edbList []*data_manage.ChartEdbInfoMapping, err error)
+	GetChartEdbMappingListByEdbInfoIdList(edbIdList []int) (mappingList []*data_manage.ChartEdbInfoMapping, err error)
 }
 
 type BaseChartInfoDataShow struct {
@@ -16,8 +20,15 @@ func (e *BaseChartInfoDataShow) GetEdbDataMapList(chartInfoId, chartType int, ca
 	return
 }
 
+// GetChartEdbMappingListByEdbInfoIdList 获取指标最后的基础数据
+func (e *BaseChartInfoDataShow) GetChartEdbMappingListByEdbInfoIdList(edbIdList []int) (mappingList []*data_manage.ChartEdbInfoMapping, err error) {
+	mappingList, err = data_manage.GetChartEdbMappingListByEdbInfoIdList(edbIdList)
+	return
+}
+
 type ExcelChartInfoDataShow struct {
-	DataListMap map[int][]*data_manage.EdbDataList
+	DataListMap    map[int][]*data_manage.EdbDataList
+	MappingListTmp []*excel.ExcelChartEdb
 }
 
 // GetEdbDataMapList 获取指标最后的基础数据
@@ -26,3 +37,10 @@ func (e *ExcelChartInfoDataShow) GetEdbDataMapList(chartInfoId, chartType int, c
 	edbDataListMap, edbList, err = GetBalanceExcelEdbDataMapList(chartInfoId, chartType, calendar, startDate, endDate, mappingList, seasonExtraConfig, e.DataListMap)
 	return
 }
+
+// GetChartEdbMappingListByEdbInfoIdList 获取指标最后的基础数据
+func (e *ExcelChartInfoDataShow) GetChartEdbMappingListByEdbInfoIdList(edbIdList []int) (mappingList []*data_manage.ChartEdbInfoMapping, err error) {
+	// 指标对应的所有数据
+	mappingList, err = TransferChartEdbToEdbMappingFormat(0, 0, e.MappingListTmp, e.DataListMap)
+	return
+}

+ 43 - 41
services/data/excel/balance_table.go

@@ -283,44 +283,22 @@ func GetBalanceExcelEdbData(excelEdbMappingItem *excelModel.ExcelChartEdb, newMi
 	return
 }
 
-// 获取平衡表指标绑定详情
-func GetBalanceExcelChartSimple(excelInfo *excelModel.ExcelInfo, chartInfoId int, lang string) (list []*data_manage.ChartInfoView, mappingListMap map[int][]*excelModel.ExcelChartEdb, dataListMap map[int][]*data_manage.EdbDataList, err error, errMsg string) {
-	mappingListTmp, err := excelModel.GetExcelChartEdbMappingByChartInfoId(chartInfoId)
-	if err != nil {
-		errMsg = "获取失败"
-		err = fmt.Errorf(" 获取图表,指标信息失败 Err:%s", err.Error())
+// 根据chartInfoId获取单个图表信息
+func GetBalanceExcelChartSingle(chartInfoId, ChartEdbId int, lang string) (mappingListTmp []*excelModel.ExcelChartEdb, dataListMap map[int][]*data_manage.EdbDataList, err error, errMsg string) {
+	// 相关联指标
+	if chartInfoId == 0 && ChartEdbId == 0 {
+		err = fmt.Errorf(" 获取图表,指标信息失败 Err:chartInfoId和ChartEdbId不能同时为空")
 		return
 	}
-	mappingList := make([]*excelModel.ExcelChartEdbView, 0)
-	for _, v := range mappingListTmp {
-		tmp :=
-			&excelModel.ExcelChartEdbView{
-				ExcelChartEdbId: v.ExcelChartEdbId,
-				ExcelInfoId:     v.ExcelInfoId,
-				ChartInfoId:     v.ChartInfoId,
-				EdbCode:         v.EdbCode,
-				EdbName:         v.EdbName,
-				DateSequenceStr: v.DateSequence,
-				DataSequenceStr: v.DataSequence,
-				/*MaxData:         v.MaxData,
-				MinData:         v.MinData,
-				IsOrder:         v.IsOrder,
-				IsAxis:          v.IsAxis,
-				EdbInfoType:     v.EdbInfoType,
-				LeadValue:       v.LeadValue,
-				LeadUnit:        v.LeadUnit,*/
-				FromTag: v.FromTag,
-			}
-		mappingList = append(mappingList, tmp)
+	if chartInfoId == 0 {
+		chartEdb, e := excelModel.GetExcelChartEdbById(ChartEdbId)
+		if e != nil {
+			err = fmt.Errorf(" 获取图表,指标信息失败 Err:%s", e.Error())
+			return
+		}
+		chartInfoId = chartEdb.ChartInfoId
 	}
-
-	return
-}
-
-// 获取单个图表信息
-func GetBalanceExcelChartSingle(chartInfo *data_manage.ChartInfoView, lang string) (mappingListTmp []*excelModel.ExcelChartEdb, dataListMap map[int][]*data_manage.EdbDataList, err error, errMsg string) {
-	// 相关联指标
-	mappingListTmp, err = excelModel.GetExcelChartEdbMappingByChartInfoId(chartInfo.ChartInfoId)
+	mappingListTmp, err = excelModel.GetExcelChartEdbMappingByChartInfoId(chartInfoId)
 	if err != nil {
 		errMsg = "获取失败"
 		err = fmt.Errorf(" 获取图表,指标信息失败 Err:%s", err.Error())
@@ -331,8 +309,8 @@ func GetBalanceExcelChartSingle(chartInfo *data_manage.ChartInfoView, lang strin
 		err = fmt.Errorf(" 获取图表,指标信息失败 Err:%s", err.Error())
 		return
 	}
-	excelInfoId := mappingListTmp[0].ExcelInfoId
 	// 查询所有子表
+	excelInfoId := mappingListTmp[0].ExcelInfoId
 	excelInfo, err := excelModel.GetExcelInfoById(excelInfoId)
 	if err != nil {
 		if err.Error() == utils.ErrNoRow() {
@@ -344,18 +322,42 @@ func GetBalanceExcelChartSingle(chartInfo *data_manage.ChartInfoView, lang strin
 		err = fmt.Errorf(" 查询子表失败图表,指标信息失败 Err:%s", err.Error())
 		return
 	}
+	dataListMap = make(map[int][]*data_manage.EdbDataList)
+	if excelInfo.BalanceType == 1 {
+		//查询库里是否有值
+		chartDataList, e := excelModel.GetExcelChartDataByChartInfoId(chartInfoId)
+		if e != nil {
+			err = fmt.Errorf(" 获取图表,指标信息失败 Err:%s", e.Error())
+			return
+		}
+		if len(chartDataList) == 0 {
+			err = fmt.Errorf(" 获取图表,指标数据不存在")
+			return
+		}
+		for _, v := range chartDataList {
+			tmp := &data_manage.EdbDataList{
+				EdbDataId:     v.ExcelChartDataId,
+				EdbInfoId:     v.ExcelChartEdbId,
+				DataTime:      v.DataTime,
+				DataTimestamp: v.DataTimestamp,
+				Value:         v.Value,
+			}
+			dataListMap[v.ExcelChartEdbId] = append(dataListMap[v.ExcelChartEdbId], tmp)
+		}
+		return
+	}
+
 	// 获取图表详情
 	newExcelDataMap, excelAllRows, excelAllCols, err, errMsg := GetBalanceExcelData(excelInfo, lang)
 	if err != nil {
 		return
 	}
-	dataListMap = make(map[int][]*data_manage.EdbDataList)
 
 	for _, mapping := range mappingListTmp {
-		err, errMsg = GetBalanceExcelEdbData(mapping, newExcelDataMap, dataListMap, excelAllRows, excelAllCols)
-		if err != nil {
-			err = fmt.Errorf(" 获取图表,指标信息失败 Err:%s", err.Error())
-			return
+		er, msg := GetBalanceExcelEdbData(mapping, newExcelDataMap, dataListMap, excelAllRows, excelAllCols)
+		if er != nil {
+			utils.FileLog.Info(fmt.Sprintf(" 获取图表,指标信息失败 Err:%s, %s", er.Error(), msg))
+			continue
 		}
 	}
 	return