Browse Source

add:eiaSteo分类同步

zqbao 6 months ago
parent
commit
3c0d3e7256
4 changed files with 138 additions and 2 deletions
  1. 35 1
      models/data_manage/base_from_eia_steo.go
  2. 2 1
      models/db.go
  3. 76 0
      services/eia_steo.go
  4. 25 0
      services/sync_hz_data.go

+ 35 - 1
models/data_manage/base_from_eia_steo.go

@@ -1,8 +1,10 @@
 package data_manage
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_task/utils"
 	"time"
+
+	"github.com/beego/beego/v2/client/orm"
 )
 
 // BaseFromEiaSteoIndex EiaSteo指标
@@ -68,6 +70,8 @@ type BaseFromEiaSteoClassify struct {
 	BaseFromEiaSteoClassifyId int       `orm:"column(base_from_eia_steo_classify_id);pk"`
 	ClassifyName              string    `description:"分类名称(中文名称)"`
 	ClassifyNameOriginal      string    `description:"分类名称(原始名称)"`
+	ParentId                  int       `description:"父级id"`
+	Level                     int       `description:"层级"`
 	ModifyTime                time.Time `description:"最新更新时间"`
 	CreateTime                time.Time `description:"创建时间"`
 }
@@ -108,6 +112,28 @@ func GetBaseFromEiaSteoClassifyAll() (list []*BaseFromEiaSteoClassify, err error
 	return
 }
 
