Browse Source

add:添加卓创红期的分类代码

zqbao 7 months ago
parent
commit
8a5cb0b4fc

+ 159 - 0
controllers/data_manage/sci_hq_data.go

@@ -0,0 +1,159 @@
+package data_manage
+
+import (
+	"encoding/json"
+	"eta/eta_api/controllers"
+	"eta/eta_api/models"
+	"eta/eta_api/models/data_manage"
+	"eta/eta_api/models/data_manage/request"
+	"eta/eta_api/services/data"
+)
+
+type SciHqDataController struct {
+	controllers.BaseAuthController
+}
+
+// @Title 卓创红期数据分类
+// @Description 卓创红期数据分类接口
+// @Success 200 {object} data_manage.SciClassify
+// @router /sci_hq/classify [get]
+func (this *SciHqDataController) Classify() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	classifyList, err := data_manage.GetSciHqClassifyAll()
+	if err != nil {
+		br.Msg = "查询失败"
+		br.ErrMsg = "查询失败, Err:" + err.Error()
+		return
+	}
+
+	initClassify := &data_manage.BaseFromSciHqClassifyItem{
+		ClassifyId:     0,
+		ClassifyName:   "未分类",
+		ClassifyNameEn: "Unclassified",
+		ParentId:       0,
+		Level:          1,
+		Sort:           0,
+		Children:       nil,
+	}
+	finalList := make([]*data_manage.BaseFromSciHqClassifyItem, 0)
+	classifyTree := getSciHqClassifyTree(classifyList, 0)
+	finalList = append(finalList, initClassify)
+	finalList = append(finalList, classifyTree...)
+
+	br.Msg = "查询成功"
+	br.Data = finalList
+	br.Success = true
+	br.Ret = 200
+}
+
+// AddSciClassify
+// @Title 新增分类
+// @Description 新增分类接口
+// @Param	request	body data_manage.AddBaseFromSciClassifyReq true "type json string"
+// @Success 200 Ret=200 保存成功
+// @router /sci_hq/classify/add [post]
+func (this *SciHqDataController) AddClassify() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	var req request.AddBaseFromSciHqClassifyReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	if req.ClassifyName == "" {
+		br.Msg = "请输入分类名称"
+		return
+	}
+	if req.ParentId < 0 {
+		br.Msg = "操作异常"
+		return
+	}
+	ok, err := data.AddSciHqClassify(req.ClassifyName, this.Lang, req.ParentId)
+	if err != nil {
+		br.Msg = "添加失败"
+		br.ErrMsg = "添加失败,Err:" + err.Error()
+		return
+	}
+	if !ok {
+		br.Msg = "添加失败"
+		return
+	}
+	br.Msg = "添加成功"
+	br.Success = true
+	br.Ret = 200
+}
+
+// DelClassify
+// @Title 新增分类
+// @Description 新增分类接口
+// @Param	request	body data_manage.AddBaseFromSciClassifyReq true "type json string"
+// @Success 200 Ret=200 保存成功
+// @router /sci_hq/classify/del [post]
+func (this *SciHqDataController) DelClassify() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	var req request.DelBaseFromSciReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+
+	if req.BaseFromSciIndexId < 0 {
+		br.Msg = "参数错误"
+		br.IsSendEmail = false
+		return
+	}
+
+	err, errMsg := data.DelSciData(req.BaseFromSciIndexId)
+	if errMsg != `` {
+		br.Msg = errMsg
+		br.ErrMsg = errMsg
+		if err != nil {
+			br.ErrMsg = errMsg + ";Err:" + err.Error()
+		} else {
+			br.IsSendEmail = false
+		}
+		return
+	}
+
+	br.Ret = 200
+	br.Msg = "删除成功"
+	br.Success = true
+	br.IsAddLog = true
+}
+
+// getSciHqClassifyTree 返回卓创红旗的树形结构
+func getSciHqClassifyTree(items []*data_manage.BaseFromSciHqClassifyItem, parentId int) []*data_manage.BaseFromSciHqClassifyItem {
+	res := make([]*data_manage.BaseFromSciHqClassifyItem, 0)
+	for _, item := range items {
+		if item.ParentId == parentId {
+			t := new(data_manage.BaseFromSciHqClassifyItem)
+			t.ClassifyId = item.ClassifyId
+			t.ClassifyName = item.ClassifyName
+			t.ParentId = item.ParentId
+			t.Level = item.Level
+			t.Sort = item.Sort
+			t.ModifyTime = item.ModifyTime
+			t.CreateTime = item.CreateTime
+			t.ClassifyNameEn = item.ClassifyNameEn
+			t.Children = getSciHqClassifyTree(items, item.ClassifyId)
+			res = append(res, t)
+		}
+	}
+	return res
+}

