瀏覽代碼

新增彭博数据刷新

rdluck 3 年之前
父節點
當前提交
f2232d8fd6
共有 5 個文件被更改,包括 187 次插入0 次删除
  1. 58 0
      models/data_manage/edb_data_pb.go
  2. 88 0
      services/data_manage/data_pb.go
  3. 38 0
      services/data_manage/edb_info.go
  4. 2 0
      services/task.go
  5. 1 0
      utils/constants.go

+ 58 - 0
models/data_manage/edb_data_pb.go

@@ -0,0 +1,58 @@
+package data_manage
+
+import (
+	"rdluck_tools/orm"
+	"time"
+)
+
+type EdbDataPb struct {
+	EdbDataId  int `orm:"column(edb_data_id);pk"`
+	EdbInfoId  int
+	EdbCode    string
+	DataTime   string
+	Value      float64
+	Status     int
+	CreateTime time.Time
+	ModifyTime time.Time
+	Ticker     string
+	Field      string
+}
+
+func AddEdbDataPb(items []*EdbDataPb) (err error) {
+	o := orm.NewOrm()
+	o.Using("data")
+	_, err = o.InsertMulti(1, items)
+	return
+}
+
+func ModifyEdbDataPb(edbInfoId int64, dataTime string, value float64) (err error) {
+	o := orm.NewOrm()
+	o.Using("data")
+	sql := ` UPDATE edb_data_pb SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
+	_, err = o.Raw(sql, value, edbInfoId, dataTime).Exec()
+	return
+}
+
+func ModifyEdbDataPbStatus(edbInfoId int64, edbCode string) (err error) {
+	o := orm.NewOrm()
+	o.Using("data")
+	sql := ` UPDATE edb_data_pb SET edb_info_id=?, status=1,modify_time=NOW() WHERE edb_code=? `
+	_, err = o.Raw(sql, edbInfoId, edbCode).Exec()
+	return
+}
+
+func GetEdbDataPbCount(edbInfoId int64, dataTime string) (count int, err error) {
+	o := orm.NewOrm()
+	o.Using("data")
+	sql := ` SELECT COUNT(1) AS count FROM edb_data_pb WHERE edb_info_id=? AND data_time=? `
+	err = o.Raw(sql, edbInfoId, dataTime).QueryRow(&count)
+	return
+}
+
+func GetEdbDataPbMaxOrMinDate(edbInfoId int) (min_date, max_date string, err error) {
+	o := orm.NewOrm()
+	o.Using("data")
+	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date FROM edb_data_pb WHERE edb_info_id=? `
+	err = o.Raw(sql, edbInfoId).QueryRow(&min_date, &max_date)
+	return
+}

+ 88 - 0
services/data_manage/data_pb.go

