Roc 7 tháng trước cách đây
mục cha
commit
286a675a14
4 tập tin đã thay đổi với 276 bổ sung0 xóa
  1. 96 0
      controllers/manual_edb.go
  2. 141 0
      models/target.go
  3. 9 0
      routers/commentsRouter.go
  4. 30 0
      services/data/manual.go

+ 96 - 0
controllers/manual_edb.go

@@ -0,0 +1,96 @@
+package controllers
+
+import (
+	"eta/eta_api/models"
+	"eta/eta_api/utils"
+)
+
+// EdbDetail
+// @Title 指标列表
+// @Description 指标列表
+// @Param   TradeCode   query   string  true       "指标编码"
+// @Success 200 {object} models.TargetDetailResp
+// @router /target/edb/detail [get]
+func (this *TargetController) EdbDetail() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请重新登录"
+		return
+	}
+
+	// 指标编码
+	tradeCode := this.GetString("TradeCode")
+	if tradeCode == `` {
+		br.Msg = "请输入指标编码"
+		br.IsSendEmail = false
+		return
+	}
+
+	manualEdbInfo, err := models.GetTargetByTradeCode(tradeCode)
+	if err != nil {
+		br.Msg = "获取指标失败"
+		br.ErrMsg = "获取指标失败,err:" + err.Error()
+		return
+	}
+
+	// 如果不是超管账号,那么得校验下当前用户是否有该指标的权限
+	if sysUser.RoleTypeCode != utils.ROLE_TYPE_CODE_ADMIN {
+		//获取账户所拥有权限的分类id集合
+		count, err := models.GetCountManualUserClassify(sysUser.AdminId, manualEdbInfo.ClassifyId)
+		if err != nil {
+			br.Msg = "获取分类数据失败"
+			br.ErrMsg = "获取分类数据失败,err:" + err.Error()
+			return
+		}
+
+		if count <= 0 {
+			br.Msg = "无权访问"
+			br.ErrMsg = "无权访问"
+			br.IsSendEmail = false
+			return
+		}
+	}
+
+	classifyList := make([]*models.EdbdataClassify, 0)
+	{
+		classify, err := models.GetManualClassifyByClassifyId(manualEdbInfo.ClassifyId)
+		if err != nil {
+			br.Msg = "获取分类信息失败"
+			br.ErrMsg = "获取分类信息失败,err:" + err.Error()
+			return
+		}
+		parentClassify, err := models.GetManualClassifyByClassifyId(classify.ParentId)
+		if err != nil {
+			br.Msg = "获取分类信息失败"
+			br.ErrMsg = "获取父级分类信息失败,err:" + err.Error()
+			return
+		}
+		classifyList = []*models.EdbdataClassify{
+			parentClassify, classify,
+		}
+	}
+
+	dataList, err := models.GetEdbDataListByCode(manualEdbInfo.TradeCode)
+	if err != nil {
+		br.Msg = "获取明细数据失败"
+		br.ErrMsg = "获取明细数据失败,err:" + err.Error()
+		return
+	}
+
+	resp := models.TargetDetailResp{
+		Detail:        manualEdbInfo,
+		ClassifyList:  classifyList,
+		FrequencyList: dataList,
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	//br.Data = resp
+	br.Data = resp
+}

+ 141 - 0
models/target.go

@@ -1502,3 +1502,144 @@ func GetEdbInfoAdminList() (list []int, err error) {
 	_, err = o.Raw(sql).QueryRows(&list)
 	return
 }
