package pcsg import ( "strings" "time" ) // PythonBloombergGeneralData 通用数据格式 type PythonBloombergGeneralData struct { IDENTIFIER string `json:"IDENTIFIER" description:"指标编码"` PX_LAST_EOD *float64 `json:"PX_LAST_EOD" description:"数据值, 可能为null"` PX_VOLUME_EOD *float64 `json:"PX_VOLUME_EOD" description:"数据值(Run3), 可能为null"` LAST_UPDATE_DATE_EOD string `json:"LAST_UPDATE_DATE_EOD" description:"数据日期, 可能为null"` NAME string `json:"NAME" description:"指标名称, 可能为null"` } // PythonBloombergGeneralResult API响应体 type PythonBloombergGeneralResult struct { Code int `json:"code"` Msg string `json:"msg"` Data []PythonBloombergGeneralData `json:"data"` } // BaseFromBloombergApiIndexAndData Bloomberg原始指标及数据 type BaseFromBloombergApiIndexAndData struct { BaseFromBloombergIndexId int `description:"指标ID"` IndexCode string `description:"指标编码"` IndexName string `description:"指标名称"` Unit string `description:"单位"` Source string `description:"来源"` Frequency string `description:"频度"` CreateTime time.Time `description:"创建时间"` ModifyTime time.Time `description:"修改时间"` Data []BaseFromBloombergApiIndexData `description:"数据列表"` } // BaseFromBloombergApiIndexData Bloomberg原始指标数据 type BaseFromBloombergApiIndexData struct { DataTime time.Time `description:"数据日期"` Value float64 `description:"数据值"` } func FormatPythonBloombergGeneralData2Base(origin PythonBloombergGeneralData, frequency string) (item BaseFromBloombergApiIndexAndData) { if origin.IDENTIFIER == "" { return } item.IndexCode = strings.TrimSpace(origin.IDENTIFIER) item.IndexName = strings.TrimSpace(origin.NAME) item.Frequency = frequency item.Unit = "无" item.Data = make([]BaseFromBloombergApiIndexData, 0) // 值可能为nil if origin.LAST_UPDATE_DATE_EOD != "" && origin.PX_LAST_EOD != nil { t, _ := time.ParseInLocation(time.DateOnly, origin.LAST_UPDATE_DATE_EOD, time.Local) item.Data = append(item.Data, BaseFromBloombergApiIndexData{ DataTime: t, Value: *origin.PX_LAST_EOD, }) } // 可能是从Run3过来的, 数据值的字段为PX_VOLUME_EOD if origin.LAST_UPDATE_DATE_EOD != "" && origin.PX_VOLUME_EOD != nil { t, _ := time.ParseInLocation(time.DateOnly, origin.LAST_UPDATE_DATE_EOD, time.Local) item.Data = append(item.Data, BaseFromBloombergApiIndexData{ DataTime: t, Value: *origin.PX_VOLUME_EOD, }) } return }