Browse Source

fix:卓创红期excel导出格式

zqbao 6 months ago
parent
commit
57a30d3c53
2 changed files with 66 additions and 68 deletions
  1. 54 68
      controllers/data_manage/sci_hq_data.go
  2. 12 0
      models/data_manage/base_from_sci_hq_data.go

+ 54 - 68
controllers/data_manage/sci_hq_data.go

@@ -1400,7 +1400,7 @@ func (this *SciHqDataController) ExportSciHqList() {
 		br.Msg = "请选择分类"
 		return
 	}
-	secNameList := make([]*models.EdbdataExportList, 0)
+	secNameList := make([]*data_manage.BaseFromSciHqIndex, 0)
 	dir, _ := os.Executable()
 	exPath := filepath.Dir(dir)
 	downLoadnFilePath := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + ".xlsx"
@@ -1435,9 +1435,8 @@ func (this *SciHqDataController) ExportSciHqList() {
 		return
 	}
 	for _, frequency := range frequencies {
-
 		//获取指标
-		secNameList, err := data_manage.GetSciHqIndexByConditionAndFrequency(condition, *frequency, pars)
+		secNameList, err = data_manage.GetSciHqIndexByConditionAndFrequency(condition, *frequency, pars)
 		if err != nil {
 			fmt.Println("获取数据失败,Err:" + err.Error())
 			return
@@ -1447,19 +1446,39 @@ func (this *SciHqDataController) ExportSciHqList() {
 			return
 		}
 		sheetNew, err := xlsxFile.AddSheet(*frequency)
-
 		if err != nil {
 			fmt.Println("新增Sheet失败", err.Error())
 			return
 		}
-		//sheetNew.SetColWidth()
-		//获取指标数据
-		windRow := sheetNew.AddRow()
 		secNameRow := sheetNew.AddRow()
-		indexCodeRow := sheetNew.AddRow()
 		frequencyRow := sheetNew.AddRow()
 		unitRow := sheetNew.AddRow()
 		lastModifyDateRow := sheetNew.AddRow()
+
+		var indexIdList []int
+		for _, sv := range secNameList {
+			indexIdList = append(indexIdList, sv.BaseFromSciHqIndexId)
+		}
+		dataTimeList, err := data_manage.GetSciHqDataDataTimeByIndexId(indexIdList)
+		if err != nil {
+			fmt.Println("获取数据时间失败", err.Error())
+			return
+		}
+
+		// 添加excel左侧指标日期
+		setRowIndex := 4
+		for rk, dv := range dataTimeList {
+			rowIndex := setRowIndex + rk
+			row := sheetNew.Row(rowIndex)
+			displayDate, _ := time.Parse(utils.FormatDate, dv)
+			displayDateCell := row.AddCell()
+			style := new(xlsx.Style)
+			style.ApplyAlignment = true
+			style.Alignment.WrapText = true
+			displayDateCell.SetStyle(style)
+			displayDateCell.SetDate(displayDate)
+
+		}
 		//获取分类下指标最大数据量
 		dataMax, err := data_manage.GetSciHqDataMaxCount(condition, pars)
 		if err != nil {
@@ -1467,7 +1486,6 @@ func (this *SciHqDataController) ExportSciHqList() {
 			return
 		}
 		fmt.Println("dataMax:", dataMax)
-		setRowIndex := 6
 		for k, sv := range secNameList {
 			//获取数据
 			dataList, err := data_manage.GetSciHqIndexDataByCode(sv.IndexCode)
@@ -1476,66 +1494,34 @@ func (this *SciHqDataController) ExportSciHqList() {
 				br.ErrMsg = "获取数据失败,Err:" + err.Error()
 				return
 			}
-			if len(dataList) > 0 {
-				windRow.AddCell().SetValue("Sci_Hq")
-				secNameRow.AddCell().SetValue("指标名称")
-				indexCodeRow.AddCell().SetValue("指标ID")
-				frequencyRow.AddCell().SetValue("频率")
-				unitRow.AddCell().SetValue("单位")
-				lastModifyDateRow.AddCell().SetValue("更新时间")
-
-				secNameRow.AddCell().SetValue(sv.IndexName)
-				indexCodeRow.AddCell().SetValue(sv.IndexCode)
-				frequencyRow.AddCell().SetValue(sv.Frequency)
-
-				unitRow.AddCell().SetValue(sv.Unit)
-				lastModifyDateRow.AddCell().SetValue(sv.ModifyTime)
-
-				windRow.AddCell()
-				windRow.AddCell()
-				secNameRow.AddCell()
-				indexCodeRow.AddCell()
-				frequencyRow.AddCell()
-				unitRow.AddCell()
-				lastModifyDateRow.AddCell()
+			if k == 0 {
+				secNameRow.AddCell().SetValue("指标名称/Metric Name")
+				frequencyRow.AddCell().SetValue("频率/Frequency")
+				unitRow.AddCell().SetValue("单位/Unit")
+				lastModifyDateRow.AddCell().SetValue("更新时间/Update Time")
 				min := k * 3
 				sheetNew.SetColWidth(min, min, 15)
+			}
+			if len(dataList) == 0 {
+				continue
+			}
+			secNameRow.AddCell().SetValue(sv.IndexName)
+			frequencyRow.AddCell().SetValue(sv.Frequency)
+			unitRow.AddCell().SetValue(sv.Unit)
+
+			lastModifyDateRow.AddCell().SetValue(sv.ModifyTime.Format(utils.FormatDate))
+			dataInfoMap := make(map[string]*data_manage.BaseFromSciHqData)
+			for _, v := range dataList {
+				dataInfoMap[v.DataTime] = v
+			}
 
-				if len(dataList) <= 0 {
-					for n := 0; n < dataMax; n++ {
-						rowIndex := setRowIndex + n
-						row := sheetNew.Row(rowIndex)
-						row.AddCell()
-						row.AddCell()
-						row.AddCell()
-					}
-				} else {
-					endRowIndex := 0
-					for rk, dv := range dataList {
-						rowIndex := setRowIndex + rk
-						row := sheetNew.Row(rowIndex)
-						displayDate, _ := time.Parse(utils.FormatDate, dv.DataTime)
-						displayDateCell := row.AddCell()
-						style := new(xlsx.Style)
-						style.ApplyAlignment = true
-						style.Alignment.WrapText = true
-						displayDateCell.SetStyle(style)
-						displayDateCell.SetDate(displayDate)
-
-						row.AddCell().SetValue(dv.Value)
-						row.AddCell()
-						endRowIndex = rowIndex
-					}
-					if len(dataList) < dataMax {
-						dataLen := dataMax - len(dataList)
-						for n := 0; n < dataLen; n++ {
-							rowIndex := (endRowIndex + 1) + n
-							row := sheetNew.Row(rowIndex)
-							row.AddCell()
-							row.AddCell()
-							row.AddCell()
-						}
-					}
+			for rk, dtv := range dataTimeList {
+				rowIndex := setRowIndex + rk
+				row := sheetNew.Row(rowIndex)
+				displayDateCell := row.AddCell()
+				tmpData, ok := dataInfoMap[dtv]
+				if ok {
+					displayDateCell.SetValue(tmpData.Value)
 				}
 			}
 		}
@@ -1561,8 +1547,8 @@ func (this *SciHqDataController) ExportSciHqList() {
 		}
 	}
 	fileName := `卓创红期`
-	if len(secNameList) > 0 {
-		fileName = secNameList[0].ClassifyName
+	if len(secNameList) == 1 {
+		fileName = secNameList[0].IndexName
 	}
 	fileName += time.Now().Format("2006.01.02") + `.xlsx` //文件名称
 	this.Ctx.Output.Download(downLoadnFilePath, fileName)

+ 12 - 0
models/data_manage/base_from_sci_hq_data.go

@@ -1,6 +1,7 @@
 package data_manage
 
 import (
+	"eta/eta_api/utils"
 	"time"
 
 	"github.com/beego/beego/v2/client/orm"
@@ -25,6 +26,17 @@ func GetSciHqDataByIndexId(indexId int) (items []*BaseFromSciHqData, err error)
 	return
 }
 
+// GetSciHqDataDataTimeByIndexId 根据指标id获取指标数据的日期列表
+func GetSciHqDataDataTimeByIndexId(indexIdList []int) (items []string, err error) {
+	if len(indexIdList) == 0 {
+		return
+	}
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT DISTINCT data_time FROM base_from_sci_hq_data WHERE base_from_sci_hq_index_id IN (` + utils.GetOrmInReplace(len(indexIdList)) + `) ORDER BY data_time DESC`
+	_, err = o.Raw(sql, indexIdList).QueryRows(&items)
+	return
+}
+
 func GetSciHqIndexDataByCode(indexCode string) (items []*BaseFromSciHqData, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := ` SELECT *  FROM base_from_sci_hq_data WHERE index_code=? ORDER BY data_time DESC  `