+
+// GetAllChildManualEdbClassify
+// @Description: 获取手工数据中所有的子分类
+// @author: Roc
+// @datetime 2024-07-16 13:27:28
+// @return items []*EdbdataClassify
+// @return err error
+func GetAllChildManualEdbClassify() (items []*EdbdataClassify, err error) {
+	o := orm.NewOrmUsingDB("edb")
+
+	sql := ` SELECT classify_id,classify_name,parent_id FROM edbdata_classify WHERE parent_id > 0 `
+	_, err = o.Raw(sql).QueryRows(&items)
+
+	return
+}
+
+// GetChildManualEdbClassifyByIdList
+// @Description: 获取手工数据中所有的子分类
+// @author: Roc
+// @datetime 2024-07-16 13:33:57
+// @param idList []int
+// @return items []*EdbdataClassify
+// @return err error
+func GetChildManualEdbClassifyByIdList(idList []int) (items []*EdbdataClassify, err error) {
+	num := len(idList)
+	if num <= 0 {
+		return
+	}
+	o := orm.NewOrmUsingDB("edb")
+
+	sql := ` SELECT classify_id,classify_name,parent_id FROM edbdata_classify WHERE classify_id in (` + utils.GetOrmInReplace(num) + `) `
+	_, err = o.Raw(sql, idList).QueryRows(&items)
+
+	return
+}
+
+// GetManualEdbList 获取指标列表数据
+func GetManualEdbList(classifyId, edbShowType int, frequency, keyword, tradeCode string, classifyIdStrList []string) (items []*EdbInfoItem, err error) {
+	o := orm.NewOrmUsingDB("edb")
+
+	pars := make([]interface{}, 0)
+
+	sql := ` SELECT a.*,'' modify_date,'' STATUS FROM edbinfo AS a `
+
+	sql += ` WHERE LEFT(a.TRADE_CODE,1)='W' AND a.REMARK='手动' AND a.classify_id>0 `
+
+	//如果没有分类id集合列表,那么就没有数据了,不用往下执行了,直接返回好了
+	if len(classifyIdStrList) <= 0 {
+		return
+	}
+	if len(classifyIdStrList) > 0 {
+		sql += ` AND a.classify_id in (` + strings.Join(classifyIdStrList, ",") + `)  `
+	}
+	if classifyId > 0 {
+		sql += ` AND a.classify_id=` + strconv.Itoa(classifyId) + ` `
+	}
+	//频度
+	if frequency != "" {
+		sql += ` AND a.frequency="` + frequency + `" `
+	}
+	//关键字
+	if keyword != "" {
+		sql += ` AND (a.SEC_NAME like ?  or a.TRADE_CODE like ? )`
+		pars = utils.GetLikeKeywordPars(pars, keyword, 2)
+	}
+	//指定指标
+	if tradeCode != "" {
+		sql += ` AND a.TRADE_CODE = "` + tradeCode + `" `
+	}
+	//指标里面是否有数据
+	switch edbShowType {
+	case 1:
+		sql += ` AND b.CLOSE is not null `
+	case 2:
+		sql += ` AND b.CLOSE is null `
+	}
+	sql += ` GROUP BY a.TRADE_CODE `
+
+	sql = sql + ` ORDER BY CONVERT(a.SEC_NAME USING gbk )  COLLATE gbk_chinese_ci ASC `
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+
+}
+
+// TargetDetailResp 指标数据结构体
+type TargetDetailResp struct {
+	Detail        *EdbInfoItem
+	FrequencyList []*Edbdata
+	ClassifyList  []*EdbdataClassify
+}
+
+// GetTargetByTradeCode
+// @Description: 根据手工指标编码获取指标信息
+// @author: Roc
+// @datetime 2024-07-16 14:18:10
+// @param tradeCode string
+// @return item *Edbinfo
+// @return err error
+func GetTargetByTradeCode(tradeCode string) (item *EdbInfoItem, err error) {
+	sql := `SELECT * FROM edbinfo WHERE TRADE_CODE = ?  `
+	o := orm.NewOrmUsingDB("edb")
+	err = o.Raw(sql, tradeCode).QueryRow(&item)
+	return
+}
+
+// GetCountManualUserClassify
+// @Description: 根据用户ID和分类ID获取关系数量
+// @author: Roc
+// @datetime 2024-07-16 14:27:58
+// @param sysUserId int
+// @param classifyId int
+// @return total int
+// @return err error
+func GetCountManualUserClassify(sysUserId, classifyId int) (total int, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT count(1) ct FROM manual_user_classify WHERE admin_id=? AND classify_id = ? `
+	err = o.Raw(sql, sysUserId, classifyId).QueryRow(&total)
+
+	return
+}
+func GetManualClassifyByClassifyId(classifyId int) (item *EdbdataClassify, err error) {
+	o := orm.NewOrmUsingDB("edb")
+	sql := ` SELECT classify_id,classify_name,parent_id FROM edbdata_classify WHERE classify_id = ?  `
+	err = o.Raw(sql, classifyId).QueryRow(&item)
+
+	return
+}
+
+// GetEdbDataListByCode
+// @Description: 通过指标ID获取所有数据
+// @author: Roc
+// @datetime 2024-07-16 15:32:41
+// @param tradeCode string
+// @return items []*Edbdata
+// @return err error
+func GetEdbDataListByCode(tradeCode string) (items []*Edbdata, err error) {
+	sql := ` SELECT  TRADE_CODE,DT,round(CLOSE,4) CLOSE,modify_time  FROM edbdata WHERE TRADE_CODE = ?  GROUP BY TRADE_CODE,DT ORDER BY DT DESC `
+	o := orm.NewOrmUsingDB("edb")
+	_, err = o.Raw(sql, tradeCode).QueryRows(&items)
+	return
+}

+ 9 - 0
routers/commentsRouter.go

@@ -9223,6 +9223,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_api/controllers:TargetController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers:TargetController"],
+        beego.ControllerComments{
+            Method: "EdbDetail",
+            Router: `/target/edb/detail`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_api/controllers:TargetController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers:TargetController"],
         beego.ControllerComments{
             Method: "TargetEdit",

+ 30 - 0
services/data/manual.go

@@ -1,6 +1,7 @@
 package data
 
 import (
+	"eta/eta_api/models"
 	"eta/eta_api/models/data_manage"
 	"eta/eta_api/models/system"
 	"eta/eta_api/utils"
@@ -82,3 +83,32 @@ func GetManualSysUser(keyWord string) (list []*data_manage.ManualSysUser, err er
 	}
 	return
 }
+
+// GetManualEdbClassifyListByAdminId
+// @Description: 根据账户类型获取手工指标分类ID集合
+// @author: Roc
+// @datetime 2024-07-16 13:18:39
+// @param adminId int64
+// @return classifyIdList []int
+// @return err error
+func GetManualEdbClassifyListByAdminId(adminId int64) (classifyIdList []int, err error) {
+	var list []*models.EdbdataClassify
+	if adminId <= 0 {
+		list, err = models.GetAllChildManualEdbClassify()
+	} else {
+		userClassifyList, _ := models.GetManualUserClassify(int(adminId))
+		var userClassifyIdList []int
+		for _, v := range userClassifyList {
+			userClassifyIdList = append(userClassifyIdList, v.ClassifyId)
+		}
+		list, err = models.GetChildManualEdbClassifyByIdList(userClassifyIdList)
+	}
+	if err != nil {
+		return
+	}
+	for _, classify := range list {
+		classifyIdList = append(classifyIdList, classify.ClassifyId)
+	}
+
+	return
+}