Sfoglia il codice sorgente

feat:新增刷新数据源、分类等信息

Roc 1 anno fa
parent
commit
0669aa1b63

+ 241 - 0
controllers/data_manage/edb_info_refresh.go

@@ -0,0 +1,241 @@
+package data_manage
+
+import (
+	"eta/eta_api/models"
+	"eta/eta_api/models/data_manage"
+	"eta/eta_api/utils"
+	"fmt"
+)
+
+// RefreshSourceList
+// @Title 获取指标刷新配置的来源接口
+// @Description 获取指标刷新配置的来源接口
+// @Success Ret=200 获取成功
+// @router /edb_info/refresh/source_list [get]
+func (c *EdbInfoController) RefreshSourceList() {
+	br := new(models.BaseResponse).Init()
+
+	defer func() {
+		c.Data["json"] = br
+		c.ServeJSON()
+	}()
+
+	item := data_manage.EdbRefreshSource{}
+	tmpList, err := item.GetAllList()
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取刷新数据源失败, Err: " + err.Error()
+		return
+	}
+
+	list := make([]data_manage.EdbRefreshSourceList, 0)
+	tmpMap := make(map[int]data_manage.EdbRefreshSourceList, 0)
+
+	for _, v := range tmpList {
+		tmp, ok := tmpMap[v.Source]
+		if ok {
+			continue
+		}
+		tmp = data_manage.EdbRefreshSourceList{
+			Source:     v.Source,
+			SourceName: v.SourceName,
+			//SubSource:     v.SubSource,
+			//SubSourceName: v.SubSourceName,
+			Child:    make([]data_manage.EdbRefreshSourceList, 0),
+			HasChild: v.HasChild,
+		}
+
+		if v.HasChild == 1 {
+			for _, v2 := range tmpList {
+				if v2.Source == v.Source {
+					tmp.Child = append(tmp.Child, data_manage.EdbRefreshSourceList{
+						Source:        v.Source,
+						SourceName:    v.SourceName,
+						SubSource:     v.SubSource,
+						SubSourceName: v.SubSourceName,
+						HasChild:      0,
+					})
+				}
+			}
+		}
+
+		tmpMap[v.Source] = tmp
+		list = append(list, tmp)
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = list
+}
+
+// RefreshClassifyList
+// @Title 获取指标分类列表接口
+// @Description 获取指标分类列表接口
+// @Param   Source   query   int  true       "来源:1:同花顺,2:wind,3:彭博"
+// @Success Ret=200 获取成功
+// @router /edb_info/refresh/classify_list [get]
+func (c *EdbInfoController) RefreshClassifyList() {
+	br := new(models.BaseResponse).Init()
+
+	defer func() {
+		c.Data["json"] = br
+		c.ServeJSON()
+	}()
+
+	source, _ := c.GetInt("Source", utils.DATA_SOURCE_MYSTEEL_CHEMICAL)
+
+	list := make([]*data_manage.BaseClassifyItems, 0)
+	switch source {
+	case utils.DATA_SOURCE_MYSTEEL_CHEMICAL: // 钢联
+		rootList, err := data_manage.GetBaseFromMysteelChemicalClassifyByParentId(0)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取数据失败,Err:" + err.Error()
+			return
+		}
+
+		classifyAll, err := data_manage.GetAllBaseFromMysteelChemicalClassify()
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取数据失败,Err:" + err.Error()
+			return
+		}
+
+		rootChildMap := make(map[int][]*data_manage.BaseClassifyItems)
+
+		for _, v := range classifyAll {
+			//tmpList, ok := rootChildMap[v.ParentId]
+			//if !ok {
+			//	tmpList = make([]data_manage.BaseClassifyItems, 0)
+			//}
+			//tmpList = append(tmpList, data_manage.BaseClassifyItems{
+			//	ClassifyId:   v.BaseFromMysteelChemicalClassifyId,
+			//	ClassifyName: v.ClassifyName,
+			//	ParentId:     v.ParentId,
+			//	UniqueCode:   fmt.Sprint(v.BaseFromMysteelChemicalClassifyId),
+			//	Children:     nil,
+			//})
+			//rootChildMap[v.ParentId] = tmpList
+
+			rootChildMap[v.ParentId] = append(rootChildMap[v.ParentId], &data_manage.BaseClassifyItems{
+				ClassifyId:   v.BaseFromMysteelChemicalClassifyId,
+				ClassifyName: v.ClassifyName,
+				ParentId:     v.ParentId,
+				UniqueCode:   fmt.Sprint(v.BaseFromMysteelChemicalClassifyId),
+				Children:     nil,
+			})
+		}
+		for _, v := range rootList {
+			tmp := &data_manage.BaseClassifyItems{
+				ClassifyId:   v.BaseFromMysteelChemicalClassifyId,
+				ClassifyName: v.ClassifyName,
+				ParentId:     v.ParentId,
+				UniqueCode:   fmt.Sprint(v.BaseFromMysteelChemicalClassifyId),
+				Children:     nil,
+			}
+			if existItems, ok := rootChildMap[v.BaseFromMysteelChemicalClassifyId]; ok {
+				tmp.Children = existItems
+			} else {
+				items := make([]*data_manage.BaseClassifyItems, 0)
+				tmp.Children = items
+			}
+			list = append(list, tmp)
+		}
+
+	case utils.DATA_SOURCE_YS: // 有色
+
+		list = append(list, &data_manage.BaseClassifyItems{
+			ClassifyId:   0,
+			ClassifyName: "未分类",
+			ParentId:     0,
+			UniqueCode:   fmt.Sprint(0),
+			Children:     nil,
+		})
+		rootList, err := data_manage.GetBaseFromSmmClassifyByParentId(0)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取数据失败,Err:" + err.Error()
+			return
+		}
+
+		classifyAll, err := data_manage.GetAllBaseFromSmmClassify()
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取数据失败,Err:" + err.Error()
+			return
+		}
+
+		rootChildMap := make(map[int][]*data_manage.BaseClassifyItems)
+		for _, v := range classifyAll {
+			rootChildMap[v.ParentId] = append(rootChildMap[v.ParentId], &data_manage.BaseClassifyItems{
+				ClassifyId:   v.ClassifyId,
+				ClassifyName: v.ClassifyName,
+				ParentId:     v.ParentId,
+				UniqueCode:   fmt.Sprint(v.ClassifyId),
+				Children:     nil,
+			})
+		}
+		for _, v := range rootList {
+			tmp := &data_manage.BaseClassifyItems{
+				ClassifyId:   v.ClassifyId,
+				ClassifyName: v.ClassifyName,
+				ParentId:     v.ParentId,
+				UniqueCode:   fmt.Sprint(v.ClassifyId),
+				Children:     nil,
+			}
+			if existItems, ok := rootChildMap[v.ClassifyId]; ok {
+				tmp.Children = existItems
+			} else {
+				items := make([]*data_manage.BaseClassifyItems, 0)
+				tmp.Children = items
+			}
+			list = append(list, tmp)
+
+		}
+
+	default:
+		tmpList, err := data_manage.GetAllEdbClassify()
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取数据失败,Err:" + err.Error()
+			return
+		}
+		for _, v := range tmpList {
+			list = append(list, &data_manage.BaseClassifyItems{
+				ClassifyId:   v.ClassifyId,
+				ClassifyName: v.ClassifyName,
+				ParentId:     v.ParentId,
+				UniqueCode:   fmt.Sprint(v.ClassifyId),
+				Children:     nil,
+			})
+		}
+		list = buildTree(list, 0)
+		//fmt.Println(result)
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = list
+}
+
+// 生成多层级列表的函数
+
+// 生成多层级列表的递归函数
+func buildTree(items []*data_manage.BaseClassifyItems, parentId int) []*data_manage.BaseClassifyItems {
+	var result []*data_manage.BaseClassifyItems
+
+	// 遍历所有分类项
+	for i := range items {
+		// 找到当前节点的子节点
+		if items[i].ParentId == parentId {
+			// 递归构建子节点的子节点
+			items[i].Children = buildTree(items, items[i].ClassifyId)
+			// 将当前节点添加到结果中
+			result = append(result, items[i])
+		}
+	}
+
+	return result
+}

