浏览代码

新增icpi数据推送

tuoling805 1 年之前
父节点
当前提交
6957b17bd3
共有 5 个文件被更改,包括 196 次插入1 次删除
  1. 76 0
      models/data_manage/base_from_icpi.go
  2. 3 0
      models/db.go
  3. 98 0
      services/icpi.go
  4. 18 0
      services/sync_hz_data.go
  5. 1 1
      utils/constants.go

+ 76 - 0
models/data_manage/base_from_icpi.go

@@ -0,0 +1,76 @@
+package data_manage
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type BaseFromIcpiIndex struct {
+	BaseFromIcpiIndexId    int       `orm:"column(base_from_icpi_index_id);pk"`
+	BaseFromIcpiClassifyId int       `description:"分类id"`
+	IndexCode              string    `description:"指标编码"`
+	IndexName              string    `description:"指标名称"`
+	Frequency              string    `description:"频度"`
+	StartDate              time.Time `description:"开始日期"`
+	EndDate                time.Time `description:"结束日期"`
+	CreateTime             time.Time `description:"创建时间"`
+	ModifyTime             time.Time `description:"修改时间"`
+}
+
+func GetBaseFromIcpiIndexMaxDate() (max_date time.Time, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT max(a.data_time)as max_date FROM base_from_icpi_data as a `
+	err = o.Raw(sql).QueryRow(&max_date)
+	return
+}
+
+type IcpiIndexResp struct {
+	Ret     int
+	Msg     string
+	ErrMsg  string
+	ErrCode string
+	Data    []*BaseFromIcpiIndex
+}
+
+func GetBaseFromIcpiIndexAll(dateStr string) (list []*BaseFromIcpiIndex, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM base_from_icpi_index WHERE end_date>=?`
+	_, err = o.Raw(sql, dateStr).QueryRows(&list)
+	return
+}
+
+func (obj *BaseFromIcpiIndex) AddBaseFromIcpiIndex(item *BaseFromIcpiIndex) (lastId int64, err error) {
+	o := orm.NewOrm()
+	lastId, err = o.Insert(item)
+	return
+}
+
+type BaseFromIcpiClassify struct {
+	BaseFromIcpiClassifyId int    `orm:"column(base_from_icpi_classify_id);pk"`
+	ClassifyName           string `description:"分类名称"`
+	ClassifyNameEn         string `description:"英文名称"`
+	ParentId               int    `description:"上级id"`
+	CreateTime             string `description:"创建时间"`
+	ModifyTime             string `description:"修改时间"`
+}
+
+type IcpiClassifyResp struct {
+	Ret     int
+	Msg     string
+	ErrMsg  string
+	ErrCode string
+	Data    []*BaseFromIcpiClassify
+}
+
+func GetBaseFromIcpiClassifyAll() (list []*BaseFromIcpiClassify, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM base_from_icpi_classify `
+	_, err = o.Raw(sql).QueryRows(&list)
+	return
+}
+
+func AddBaseFromIcpiClassify(item *BaseFromIcpiClassify) (lastId int64, err error) {
+	o := orm.NewOrm()
+	lastId, err = o.Insert(item)
+	return
+}

+ 3 - 0
models/db.go

@@ -114,6 +114,9 @@ func initEdbDataTable() {
 
 		//广期所
 		new(data_manage.BaseFromTradeGuangzhouClassify),
+		//ICPI
+		new(data_manage.BaseFromIcpiIndex),
+		new(data_manage.BaseFromIcpiClassify),
 	)
 }
 

+ 98 - 0
services/icpi.go

@@ -0,0 +1,98 @@
+package services
+
+import (
+	"encoding/json"
+	"eta/eta_task/models/data_manage"
+	"eta/eta_task/utils"
+	"fmt"
+	"time"
+)
+
+// ICPI消费指数指标数据同步
+func SyncBaseFromIcpi() (err error) {
+	var startDate string
+	maxDate, err := data_manage.GetBaseFromIcpiIndexMaxDate()
+	if err != nil || maxDate.IsZero() {
+		startDate = time.Now().AddDate(0, 0, -1).Format(utils.FormatDate) + " 00:00:00"
+	} else {
+		startDate = maxDate.AddDate(0, 0, 1).Format(utils.FormatDate) + " 00:00:00"
+	}
+
+	method := `index/list`
+	data := make(map[string]interface{})
+	data["Source"] = utils.DATA_SOURCE_ICPI
+	data["StartDate"] = startDate
+	//data["EndDate"] = endDate
+	result, err := HttpPost("SyncRankingFromIcpi", method, data)
+	utils.FileLog.Info(result)
+	fmt.Println(result)
+
+	respObj := new(data_manage.IcpiIndexResp)
+	err = json.Unmarshal([]byte(result), &respObj)
+	if err != nil {
+		return err
+	}
+	//获取所有指标信息  某一天的
+	allIndex, err := data_manage.GetBaseFromIcpiIndexAll(startDate)
+	if err != nil {
+		return
+	}
+
+	existIndexMap := make(map[int]*data_manage.BaseFromIcpiIndex)
+	for _, v := range allIndex {
+		existIndexMap[v.BaseFromIcpiIndexId] = v
+	}
+
+	icpiObj := new(data_manage.BaseFromIcpiIndex)
+
+	for _, zv := range respObj.Data {
+		if _, ok := existIndexMap[zv.BaseFromIcpiIndexId]; !ok {
+			newID, err := icpiObj.AddBaseFromIcpiIndex(zv)
+			if err != nil {
+				fmt.Println("insert error:", err)
+			}
+			fmt.Println("insert new indexID:", newID)
+		}
+	}
+	return err
+}
+
+// ICPI消费指数-分类
+func SyncBaseFromIcpiClassify() (err error) {
+	data := make(map[string]interface{})
+	data["Source"] = utils.DATA_SOURCE_ICPI
+	method := `classify/list`
+	result, err := HttpPost("SyncBaseFromIcpiClassify", method, data)
+	if err != nil {
+		fmt.Println("SyncBaseFromIcpiClassify HttpPost Err:", err.Error())
+	}
+	utils.FileLog.Info(result)
+	fmt.Println("SyncBaseFromIcpiClassify result:", result)
+
+	respObj := new(data_manage.IcpiClassifyResp)
+	err = json.Unmarshal([]byte(result), &respObj)
+	if err != nil {
+		return err
+	}
+	//获取所有分类
+	allClassify, err := data_manage.GetBaseFromIcpiClassifyAll()
+	if err != nil {
+		return
+	}
+
+	existIndexMap := make(map[int]*data_manage.BaseFromIcpiClassify)
+	for _, v := range allClassify {
+		existIndexMap[v.BaseFromIcpiClassifyId] = v
+	}
+
+	for _, item := range respObj.Data {
+		if _, ok := existIndexMap[item.BaseFromIcpiClassifyId]; !ok {
+			newID, err := data_manage.AddBaseFromIcpiClassify(item)
+			if err != nil {
+				fmt.Println("AddBaseFromIcpiClassify error:", err)
+			}
+			fmt.Println("AddBaseFromIcpiClassify new indexID:", newID)
+		}
+	}
+	return err
+}

+ 18 - 0
services/sync_hz_data.go

@@ -81,6 +81,8 @@ func SyncHzDataIndex(cont context.Context) (err error) {
 			fmt.Println("SyncFromGuangzhouClassify Err:" + err.Error())
 			return
 		}
+		//合约信息
+
 		//指标信息
 		err = SyncFromGuangzhouIndex()
 		if err != nil {
@@ -89,6 +91,22 @@ func SyncHzDataIndex(cont context.Context) (err error) {
 		}
 	}
 
+	//ICPI
+	{
+		//分类信息
+		err = SyncBaseFromIcpiClassify()
+		if err != nil {
+			fmt.Println("SyncBaseFromIcpiClassify Err:" + err.Error())
+			return
+		}
+		//指标信息
+		err = SyncBaseFromIcpi()
+		if err != nil {
+			fmt.Println("SyncBaseFromIcpi Err:" + err.Error())
+			return
+		}
+	}
+
 	// 同步指标数据
 	SyncHzDataIndexData()
 

+ 1 - 1
utils/constants.go

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