ソースを参照

feat:新增自有指标数据列表接口

Roc 10 ヶ月 前
コミット
379f05e99d

+ 60 - 0
controllers/data_manage/business_data.go

@@ -529,3 +529,63 @@ func (c *EdbBusinessController) BatchAdd() {
 	br.Success = true
 	br.IsAddLog = true
 }
+
+// DataList
+// @Title 获取指标数据列表
+// @Description 获取指标数据列表接口
+// @Param   PageSize   query   int  true       "每页数据条数"
+// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
+// @Param   IndexCode   query   string  true       "频度"
+// @Success 200 {object} models.DataListResp
+// @router /business_data/data/list [get]
+func (c *EdbBusinessController) DataList() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		c.Data["json"] = br
+		c.ServeJSON()
+	}()
+
+	req := &request.BusinessDataDataListReq{}
+	if e := c.ParseForm(req); e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "参数解析失败, Err: " + e.Error()
+		return
+	}
+
+	pageSize := req.PageSize
+	currentIndex := req.CurrentIndex
+
+	var startSize int
+	if pageSize <= 0 {
+		pageSize = utils.PageSize20
+	}
+	if currentIndex <= 0 {
+		currentIndex = 1
+	}
+	startSize = utils.StartIndex(currentIndex, pageSize)
+
+	if req.IndexCode == "" {
+		br.Msg = "指标编码为空"
+		br.ErrMsg = "指标编码为空"
+		br.IsSendEmail = false
+		return
+	}
+
+	// 获取分页数据
+	dataCount, dataList, err := data.GetPageBaseBusinessIndexData(req.IndexCode, startSize, pageSize)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "获取指标信息失败"
+		br.ErrMsg = "获取指标数据总数失败,Err:" + err.Error()
+		return
+	}
+	page := paging.GetPaging(currentIndex, pageSize, dataCount)
+	resp := data_manage.BusinessIndexDataListResp{
+		List:   dataList,
+		Paging: page,
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}

+ 25 - 0
models/data_manage/base_from_business_index.go

@@ -218,6 +218,14 @@ func (m *BaseFromBusinessIndex) GeItemsByCondition(condition string, pars []inte
 	return
 }
 
+// GetDetailByEdbCode
+// @Description: 根据edbCode获取指标详情
+// @author: Roc
+// @receiver m
+// @datetime 2024-05-07 11:00:07
+// @param edbCode string
+// @return item *BaseFromBusinessIndex
+// @return err error
 func (m *BaseFromBusinessIndex) GetDetailByEdbCode(edbCode string) (item *BaseFromBusinessIndex, err error) {
 	sql := `select *  FROM base_from_business_index  WHERE index_code = ? `
 	o := orm.NewOrmUsingDB("data")
@@ -225,3 +233,20 @@ func (m *BaseFromBusinessIndex) GetDetailByEdbCode(edbCode string) (item *BaseFr
 
 	return
 }
+
+// BusinessIndexDataListResp
+// @Description: 外部(商家)指标数据列表返回
+type BusinessIndexDataListResp struct {
+	List   []*BaseFromBusinessIndexDataItem
+	Paging *paging.PagingItem `description:"分页数据"`
+}
+
+// BaseFromBusinessIndexDataItem
+// @Description: 外部指标(商家系统)数据结构
+type BaseFromBusinessIndexDataItem struct {
+	ID        string
+	EdbDataId int `orm:"column(edb_data_id);pk"`
+	IndexCode string
+	DataTime  string
+	Value     float64
+}

+ 7 - 0
models/data_manage/request/business_data.go

@@ -17,3 +17,10 @@ type BusinessDataBatchAddCheckReq struct {
 	BusinessDataListReq
 	IndexCodes []string `form:"IndexCodes" description:"全选为false时, 该数组为选中; 全选为true时, 该数组为不选的指标"`
 }
+
+// BusinessDataDataListReq 指标数据列表筛选
+type BusinessDataDataListReq struct {
+	PageSize     int    `form:"PageSize"`
+	CurrentIndex int    `form:"CurrentIndex"`
+	IndexCode    string `form:"IndexCode" description:"指标编码"`
+}

+ 9 - 0
routers/commentsRouter.go

@@ -2680,6 +2680,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:EdbBusinessController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:EdbBusinessController"],
+        beego.ControllerComments{
+            Method: "DataList",
+            Router: `/business_data/data/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:EdbBusinessController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:EdbBusinessController"],
         beego.ControllerComments{
             Method: "List",

+ 47 - 0
services/data/base_from_business.go

@@ -2,8 +2,10 @@ package data
 
 import (
 	"eta/eta_api/models/data_manage"
+	"eta/eta_api/models/mgo"
 	"eta/eta_api/utils"
 	"fmt"
+	"go.mongodb.org/mongo-driver/bson"
 )
 
 type BusinessIndexSource2EdbReq struct {
@@ -57,3 +59,48 @@ func BusinessIndexSource2Edb(req BusinessIndexSource2EdbReq, lang string) (edb *
 
 	return
 }
+
+// GetPageBaseBusinessIndexData
+// @Description: 获取自有数据的分页数据
+// @author: Roc
+// @datetime 2024-05-07 11:02:51
+// @param indexCode int
+// @param startSize int
+// @param pageSize int
+// @return dataCount int
+// @return dataList []*data_manage.BaseFromBusinessIndexDataItem
+// @return err error
+func GetPageBaseBusinessIndexData(indexCode string, startSize, pageSize int) (dataCount int, dataList []*data_manage.BaseFromBusinessIndexDataItem, err error) {
+	dataList = make([]*data_manage.BaseFromBusinessIndexDataItem, 0)
+
+	mogDataObj := mgo.BaseFromBusinessData{}
+	// 构建查询条件
+	queryConditions := bson.M{
+		"index_code": indexCode,
+	}
+
+	// 获取数据总量
+	tmpCount, tmpErr := mogDataObj.GetCountDataList(queryConditions)
+	if tmpErr != nil && tmpErr.Error() != utils.ErrNoRow() {
+		err = tmpErr
+		return
+	}
+	dataCount = int(tmpCount)
+
+	// 获取列表数据
+	tmpDataList, tmpErr := mogDataObj.GetPageDataList(queryConditions, int64(startSize), int64(pageSize), []string{"-data_time"})
+	if tmpErr != nil {
+		err = tmpErr
+		return
+	}
+	for _, v := range tmpDataList {
+		dataList = append(dataList, &data_manage.BaseFromBusinessIndexDataItem{
+			ID:        v.ID.String(),
+			IndexCode: v.IndexCode,
+			DataTime:  v.DataTime.Format(utils.FormatDate),
+			Value:     v.Value,
+		})
+	}
+
+	return
+}