+ 136 - 0
models/data_manage/base_from_sci_hq_classify.go

@@ -0,0 +1,136 @@
+package data_manage
+
+import (
+	"eta/eta_api/utils"
+	"time"
+
+	"github.com/beego/beego/v2/client/orm"
+)
+
+// BaseFromSciHqClassify 卓创红期原始数据分类表
+type BaseFromSciHqClassify struct {
+	ClassifyId     int       `orm:"column(classify_id);pk"`
+	ClassifyName   string    `description:"分类名称"`
+	ParentId       int       `description:"父级id"`
+	Level          int       `description:"层级"`
+	Sort           int       `description:"排序字段"`
+	ModifyTime     time.Time `description:"修改时间"`
+	CreateTime     time.Time `description:"创建时间"`
+	ClassifyNameEn string    `description:"英文分类名称"`
+}
+
+type BaseFromSciHqClassifyItem struct {
+	ClassifyId     int                          `orm:"column(classify_id);pk"`
+	ClassifyName   string                       `description:"分类名称"`
+	ParentId       int                          `description:"父级id"`
+	Level          int                          `description:"层级"`
+	Sort           int                          `description:"排序字段"`
+	ModifyTime     time.Time                    `description:"修改时间"`
+	CreateTime     time.Time                    `description:"创建时间"`
+	ClassifyNameEn string                       `description:"英文分类名称"`
+	Children       []*BaseFromSciHqClassifyItem `description:"子分类"`
+}
+
+func (t *BaseFromSciHqClassify) Add() (insertId int64, err error) {
+	o := orm.NewOrm()
+	insertId, err = o.Insert(t)
+	return
+}
+
+func BatchAddSciHqClassify(items []*BaseFromSciHqClassify) (err error) {
+	o := orm.NewOrm()
+	_, err = o.InsertMulti(len(items), items)
+	return
+}
+
+// 获取所有分类
+func GetSciHqClassifyAll() (items []*BaseFromSciHqClassifyItem, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT * FROM base_from_sci_hq_classify `
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+// GetChildSciHqClassifyListById 获取子分类列表
+func GetChildSciHqClassifyListById(classifyId int) (items []*BaseFromSciHqClassifyItem, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT * FROM base_from_sci_hq_classify WHERE parent_id=? `
+	_, err = o.Raw(sql, classifyId).QueryRows(&items)
+	return
+}
+
+// GetChildSciHqClassifyIdsById 获取子分类的id集合
+func GetChildSciHqClassifyIdsById(classifyId int) (items []int, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT classify_id FROM base_from_sci_hq_classify WHERE parent_id=? `
+	_, err = o.Raw(sql, classifyId).QueryRows(&items)
+	return
+}
+
+// GetChildSciHqClassifyMaxSortById 获取子分类最大排序
+func GetChildSciHqClassifyMaxSortById(classifyId int) (sort int, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT MAX(sort) AS sort FROM base_from_sci_hq_classify WHERE parent_id=? `
+	err = o.Raw(sql, classifyId).QueryRow(&sort)
+	return
+}
+
+// GetSciHqClassifyCountById 获取分类数量
+func GetSciHqClassifyCountById(classifyId int) (count int, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT COUNT(*) AS count FROM base_from_sci_hq_classify WHERE classify_id=? `
+	err = o.Raw(sql, classifyId).QueryRow(&count)
+	return
+}
+
+// GetSciHqClassifyById 通过分类id获取分类
+func GetSciHqClassifyById(classifyId int) (item *BaseFromSciHqClassify, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT * FROM base_from_sci_hq_classify WHERE classify_id=? `
+	err = o.Raw(sql, classifyId).QueryRow(&item)
+	return
+}
+
+func GetBaseFromSciHqClassifyEnCount(classifyNameEn string, parentId int) (count int, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT COUNT(1) AS count FROM base_from_sci_classify WHERE classify_name_en=? AND parent_id=? `
+	err = o.Raw(sql, classifyNameEn, parentId).QueryRow(&count)
+	return
+}
+
+func GetBaseFromSciHqClassifyCount(classifyName string, parentId int) (count int, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT COUNT(1) AS count FROM base_from_sci_classify WHERE classify_name=? AND parent_id=? `
+	err = o.Raw(sql, classifyName, parentId).QueryRow(&count)
+	return
+}
+
+func DeleteSciHqClassifyById(classifyId int) (err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` DELETE FROM base_from_sci_hq_classify WHERE classify_id=? `
+	_, err = o.Raw(sql, classifyId).Exec()
+	return
+}
+
+// BatchDeleteSciHqClassifyById 批量删除分类
+func BatchDeleteSciHqClassifyById(classifyId []int) (err error) {
+	if len(classifyId) == 0 {
+		return
+	}
+	o := orm.NewOrmUsingDB("data")
+	to, err := o.Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			_ = to.Rollback()
+		} else {
+			_ = to.Commit()
+		}
+	}()
+	sql := ` DELETE FROM base_from_sci_hq_classify WHERE classify_id IN (` + utils.GetOrmInReplace(len(classifyId)) + `) `
+	_, err = o.Raw(sql, classifyId).Exec()
+
+	return
+}

