浏览代码

Merge branch 'master' into feature/nh_idap_0111

hsun 1 年之前
父节点
当前提交
95febc58fe

+ 1 - 0
controllers/data_manage/chart_info.go

@@ -1740,6 +1740,7 @@ func (this *ChartInfoController) ChartInfoBase64Upload() {
 
 	defer func() {
 		os.Remove(fileName)
+		os.Remove(outFileName)
 	}()
 
 	//saveToOssPath = uploadDir + time.Now().Format("200601/20060102/")

+ 71 - 5
controllers/data_manage/edb_info.go

@@ -1634,6 +1634,54 @@ func (this *EdbInfoController) EdbInfoSearch() {
 				searchItem.Unit = indexInfo.Unit
 				searchItem.EdbName = indexInfo.IndexName
 			}
+		} else if source == utils.DATA_SOURCE_ICPI { //消费者指数
+			dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, source, subSource, utils.EDB_DATA_LIMIT)
+			if err != nil && err.Error() != utils.ErrNoRow() {
+				br.Msg = "获取失败"
+				br.ErrMsg = "获取上期所已存在信息失败,Err:" + err.Error()
+				return
+			}
+
+			if len(dataItems) > 0 {
+				searchItem.EdbCode = edbCode
+				minDate, maxDate, err := data_manage.GetEdbDataIcpiMaxOrMinDate(edbCode)
+				if err != nil {
+					br.Msg = "获取失败"
+					br.ErrMsg = "获取上期所日期信息失败,Err:" + err.Error()
+					return
+				}
+				searchItem.DataList = dataItems
+				searchItem.StartDate = minDate
+				searchItem.EndDate = maxDate
+			} else {
+				respItem, err := data.AddEdbData(source, edbCode)
+				if err != nil {
+					br.Msg = "获取失败"
+					br.ErrMsg = "获取失败,Err:" + err.Error()
+					return
+				}
+				if respItem.Ret != 200 {
+					br.Msg = "未搜索到该指标"
+					br.ErrMsg = respItem.ErrMsg + ";EdbCode:" + edbCode
+					return
+				}
+				isAdd = true
+			}
+
+			//获取指标信息
+
+			indexInfo, err := data_manage.GetBaseInfoFromIcpiByIndexCode(edbCode)
+			if err != nil && err.Error() != utils.ErrNoRow() {
+				br.Msg = "获取失败"
+				br.ErrMsg = "获取上期所指标详情失败,Err:" + err.Error()
+				return
+			}
+
+			if indexInfo != nil {
+				searchItem.Frequency = "日度"
+				searchItem.Unit = "%"
+				searchItem.EdbName = indexInfo.IndexName
+			}
 		} else {
 			// 代码中没有的来源那么从edb_source中找是否有对应的
 			sourceItem := data_manage.EdbSourceIdMap[source]
@@ -2186,7 +2234,7 @@ func (this *EdbInfoController) EdbInfoAdd() {
 		if edbInfo.Source == utils.DATA_SOURCE_MYSTEEL_CHEMICAL {
 			go data_stat.AddEdbInfoUpdateLog(edbInfo.EdbInfoId, 1, "", sysUser, 2)
 		}
-		
+
 		edbLog := new(data_manage.EdbInfoLog)
 		edbLog.EdbInfoId = edbInfo.EdbInfoId
 		edbLog.SourceName = edbInfo.SourceName
@@ -4199,7 +4247,7 @@ func (this *EdbInfoController) SetEdbDataInsertConfig() {
 // TraceEdbInfo
 // @Title 指标溯源接口
 // @Description 指标溯源接口
-// @Param   EdbInfoId   query   int  true       "指标id"
+// @Param   UniqueCode   query   int  true       "指标唯一编码,如果是管理后台访问,传固定字符串:7c69b590249049942070ae9dcd5bf6dc"
 // @Success 200 {object} data_manage.ChartListResp
 // @router /edb_info/trace [get]
 func (this *EdbInfoController) TraceEdbInfo() {
@@ -4215,14 +4263,32 @@ func (this *EdbInfoController) TraceEdbInfo() {
 		br.Ret = 408
 		return
 	}
-	edbInfoId, _ := this.GetInt("EdbInfoId")
-	if edbInfoId <= 0 {
+	//edbInfoId, _ := this.GetInt("EdbInfoId")
+	//if edbInfoId <= 0 {
+	//	br.Msg = "参数错误"
+	//	br.ErrMsg = "参数错误"
+	//	return
+	//}
+
+	uniqueCode := this.GetString("UniqueCode")
+	if uniqueCode == `` {
 		br.Msg = "参数错误"
 		br.ErrMsg = "参数错误"
 		return
 	}
 
-	resp, err := data.TraceEdbInfoByEdbInfoId(edbInfoId)
+	//  根据UniqueCode获取指标信息
+	edbInfo, err := data_manage.GetEdbInfoByUniqueCode(uniqueCode)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.Msg = "获取失败,Err:" + err.Error()
+		if err.Error() == utils.ErrNoRow() {
+			br.Msg = "指标不存在"
+		}
+		return
+	}
+
+	resp, err := data.TraceEdbInfoByEdbInfoId(edbInfo.EdbInfoId)
 	if err != nil {
 		br.Msg = "获取失败"
 		br.Msg = "获取失败,Err:" + err.Error()

+ 8 - 0
controllers/resource.go

@@ -254,6 +254,10 @@ func (this *ResourceController) VideoUpload() {
 	//savePath := utils.Upload_Audio_Dir + time.Now().Format("200601/20060102/")
 	//savePath += fileName
 
+	defer func() {
+		_ = os.Remove(fpath)
+	}()
+
 	//上传到阿里云 和 minio
 	resourceUrl := ``
 	//if utils.ObjectStorageClient == "minio" {
@@ -441,6 +445,10 @@ func (this *ResourceController) VoiceUpload() {
 	utils.FileLog.Info("start update oss ")
 	utils.FileLog.Info(fmt.Sprintf("%s:", time.Now().Format(utils.FormatDateTime)))
 
+	defer func() {
+		_ = os.Remove(fpath)
+	}()
+
 	//savePath := utils.Upload_Audio_Dir + time.Now().Format("200601/20060102/")
 	//savePath += fileName
 	//上传到阿里云 和 minio

+ 2 - 0
models/data_manage/edb_data_base.go

@@ -165,6 +165,8 @@ func GetEdbDataTableName(source, subSource int) (tableName string) {
 		tableName = "edb_data_calculate_zdyfx" // 自定义分析->74
 	case utils.DATA_SOURCE_CALCULATE_RJZ: //日均值->75
 		tableName = "edb_data_calculate_rjz"
+	case utils.DATA_SOURCE_ICPI: //icpi->79
+		tableName = "edb_data_icpi"
 	default:
 		edbSource := EdbSourceIdMap[source]
 		if edbSource != nil {

+ 39 - 0
models/data_manage/edb_data_icpi.go

@@ -0,0 +1,39 @@
+package data_manage
+
+import (
+	"fmt"
+	"github.com/beego/beego/v2/client/orm"
+)
+
+type IcpiData struct {
+	InputValue string `orm:"column(DATA_VALUE)" description:"日期"`
+	DataTime   string `orm:"column(DATA_DATE)" description:"值"`
+}
+
+func GetEdbDataIcpiMaxOrMinDate(edbCode string) (minDate, maxDate string, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT MIN(data_time) AS minDate,MAX(data_time) AS maxDate FROM edb_data_icpi WHERE edb_code=? `
+	err = o.Raw(sql, edbCode).QueryRow(&minDate, &maxDate)
+	return
+}
+
+type IcpiIndexView struct {
+	BaseFromTradeGuangzhouIndexId    int     `description:"指标id"`
+	BaseFromTradeGuangzhouClassifyId int     `description:"分类id"`
+	IndexCode                        string  `description:"指标编码"`
+	IndexName                        string  `description:"指标名称"`
+	Frequency                        string  `description:"频率"`
+	Unit                             string  `description:"单位"`
+	StartDate                        string  `description:"开始日期"`
+	EndDate                          string  `description:"结束日期"`
+	Value                            float64 `description:"数据"`
+}
+
+// GetBaseInfoFromShByIndexCode 获取指标信息
+func GetBaseInfoFromIcpiByIndexCode(indexCode string) (item *IcpiIndexView, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM base_from_icpi_index WHERE index_code=? `
+	sql = fmt.Sprintf(sql)
+	err = o.Raw(sql, indexCode).QueryRow(&item)
+	return
+}

+ 14 - 0
models/data_manage/edb_info.go

@@ -147,6 +147,20 @@ func GetEdbInfoById(edbInfoId int) (item *EdbInfo, err error) {
 	return
 }
 
+// GetEdbInfoByUniqueCode
+// @Description: 根据uniqueCode获取指标详情
+// @author: Roc
+// @datetime 2024-01-18 13:40:01
+// @param uniqueCode string
+// @return item *EdbInfo
+// @return err error
+func GetEdbInfoByUniqueCode(uniqueCode string) (item *EdbInfo, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT * FROM edb_info WHERE unique_code=? `
+	err = o.Raw(sql, uniqueCode).QueryRow(&item)
+	return
+}
+
 // GetEdbInfoByIdList 根据指标id集合 获取 指标列表
 func GetEdbInfoByIdList(edbInfoIdList []int) (items []*EdbInfo, err error) {
 	num := len(edbInfoIdList)

+ 6 - 3
models/data_manage/edb_info_calculate_mapping.go

@@ -84,15 +84,18 @@ type EdbInfoCalculateMappingInfo struct {
 	Sort                      int       `description:"计算指标名称排序"`
 	CreateTime                time.Time `description:"创建时间"`
 	ModifyTime                time.Time `description:"修改时间"`
-	EdbType                   int       `description:"指标类型:1:基础指标,2:计算指标"`
+	FromEdbType               int       `description:"来源指标类型:1:基础指标,2:计算指标"`
+	FromEdbInfoType           int       `description:"来源指标类型: 0-基础指标; 1-预测指标"`
+	FromClassifyId            int       `description:"来源指标分类ID"`
+	FromUniqueCode            string    `description:"来源指标唯一编码"`
 }
 
 // GetEdbInfoCalculateMappingListByEdbInfoId 根据生成的指标id获取来源的指标id列表
 func GetEdbInfoCalculateMappingListByEdbInfoId(edbInfoId int) (items []*EdbInfoCalculateMappingInfo, err error) {
 	o := orm.NewOrmUsingDB("data")
-	sql := ` SELECT a.*,b.edb_type FROM edb_info_calculate_mapping AS a
+	sql := ` SELECT a.*,b.edb_type as from_edb_type,b.edb_info_type as from_edb_info_type, b.unique_code AS from_unique_code, b.classify_id AS from_classify_id FROM edb_info_calculate_mapping AS a
 			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
 			WHERE a.edb_info_id=? `
 	_, err = o.Raw(sql, edbInfoId).QueryRows(&items)
 	return
-}
+}

+ 4 - 0
services/data/base_edb_lib.go

@@ -68,6 +68,8 @@ func AddEdbData(source int, edbCode string) (resp *models.BaseResponse, err erro
 		urlStr = "fubao/add"
 	case utils.DATA_SOURCE_GFEX:
 		urlStr = "gz/add"
+	case utils.DATA_SOURCE_ICPI:
+		urlStr = "icpi/add"
 	default:
 		edbSource := data_manage.EdbSourceIdMap[source]
 		if edbSource != nil {
@@ -156,6 +158,8 @@ func RefreshEdbData(edbInfoId, source int, edbCode, startDate string) (resp *mod
 		urlStr = "fubao/refresh"
 	case utils.DATA_SOURCE_GFEX:
 		urlStr = "gz/refresh"
+	case utils.DATA_SOURCE_ICPI:
+		urlStr = "icpi/refresh"
 	default:
 		edbSource := data_manage.EdbSourceIdMap[source]
 		if edbSource != nil {

+ 2 - 1
services/data/edb_info.go

@@ -1299,7 +1299,8 @@ func traceEdbInfoByEdbInfoId(edbInfoId int, traceEdbInfo data_manage.TraceEdbInf
 			//RuleTitle: edbInfoRuleMap[v.EdbInfoId],
 			//Child:     make([]data_manage.TraceEdbInfoResp, 0),
 		}
-		if v.EdbType == 2 { // 计算指标
+		// 计算指标/预测指标继续溯源
+		if edbInfoId != v.FromEdbInfoId && (v.FromEdbType == 2 || v.FromEdbInfoType == 1) {
 			// 查过了就不查了
 			if _, ok2 := findIdMap[tmpEdbInfoId]; !ok2 {
 				tmpTraceEdbInfo.Child, err = traceEdbInfoByEdbInfoId(tmpEdbInfoId, tmpTraceEdbInfo, edbInfoRuleMap, findIdMap, existMap, edbMappingMap)

+ 1 - 0
utils/constants.go

@@ -161,6 +161,7 @@ const (
 	DATA_SOURCE_CALCULATE_ZDYFX                                 // 自定义分析->74
 	DATA_SOURCE_CALCULATE_RJZ                                   // 日均值计算->75
 	DATA_SOURCE_GFEX                                 = 78       // 广州期货交易所->76
+	DATA_SOURCE_ICPI                                 = 79       // ICPI消费价格指数->79
 )
 
 // 数据刷新频率