Explorar o código

fix:eiaSteo指标数据同步

zqbao hai 6 meses
pai
achega
da6a2c814d
Modificáronse 3 ficheiros con 106 adicións e 0 borrados
  1. 1 0
      .gitignore
  2. 28 0
      models/data_manage/base_from_eia_steo.go
  3. 77 0
      services/eia_steo.go

+ 1 - 0
.gitignore

@@ -15,3 +15,4 @@ eta_task
 /README.md
 /eta_task.exe~
 /*.mod
+/test/

+ 28 - 0
models/data_manage/base_from_eia_steo.go

@@ -2,6 +2,7 @@ package data_manage
 
 import (
 	"eta/eta_task/utils"
+
 	"time"
 
 	"github.com/beego/beego/v2/client/orm"
@@ -58,6 +59,13 @@ func GetBaseFromEiaSteoIndexAll(dateStr string) (list []*BaseFromEiaSteoIndex, e
 	return
 }
 
+func GetBaseFromEiaSteoIndexCodeListByDate(dateStr string) (list []string, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT index_code FROM base_from_eia_steo_index WHERE modify_time>=?`
+	_, err = o.Raw(sql, dateStr).QueryRows(&list)
+	return
+}
+
 // Update 更新作者基础信息
 func (item *BaseFromEiaSteoIndex) Update(cols []string) (err error) {
 	o := orm.NewOrm()
@@ -98,6 +106,12 @@ type BaseFromEiaSteoData struct {
 	CreateTime             time.Time `description:"创建时间"`
 }
 
+func (b *BaseFromEiaSteoData) Update(cols []string) (err error) {
+	o := orm.NewOrm()
+	_, err = o.Update(b, cols...)
+	return
+}
+
 func AddBaseFromEiaSteoData(item *BaseFromEiaSteoData) (lastId int64, err error) {
 	o := orm.NewOrm()
 	lastId, err = o.Insert(item)
@@ -165,6 +179,20 @@ func GetBaseFromEiaSteoIndexDataAll(dateStr string) (list []*BaseFromEiaSteoData
 	return
 }
 
+func GetBaseFromEiaSteoIndexDataByIndexCode(indexCode string) (list []*BaseFromEiaSteoData, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM base_from_eia_steo_data WHERE index_code>=?`
+	_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	return
+}
+
+func GetBaseFromEiaSteoIndexDataByDate(dateStr string) (list []*BaseFromEiaSteoData, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM base_from_eia_steo_data WHERE modify_time>=?`
+	_, err = o.Raw(sql, dateStr).QueryRows(&list)
+	return
+}
+
 func GetBaseFromEiaSteoIndexMaxDate() (max_date time.Time, err error) {
 	o := orm.NewOrm()
 	sql := ` SELECT max(a.data_time)as max_date FROM base_from_eia_steo_data as a `

+ 77 - 0
services/eia_steo.go

@@ -186,3 +186,80 @@ func SyncEiaSteoClassify() (err error) {
 	}
 	return err
 }
+
+func SyncEiaSteoIndexDataV2() (err error) {
+	startDate := time.Now().Format(utils.FormatDate) + " 00:00:00"
+
+	method := `index/data/list`
+
+	//获取所有指标信息  某一天的
+	allIndexCode, err := data_manage.GetBaseFromEiaSteoIndexCodeListByDate(startDate)
+	if err != nil {
+		fmt.Println("get GetBaseFromEiaSteoIndexAll err:" + err.Error())
+		utils.FileLog.Info("get GetBaseFromEiaSteoIndexCodeList err:", err)
+		return
+	}
+
+	for _, indexCode := range allIndexCode {
+
+		data := make(map[string]interface{})
+		data["Source"] = utils.DATA_SOURCE_EIA_STEO
+		data["StartDate"] = startDate
+		data["IndexCode"] = indexCode
+
+		var result string
+		result, err = HttpPost("SyncEiaSteoIndexData", method, data)
+		if err != nil {
+			fmt.Println("HttpPost err:", err)
+			utils.FileLog.Info("HttpPost err:", err)
+			return
+		}
+		utils.FileLog.Info(result)
+		fmt.Println(result)
+
+		respObj := new(data_manage.EiaSteoIndexDataResp)
+		err = json.Unmarshal([]byte(result), &respObj)
+		if err != nil {
+			fmt.Println("json.Unmarshal err:" + err.Error())
+			return err
+		}
+
+		existDataMap := make(map[int]*data_manage.BaseFromEiaSteoData)
+		allData, err1 := data_manage.GetBaseFromEiaSteoIndexDataByIndexCode(indexCode)
+		if err1 != nil {
+			utils.FileLog.Error("get GetBaseFromEiaSteoIndexDataByDate err:", err1.Error())
+			return
+		}
+		for _, dv := range allData {
+			existDataMap[dv.BaseFromEiaSteoDataId] = dv
+		}
+
+		for _, dv := range respObj.Data {
+			if v, ok := existDataMap[dv.BaseFromEiaSteoDataId]; !ok {
+				newID, err := data_manage.AddBaseFromEiaSteoData(dv)
+				if err != nil {
+					utils.FileLog.Error("add error:", err)
+				}
+				fmt.Println("insert new indexID:", newID)
+			} else {
+				upDateCols := make([]string, 0)
+				if !v.DataTime.Equal(dv.DataTime) {
+					v.DataTime = dv.DataTime
+					upDateCols = append(upDateCols, "DataTime")
+				}
+				if v.Value != dv.Value {
+					v.Value = dv.Value
+					v.ModifyTime = dv.ModifyTime
+					upDateCols = append(upDateCols, []string{"Value", "ModifyTime"}...)
+				}
+				if len(upDateCols) > 0 {
+					err = v.Update(upDateCols)
+					if err != nil {
+						utils.FileLog.Error("update error:", err)
+					}
+				}
+			}
+		}
+	}
+	return err
+}