浏览代码

中石油彭博指标0120

hsun 3 月之前
父节点
当前提交
c050eef0da
共有 2 个文件被更改,包括 111 次插入5 次删除
  1. 107 4
      models/pcsg/bloomberg.go
  2. 4 1
      services/index_data/pcsg_bloomberg.go

+ 107 - 4
models/pcsg/bloomberg.go

@@ -9,10 +9,12 @@ import (
 )
 
 const (
-	TaskKey0000      = "IDpcsgDailySnap0000"
-	SubOneDayTaskKey = "IDpcsgDailySnap0330" // 日期-1的key
-	TaskKey0345      = "IDpcsgDailySnap0345"
-	TaskKeyHistU3    = "IDpcsgDailyRunHistU3"
+	TaskKey0000             = "IDpcsgDailySnap0000"
+	SubOneDayTaskKey        = "IDpcsgDailySnap0330" // 日期-1的key
+	TaskKey0345             = "IDpcsgDailySnap0345"
+	TaskKeyHistU3           = "IDpcsgDailyRunHistU3"
+	TaskKeyIDpcsgDailyRun11 = "IDpcsgDailyRun11"
+	TaskKeyIDpcsgDailyRun12 = "IDpcsgDailyRun12"
 )
 
 // PythonBloombergGeneralData 通用数据格式(有空改成Map吧...然后做成配置方便加新字段...)
@@ -38,6 +40,8 @@ type PythonBloombergGeneralData struct {
 	PX_OPEN                *float64 `json:"PX_OPEN" description:"数据值, 可能为null"`
 	PX_LOW                 *float64 `json:"PX_LOW" description:"数据值, 可能为null"`
 	PX_HIGH                *float64 `json:"PX_HIGH" description:"数据值, 可能为null"`
+	WIND_SPEED             *float64 `json:"WIND_SPEED" description:"数据值, 可能为null"`
+	PRECIPITATION          *float64 `json:"PRECIPITATION" description:"数据值, 可能为null"`
 }
 
 // PythonBloombergGeneralResult API响应体
@@ -134,6 +138,7 @@ func FormatPythonBloombergGeneralData2Base(origin PythonBloombergGeneralData, fr
 	return
 }
 