+ 8 - 0
models/data_manage/edb_classify.go

@@ -146,6 +146,14 @@ func GetEdbClassifyAll() (items []*EdbClassifyItems, err error) {
 	return
 }
 
+// GetAllEdbClassify 获取所有的普通指标的分类列表(包含第一级)
+func GetAllEdbClassify() (items []*EdbClassifyItems, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT * FROM edb_classify WHERE  classify_type = 0  order by sort asc,classify_id asc`
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
 // GetNormalEdbClassifyAll 获取普通指标的分类列表
 func GetNormalEdbClassifyAll() (items []*EdbClassifyItems, err error) {
 	o := orm.NewOrmUsingDB("data")

+ 51 - 0
models/data_manage/edb_refresh_source.go

@@ -0,0 +1,51 @@
+package data_manage
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+// EdbRefreshSource
+// @Description: 获取刷新的数据源
+type EdbRefreshSource struct {
+	Id            int       `orm:"column(id);pk"`
+	Source        int       `orm:"column(source)" description:"来源"`
+	SourceName    string    `description:"来源名称"`
+	SubSource     int       `description:"子数据来源:0:经济数据库,1:日期序列"`
+	SubSourceName string    `description:"子来源名称"`
+	HasChild      int       `description:"是否有子来源,0:否,1:是"`
+	ModifyTime    time.Time `description:"修改时间"`
+	CreateTime    time.Time `description:"创建时间"`
+}
+
+// EdbRefreshSourceList
+// @Description: 获取刷新的数据源列表
+type EdbRefreshSourceList struct {
+	Source        int                    `orm:"column(source)" description:"来源"`
+	SourceName    string                 `description:"来源名称"`
+	SubSource     int                    `description:"子数据来源:0:经济数据库,1:日期序列"`
+	SubSourceName string                 `description:"子来源名称"`
+	Child         []EdbRefreshSourceList `description:"子来源"`
+	HasChild      int                    `description:"是否有子来源,0:否,1:是"`
+}
+
+// GetAllList
+// @Description: 获取刷新数据源列表
+// @author: Roc
+// @datetime 2024-01-03 15:03:24
+// @return items []*EdbRefreshSource
+// @return err error
+func (m EdbRefreshSource) GetAllList() (items []*EdbRefreshSource, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT *  FROM edb_refresh_source ORDER BY id ASC `
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+type BaseClassifyItems struct {
+	ClassifyId   int                  `description:"分类id"`
+	ClassifyName string               `description:"分类名称"`
+	ParentId     int                  `description:"父级id"`
+	UniqueCode   string               `description:"唯一编码"`
+	Children     []*BaseClassifyItems `description:"下级"`
+}

+ 18 - 0
routers/commentsRouter.go

@@ -2941,6 +2941,24 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:EdbInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:EdbInfoController"],
+        beego.ControllerComments{
+            Method: "RefreshClassifyList",
+            Router: `/edb_info/refresh/classify_list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:EdbInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:EdbInfoController"],
+        beego.ControllerComments{
+            Method: "RefreshSourceList",
+            Router: `/edb_info/refresh/source_list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:EdbInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:EdbInfoController"],
         beego.ControllerComments{
             Method: "RelationChartList",