@@ -0,0 +1,88 @@
+package data_manage
+
+import (
+	"encoding/json"
+	"fmt"
+	"hongze/hongze_task/models/data_manage"
+	"hongze/hongze_task/utils"
+	"rdluck_tools/http"
+	"time"
+)
+
+type EdbDataFromPb struct {
+	Date   map[string]int64   `json:"date"`
+	Ticker map[string]string  `json:"ticker"`
+	Field  map[string]string  `json:"field"`
+	Value  map[string]float64 `json:"value"`
+}
+
+//万得
+func SyncEdbDataByPb(edbInfoId int64, edbCode, startDate, endDate string) (err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println("SyncEdbDataByPb Err:" + err.Error())
+		}
+	}()
+
+	pbUrl := utils.Hz_Data_PB_Url + `edbInfo/pb?EdbCode=%s&StartDate=%s&EndDate=%s`
+	pbUrl = fmt.Sprintf(pbUrl, edbCode, startDate, endDate)
+	utils.FileLog.Info("pbUrl:%s", pbUrl)
+	body, err := http.Get(pbUrl)
+	fmt.Println(pbUrl)
+	fmt.Println("SyncEdbDataByPb body:")
+	fmt.Println(string(body))
+	utils.FileLog.Info("pb %s", string(body))
+
+	if err != nil {
+		return
+	}
+	item := new(EdbDataFromPb)
+	err = json.Unmarshal(body, &item)
+	if err != nil {
+		return
+	}
+
+	pbList := make([]*data_manage.EdbDataPb, 0)
+	if len(item.Date) > 0 {
+		dateMap := item.Date
+		for k, v := range dateMap {
+			v = v / 1000
+			t := time.Unix(v, 0)
+			dateTime := t.Format(utils.FormatDate)
+
+			val := item.Value[k]
+			field := item.Field[k]
+			ticker := item.Ticker[k]
+
+			count, err := data_manage.GetEdbDataPbCount(edbInfoId, dateTime)
+			if err != nil {
+				return err
+			}
+			if count > 0 {
+				err = data_manage.ModifyEdbDataPb(edbInfoId, dateTime, val)
+				if err != nil {
+					return err
+				}
+			} else {
+				item := new(data_manage.EdbDataPb)
+				item.EdbCode = edbCode
+				item.EdbInfoId = int(edbInfoId)
+				item.CreateTime = time.Now()
+				item.ModifyTime = time.Now()
+				item.DataTime = dateTime
+				item.Value = val
+				item.Status = 1
+				item.Field=field
+				item.Ticker=ticker
+				pbList = append(pbList, item)
+			}
+		}
+	}
+	if len(pbList) > 0 {
+		err = data_manage.AddEdbDataPb(pbList)
+		if err != nil {
+			return
+		}
+	}
+	return
+}

+ 38 - 0
services/data_manage/edb_info.go

@@ -84,6 +84,44 @@ func RefreshDataFromWind() (err error) {
 	return err
 }
 
+
+//刷新彭博数据
+func RefreshDataFromPb() (err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println("RefreshDataFromPb Err:" + err.Error())
+			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromPb ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+		}
+	}()
+	var condition string
+	var pars []interface{}
+	condition += " AND source=? "
+	pars = append(pars, utils.DATA_SOURCE_PB)
+	items, err := data_manage.GetEdbInfoByCondition(condition, pars)
+	if err != nil {
+		return errors.New("GetEdbInfoByCondition:" + err.Error())
+	}
+
+	for _, v := range items {
+		startDate := v.EndDate.AddDate(0, 0, -3).Format(utils.FormatDate)
+		endDate := time.Now().Format(utils.FormatDate)
+		err = SyncEdbDataByPb(int64(v.EdbInfoId), v.EdbCode, startDate, endDate)
+		if err != nil {
+			return errors.New("SyncEdbDataByPb:" + err.Error())
+		}
+		minDate, maxDate, err := data_manage.GetEdbDataThsMaxOrMinDate(v.EdbInfoId)
+		if err != nil {
+			return errors.New("GetEdbDataThsMaxOrMinDate:" + err.Error())
+		}
+		fmt.Println("minDate:" + minDate + ";maxDate:" + maxDate)
+		err = data_manage.ModifyEdbDataInfoDate(v.EdbInfoId, maxDate)
+		if err != nil {
+			return errors.New("ModifyEdbDataInfoDate:" + err.Error())
+		}
+	}
+	return err
+}
+
 func CheckDataInterface() (err error) {
 	checkUrl := utils.Hz_Data_Url + `hz_server`
 	body, err := http.Get(checkUrl)

+ 2 - 0
services/task.go

@@ -134,5 +134,7 @@ func RefreshData() (err error){
 	go data_manage.RefreshDataFromWind()
 	//同花顺
 	go data_manage.RefreshDataFromThs()
+	//彭博
+	go data_manage.RefreshDataFromPb()
 	return
 }

+ 1 - 0
utils/constants.go

@@ -64,6 +64,7 @@ const (
 const (
 	DATA_SOURCE_THS  = iota + 1 //同花顺
 	DATA_SOURCE_WIND            //wind
+	DATA_SOURCE_PB              //彭博
 )
 
 //http://datawind.hzinsights.com:8040/hz_server