hsun 1 year ago
parent
commit
c580ae39a0

+ 51 - 8
controller/index_data/jiayue_index.go

@@ -15,11 +15,11 @@ import (
 // JiaYueIndexController 嘉悦指标
 type JiaYueIndexController struct{}
 
-// GetData
-// @Description 获取嘉悦指标数据
-// @Success 200 {string} string "操作成功"
+// GetIndex
+// @Description 获取嘉悦指标信息
+// @Success 200 {string} string "获取成功"
 // @Router /jiayue/index [post]
-func (j *JiaYueIndexController) GetData(c *gin.Context) {
+func (j *JiaYueIndexController) GetIndex(c *gin.Context) {
 	var req indexDataReq.JiaYueIndexReq
 	if e := c.Bind(&req); e != nil {
 		err, ok := e.(validator.ValidationErrors)
@@ -44,12 +44,50 @@ func (j *JiaYueIndexController) GetData(c *gin.Context) {
 		return
 	}
 
-	data, err, errMsg := indexDataService.GetIndexFromJiaYue(req.IndexCode, req.StartDate, req.EndDate, sourceArr)
-	if err != nil {
-		resp.FailMsg("查询失败", err.Error()+errMsg, c)
+	data, e := indexDataService.GetIndexFromJiaYue(req.IndexCode, sourceArr)
+	if e != nil {
+		resp.FailMsg("获取失败", "获取嘉悦指标信息失败, err: "+e.Error(), c)
 		return
 	}
-	resp.OkData("操作成功", data, c)
+	resp.OkData("获取成功", data, c)
+	return
+}
+
+// GetIndexData
+// @Description 获取嘉悦指标数据
+// @Success 200 {string} string "获取成功"
+// @Router /jiayue/index_data [post]
+func (j *JiaYueIndexController) GetIndexData(c *gin.Context) {
+	var req indexDataReq.JiaYueIndexAndDataReq
+	if e := c.Bind(&req); e != nil {
+		err, ok := e.(validator.ValidationErrors)
+		if !ok {
+			resp.FailData("参数解析失败", "Err:"+e.Error(), c)
+			return
+		}
+		resp.FailData("参数解析失败", err.Translate(global.Trans), c)
+		return
+	}
+	if req.IndexCode == "" {
+		resp.FailMsg("请输入指标code码", "请输入指标code码", c)
+		return
+	}
+	if req.SourceExtend == "" {
+		resp.FailMsg("请输入指标来源", "请输入指标来源", c)
+		return
+	}
+	sourceArr := strings.Split(req.SourceExtend, ",")
+	if len(sourceArr) == 0 {
+		resp.FailMsg("指标来源有误", "指标来源有误", c)
+		return
+	}
+
+	data, e := indexDataService.GetIndexAndDataFromJiaYue(req.IndexCode, req.StartDate, req.EndDate, sourceArr)
+	if e != nil {
+		resp.FailMsg("获取失败", "获取嘉悦指标数据失败, err: "+e.Error(), c)
+		return
+	}
+	resp.OkData("获取成功", data, c)
 	return
 }
 
@@ -110,3 +148,8 @@ func (j *JiaYueIndexController) GetIndexFrequency(c *gin.Context) {
 	resp.OkData("获取成功", data, c)
 	return
 }
+
+// GetRecentNewIndex TODO: 获取最近新增的指标
+func (j *JiaYueIndexController) GetRecentNewIndex(c *gin.Context) {
+
+}

+ 7 - 2
models/request/index_data/jiayue_index.go

@@ -4,8 +4,13 @@ package index_data
 type JiaYueIndexReq struct {
 	IndexCode    string `json:"index_code" form:"index_code" description:"指标编码"`
 	SourceExtend string `json:"source_extend" form:"source_extend" description:"来源"`
-	StartDate    string `json:"start_date" form:"start_date" description:"开始日期"`
-	EndDate      string `json:"end_date" form:"end_date" description:"结束日期"`
+}
+
+// JiaYueIndexAndDataReq 指标数据请求体
+type JiaYueIndexAndDataReq struct {
+	JiaYueIndexReq
+	StartDate string `json:"start_date" form:"start_date" description:"开始日期"`
+	EndDate   string `json:"end_date" form:"end_date" description:"结束日期"`
 }
 
 // JiaYuePageIndexReq 指标列表请求体-分页

+ 6 - 2
models/response/index_data.go

@@ -6,11 +6,15 @@ import (
 )
 
 type IndexResp struct {
-	IndexCode      string      `json:"index_code"`
+	Id             int         `description:"指标自增ID" json:"id"`
+	IndexCode      string      `description:"指标编码" json:"index_code"`
+	IndexName      string      `description:"指标名称" json:"index_name"`
+	Unit           string      `description:"单位" json:"unit"`
+	Frequency      string      `description:"频度" json:"frequency"`
 	LastDate       time.Time   `description:"指标最新时间" json:"last_date"`
 	LastUpdateTime time.Time   `description:"最新更新时间" json:"last_update_time"`
 	Status         int         `description:"指标状态" json:"status"`
-	IndexData      []IndexData `json:"index_data"`
+	IndexData      []IndexData `description:"指标数据" json:"index_data"`
 }
 
 type IndexData struct {

+ 2 - 1
routers/index_data.go

@@ -10,7 +10,8 @@ import (
 func InitIndexData(r *gin.RouterGroup) {
 	control := new(index_data.JiaYueIndexController)
 	group := r.Group("index_data/").Use(middleware.InternalToken())
-	group.POST("jiayue/index", control.GetData)
+	group.POST("jiayue/index", control.GetIndex)
+	group.POST("jiayue/index_data", control.GetIndexData)
 	group.POST("jiayue/page_index", control.GetPageIndex)
 	group.POST("jiayue/frequency_list", control.GetIndexFrequency)
 }

+ 54 - 3
services/index_data/jiayue_platform.go

@@ -9,11 +9,58 @@ import (
 	"strings"
 )
 
-func GetIndexFromJiaYue(indexCode, startDate, endDate string, sourceArr []string) (data *response.IndexResp, err error, errMsg string) {
+// GetIndexFromJiaYue 获取嘉悦指标信息
+func GetIndexFromJiaYue(indexCode string, sourceArr []string) (data *response.IndexResp, err error) {
 	defer func() {
 		if err != nil {
-			global.LOG.Info("GetIndexFromJiaYue Err: " + errMsg)
-			go alarm_msg.SendAlarmMsg("GetIndexFromJiaYue Err: "+errMsg, 3)
+			global.LOG.Info("GetIndexFromJiaYue Err: " + err.Error())
+			go alarm_msg.SendAlarmMsg("GetIndexFromJiaYue Err: "+err.Error(), 3)
+			return
+		}
+	}()
+
+	// 指标存在无编码情况, 用自增ID查
+	indexCond := ` (ID = :1 OR SOURCE_CODE = :1)`
+	indexPars := make([]interface{}, 0)
+	indexPars = append(indexPars, indexCode, indexCode)
+	if len(sourceArr) > 0 {
+		indexCond += ` AND SOURCE_TYPE IN (:1)`
+		indexPars = append(indexPars, sourceArr)
+	}
+
+	indexes, e := jiayue.GetDictIndex(indexCond, indexPars)
+	if e != nil {
+		err = fmt.Errorf("GetDictIndex err: %s", e.Error())
+		return
+	}
+	if len(indexes) <= 0 {
+		global.LOG.Info(indexCode + "指标信息不存在")
+		return
+	}
+	index := indexes[0]
+	if index.Id <= 0 {
+		err = fmt.Errorf("指标信息有误")
+		return
+	}
+
+	data = new(response.IndexResp)
+	data.Id = index.Id
+	data.IndexCode = indexCode
+	data.IndexName = index.Name
+	data.Unit = index.Unit
+	data.Frequency = index.Frequency
+	data.LastDate = index.DateLast
+	data.LastUpdateTime = index.TimeLastUpdate
+	data.Status = index.Status
+	return
+}
+
+// GetIndexAndDataFromJiaYue 获取指标和数据
+func GetIndexAndDataFromJiaYue(indexCode, startDate, endDate string, sourceArr []string) (data *response.IndexResp, err error) {
+	defer func() {
+		if err != nil {
+			global.LOG.Info("GetIndexAndDataFromJiaYue Err: " + err.Error())
+			go alarm_msg.SendAlarmMsg("GetIndexAndDataFromJiaYue Err: "+err.Error(), 3)
 			return
 		}
 	}()
@@ -75,8 +122,12 @@ func GetIndexFromJiaYue(indexCode, startDate, endDate string, sourceArr []string
 	}
 
 	data = new(response.IndexResp)
+	data.Id = index.Id
 	data.IndexData = list
 	data.IndexCode = indexCode
+	data.IndexName = index.Name
+	data.Unit = index.Unit
+	data.Frequency = index.Frequency
 	data.LastDate = index.DateLast
 	data.LastUpdateTime = index.TimeLastUpdate
 	data.Status = index.Status