|
@@ -11,58 +11,58 @@ import (
|
|
|
"time"
|
|
|
)
|
|
|
|
|
|
-func SyncEiaSteroData(cont context.Context) (err error) {
|
|
|
- err = syncEiaSteroData()
|
|
|
+func SyncEiaSteoData(cont context.Context) (err error) {
|
|
|
+ err = syncEiaSteoData()
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-func syncEiaSteroData() (err error) {
|
|
|
+func syncEiaSteoData() (err error) {
|
|
|
// 获取数据
|
|
|
|
|
|
// 这是获取数据的链接(月度的)
|
|
|
- eiaSteroUrl := "https://www.eia.gov/outlooks/steo/data/browser/data/index.php?v=6&f=M&s=0&id=&linechart=PAPR_OECD~PAPR_NONOPEC&maptype=0&ctype=linechart&map=&method=getData"
|
|
|
- eiaSteroData, err := queryData(eiaSteroUrl)
|
|
|
+ eiaSteoUrl := "https://www.eia.gov/outlooks/steo/data/browser/data/index.php?v=6&f=M&s=0&id=&linechart=PAPR_OECD~PAPR_NONOPEC&maptype=0&ctype=linechart&map=&method=getData"
|
|
|
+ eiaSteoData, err := queryData(eiaSteoUrl)
|
|
|
if err != nil {
|
|
|
fmt.Println("读取失败", err)
|
|
|
return
|
|
|
}
|
|
|
|
|
|
// 获取分类列表
|
|
|
- classifyList, err := models.GetBaseFromEiaSteroClassifyAll()
|
|
|
+ classifyList, err := models.GetBaseFromEiaSteoClassifyAll()
|
|
|
if err != nil {
|
|
|
fmt.Println("获取分类失败:", err)
|
|
|
return
|
|
|
}
|
|
|
- classifyMap := make(map[string]*models.BaseFromEiaSteroClassify)
|
|
|
+ classifyMap := make(map[string]*models.BaseFromEiaSteoClassify)
|
|
|
for _, v := range classifyList {
|
|
|
classifyMap[v.ClassifyNameOriginal] = v
|
|
|
}
|
|
|
|
|
|
// 获取指标列表
|
|
|
- indexList, err := models.GetBaseFromEiaSteroIndexAll()
|
|
|
+ indexList, err := models.GetBaseFromEiaSteoIndexAll()
|
|
|
if err != nil {
|
|
|
fmt.Println("获取分类失败:", err)
|
|
|
return
|
|
|
}
|
|
|
- indexMap := make(map[string]*models.BaseFromEiaSteroIndex)
|
|
|
+ indexMap := make(map[string]*models.BaseFromEiaSteoIndex)
|
|
|
for _, v := range indexList {
|
|
|
indexMap[v.IndexCode] = v
|
|
|
}
|
|
|
|
|
|
- var nowClassify *models.BaseFromEiaSteroClassify
|
|
|
- for _, v := range eiaSteroData.VIEWSDATA.ROWS {
|
|
|
+ var nowClassify *models.BaseFromEiaSteoClassify
|
|
|
+ for _, v := range eiaSteoData.VIEWSDATA.ROWS {
|
|
|
if v.LEVEL == 1 {
|
|
|
tmpNowClassify, ok := classifyMap[v.CHARTNAME]
|
|
|
if !ok {
|
|
|
- nowClassify = &models.BaseFromEiaSteroClassify{
|
|
|
- BaseFromEiaSteroClassifyId: 0,
|
|
|
- ClassifyName: v.CHARTNAME,
|
|
|
- ClassifyNameOriginal: v.CHARTNAME,
|
|
|
- ModifyTime: time.Now(),
|
|
|
- CreateTime: time.Now(),
|
|
|
+ nowClassify = &models.BaseFromEiaSteoClassify{
|
|
|
+ BaseFromEiaSteoClassifyId: 0,
|
|
|
+ ClassifyName: v.CHARTNAME,
|
|
|
+ ClassifyNameOriginal: v.CHARTNAME,
|
|
|
+ ModifyTime: time.Now(),
|
|
|
+ CreateTime: time.Now(),
|
|
|
}
|
|
|
// 新增指标
|
|
|
- err = nowClassify.AddBaseFromEiaSteroClassify()
|
|
|
+ err = nowClassify.AddBaseFromEiaSteoClassify()
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|
|
@@ -76,53 +76,53 @@ func syncEiaSteroData() (err error) {
|
|
|
continue
|
|
|
}
|
|
|
|
|
|
- var eiaSteroIndex *models.BaseFromEiaSteroIndex
|
|
|
+ var eiaSteoIndex *models.BaseFromEiaSteoIndex
|
|
|
|
|
|
- eiaSteroIndex, ok := indexMap[v.SERIESID]
|
|
|
+ eiaSteoIndex, ok := indexMap[v.SERIESID]
|
|
|
|
|
|
// 指标名称(中文)
|
|
|
- indexName := EiaSteroNameMap[v.SERIESID]
|
|
|
+ indexName := EiaSteoNameMap[v.SERIESID]
|
|
|
if indexName == `` {
|
|
|
indexName = v.CHARTNAME
|
|
|
}
|
|
|
if !ok {
|
|
|
- eiaSteroIndex = &models.BaseFromEiaSteroIndex{
|
|
|
- //BaseFromEiaSteroIndexId: 0,
|
|
|
- BaseFromEiaSteroClassifyId: nowClassify.BaseFromEiaSteroClassifyId,
|
|
|
- IndexCode: v.SERIESID,
|
|
|
- IndexName: indexName,
|
|
|
- IndexNameOriginal: v.CHARTNAME,
|
|
|
- Frequency: "月度",
|
|
|
- Level: v.LEVEL,
|
|
|
- Unit: v.UNITS,
|
|
|
- Super: v.SUPER,
|
|
|
- Precision: v.PRECISION,
|
|
|
- LastHistorical: strconv.Itoa(v.LASTHISTORICAL),
|
|
|
- Description: v.DESCRIPTION,
|
|
|
- IsMappable: v.ISMAPPABLE,
|
|
|
- StartDate: time.Now(),
|
|
|
- EndDate: time.Now(),
|
|
|
- ModifyTime: time.Now(),
|
|
|
- CreateTime: time.Now(),
|
|
|
+ eiaSteoIndex = &models.BaseFromEiaSteoIndex{
|
|
|
+ //BaseFromEiaSteoIndexId: 0,
|
|
|
+ BaseFromEiaSteoClassifyId: nowClassify.BaseFromEiaSteoClassifyId,
|
|
|
+ IndexCode: v.SERIESID,
|
|
|
+ IndexName: indexName,
|
|
|
+ IndexNameOriginal: v.CHARTNAME,
|
|
|
+ Frequency: "月度",
|
|
|
+ Level: v.LEVEL,
|
|
|
+ Unit: v.UNITS,
|
|
|
+ Super: v.SUPER,
|
|
|
+ Precision: v.PRECISION,
|
|
|
+ LastHistorical: strconv.Itoa(v.LASTHISTORICAL),
|
|
|
+ Description: v.DESCRIPTION,
|
|
|
+ IsMappable: v.ISMAPPABLE,
|
|
|
+ StartDate: time.Now(),
|
|
|
+ EndDate: time.Now(),
|
|
|
+ ModifyTime: time.Now(),
|
|
|
+ CreateTime: time.Now(),
|
|
|
}
|
|
|
// 新增指标
|
|
|
- err = eiaSteroIndex.Add()
|
|
|
+ err = eiaSteoIndex.Add()
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|
|
|
- indexMap[v.SERIESID] = eiaSteroIndex
|
|
|
+ indexMap[v.SERIESID] = eiaSteoIndex
|
|
|
} else {
|
|
|
updateCol := make([]string, 0)
|
|
|
- if eiaSteroIndex.BaseFromEiaSteroClassifyId != nowClassify.BaseFromEiaSteroClassifyId {
|
|
|
- eiaSteroIndex.BaseFromEiaSteroClassifyId = nowClassify.BaseFromEiaSteroClassifyId
|
|
|
- updateCol = append(updateCol, "BaseFromEiaSteroClassifyId")
|
|
|
+ if eiaSteoIndex.BaseFromEiaSteoClassifyId != nowClassify.BaseFromEiaSteoClassifyId {
|
|
|
+ eiaSteoIndex.BaseFromEiaSteoClassifyId = nowClassify.BaseFromEiaSteoClassifyId
|
|
|
+ updateCol = append(updateCol, "BaseFromEiaSteoClassifyId")
|
|
|
}
|
|
|
- if eiaSteroIndex.IndexName != indexName {
|
|
|
- eiaSteroIndex.IndexName = indexName
|
|
|
+ if eiaSteoIndex.IndexName != indexName {
|
|
|
+ eiaSteoIndex.IndexName = indexName
|
|
|
updateCol = append(updateCol, "IndexName")
|
|
|
}
|
|
|
- if eiaSteroIndex.IndexNameOriginal != v.CHARTNAME {
|
|
|
- eiaSteroIndex.IndexNameOriginal = v.CHARTNAME
|
|
|
+ if eiaSteoIndex.IndexNameOriginal != v.CHARTNAME {
|
|
|
+ eiaSteoIndex.IndexNameOriginal = v.CHARTNAME
|
|
|
updateCol = append(updateCol, "IndexNameOriginal")
|
|
|
}
|
|
|
// Frequency: "月度",
|
|
@@ -134,7 +134,7 @@ func syncEiaSteroData() (err error) {
|
|
|
// Description: v.DESCRIPTION,
|
|
|
// IsMappable: v.ISMAPPABLE,
|
|
|
if len(updateCol) > 0 {
|
|
|
- eiaSteroIndex.Update(updateCol)
|
|
|
+ eiaSteoIndex.Update(updateCol)
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -148,11 +148,11 @@ func syncEiaSteroData() (err error) {
|
|
|
case "[]interface {}": // 没有数据
|
|
|
case "map[string]interface {}": // 有数据
|
|
|
data := v.DATA.(map[string]interface{})
|
|
|
- err = models.HandleEiaSteroData(data, eiaSteroIndex)
|
|
|
+ err = models.HandleEiaSteoData(data, eiaSteoIndex)
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|
|
|
- //if eiaSteroIndex.IndexCode == "PATC_OECD_EUROPE" {
|
|
|
+ //if eiaSteoIndex.IndexCode == "PATC_OECD_EUROPE" {
|
|
|
// os.Exit(0)
|
|
|
//}
|
|
|
}
|
|
@@ -163,17 +163,17 @@ func syncEiaSteroData() (err error) {
|
|
|
}
|
|
|
|
|
|
// queryData 接口请求网站数据
|
|
|
-func queryData(eiaSteroUrl string) (eiaSteroData EiaSteroData, err error) {
|
|
|
- body, err := http.Get(eiaSteroUrl)
|
|
|
+func queryData(eiaSteoUrl string) (eiaSteoData EiaSteoData, err error) {
|
|
|
+ body, err := http.Get(eiaSteoUrl)
|
|
|
if err != nil {
|
|
|
fmt.Println("err:", err)
|
|
|
}
|
|
|
- //utils.FileLog.Info("eia stero 报告数据:" + string(body))
|
|
|
- err = json.Unmarshal(body, &eiaSteroData)
|
|
|
+ //utils.FileLog.Info("eia steo 报告数据:" + string(body))
|
|
|
+ err = json.Unmarshal(body, &eiaSteoData)
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-type EiaSteroData struct {
|
|
|
+type EiaSteoData struct {
|
|
|
SERIESDATA struct {
|
|
|
DATACOLUMNS []interface{} `json:"DATACOLUMNS"`
|
|
|
ROWS []interface{} `json:"ROWS"`
|
|
@@ -197,8 +197,8 @@ type EiaSteroData struct {
|
|
|
} `json:"VIEWSDATA"`
|
|
|
}
|
|
|
|
|
|
-// EiaSteroNameMap 中英文互换
|
|
|
-var EiaSteroNameMap = map[string]string{
|
|
|
+// EiaSteoNameMap 中英文互换
|
|
|
+var EiaSteoNameMap = map[string]string{
|
|
|
"PAPR_OECD": "OECD石油产量",
|
|
|
"PAPR_US": "美国五十州石油产量",
|
|
|
"PAPR_CA": "加拿大石油产量",
|