Browse Source

add:时间序列表格批量设置

zqbao 6 months ago
parent
commit
9de0f37dd6

+ 127 - 3
controllers/data_manage/excel/excel_info.go

@@ -16,15 +16,16 @@ import (
 	"eta/eta_api/services/excel"
 	"eta/eta_api/utils"
 	"fmt"
-	"github.com/rdlucklib/rdluck_tools/paging"
-	"github.com/shopspring/decimal"
-	"github.com/yidane/formula"
 	"io"
 	"os"
 	"path/filepath"
 	"strconv"
 	"strings"
 	"time"
+
+	"github.com/rdlucklib/rdluck_tools/paging"
+	"github.com/shopspring/decimal"
+	"github.com/yidane/formula"
 )
 
 // ExcelInfoController ETA表格管理
@@ -1948,6 +1949,129 @@ func (c *ExcelInfoController) GetOtherEdbData() {
 	}
 }
 
+// GetBatchEdbData
+// @Title 批量获取指定日期数据接口
+// @Description 批量获取未来日期数据接口
+// @Param	request	body request.GetBatchEdbDateDataReq true "type json string"
+// @router /excel_info/table/batch_edb_data_list [post]
+func (c *ExcelInfoController) GetBatchEdbData() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		c.Data["json"] = br
+		c.ServeJSON()
+	}()
+
+	sysUser := c.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+
+	var req []*request.GetBatchEdbDateDataReq
+	err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	tableList := make([]*response.TableDataItem, 0)
+	var firstDataList []string
+	for i, v := range req {
+		if v.EdbInfoId <= 0 {
+			br.Msg = "请选择指标"
+			br.IsSendEmail = false
+			return
+		}
+		if v.Num <= 0 {
+			br.Msg = "期数必须大于0"
+			br.IsSendEmail = false
+			return
+		}
+		edbInfo, err := data_manage.GetEdbInfoById(v.EdbInfoId)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = fmt.Sprint("获取指标信息失败,Err:", err.Error())
+			return
+		}
+		if len(firstDataList) == 0 {
+			firstDataList = v.DateList
+		}
+		if i == 0 {
+			dataList, err := excel2.GetFirstEdbDataList(edbInfo, v.Num, firstDataList)
+			if err != nil {
+				br.Msg = "获取失败"
+				br.ErrMsg = fmt.Sprint("获取失败,Err:", err.Error())
+				return
+			}
+
+			// 默认是倒序返回的数据,如果要正序的话,那么翻转下就好了
+			if v.SortType == "asc" {
+				for i, j := 0, len(dataList)-1; i < j; i, j = i+1, j-1 {
+					dataList[i], dataList[j] = dataList[j], dataList[i]
+				}
+			}
+
+			sourceNameList, sourceNameEnList, err := excel2.GetEdbSourceByEdbInfoIdList([]int{v.EdbInfoId})
+			if err != nil {
+				br.Msg = "自定义表格数据获取失败"
+				br.ErrMsg = "自定义表格数据获取失败,Err:" + err.Error()
+				return
+			}
+			excelSource := strings.Join(sourceNameList, ",")
+			excelSourceEn := strings.Join(sourceNameEnList, ",")
+			tableList = append(tableList, &response.TableDataItem{
+				EdbInfoId:     v.EdbInfoId,
+				Data:          dataList,
+				ExcelSource:   excelSource,
+				ExcelSourceEn: excelSourceEn,
+			})
+			if len(firstDataList) == 0 {
+				tmpDataList := make([]string, 0)
+				for _, v := range dataList {
+					tmpDataList = append(tmpDataList, v.DataTime)
+				}
+				firstDataList = tmpDataList
+			}
+		} else {
+			dataList, err := excel2.GetOtherEdbDataList(edbInfo, firstDataList)
+			if err != nil {
+				br.Msg = "获取失败"
+				br.ErrMsg = fmt.Sprint("获取失败,Err:", err.Error())
+				return
+			}
+
+			// 默认是倒序返回的数据,如果要正序的话,那么翻转下就好了
+			if v.SortType == "asc" {
+				for i, j := 0, len(dataList)-1; i < j; i, j = i+1, j-1 {
+					dataList[i], dataList[j] = dataList[j], dataList[i]
+				}
+			}
+
+			sourceNameList, sourceNameEnList, err := excel2.GetEdbSourceByEdbInfoIdList([]int{v.EdbInfoId})
+			if err != nil {
+				br.Msg = "自定义表格数据获取失败"
+				br.ErrMsg = "自定义表格数据获取失败,Err:" + err.Error()
+				return
+			}
+			excelSource := strings.Join(sourceNameList, ",")
+			excelSourceEn := strings.Join(sourceNameEnList, ",")
+			tableList = append(tableList, &response.TableDataItem{
+				EdbInfoId:     v.EdbInfoId,
+				Data:          dataList,
+				ExcelSource:   excelSource,
+				ExcelSourceEn: excelSourceEn,
+			})
+		}
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = tableList
+}
+
 // GetFutureDateData
 // @Title 获取未来日期数据接口
 // @Description 获取未来日期数据接口

+ 7 - 0
models/data_manage/excel/request/excel_info.go

@@ -66,6 +66,13 @@ type GetOtherEdbDateDataReq struct {
 	DateList  []string `description:"日期列表,从小到大"`
 }
 
+type GetBatchEdbDateDataReq struct {
+	EdbInfoId int      `description:"指标id"`
+	Num       int      `description:"默认期数"`
+	SortType  string   `description:"如何排序,是正序还是倒序,枚举值:asc 正序,desc 倒序,不传默认倒序"`
+	DateList  []string `description:"日期列表,从小到大"`
+}
+
 // GetFutureDateDataReq 获取未来日期的数据
 type GetFutureDateDataReq struct {
 	EdbInfoIdList []int  `description:"指标id列表,从左至右,从上到下的顺序"`

+ 9 - 0
routers/commentsRouter.go

@@ -1276,6 +1276,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"],
+        beego.ControllerComments{
+            Method: "GetBatchEdbData",
+            Router: `/excel_info/table/batch_edb_data_list`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"],
         beego.ControllerComments{
             Method: "BatchRefresh",