Browse Source

平衡表图表预览

xyxie 9 months ago
parent
commit
42ead106f3

+ 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())

+ 23 - 2
controllers/data_manage/chart_info.go

@@ -10,6 +10,7 @@ import (
 	"eta/eta_api/services"
 	"eta/eta_api/services/data"
 	"eta/eta_api/services/data/data_manage_permission"
+	"eta/eta_api/services/data/excel"
 	etaTrialService "eta/eta_api/services/eta_trial"
 	"eta/eta_api/utils"
 	"fmt"
@@ -1038,7 +1039,27 @@ func (this *ChartInfoController) PreviewChartInfoDetail() {
 		edbInfoIdList = append(edbInfoIdList, v.EdbInfoId)
 		edbInfoIdMapping[v.EdbInfoId] = v
 	}
-	mappingList, err := data_manage.GetChartEdbMappingListByEdbInfoIdList(edbInfoIdList)
+
+	// 区分是否是来自平衡表图表的数据
+	var chartInfoDataShow data.ChartInfoDataShow
+
+	if req.ChartSource == 11 { //来自平衡表图表的数据
+		excelChartInfoDataShow := new(data.ExcelChartInfoDataShow)
+		// 相关联指标
+		mappingListTmp, dataListMap, err, errMsg := excel.GetBalanceExcelChartSingle(chartInfo.ChartInfoId, req.ChartEdbInfoList[0].EdbInfoId, "")
+		if err != nil {
+			br.Msg = errMsg
+			br.ErrMsg = err.Error()
+			return
+		}
+		excelChartInfoDataShow.DataListMap = dataListMap
+		excelChartInfoDataShow.MappingListTmp = mappingListTmp
+		chartInfoDataShow = excelChartInfoDataShow
+	} else {
+		chartInfoDataShow = &data.BaseChartInfoDataShow{}
+	}
+
+	mappingList, err := chartInfoDataShow.GetChartEdbMappingListByEdbInfoIdList(edbInfoIdList)
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取图表,指标信息失败,Err:" + err.Error()
@@ -1122,7 +1143,7 @@ func (this *ChartInfoController) PreviewChartInfoDetail() {
 	}
 
 	// 获取图表中的指标数据
-	edbList, xEdbIdValue, yDataList, dataResp, err, errMsg := data.GetChartEdbData(0, req.ChartType, calendar, startDate, endDate, mappingList, extraConfigStr, seasonExtraConfig)
+	edbList, xEdbIdValue, yDataList, dataResp, err, errMsg := data.GetChartEdbDataV2(0, req.ChartType, calendar, startDate, endDate, mappingList, extraConfigStr, seasonExtraConfig, chartInfoDataShow)
 	if err != nil {
 		br.Msg = "获取失败"
 		if errMsg != `` {

+ 1 - 0
controllers/data_manage/excel/excel_info.go

@@ -2251,6 +2251,7 @@ func (c *ExcelInfoController) Download() {
 			br.ErrMsg = "获取最新的数据失败,Err:" + err.Error()
 			return
 		}
+		// todo 删除文件
 		c.Ctx.Output.Download(savePath, fileName)
 		br.Ret = 200
 		br.Success = true

+ 1 - 0
models/data_manage/chart_info.go

@@ -1204,6 +1204,7 @@ type PreviewChartInfoReq struct {
 	Calendar          string           `description:"公历/农历"`
 	SeasonExtraConfig SeasonExtraItem  `description:"季节性图表中的配置,json数据"`
 	StartYear         int              `description:"当选择的日期类型为最近N年类型时,即date_type=20, 用start_year表示N"`
+	ChartSource       int
 }
 
 type SeasonExtraItem struct {

+ 78 - 4
services/data/chart_info_excel_balance.go

@@ -597,9 +597,12 @@ func GetBalanceExcelChartDetail(chartInfo *data_manage.ChartInfoView, mappingLis
 		calendar = "公历"
 	}
 
-	mappingList := make([]*data_manage.ChartEdbInfoMapping, 0)
+	mappingList, err := TransferChartEdbToEdbMappingFormat(chartInfoId, chartType, mappingListTmp, dataListMap)
+	if err != nil {
+		return
+	}
 	//循环组装映射关系
-	for _, v := range mappingListTmp {
+	/*for _, v := range mappingListTmp {
 		dataList := make([]*data_manage.EdbDataList, 0)
 		dataListTmp, ok := dataListMap[v.ExcelChartEdbId]
 		if ok {
@@ -663,7 +666,7 @@ func GetBalanceExcelChartDetail(chartInfo *data_manage.ChartInfoView, mappingLis
 			HaveOperaAuth:     true,
 		}
 		mappingList = append(mappingList, mapping)
-	}
+	}*/
 	if chartType == 2 {
 		startDate = seasonStartDate
 		endDate = seasonEndDate
@@ -846,7 +849,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 {
@@ -1614,3 +1617,74 @@ func CopyBalanceExcel(oldExcelInfo *excelModel.ExcelInfo, excelClassifyId int, e
 	}
 	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))
+			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:         0,
+			//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
+}

+ 17 - 1
services/data/chart_info_interface.go

@@ -2,10 +2,12 @@ package data
 
 import (
 	"eta/eta_api/models/data_manage"
+	"eta/eta_api/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 {
@@ -18,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 获取指标最后的基础数据
@@ -28,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
+}

+ 15 - 3
services/data/excel/balance_table.go

@@ -335,10 +335,22 @@ func GetBalanceExcelEdbData(excelEdbMappingItem *excelModel.ExcelChartEdb, newMi
 	return
 }
 
-// 获取单个图表信息
-func GetBalanceExcelChartSingle(chartInfo *data_manage.ChartInfoView, lang string) (mappingListTmp []*excelModel.ExcelChartEdb, dataListMap map[int][]*data_manage.EdbDataList, err error, errMsg string) {
+// 根据chartInfoId获取单个图表信息
+func GetBalanceExcelChartSingle(chartInfoId, ChartEdbId int, lang string) (mappingListTmp []*excelModel.ExcelChartEdb, dataListMap map[int][]*data_manage.EdbDataList, err error, errMsg string) {
 	// 相关联指标
-	mappingListTmp, err = excelModel.GetExcelChartEdbMappingByChartInfoId(chartInfo.ChartInfoId)
+	if chartInfoId == 0 && ChartEdbId == 0 {
+		err = fmt.Errorf(" 获取图表,指标信息失败 Err:chartInfoId和ChartEdbId不能同时为空")
+		return
+	}
+	if chartInfoId == 0 {
+		chartEdb, e := excelModel.GetExcelChartEdbById(ChartEdbId)
+		if e != nil {
+			err = fmt.Errorf(" 获取图表,指标信息失败 Err:%s", e.Error())
+			return
+		}
+		chartInfoId = chartEdb.ChartInfoId
+	}
+	mappingListTmp, err = excelModel.GetExcelChartEdbMappingByChartInfoId(chartInfoId)
 	if err != nil {
 		errMsg = "获取失败"
 		err = fmt.Errorf(" 获取图表,指标信息失败 Err:%s", err.Error())