+func AddBaseEiaSteoClassify(item *BaseFromEiaSteoClassify) (lastId int64, err error) {
+	o := orm.NewOrm()
+	lastId, err = o.Insert(item)
+	return
+}
+
+func (item *BaseFromEiaSteoClassify) Update(cols []string) (err error) {
+	o := orm.NewOrm()
+	_, err = o.Update(item, cols...)
+	return
+}
+
+func BatchDeleteBaseFromEiaSteoClassify(id []int) (err error) {
+	if len(id) == 0 {
+		return
+	}
+	o := orm.NewOrm()
+	sql := `DELETE FROM base_from_eia_steo_classify WHERE base_from_eia_steo_classify_id IN (` + utils.GetOrmInReplace(len(id)) + `)`
+	_, err = o.Raw(sql, id).Exec()
+	return
+}
+
 type EiaSteoIndexResp struct {
 	Ret     int
 	Msg     string
@@ -124,6 +150,14 @@ type EiaSteoIndexDataResp struct {
 	Data    []*BaseFromEiaSteoData
 }
 
+type EiaSteoClassifyDataResp struct {
+	Ret     int
+	Msg     string
+	ErrMsg  string
+	ErrCode string
+	Data    []*BaseFromEiaSteoClassify
+}
+
 func GetBaseFromEiaSteoIndexDataAll(dateStr string) (list []*BaseFromEiaSteoData, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_eia_steo_data WHERE create_time>=?`

+ 2 - 1
models/db.go

@@ -6,9 +6,10 @@ import (
 	"eta/eta_task/models/data_manage/future_good"
 	"eta/eta_task/models/report"
 	"eta/eta_task/utils"
-	_ "github.com/go-sql-driver/mysql"
 	"time"
 
+	_ "github.com/go-sql-driver/mysql"
+
 	"github.com/beego/beego/v2/client/orm"
 )
 

+ 76 - 0
services/eia_steo.go

@@ -110,3 +110,79 @@ func SyncEiaSteoIndexData() (err error) {
 	}
 	return err
 }
+
+// EIA STEO报告-分类
+func SyncEiaSteoClassify() (err error) {
+	data := make(map[string]interface{})
+	data["Source"] = utils.DATA_SOURCE_EIA_STEO
+	method := `classify/list`
+	result, err := HttpPost("SyncEiaSteoClassify", method, data)
+	if err != nil {
+		fmt.Println("SyncEiaSteoClassify HttpPost Err:", err.Error())
+		return err
+	}
+	utils.FileLog.Info("SyncEiaSteoClassify:" + result)
+	fmt.Println("SyncEiaSteoClassify result:", result)
+
+	respObj := new(data_manage.EiaSteoClassifyDataResp)
+	err = json.Unmarshal([]byte(result), &respObj)
+	if err != nil {
+		return err
+	}
+	//获取所有指标信息  某一天的
+	allClassify, err := data_manage.GetBaseFromEiaSteoClassifyAll()
+	if err != nil {
+		return
+	}
+
+	existClassifyMap := make(map[int]*data_manage.BaseFromEiaSteoClassify)
+	for _, v := range allClassify {
+		existClassifyMap[v.BaseFromEiaSteoClassifyId] = v
+	}
+
+	for _, item := range respObj.Data {
+		if oldClassify, ok := existClassifyMap[item.BaseFromEiaSteoClassifyId]; !ok {
+			newID, err := data_manage.AddBaseEiaSteoClassify(item)
+			if err != nil {
+				fmt.Println("InsertOrUpdateBaseEiaSteoClassify error:", err)
+			}
+			fmt.Println("InsertOrUpdateBaseEiaSteoClassify new indexID:", newID)
+		} else {
+			var upDateCols []string
+			if oldClassify.ClassifyName != item.ClassifyName {
+				oldClassify.ClassifyName = item.ClassifyName
+				upDateCols = append(upDateCols, "ClassifyName")
+			}
+			if oldClassify.ClassifyNameOriginal != item.ClassifyNameOriginal {
+				oldClassify.ClassifyNameOriginal = item.ClassifyNameOriginal
+				upDateCols = append(upDateCols, "ClassifyNameOriginal")
+			}
+			if oldClassify.ParentId != item.ParentId {
+				oldClassify.ParentId = item.ParentId
+				upDateCols = append(upDateCols, "ParentId")
+			}
+			if oldClassify.Level != item.Level {
+				oldClassify.Level = item.Level
+				upDateCols = append(upDateCols, "Level")
+			}
+			if len(upDateCols) > 0 {
+				oldClassify.ModifyTime = time.Now()
+				upDateCols = append(upDateCols, "ModifyTime")
+				err := oldClassify.Update(upDateCols)
+				if err != nil {
+					fmt.Println("UpdateBaseFromEiaSteoClassify error:", err)
+				}
+			}
+			delete(existClassifyMap, oldClassify.BaseFromEiaSteoClassifyId)
+		}
+	}
+	var deleteId []int
+	for k, _ := range existClassifyMap {
+		deleteId = append(deleteId, k)
+	}
+	err = data_manage.BatchDeleteBaseFromEiaSteoClassify(deleteId)
+	if err != nil {
+		fmt.Println("BatchDeleteBaseFromEiaSteoClassify error:", err)
+	}
+	return err
+}

+ 25 - 0
services/sync_hz_data.go

@@ -7,6 +7,26 @@ import (
 	"time"
 )
 
+func SyncEiaSteo() (err error) {
+	// EiaSteo
+	err = SyncEiaSteoClassify()
+	if err != nil {
+		fmt.Println("SyncEiaSteoClassify Err:" + err.Error())
+		return
+	}
+	err = SyncEiaSteoIndex()
+	if err != nil {
+		fmt.Println("SyncEiaSteoIndex Err:" + err.Error())
+		return
+	}
+	err = SyncEiaSteoIndexData()
+	if err != nil {
+		fmt.Println("SyncEiaSteoIndexData Err:" + err.Error())
+		return
+	}
+	return
+}
+
 // 同步指标
 func SyncHzDataIndex(cont context.Context) (err error) {
 	fmt.Println("SyncHzDataIndex start:", time.Now().Format(utils.FormatDateTime))
@@ -60,6 +80,11 @@ func SyncHzDataIndex(cont context.Context) (err error) {
 	}
 
 	// EiaSteo
+	err = SyncEiaSteoClassify()
+	if err != nil {
+		fmt.Println("SyncEiaSteoClassify Err:" + err.Error())
+		return
+	}
 	err = SyncEiaSteoIndex()
 	if err != nil {
 		fmt.Println("SyncEiaSteoIndex Err:" + err.Error())