+// FormatPythonBloombergDailyRun11Data2Base Run11不要了被Run12替代了,留这过渡一下
 func FormatPythonBloombergDailyRun11Data2Base(origin PythonBloombergGeneralData, frequency, taskKey string) (items []BaseFromBloombergApiIndexAndData) {
 	if origin.IDENTIFIER == "" {
 		return
@@ -338,3 +343,101 @@ func FormatPythonBloombergDailyHistU3Data2Base(origin PythonBloombergGeneralData
 	}
 	return
 }
+
+// FormatPythonBloombergDailyRun12Data2Base 替换Run11
+func FormatPythonBloombergDailyRun12Data2Base(origin PythonBloombergGeneralData, frequency string) (items []BaseFromBloombergApiIndexAndData) {
+	if origin.IDENTIFIER == "" {
+		return
+	}
+	if origin.LAST_UPDATE_DT == "" {
+		return
+	}
+	dataTime, err := time.ParseInLocation(utils.FormatDate, origin.LAST_UPDATE_DT, time.Local)
+	if err != nil {
+		return
+	}
+	items = make([]BaseFromBloombergApiIndexAndData, 0)
+	// WER1UK00 Index, WER1UK00 Index HDD, WER1UK00 Index CDD, WER1UK00 Index Pre, WER1UK00 Index Win
+	item := BaseFromBloombergApiIndexAndData{}
+	item.IndexCode = strings.TrimSpace(origin.IDENTIFIER)
+	item.IndexName = strings.TrimSpace(origin.NAME)
+	item.Frequency = frequency
+	item.Unit = "无"
+	item.Data = make([]BaseFromBloombergApiIndexData, 0)
+
+	itemHDD := BaseFromBloombergApiIndexAndData{}
+	itemHDD.IndexCode = strings.TrimSpace(origin.IDENTIFIER)
+	itemHDD.IndexCode = fmt.Sprintf("%s HDD", itemHDD.IndexCode)
+	itemHDD.IndexName = strings.TrimSpace(origin.NAME)
+	itemHDD.IndexName = fmt.Sprintf("%s HDD", itemHDD.IndexName)
+	itemHDD.Frequency = frequency
+	itemHDD.Unit = "无"
+	itemHDD.Data = make([]BaseFromBloombergApiIndexData, 0)
+
+	itemCDD := BaseFromBloombergApiIndexAndData{}
+	itemCDD.IndexCode = strings.TrimSpace(origin.IDENTIFIER)
+	itemCDD.IndexCode = fmt.Sprintf("%s CDD", itemCDD.IndexCode)
+	itemCDD.IndexName = strings.TrimSpace(origin.NAME)
+	itemCDD.IndexName = fmt.Sprintf("%s CDD", itemCDD.IndexName)
+	itemCDD.Frequency = frequency
+	itemCDD.Unit = "无"
+	itemCDD.Data = make([]BaseFromBloombergApiIndexData, 0)
+
+	itemPre := BaseFromBloombergApiIndexAndData{}
+	itemPre.IndexCode = strings.TrimSpace(origin.IDENTIFIER)
+	itemPre.IndexCode = fmt.Sprintf("%s Pre", itemPre.IndexCode)
+	itemPre.IndexName = strings.TrimSpace(origin.NAME)
+	itemPre.IndexName = fmt.Sprintf("%s Precipitation", itemPre.IndexName)
+	itemPre.Frequency = frequency
+	itemPre.Unit = "无"
+	itemPre.Data = make([]BaseFromBloombergApiIndexData, 0)
+
+	itemWin := BaseFromBloombergApiIndexAndData{}
+	itemWin.IndexCode = strings.TrimSpace(origin.IDENTIFIER)
+	itemWin.IndexCode = fmt.Sprintf("%s Win", itemWin.IndexCode)
+	itemWin.IndexName = strings.TrimSpace(origin.NAME)
+	itemWin.IndexName = fmt.Sprintf("%s Wind Speed", itemWin.IndexName)
+	itemWin.Frequency = frequency
+	itemWin.Unit = "无"
+	itemWin.Data = make([]BaseFromBloombergApiIndexData, 0)
+
+	// 数据来源的值和日期对应字段不同
+	if origin.PX_LAST != nil {
+		val := origin.PX_LAST
+		item.Data = append(item.Data, BaseFromBloombergApiIndexData{
+			DataTime: dataTime,
+			Value:    *val,
+		})
+	}
+
+	if origin.HEATING_DAYS != nil {
+		val := origin.HEATING_DAYS
+		itemHDD.Data = append(itemHDD.Data, BaseFromBloombergApiIndexData{
+			DataTime: dataTime,
+			Value:    *val,
+		})
+	}
+	if origin.COOLING_DAYS != nil {
+		val := origin.COOLING_DAYS
+		itemCDD.Data = append(itemCDD.Data, BaseFromBloombergApiIndexData{
+			DataTime: dataTime,
+			Value:    *val,
+		})
+	}
+	if origin.WIND_SPEED != nil {
+		val := origin.WIND_SPEED
+		itemWin.Data = append(itemWin.Data, BaseFromBloombergApiIndexData{
+			DataTime: dataTime,
+			Value:    *val,
+		})
+	}
+	if origin.PRECIPITATION != nil {
+		val := origin.PRECIPITATION
+		itemPre.Data = append(itemPre.Data, BaseFromBloombergApiIndexData{
+			DataTime: dataTime,
+			Value:    *val,
+		})
+	}
+	items = append(items, item, itemHDD, itemCDD, itemWin, itemPre)
+	return
+}

+ 4 - 1
services/index_data/pcsg_bloomberg.go

@@ -21,9 +21,12 @@ func GetPCSGBloombergGeneralIndex(taskKey, frequency string) (indexes []pcsg.Bas
 	}
 	for _, v := range apiData {
 		switch taskKey {
-		case "IDpcsgDailyRun11":
+		case pcsg.TaskKeyIDpcsgDailyRun11:
 			tList := pcsg.FormatPythonBloombergDailyRun11Data2Base(v, frequency, taskKey)
 			indexes = append(indexes, tList...)
+		case pcsg.TaskKeyIDpcsgDailyRun12:
+			list := pcsg.FormatPythonBloombergDailyRun12Data2Base(v, frequency)
+			indexes = append(indexes, list...)
 		case "IDpcsgDailyRunHistV1":
 			t := pcsg.FormatPythonBloombergDailyRunHistV1Data2Base(v, frequency, taskKey)
 			if t.IndexCode != "" {