xyxie 2 месяцев назад
Родитель
Сommit
94f2d8b07b
3 измененных файлов с 333 добавлено и 0 удалено
  1. 148 0
      models/data_manage/base_from_gpr_risk.go
  2. 164 0
      services/gpr_risk.go
  3. 21 0
      services/sync_hz_data.go

+ 148 - 0
models/data_manage/base_from_gpr_risk.go

@@ -0,0 +1,148 @@
+package data_manage
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"github.com/rdlucklib/rdluck_tools/paging"
+	"time"
+)
+
+type BaseFromGprRiskIndex struct {
+	BaseFromGprRiskIndexId int `orm:"column(base_from_gpr_risk_index_id);pk"`
+	ClassifyId             int
+	IndexCode              string
+	IndexName              string
+	Frequency              string
+	Unit                   string
+	Sort                   int
+	StartDate              string `description:"开始日期"`
+	EndDate                string `description:"结束日期"`
+	EndValue               float64
+	CreateTime             time.Time
+	ModifyTime             time.Time
+}
+
+// BaseFromGprRiskClassify GprRisk原始数据分类表
+type BaseFromGprRiskClassify struct {
+	ClassifyId      int       `orm:"column(classify_id);pk"`
+	ClassifyName    string    `description:"分类名称"`
+	ParentId        int       `description:"父级id"`
+	SysUserId       int       `description:"创建人id"`
+	SysUserRealName string    `description:"创建人姓名"`
+	Level           int       `description:"层级"`
+	Sort            int       `description:"排序字段,越小越靠前,默认值:10"`
+	ModifyTime      time.Time `description:"修改时间"`
+	CreateTime      time.Time `description:"创建时间"`
+}
+
+func GetBaseFromGprRiskIndexMaxDate() (max_date time.Time, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT max(a.modify_time)as max_date FROM base_from_gpr_risk_data as a `
+	err = o.Raw(sql).QueryRow(&max_date)
+	return
+}
+
+type GprRiskIndexResp struct {
+	Ret     int
+	Msg     string
+	ErrMsg  string
+	ErrCode string
+	Data    []*BaseFromGprRiskIndex
+}
+
+func GetBaseFromGprRiskIndexAll(dateStr string) (list []*BaseFromGprRiskIndex, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM base_from_gpr_risk_index WHERE end_date>=?`
+	_, err = o.Raw(sql, dateStr).QueryRows(&list)
+	return
+}
+
+func (obj *BaseFromGprRiskIndex) AddBaseFromGprRiskIndex(item *BaseFromGprRiskIndex) (lastId int64, err error) {
+	o := orm.NewOrm()
+	lastId, err = o.Insert(item)
+	return
+}
+
+func (obj *BaseFromGprRiskIndex) InsertOrUpdateBaseFromGprRiskIndex(item *BaseFromGprRiskIndex) (lastId int64, err error) {
+	o := orm.NewOrm()
+	lastId, err = o.InsertOrUpdate(item)
+	return
+}
+
+type GprRiskClassifyResp struct {
+	Ret     int
+	Msg     string
+	ErrMsg  string
+	ErrCode string
+	Data    []*BaseFromGprRiskClassify
+}
+
+func GetBaseFromGprRiskClassifyAll() (list []*BaseFromGprRiskClassify, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM base_from_gpr_risk_classify `
+	_, err = o.Raw(sql).QueryRows(&list)
+	return
+}
+
+func AddBaseFromGprRiskClassify(item *BaseFromGprRiskClassify) (lastId int64, err error) {
+	o := orm.NewOrm()
+	lastId, err = o.Insert(item)
+	return
+}
+
+func InsertOrUpdateBaseFromGprRiskClassify(item *BaseFromGprRiskClassify) (lastId int64, err error) {
+	o := orm.NewOrm()
+	lastId, err = o.InsertOrUpdate(item)
+	return
+}
+
+// GetBaseFromComTradeMaxDate 获取GprRisk消费者指数最大数据
+func GetBaseFromGprRiskMaxDate() (max_date time.Time, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT max(a.modify_time)as max_date FROM base_from_gpr_risk_data as a `
+	err = o.Raw(sql).QueryRow(&max_date)
+	return
+}
+
+type BaseFromGprRiskData struct {
+	BaseFromGprRiskDataId  int       `orm:"column(base_from_gpr_risk_data_id);pk"`
+	BaseFromGprRiskIndexId int       `description:"指标id"`
+	IndexCode              string    `description:"指标编码"`
+	DataTime               string    `description:"日期"`
+	Value                  string    `description:"值"`
+	CreateTime             time.Time `description:"创建时间"`
+	ModifyTime             time.Time `description:"修改时间"`
+}
+
+// GetAllComTradeDataList 获取GprRisk消费者指数数据
+func GetAllBaseFromGprRiskDataList(startDate string) (list []*BaseFromGprRiskData, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM base_from_gpr_risk_data WHERE modify_time>=?  ORDER BY base_from_gpr_risk_data_id ASC `
+	_, err = o.Raw(sql, startDate).QueryRows(&list)
+	return
+}
+
+type BaseFromGprRiskDataResp struct {
+	Ret     int
+	Msg     string
+	ErrMsg  string
+	ErrCode string
+	Data    BaseFromGprRiskDataIndexAndDataResp
+}
+
+// ComTradeIndexDataResp 分页列表响应体
+type BaseFromGprRiskDataIndexAndDataResp struct {
+	List   []*BaseFromGprRiskData
+	Paging *paging.PagingItem `description:"分页数据"`
+}
+
+// MultiAddBaseFromComTradeData 批量添加数据
+func MultiAddBaseFromGprRiskDataIndex(items []*BaseFromGprRiskData) (lastId int64, err error) {
+	num := len(items)
+	if num <= 0 {
+		return
+	}
+	o := orm.NewOrm()
+	lastId, err = o.InsertMulti(num, items)
+
+	return
+}

+ 164 - 0
services/gpr_risk.go

@@ -0,0 +1,164 @@
+package services
+
+import (
+	"encoding/json"
+	"errors"
+	"eta/eta_task/models/data_manage"
+	"eta/eta_task/utils"
+	"fmt"
+	"time"
+)
+
+// UsdaFasGPR地缘风险指数指标数据同步
+func SyncBaseFromGprRisk() (err error) {
+	var startDate string
+	maxDate, err := data_manage.GetBaseFromGprRiskIndexMaxDate()
+	if err != nil || maxDate.IsZero() {
+		startDate = time.Now().AddDate(0, 0, -1).Format(utils.FormatDate) + " 00:00:00"
+	} else {
+		startDate = maxDate.Format(utils.FormatDateTime)
+	}
+
+	method := `index/list`
+	data := make(map[string]interface{})
+	data["Source"] = utils.DATA_SOURCE_USDA_FAS
+	data["StartDate"] = startDate
+	//data["EndDate"] = endDate
+	result, err := HttpPost("SyncRankingFromGprRisk", method, data)
+	utils.FileLog.Info(result)
+	fmt.Println(result)
+
+	respObj := new(data_manage.GprRiskIndexResp)
+	err = json.Unmarshal([]byte(result), &respObj)
+	if err != nil {
+		utils.FileLog.Info("err:", err.Error())
+		fmt.Println("err:", err.Error())
+		return err
+	}
+
+	GprRiskObj := new(data_manage.BaseFromGprRiskIndex)
+
+	for _, zv := range respObj.Data {
+		newID, err := GprRiskObj.InsertOrUpdateBaseFromGprRiskIndex(zv)
+		if err != nil {
+			fmt.Println("InsertOrUpdateBaseFromGprRiskIndex error:", err)
+		}
+		fmt.Println("InsertOrUpdateBaseFromGprRiskIndex new indexID:", newID)
+	}
+	return err
+}
+
+// GprRiskGPR地缘风险指数-分类
+func SyncBaseFromGprRiskClassify() (err error) {
+	data := make(map[string]interface{})
+	data["Source"] = utils.DATA_SOURCE_USDA_FAS
+	method := `classify/list`
+	result, err := HttpPost("SyncBaseFromGprRiskClassify", method, data)
+	if err != nil {
+		fmt.Println("SyncBaseFromGprRiskClassify HttpPost Err:", err.Error())
+	}
+	utils.FileLog.Info(result)
+	fmt.Println("SyncBaseFromGprRiskClassify result:", result)
+
+	respObj := new(data_manage.GprRiskClassifyResp)
+	err = json.Unmarshal([]byte(result), &respObj)
+	if err != nil {
+		return err
+	}
+	//获取所有分类
+	/*	allClassify, err := data_manage.GetBaseFromGprRiskClassifyAll()
+		if err != nil {
+			return
+		}
+
+		existIndexMap := make(map[int]*data_manage.BaseFromGprRiskClassify)
+		for _, v := range allClassify {
+			existIndexMap[v.BaseFromGprRiskClassifyId] = v
+		}*/
+
+	for _, item := range respObj.Data {
+		//if _, ok := existIndexMap[item.BaseFromGprRiskClassifyId]; !ok {
+		newID, err := data_manage.InsertOrUpdateBaseFromGprRiskClassify(item)
+		if err != nil {
+			fmt.Println("InsertOrUpdateBaseFromGprRiskClassify error:", err)
+		}
+		fmt.Println("InsertOrUpdateBaseFromGprRiskClassify new indexID:", newID)
+		//}
+	}
+	return err
+}
+
+// GprRiskGPR地缘风险指数-数据
+func SyncBaseFromGprRiskData() (err error) {
+	startDate := time.Now().Format(utils.FormatDate) + " 00:00:00"
+	//var startDate string
+	maxDate, err := data_manage.GetBaseFromGprRiskMaxDate()
+	if err != nil || maxDate.IsZero() {
+		startDate = time.Now().AddDate(0, 0, -1).Format(utils.FormatDate) + " 00:00:00"
+	} else {
+		startDate = maxDate.Format(utils.FormatDateTime)
+	}
+
+	method := `index/data/list_page`
+
+	existDataMap := make(map[string]*data_manage.BaseFromGprRiskData)
+	allData, err1 := data_manage.GetAllBaseFromGprRiskDataList(startDate)
+	if err1 != nil {
+		fmt.Println("get GetAllBaseFromGprRiskDataList err:" + err1.Error())
+		return
+	}
+	for _, dv := range allData {
+		tmpKey := dv.IndexCode + "_" + dv.DataTime
+		existDataMap[tmpKey] = dv
+	}
+
+	//获取所有指标信息  某一天的
+	maxPage := 1
+
+	for currPage := 0; currPage < maxPage; currPage++ {
+		data := make(map[string]interface{})
+		data["Source"] = utils.DATA_SOURCE_USDA_FAS
+		data["StartDate"] = startDate
+		data["CurrPage"] = currPage
+		data["PageSize"] = 500 //
+
+		var result string
+		result, err = HttpPost("SyncBaseFromGprRiskData", method, data)
+		utils.FileLog.Info(result)
+		fmt.Println(result)
+
+		respObj := new(data_manage.BaseFromGprRiskDataResp)
+		err = json.Unmarshal([]byte(result), &respObj)
+		if err != nil {
+			fmt.Println("json.Unmarshal err:" + err.Error())
+			return err
+		}
+		if respObj.Ret != 200 {
+			err = errors.New(respObj.ErrMsg)
+			return
+		}
+		// 总页码数
+		maxPage = respObj.Data.Paging.Pages
+
+		addDataList := make([]*data_manage.BaseFromGprRiskData, 0)
+		if respObj.Data.List != nil && len(respObj.Data.List) > 0 {
+			for _, dv := range respObj.Data.List {
+				tmpKey := dv.IndexCode + "_" + dv.DataTime
+				if _, ok := existDataMap[tmpKey]; !ok {
+					addDataList = append(addDataList, dv)
+					existDataMap[tmpKey] = dv
+				}
+			}
+		}
+
+		// 最后如果还有数据未插入,那么继续插入吧
+		if len(addDataList) > 0 {
+			_, err = data_manage.MultiAddBaseFromGprRiskDataIndex(addDataList)
+			if err != nil {
+				fmt.Println("MultiAddBaseFromGprRiskDataIndex error:", err)
+			}
+		}
+	}
+
+	return err
+}

+ 21 - 0
services/sync_hz_data.go

@@ -155,6 +155,27 @@ func SyncHzDataIndex(cont context.Context) (err error) {
 		}
 	}
 
+	//GPR地缘风险指数
+	{
+		/*	//分类信息
+			err = SyncBaseFromGprRiskClassify()
+			if err != nil {
+				fmt.Println("SyncBaseFromGprRiskClassify Err:" + err.Error())
+				return
+			}*/
+		//指标信息
+		err = SyncBaseFromGprRisk()
+		if err != nil {
+			fmt.Println("SyncBaseFromGprRisk Err:" + err.Error())
+			return
+		}
+		err = SyncBaseFromGprRiskData()
+		if err != nil {
+			fmt.Println("SyncBaseFromGprRiskData Err:" + err.Error())
+			return
+		}
+	}
+
 	// 同步指标数据
 	SyncHzDataIndexData()