hsun 1 year ago
parent
commit
b6059310f1

+ 7 - 2
controller/index_data/jiayue_index.go

@@ -34,12 +34,17 @@ func (j *JiaYueIndexController) GetData(c *gin.Context) {
 		resp.FailMsg("请输入指标code码", "请输入指标code码", c)
 		return
 	}
-	if req.Source == "" {
+	if req.SourceExtend == "" {
 		resp.FailMsg("请输入指标来源", "请输入指标来源", c)
 		return
 	}
+	sourceArr := strings.Split(req.SourceExtend, ",")
+	if len(sourceArr) == 0 {
+		resp.FailMsg("指标来源有误", "指标来源有误", c)
+		return
+	}
 
-	data, err, errMsg := indexDataService.GetIndexFromJiaYue(req.IndexCode, req.Source, req.StartDate, req.EndDate)
+	data, err, errMsg := indexDataService.GetIndexFromJiaYue(req.IndexCode, req.StartDate, req.EndDate, sourceArr)
 	if err != nil {
 		resp.FailMsg("查询失败", err.Error()+errMsg, c)
 		return

+ 7 - 8
models/jiayue/dict.go

@@ -150,16 +150,16 @@ type DictDataSql struct {
 	Id         int             `description:"主键" json:"ID"`
 	IndexId    int             `json:"INDEX_ID"`
 	IndexValue sql.NullFloat64 `json:"INDEX_VALUE"`
-	IndexDate  sql.NullString  `json:"INDEX_DATE"`
-	UpdateTime sql.NullString  `json:"UPDATE_TIME"`
+	IndexDate  sql.NullTime    `json:"INDEX_DATE"`
+	UpdateTime sql.NullTime    `json:"UPDATE_TIME"`
 }
 
 type DictData struct {
 	Id         int `description:"主键" json:"ID"`
 	IndexId    int
 	IndexValue float64
-	IndexDate  string
-	UpdateTime string
+	IndexDate  time.Time
+	UpdateTime time.Time
 }
 
 func getDictIndex(sqlStatement string, pars []interface{}) (dictIndexs []DictIndex, err error) {
@@ -267,10 +267,9 @@ func getDictData(sqlStatement string, pars []interface{}) (dictData []DictData,
 	}
 
 	defer rows.Close() //defer关闭查询连接
-	//获取列相关信息
+
 	//获取列相关信息
 	strings, _ := rows.Columns()
-
 	for i := 0; i < len(strings); i++ {
 		fmt.Print(" ", strings[i])
 	}
@@ -287,8 +286,8 @@ func getDictData(sqlStatement string, pars []interface{}) (dictData []DictData,
 			Id:         tmp.Id,
 			IndexId:    tmp.IndexId,
 			IndexValue: tmp.IndexValue.Float64,
-			IndexDate:  tmp.IndexDate.String,
-			UpdateTime: tmp.UpdateTime.String,
+			IndexDate:  tmp.IndexDate.Time,
+			UpdateTime: tmp.UpdateTime.Time,
 		}
 		dictData = append(dictData, dictTmp)
 	}

+ 4 - 4
models/request/index_data/jiayue_index.go

@@ -2,10 +2,10 @@ package index_data
 
 // JiaYueIndexReq 指标请求体
 type JiaYueIndexReq struct {
-	IndexCode string `json:"index_code" form:"index_code" description:"指标编码"`
-	Source    string `json:"source" form:"source" description:"来源"`
-	StartDate string `json:"start_date" form:"start_date" description:"开始日期"`
-	EndDate   string `json:"end_date" form:"end_date" description:"结束日期"`
+	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:"结束日期"`
 }
 
 // JiaYuePageIndexReq 指标列表请求体-分页

+ 9 - 6
models/response/index_data.go

@@ -1,19 +1,22 @@
 package response
 
-import "eta/eta_bridge/models/jiayue"
+import (
+	"eta/eta_bridge/models/jiayue"
+	"time"
+)
 
 type IndexResp struct {
 	IndexCode      string      `json:"index_code"`
-	LastDate       string      `description:"指标最新时间" json:"last_date"`
-	LastUpdateTime string      `description:"最新更新时间" json:"last_update_time"`
+	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"`
 }
 
 type IndexData struct {
-	Val        float64 `json:"val"`
-	DataTime   string  `json:"data_time"`
-	UpdateTime string  `json:"update_time"`
+	Val        float64   `json:"val"`
+	DataTime   time.Time `json:"data_time"`
+	UpdateTime time.Time `json:"update_time"`
 }
 
 // JiaYuePageIndexResp 指标分页列表响应体

+ 36 - 98
services/index_data/jiayue_platform.go

@@ -1,19 +1,15 @@
 package index_data
 
 import (
-	"errors"
 	"eta/eta_bridge/global"
 	"eta/eta_bridge/models/jiayue"
 	"eta/eta_bridge/models/response"
 	"eta/eta_bridge/services/alarm_msg"
-	"eta/eta_bridge/utils"
 	"fmt"
-	"strconv"
 	"strings"
-	"time"
 )
 
-func GetIndexFromJiaYue(indexCode, source, startDate, endDate string) (data *response.IndexResp, err error, errMsg string) {
+func GetIndexFromJiaYue(indexCode, startDate, endDate string, sourceArr []string) (data *response.IndexResp, err error, errMsg string) {
 	defer func() {
 		if err != nil {
 			global.LOG.Info("GetIndexFromJiaYue Err: " + errMsg)
@@ -21,126 +17,68 @@ func GetIndexFromJiaYue(indexCode, source, startDate, endDate string) (data *res
 			return
 		}
 	}()
-	var sourceArray []interface{}
-	if source == "wind" {
-		sourceArray = append(sourceArray, "wind", "wind_stop", "wind_p", "wind_tmp")
-	} else if source == "manual" {
-		sourceArray = append(sourceArray, "manual", "manul", "munal")
-	} else {
-		sourceArray = append(sourceArray, source)
-	}
-	var indexPars []interface{}
-	indexCond := ` SOURCE_TYPE IN (` + utils.GetOracleInReplace(len(sourceArray)) + `)`
-	indexPars = append(indexPars, sourceArray...)
 
-	if source == "wind" {
-		indexCond += " AND SOURCE_CODE = :1 "
-		indexPars = append(indexPars, indexCode)
-	} else {
-		indexId, e := strconv.Atoi(indexCode)
-		if e != nil {
-			err = fmt.Errorf("类型错误,请输入正确的指标code")
-			return
-		}
-		indexCond += " AND ID = :1 "
-		indexPars = append(indexPars, indexId)
+	// 指标存在无编码情况, 用自增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)
 	}
 
-	indexList, err := jiayue.GetDictIndex(indexCond, indexPars)
-	if err != nil {
-		errMsg = fmt.Sprintf("嘉悦物产指标信息查询失败,Err: %s", err)
+	indexes, e := jiayue.GetDictIndex(indexCond, indexPars)
+	if e != nil {
+		err = fmt.Errorf("GetDictIndex err: %s", e.Error())
 		return
 	}
-	if len(indexList) <= 0 {
+	if len(indexes) <= 0 {
 		global.LOG.Info(indexCode + "指标信息不存在")
 		return
 	}
-	index := indexList[0]
-	//获取指标数据
-	if index.TableName == "" {
-		errMsg = "指标信息不全,指标数据对应的表名为空"
-		err = errors.New(errMsg)
+	index := indexes[0]
+
+	// 获取指标数据
+	if index.Id <= 0 {
+		err = fmt.Errorf("指标信息有误")
 		return
 	}
-	if index.Id <= 0 {
-		errMsg = "指标信息不全,指标对应的序号为空"
-		err = errors.New(errMsg)
+	if index.TableName == "" {
+		err = fmt.Errorf("指标信息数据表名为空")
 		return
 	}
 
-	var pars []interface{}
-	condition := " INDEX_ID = :1"
-	pars = append(pars, index.Id)
-
+	dataCond := " INDEX_ID = :1"
+	dataPars := make([]interface{}, 0)
+	dataPars = append(dataPars, index.Id)
 	if startDate != "" {
-		condition += " AND INDEX_DATE >= TO_DATE (:1, 'yyyy-mm-dd')"
-		pars = append(pars, startDate)
+		dataCond += " AND INDEX_DATE >= TO_DATE (:1, 'yyyy-mm-dd')"
+		dataPars = append(dataPars, startDate)
 	}
 	if endDate != "" {
-		condition += " AND INDEX_DATE <= TO_DATE (:1, 'yyyy-mm-dd')"
-		pars = append(pars, endDate)
+		dataCond += " AND INDEX_DATE <= TO_DATE (:1, 'yyyy-mm-dd')"
+		dataPars = append(dataPars, endDate)
 	}
-
-	indexData, err := jiayue.GetDictData(index.TableName, condition, pars)
-	if err != nil {
-		errMsg = fmt.Sprintf("嘉悦物产指标数据信息查询失败,Err: %s", err)
+	indexData, e := jiayue.GetDictData(index.TableName, dataCond, dataPars)
+	if e != nil {
+		err = fmt.Errorf("GetDictData err: %s", e.Error())
 		return
 	}
 	var list []response.IndexData
 	for _, v := range indexData {
-		var dataTimeStr string
-		if v.IndexDate != "" {
-			dataTime, e := time.ParseInLocation(utils.FormatDateDefault, v.IndexDate, time.Local)
-			if e != nil {
-				err = e
-				fmt.Println("解析时间失败:", err)
-				return
-			}
-			dataTimeStr = dataTime.Format(utils.FormatDate)
-		}
-		var updateTimeStr string
-		if v.UpdateTime != "" {
-			updateTime, e := time.ParseInLocation(utils.FormatDateDefault, v.UpdateTime, time.Local)
-			if e != nil {
-				err = e
-				fmt.Println("解析时间失败:", err)
-				return
-			}
-			updateTimeStr = updateTime.Format(utils.FormatDateTime)
-		}
-
-		tmp := response.IndexData{
+		t := response.IndexData{
 			Val:        v.IndexValue,
-			DataTime:   dataTimeStr,
-			UpdateTime: updateTimeStr,
+			DataTime:   v.IndexDate,
+			UpdateTime: v.UpdateTime,
 		}
-		list = append(list, tmp)
+		list = append(list, t)
 	}
-	//var dateLastStr string
-	//if index.DateLast != "" {
-	//	dateLast, e := time.ParseInLocation(utils.FormatDateDefault, index.DateLast, time.Local)
-	//	if e != nil {
-	//		err = e
-	//		fmt.Println("解析时间失败:", err)
-	//		return
-	//	}
-	//	dateLastStr = dateLast.Format(utils.FormatDate)
-	//}
-	//if !index.TimeLastUpdate.IsZero() {
-	//	timeLastUpdate, e := time.ParseInLocation(utils.FormatDateDefault, index.TimeLastUpdate, time.Local)
-	//	if e != nil {
-	//		err = e
-	//		fmt.Println("解析时间失败:", err)
-	//		return
-	//	}
-	//	timeLastUpdateStr = timeLastUpdate.Format(utils.FormatDateTime)
-	//}
 
 	data = new(response.IndexResp)
 	data.IndexData = list
 	data.IndexCode = indexCode
-	data.LastDate = utils.TimeTransferString(utils.FormatDate, index.DateLast)
-	data.LastUpdateTime = utils.TimeTransferString(utils.FormatDateTime, index.TimeLastUpdate)
+	data.LastDate = index.DateLast
+	data.LastUpdateTime = index.TimeLastUpdate
 	data.Status = index.Status
 	return
 }
@@ -165,7 +103,7 @@ func GetPageIndexesFromJiaYue(pageIndex, pageSize int, sourceArr []string, keywo
 	keyword = strings.TrimSpace(keyword)
 	if keyword != "" {
 		kw := fmt.Sprint("%", keyword, "%")
-		indexCond += ` AND (ID = :1 OR CODE = :1 OR NAME = :1)`
+		indexCond += ` AND (ID LIKE :1 OR CODE LIKE :1 OR NAME LIKE :1)`
 		indexPars = append(indexPars, kw, kw, kw)
 	}
 	if frequency != "" {