+ 26 - 0
models/data_manage/base_from_sci_hq_data.go

@@ -0,0 +1,26 @@
+package data_manage
+
+import (
+	"time"
+
+	"github.com/beego/beego/v2/client/orm"
+)
+
+type BaseFromSciHqData struct {
+	SciHqDataId          int       `orm:"column(sci_hq_data_id);pk"`
+	BaseFromSciHqIndexId int       `description:"指标id"`
+	IndexCode            string    `description:"指标编码"`
+	DataTime             string    `description:"数据日期"`
+	Value                float64   `description:"数据值"`
+	CreateTime           time.Time `description:"创建时间"`
+	ModifyTime           time.Time `description:"修改时间"`
+	DataTimestamp        int64     `description:"数据时间戳"`
+}
+
+// GetSciHqDataByIndexId 根据指标id获取指标数据
+func GetSciHqDataByIndexId(indexId int) (items []*BaseFromSciHqData, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT * FROM base_from_sci_hq_data WHERE base_from_sci_hq_index_id=? `
+	_, err = o.Raw(sql, indexId).QueryRows(&items)
+	return
+}

+ 19 - 0
models/data_manage/base_from_sci_hq_index.go

@@ -0,0 +1,19 @@
+package data_manage
+
+import "time"
+
+type BaseFromSciHqIndex struct {
+	BaseFromSciHqIndexId int    `orm:"pk"`
+	ClassifyId           int    `description:"指标分类id"`
+	IndexCode            string `description:"指标编码"`
+	IndexName            string `description:"指标名称"`
+	Unit                 string `description:"单位"`
+	Frequency            string `description:"频度"`
+	StartDate            string `description:"开始日期"`
+	EndDate              string
+	Sort                 int
+	TerminalCode         string
+	FilePath             string
+	CreateTime           time.Time
+	ModifyTime           time.Time
+}

+ 6 - 0
models/data_manage/request/sci_hq_data.go

@@ -0,0 +1,6 @@
+package request
+
+type AddBaseFromSciHqClassifyReq struct {
+	ParentId     int    `description:"上级id"`
+	ClassifyName string `description:"分类名称"`
+}

+ 128 - 0
services/data/base_from_sci_hq.go

@@ -0,0 +1,128 @@
+package data
+
+import (
+	"errors"
+	"eta/eta_api/models/data_manage"
+	"eta/eta_api/utils"
+	"time"
+)
+
+func AddSciHqClassify(classifyName, lang string, parentId int) (ok bool, err error) {
+	var count int
+	switch lang {
+	case utils.EnLangVersion:
+		count, err = data_manage.GetBaseFromSciHqClassifyEnCount(classifyName, parentId)
+	default:
+		count, err = data_manage.GetBaseFromSciHqClassifyCount(classifyName, parentId)
+	}
+	if err != nil {
+		return
+	}
+	if count > 0 {
+		return false, errors.New("分类已存在")
+	}
+
+	sort, err := data_manage.GetChildSciHqClassifyMaxSortById(parentId)
+	if err != nil {
+		return false, err
+	}
+	if parentId > 0 {
+		count, err = data_manage.GetSciHqClassifyCountById(parentId)
+		if err != nil {
+			return false, err
+		}
+		if count == 0 {
+			return false, errors.New("父分类不存在")
+		}
+		sciHqClassify := &data_manage.BaseFromSciHqClassify{
+			ClassifyName:   classifyName,
+			ClassifyNameEn: classifyName,
+			ParentId:       parentId,
+			Level:          2,
+			Sort:           sort + 1,
+			ModifyTime:     time.Now(),
+			CreateTime:     time.Now(),
+		}
+		_, err = sciHqClassify.Add()
+		if err != nil {
+			return
+		}
+	} else {
+		sciHqClassify := &data_manage.BaseFromSciHqClassify{
+			ClassifyName:   classifyName,
+			ClassifyNameEn: classifyName,
+			ParentId:       0,
+			Level:          1,
+			Sort:           sort + 1,
+			ModifyTime:     time.Now(),
+			CreateTime:     time.Now(),
+		}
+		insertId, er := sciHqClassify.Add()
+		if er != nil {
+			return false, er
+		}
+		sciHqClassifyList := []*data_manage.BaseFromSciHqClassify{
+			{
+				ClassifyName:   "价格",
+				ClassifyNameEn: "价格",
+				ParentId:       int(insertId),
+				Level:          2,
+				Sort:           1,
+				ModifyTime:     time.Now(),
+				CreateTime:     time.Now(),
+			},
+			{
+				ClassifyName:   "供应",
+				ClassifyNameEn: "供应",
+				ParentId:       int(insertId),
+				Level:          2,
+				Sort:           2,
+				ModifyTime:     time.Now(),
+				CreateTime:     time.Now(),
+			},
+			{
+				ClassifyName:   "需求",
+				ClassifyNameEn: "需求",
+				ParentId:       int(insertId),
+				Level:          2,
+				Sort:           3,
+				ModifyTime:     time.Now(),
+				CreateTime:     time.Now(),
+			},
+			{
+				ClassifyName:   "库存",
+				ClassifyNameEn: "库存",
+				ParentId:       int(insertId),
+				Level:          2,
+				Sort:           4,
+				ModifyTime:     time.Now(),
+				CreateTime:     time.Now(),
+			},
+		}
+		err = data_manage.BatchAddSciHqClassify(sciHqClassifyList)
+		if err != nil {
+			return
+		}
+	}
+	return true, nil
+}
+
+func DelSciHqClassify(classifyId int) (err error) {
+	classify, err := data_manage.GetSciHqClassifyById(classifyId)
+	if err != nil {
+		return
+	}
+	if classify.ParentId == 0 {
+		childClassifyIds, er := data_manage.GetChildSciHqClassifyIdsById(classify.ClassifyId)
+		if er != nil {
+			return er
+		}
+
+	}
+	return
+
+}
+
+func DelSciHqData() {
+
+}