|
@@ -5,6 +5,9 @@ package fenwei
|
|
|
import (
|
|
|
"encoding/json"
|
|
|
"eta/eta_data_analysis/models"
|
|
|
+ "eta/eta_data_analysis/utils"
|
|
|
+ "fmt"
|
|
|
+ "strings"
|
|
|
)
|
|
|
|
|
|
// ThermalCoalSupplyProcessor 动力煤供应量
|
|
@@ -36,6 +39,35 @@ func (p *ThermalCoalSupplyProcessor) GenerateRequestParams(currentTime string) m
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func (p *ThermalCoalSupplyProcessor) ProcessResponse(data string) ([]models.FenWeiNetIndexInfo, error) {
|
|
|
+ responseData := fillFenWeiNetResponseData(data)
|
|
|
+
|
|
|
+ var indexInfoList []models.FenWeiNetIndexInfo
|
|
|
+ productName := "动力煤供应量"
|
|
|
+ for _, data := range responseData {
|
|
|
+ var frequency string
|
|
|
+ if data.MonthlyValueChnName != "" && strings.Contains(data.MonthlyValueChnName, "月度") {
|
|
|
+ frequency = "月度"
|
|
|
+ } else if data.WeekValueChnName != "" && strings.Contains(data.WeekValueChnName, "月度") {
|
|
|
+ frequency = "周度"
|
|
|
+ } else {
|
|
|
+ frequency = "日度"
|
|
|
+ }
|
|
|
+
|
|
|
+ indexInfoList = append(indexInfoList, models.FenWeiNetIndexInfo{
|
|
|
+ IndexName: productName + data.ProvinceName + "/汾渭",
|
|
|
+ Unit: data.MonthlyValueChnUnit,
|
|
|
+ Frequency: frequency,
|
|
|
+ TerminalCode: utils.TerminalCode,
|
|
|
+ ClassifyName: productName,
|
|
|
+ DataTime: data.DataDate,
|
|
|
+ Value: data.MonthlyValue,
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ return indexInfoList, nil
|
|
|
+}
|
|
|
+
|
|
|
// CokingCleanCoalSupplyProcessor 炼焦精煤供应量
|
|
|
type CokingCleanCoalSupplyProcessor struct {
|
|
|
BaseProcessor
|
|
@@ -66,6 +98,35 @@ func (p *CokingCleanCoalSupplyProcessor) GenerateRequestParams(currentTime strin
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func (p *CokingCleanCoalSupplyProcessor) ProcessResponse(data string) ([]models.FenWeiNetIndexInfo, error) {
|
|
|
+ responseData := fillFenWeiNetResponseData(data)
|
|
|
+
|
|
|
+ var indexInfoList []models.FenWeiNetIndexInfo
|
|
|
+ productName := "炼焦精煤供应量"
|
|
|
+ for _, data := range responseData {
|
|
|
+ var frequency string
|
|
|
+ if data.MonthlyValueChnName != "" && strings.Contains(data.MonthlyValueChnName, "月度") {
|
|
|
+ frequency = "月度"
|
|
|
+ } else if data.WeekValueChnName != "" && strings.Contains(data.WeekValueChnName, "月度") {
|
|
|
+ frequency = "周度"
|
|
|
+ } else {
|
|
|
+ frequency = data.MonthlyValueChnName
|
|
|
+ }
|
|
|
+
|
|
|
+ indexInfoList = append(indexInfoList, models.FenWeiNetIndexInfo{
|
|
|
+ IndexName: productName + data.CoalTypeName + "/汾渭",
|
|
|
+ Unit: data.MonthlyValueChnUnit,
|
|
|
+ Frequency: frequency,
|
|
|
+ TerminalCode: utils.TerminalCode,
|
|
|
+ ClassifyName: productName,
|
|
|
+ DataTime: data.DataDate,
|
|
|
+ Value: data.MonthlyValue,
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ return indexInfoList, nil
|
|
|
+}
|
|
|
+
|
|
|
// RawCoalProvinceProductionProcessor 原煤分省分煤种产量
|
|
|
type RawCoalProvinceProductionProcessor struct {
|
|
|
BaseProcessor
|
|
@@ -96,6 +157,35 @@ func (p *RawCoalProvinceProductionProcessor) GenerateRequestParams(currentTime s
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func (p *RawCoalProvinceProductionProcessor) ProcessResponse(data string) ([]models.FenWeiNetIndexInfo, error) {
|
|
|
+ responseData := fillFenWeiNetResponseData(data)
|
|
|
+
|
|
|
+ var indexInfoList []models.FenWeiNetIndexInfo
|
|
|
+ productName := "原煤分省分煤种产量"
|
|
|
+ for _, data := range responseData {
|
|
|
+ var frequency string
|
|
|
+ if data.MonthlyValueChnName != "" && strings.Contains(data.MonthlyValueChnName, "月度") {
|
|
|
+ frequency = "月度"
|
|
|
+ } else if data.WeekValueChnName != "" && strings.Contains(data.WeekValueChnName, "月度") {
|
|
|
+ frequency = "周度"
|
|
|
+ } else {
|
|
|
+ frequency = data.MonthlyValueChnName
|
|
|
+ }
|
|
|
+
|
|
|
+ indexInfoList = append(indexInfoList, models.FenWeiNetIndexInfo{
|
|
|
+ IndexName: productName + data.CoalTypeName + "/汾渭",
|
|
|
+ Unit: data.MonthlyValueChnUnit,
|
|
|
+ Frequency: frequency,
|
|
|
+ TerminalCode: utils.TerminalCode,
|
|
|
+ ClassifyName: productName,
|
|
|
+ DataTime: data.DataDate,
|
|
|
+ Value: data.MonthlyValue,
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ return indexInfoList, nil
|
|
|
+}
|
|
|
+
|
|
|
// StateOwnedKeyCoalMineRawCoalProductionProcessor 国有重点煤矿原煤产量
|
|
|
type StateOwnedKeyCoalMineRawCoalProductionProcessor struct {
|
|
|
BaseProcessor
|
|
@@ -125,6 +215,35 @@ func (p *StateOwnedKeyCoalMineRawCoalProductionProcessor) GenerateRequestParams(
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func (p *StateOwnedKeyCoalMineRawCoalProductionProcessor) ProcessResponse(data string) ([]models.FenWeiNetIndexInfo, error) {
|
|
|
+ responseData := fillFenWeiNetResponseData(data)
|
|
|
+
|
|
|
+ var indexInfoList []models.FenWeiNetIndexInfo
|
|
|
+ productName := "国有重点煤矿原煤产量"
|
|
|
+ for _, data := range responseData {
|
|
|
+ var frequency string
|
|
|
+ if data.MonthlyValueChnName != "" && strings.Contains(data.MonthlyValueChnName, "月度") {
|
|
|
+ frequency = "月度"
|
|
|
+ } else if data.WeekValueChnName != "" && strings.Contains(data.WeekValueChnName, "月度") {
|
|
|
+ frequency = "周度"
|
|
|
+ } else {
|
|
|
+ frequency = data.MonthlyValueChnName
|
|
|
+ }
|
|
|
+
|
|
|
+ indexInfoList = append(indexInfoList, models.FenWeiNetIndexInfo{
|
|
|
+ IndexName: productName + data.ProvinceName + "/汾渭",
|
|
|
+ Unit: data.MonthlyValueChnUnit,
|
|
|
+ Frequency: frequency,
|
|
|
+ TerminalCode: utils.TerminalCode,
|
|
|
+ ClassifyName: productName,
|
|
|
+ DataTime: data.DataDate,
|
|
|
+ Value: data.MonthlyValue,
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ return indexInfoList, nil
|
|
|
+}
|
|
|
+
|
|
|
// CokingBituminousCoalProductionProcessor 炼焦烟煤分煤种产量
|
|
|
type CokingBituminousCoalProductionProcessor struct {
|
|
|
BaseProcessor
|
|
@@ -155,6 +274,35 @@ func (p *CokingBituminousCoalProductionProcessor) GenerateRequestParams(currentT
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func (p *CokingBituminousCoalProductionProcessor) ProcessResponse(data string) ([]models.FenWeiNetIndexInfo, error) {
|
|
|
+ responseData := fillFenWeiNetResponseData(data)
|
|
|
+
|
|
|
+ var indexInfoList []models.FenWeiNetIndexInfo
|
|
|
+ productName := "炼焦烟煤分煤种产量"
|
|
|
+ for _, data := range responseData {
|
|
|
+ var frequency string
|
|
|
+ if data.MonthlyValueChnName != "" && strings.Contains(data.MonthlyValueChnName, "月度") {
|
|
|
+ frequency = "月度"
|
|
|
+ } else if data.WeekValueChnName != "" && strings.Contains(data.WeekValueChnName, "月度") {
|
|
|
+ frequency = "周度"
|
|
|
+ } else {
|
|
|
+ frequency = data.MonthlyValueChnName
|
|
|
+ }
|
|
|
+
|
|
|
+ indexInfoList = append(indexInfoList, models.FenWeiNetIndexInfo{
|
|
|
+ IndexName: productName + data.CoalTypeName + "/汾渭",
|
|
|
+ Unit: data.MonthlyValueChnUnit,
|
|
|
+ Frequency: frequency,
|
|
|
+ TerminalCode: utils.TerminalCode,
|
|
|
+ ClassifyName: productName,
|
|
|
+ DataTime: data.DataDate,
|
|
|
+ Value: data.MonthlyValue,
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ return indexInfoList, nil
|
|
|
+}
|
|
|
+
|
|
|
// ThermalCoalInventorySocietyProcessor 动力煤库存-全社会
|
|
|
type ThermalCoalInventorySocietyProcessor struct {
|
|
|
BaseProcessor
|
|
@@ -183,6 +331,35 @@ func (p *ThermalCoalInventorySocietyProcessor) GenerateRequestParams(currentTime
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func (p *ThermalCoalInventorySocietyProcessor) ProcessResponse(data string) ([]models.FenWeiNetIndexInfo, error) {
|
|
|
+ responseData := fillFenWeiNetResponseData(data)
|
|
|
+
|
|
|
+ var indexInfoList []models.FenWeiNetIndexInfo
|
|
|
+ productName := "动力煤库存-全社会"
|
|
|
+ for _, data := range responseData {
|
|
|
+ var frequency string
|
|
|
+ if data.MonthlyValueChnName != "" && strings.Contains(data.MonthlyValueChnName, "月度") {
|
|
|
+ frequency = "月度"
|
|
|
+ } else if data.WeekValueChnName != "" && strings.Contains(data.WeekValueChnName, "月度") {
|
|
|
+ frequency = "周度"
|
|
|
+ } else {
|
|
|
+ frequency = data.MonthlyValueChnName
|
|
|
+ }
|
|
|
+
|
|
|
+ indexInfoList = append(indexInfoList, models.FenWeiNetIndexInfo{
|
|
|
+ IndexName: productName + "/汾渭",
|
|
|
+ Unit: data.MonthlyValueChnUnit,
|
|
|
+ Frequency: frequency,
|
|
|
+ TerminalCode: utils.TerminalCode,
|
|
|
+ ClassifyName: productName,
|
|
|
+ DataTime: data.DataDate,
|
|
|
+ Value: data.MonthlyValue,
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ return indexInfoList, nil
|
|
|
+}
|
|
|
+
|
|
|
// ThermalCoalInventoryProductionProcessor 动力煤库存-生产企业
|
|
|
type ThermalCoalInventoryProductionProcessor struct {
|
|
|
BaseProcessor
|
|
@@ -211,6 +388,35 @@ func (p *ThermalCoalInventoryProductionProcessor) GenerateRequestParams(currentT
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func (p *ThermalCoalInventoryProductionProcessor) ProcessResponse(data string) ([]models.FenWeiNetIndexInfo, error) {
|
|
|
+ responseData := fillFenWeiNetResponseData(data)
|
|
|
+
|
|
|
+ var indexInfoList []models.FenWeiNetIndexInfo
|
|
|
+ productName := "动力煤库存-生产企业"
|
|
|
+ for _, data := range responseData {
|
|
|
+ var frequency string
|
|
|
+ if data.MonthlyValueChnName != "" && strings.Contains(data.MonthlyValueChnName, "月度") {
|
|
|
+ frequency = "月度"
|
|
|
+ } else if data.WeekValueChnName != "" && strings.Contains(data.WeekValueChnName, "月度") {
|
|
|
+ frequency = "周度"
|
|
|
+ } else {
|
|
|
+ frequency = data.MonthlyValueChnName
|
|
|
+ }
|
|
|
+
|
|
|
+ indexInfoList = append(indexInfoList, models.FenWeiNetIndexInfo{
|
|
|
+ IndexName: productName + "/汾渭",
|
|
|
+ Unit: data.MonthlyValueChnUnit,
|
|
|
+ Frequency: frequency,
|
|
|
+ TerminalCode: utils.TerminalCode,
|
|
|
+ ClassifyName: productName,
|
|
|
+ DataTime: data.DataDate,
|
|
|
+ Value: data.MonthlyValue,
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ return indexInfoList, nil
|
|
|
+}
|
|
|
+
|
|
|
// ThermalCoalInventorySixPowerPlantProcessor 动力煤库存-六大电厂
|
|
|
type ThermalCoalInventorySixPowerPlantProcessor struct {
|
|
|
BaseProcessor
|
|
@@ -239,6 +445,58 @@ func (p *ThermalCoalInventorySixPowerPlantProcessor) GenerateRequestParams(curre
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func (p *ThermalCoalInventorySixPowerPlantProcessor) ProcessResponse(data string) ([]models.FenWeiNetIndexInfo, error) {
|
|
|
+ responseData := fillFenWeiNetResponseData(data)
|
|
|
+
|
|
|
+ var indexInfoList []models.FenWeiNetIndexInfo
|
|
|
+ productName := "动力煤库存"
|
|
|
+ for _, data := range responseData {
|
|
|
+ var frequency string
|
|
|
+ if data.MonthlyValueChnName != "" && strings.Contains(data.MonthlyValueChnName, "月度") {
|
|
|
+ frequency = "月度"
|
|
|
+ } else if data.WeekValueChnName != "" && strings.Contains(data.WeekValueChnName, "月度") {
|
|
|
+ frequency = "周度"
|
|
|
+ } else {
|
|
|
+ frequency = "日度"
|
|
|
+ }
|
|
|
+
|
|
|
+ classifyName := "动力煤库存-六大电厂"
|
|
|
+
|
|
|
+ // 库存
|
|
|
+ indexInfoList = append(indexInfoList, models.FenWeiNetIndexInfo{
|
|
|
+ IndexName: productName + data.ProductItemName + data.StockChnName + "/汾渭",
|
|
|
+ Unit: data.StockChnUnit,
|
|
|
+ Frequency: frequency,
|
|
|
+ TerminalCode: utils.TerminalCode,
|
|
|
+ ClassifyName: classifyName,
|
|
|
+ DataTime: data.DataDate,
|
|
|
+ Value: data.Stock,
|
|
|
+ })
|
|
|
+ // 可用天数
|
|
|
+ indexInfoList = append(indexInfoList, models.FenWeiNetIndexInfo{
|
|
|
+ IndexName: productName + data.ProductItemName + data.AvaliableDaysChnName + "/汾渭",
|
|
|
+ Unit: data.AvaliableDaysChnUnit,
|
|
|
+ Frequency: frequency,
|
|
|
+ TerminalCode: utils.TerminalCode,
|
|
|
+ ClassifyName: classifyName,
|
|
|
+ DataTime: data.DataDate,
|
|
|
+ Value: data.AvaliableDays,
|
|
|
+ })
|
|
|
+ // 日耗
|
|
|
+ indexInfoList = append(indexInfoList, models.FenWeiNetIndexInfo{
|
|
|
+ IndexName: productName + data.ProductItemName + data.DailyConsumptionChnName + "/汾渭",
|
|
|
+ Unit: data.DailyConsumptionChnUnit,
|
|
|
+ Frequency: frequency,
|
|
|
+ TerminalCode: utils.TerminalCode,
|
|
|
+ ClassifyName: classifyName,
|
|
|
+ DataTime: data.DataDate,
|
|
|
+ Value: data.DailyConsumption,
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ return indexInfoList, nil
|
|
|
+}
|
|
|
+
|
|
|
// CokingCoalInventorySocietyProcessor 炼焦煤库存-全社会
|
|
|
type CokingCoalInventorySocietyProcessor struct {
|
|
|
BaseProcessor
|
|
@@ -267,6 +525,36 @@ func (p *CokingCoalInventorySocietyProcessor) GenerateRequestParams(currentTime
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func (p *CokingCoalInventorySocietyProcessor) ProcessResponse(data string) ([]models.FenWeiNetIndexInfo, error) {
|
|
|
+ responseData := fillFenWeiNetResponseData(data)
|
|
|
+
|
|
|
+ var indexInfoList []models.FenWeiNetIndexInfo
|
|
|
+ productName := "炼焦煤库存-全社会"
|
|
|
+
|
|
|
+ for _, data := range responseData {
|
|
|
+ var frequency string
|
|
|
+ if data.MonthlyValueChnName != "" && strings.Contains(data.MonthlyValueChnName, "月度") {
|
|
|
+ frequency = "月度"
|
|
|
+ } else if data.WeekValueChnName != "" && strings.Contains(data.WeekValueChnName, "月度") {
|
|
|
+ frequency = "周度"
|
|
|
+ } else {
|
|
|
+ frequency = data.MonthlyValueChnName
|
|
|
+ }
|
|
|
+
|
|
|
+ indexInfoList = append(indexInfoList, models.FenWeiNetIndexInfo{
|
|
|
+ IndexName: data.ProductItemName + "/汾渭",
|
|
|
+ Unit: data.MonthlyValueChnUnit,
|
|
|
+ Frequency: frequency,
|
|
|
+ TerminalCode: utils.TerminalCode,
|
|
|
+ ClassifyName: productName,
|
|
|
+ DataTime: data.DataDate,
|
|
|
+ Value: data.MonthlyValue,
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ return indexInfoList, nil
|
|
|
+}
|
|
|
+
|
|
|
// CokingCoalInventoryProductionProcessor 炼焦煤库存-生产企业
|
|
|
type CokingCoalInventoryProductionProcessor struct {
|
|
|
BaseProcessor
|
|
@@ -295,6 +583,36 @@ func (p *CokingCoalInventoryProductionProcessor) GenerateRequestParams(currentTi
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func (p *CokingCoalInventoryProductionProcessor) ProcessResponse(data string) ([]models.FenWeiNetIndexInfo, error) {
|
|
|
+ responseData := fillFenWeiNetResponseData(data)
|
|
|
+
|
|
|
+ var indexInfoList []models.FenWeiNetIndexInfo
|
|
|
+ productName := "炼焦煤库存-生产企业"
|
|
|
+
|
|
|
+ for _, data := range responseData {
|
|
|
+ var frequency string
|
|
|
+ if data.MonthlyValueChnName != "" && strings.Contains(data.MonthlyValueChnName, "月度") {
|
|
|
+ frequency = "月度"
|
|
|
+ } else if data.WeekValueChnName != "" && strings.Contains(data.WeekValueChnName, "月度") {
|
|
|
+ frequency = "周度"
|
|
|
+ } else {
|
|
|
+ frequency = data.MonthlyValueChnName
|
|
|
+ }
|
|
|
+
|
|
|
+ indexInfoList = append(indexInfoList, models.FenWeiNetIndexInfo{
|
|
|
+ IndexName: data.ProductItemName + "/汾渭",
|
|
|
+ Unit: data.MonthlyValueChnUnit,
|
|
|
+ Frequency: frequency,
|
|
|
+ TerminalCode: utils.TerminalCode,
|
|
|
+ ClassifyName: productName,
|
|
|
+ DataTime: data.DataDate,
|
|
|
+ Value: data.WeekValue,
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ return indexInfoList, nil
|
|
|
+}
|
|
|
+
|
|
|
// CokingCoalInventoryDownstreamProcessor 炼焦煤库存-下游企业
|
|
|
type CokingCoalInventoryDownstreamProcessor struct {
|
|
|
BaseProcessor
|
|
@@ -323,6 +641,29 @@ func (p *CokingCoalInventoryDownstreamProcessor) GenerateRequestParams(currentTi
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func (p *CokingCoalInventoryDownstreamProcessor) ProcessResponse(data string) ([]models.FenWeiNetIndexInfo, error) {
|
|
|
+ responseData := fillFenWeiNetResponseData(data)
|
|
|
+
|
|
|
+ var indexInfoList []models.FenWeiNetIndexInfo
|
|
|
+ productName := "炼焦煤库存-下游企业"
|
|
|
+
|
|
|
+ for _, data := range responseData {
|
|
|
+ frequency := "周度"
|
|
|
+
|
|
|
+ indexInfoList = append(indexInfoList, models.FenWeiNetIndexInfo{
|
|
|
+ IndexName: data.ProductItemName + "/汾渭",
|
|
|
+ Unit: data.StockChnUnit,
|
|
|
+ Frequency: frequency,
|
|
|
+ TerminalCode: utils.TerminalCode,
|
|
|
+ ClassifyName: productName,
|
|
|
+ DataTime: data.DataDate,
|
|
|
+ Value: data.Stock,
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ return indexInfoList, nil
|
|
|
+}
|
|
|
+
|
|
|
// NationalCoalMineInventoryProcessor 全国煤矿库存
|
|
|
type NationalCoalMineInventoryProcessor struct {
|
|
|
BaseProcessor
|
|
@@ -350,6 +691,36 @@ func (p *NationalCoalMineInventoryProcessor) GenerateRequestParams(currentTime s
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func (p *NationalCoalMineInventoryProcessor) ProcessResponse(data string) ([]models.FenWeiNetIndexInfo, error) {
|
|
|
+ responseData := fillFenWeiNetResponseData(data)
|
|
|
+
|
|
|
+ var indexInfoList []models.FenWeiNetIndexInfo
|
|
|
+ productName := "全国煤矿库存"
|
|
|
+
|
|
|
+ for _, data := range responseData {
|
|
|
+ var frequency string
|
|
|
+ if data.MonthlyValueChnName != "" && strings.Contains(data.MonthlyValueChnName, "月度") {
|
|
|
+ frequency = "月度"
|
|
|
+ } else if data.WeekValueChnName != "" && strings.Contains(data.WeekValueChnName, "月度") {
|
|
|
+ frequency = "周度"
|
|
|
+ } else {
|
|
|
+ frequency = "日度"
|
|
|
+ }
|
|
|
+
|
|
|
+ indexInfoList = append(indexInfoList, models.FenWeiNetIndexInfo{
|
|
|
+ IndexName: productName + "/汾渭",
|
|
|
+ Unit: data.MonthlyValueChnUnit,
|
|
|
+ Frequency: frequency,
|
|
|
+ TerminalCode: utils.TerminalCode,
|
|
|
+ ClassifyName: productName,
|
|
|
+ DataTime: data.DataDate,
|
|
|
+ Value: data.MonthlyValue,
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ return indexInfoList, nil
|
|
|
+}
|
|
|
+
|
|
|
// StateOwnedKeyCoalMineInventoryProcessor 国有重点煤矿库存
|
|
|
type StateOwnedKeyCoalMineInventoryProcessor struct {
|
|
|
BaseProcessor
|
|
@@ -379,6 +750,36 @@ func (p *StateOwnedKeyCoalMineInventoryProcessor) GenerateRequestParams(currentT
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func (p *StateOwnedKeyCoalMineInventoryProcessor) ProcessResponse(data string) ([]models.FenWeiNetIndexInfo, error) {
|
|
|
+ responseData := fillFenWeiNetResponseData(data)
|
|
|
+
|
|
|
+ var indexInfoList []models.FenWeiNetIndexInfo
|
|
|
+ productName := "国有重点煤矿库存"
|
|
|
+
|
|
|
+ for _, data := range responseData {
|
|
|
+ var frequency string
|
|
|
+ if data.MonthlyValueChnName != "" && strings.Contains(data.MonthlyValueChnName, "月度") {
|
|
|
+ frequency = "月度"
|
|
|
+ } else if data.WeekValueChnName != "" && strings.Contains(data.WeekValueChnName, "月度") {
|
|
|
+ frequency = "周度"
|
|
|
+ } else {
|
|
|
+ frequency = "日度"
|
|
|
+ }
|
|
|
+
|
|
|
+ indexInfoList = append(indexInfoList, models.FenWeiNetIndexInfo{
|
|
|
+ IndexName: productName + data.ProvinceName + "/汾渭",
|
|
|
+ Unit: data.MonthlyValueChnUnit,
|
|
|
+ Frequency: frequency,
|
|
|
+ TerminalCode: utils.TerminalCode,
|
|
|
+ ClassifyName: productName,
|
|
|
+ DataTime: data.DataDate,
|
|
|
+ Value: data.MonthlyValue,
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ return indexInfoList, nil
|
|
|
+}
|
|
|
+
|
|
|
// CokeInventoryProcessor 焦炭库存
|
|
|
type CokeInventoryProcessor struct {
|
|
|
BaseProcessor
|
|
@@ -407,6 +808,57 @@ func (p *CokeInventoryProcessor) GenerateRequestParams(currentTime string) map[s
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func (p *CokeInventoryProcessor) ProcessResponse(data string) ([]models.FenWeiNetIndexInfo, error) {
|
|
|
+ responseDataMap := fillFenWeiNetResponseMapData(data)
|
|
|
+
|
|
|
+ var indexInfoList []models.FenWeiNetIndexInfo
|
|
|
+ productName := "焦炭库存"
|
|
|
+ for productCategoryName, responseDataList := range responseDataMap {
|
|
|
+ utils.FileLog.Info(fmt.Sprintf("productName: %s, responseDataList:size: %v", productName, len(responseDataList)))
|
|
|
+ for _, data := range responseDataList {
|
|
|
+ var frequency string
|
|
|
+ productCodeMap := map[string]struct{}{
|
|
|
+ "FW1405D-1": {},
|
|
|
+ "FW1405D-2": {},
|
|
|
+ "FW1405D-3": {},
|
|
|
+ "FW1405D-6": {},
|
|
|
+ "FW1405D-7": {},
|
|
|
+ }
|
|
|
+ if _, ok := productCodeMap[data.ProductItemCode]; ok {
|
|
|
+ frequency = "周度"
|
|
|
+ } else {
|
|
|
+ frequency = "日度"
|
|
|
+ }
|
|
|
+
|
|
|
+ var unit string
|
|
|
+ if data.InventoryIndexChnUnit != "" {
|
|
|
+ unit = data.InventoryIndexChnUnit
|
|
|
+ } else {
|
|
|
+ unit = data.StockChnUnit
|
|
|
+ }
|
|
|
+
|
|
|
+ var value float64
|
|
|
+ if data.InventoryIndex != 0 {
|
|
|
+ value = data.InventoryIndex
|
|
|
+ } else {
|
|
|
+ value = data.Stock
|
|
|
+ }
|
|
|
+
|
|
|
+ indexInfoList = append(indexInfoList, models.FenWeiNetIndexInfo{
|
|
|
+ IndexName: productName + productCategoryName + "/汾渭",
|
|
|
+ Unit: unit,
|
|
|
+ Frequency: frequency,
|
|
|
+ TerminalCode: utils.TerminalCode,
|
|
|
+ ClassifyName: productName,
|
|
|
+ DataTime: data.DataDate,
|
|
|
+ Value: value,
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return indexInfoList, nil
|
|
|
+}
|
|
|
+
|
|
|
// PortDataInventoryNorthernPortProcessor 港口数据-库存-北方港口
|
|
|
type PortDataInventoryNorthernPortProcessor struct {
|
|
|
BaseProcessor
|
|
@@ -437,6 +889,36 @@ func (p *PortDataInventoryNorthernPortProcessor) GenerateRequestParams(currentTi
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func (p *PortDataInventoryNorthernPortProcessor) ProcessResponse(data string) ([]models.FenWeiNetIndexInfo, error) {
|
|
|
+ responseData := fillFenWeiNetResponseData(data)
|
|
|
+
|
|
|
+ var indexInfoList []models.FenWeiNetIndexInfo
|
|
|
+ productName := "港口数据-库存-北方港口"
|
|
|
+
|
|
|
+ for _, data := range responseData {
|
|
|
+ var frequency string
|
|
|
+ if data.MonthlyValueChnName != "" && strings.Contains(data.MonthlyValueChnName, "月度") {
|
|
|
+ frequency = "月度"
|
|
|
+ } else if data.WeekValueChnName != "" && strings.Contains(data.WeekValueChnName, "月度") {
|
|
|
+ frequency = "周度"
|
|
|
+ } else {
|
|
|
+ frequency = "日度"
|
|
|
+ }
|
|
|
+
|
|
|
+ indexInfoList = append(indexInfoList, models.FenWeiNetIndexInfo{
|
|
|
+ IndexName: productName + data.ProductItemName + "/汾渭",
|
|
|
+ Unit: data.StockChnName,
|
|
|
+ Frequency: frequency,
|
|
|
+ TerminalCode: utils.TerminalCode,
|
|
|
+ ClassifyName: productName,
|
|
|
+ DataTime: data.DataDate,
|
|
|
+ Value: data.Stock,
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ return indexInfoList, nil
|
|
|
+}
|
|
|
+
|
|
|
// PortDataInventoryInlandPortProcessor 港口数据-库存-江内港口
|
|
|
type PortDataInventoryInlandPortProcessor struct {
|
|
|
BaseProcessor
|
|
@@ -467,6 +949,29 @@ func (p *PortDataInventoryInlandPortProcessor) GenerateRequestParams(currentTime
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func (p *PortDataInventoryInlandPortProcessor) ProcessResponse(data string) ([]models.FenWeiNetIndexInfo, error) {
|
|
|
+ responseData := fillFenWeiNetResponseData(data)
|
|
|
+
|
|
|
+ var indexInfoList []models.FenWeiNetIndexInfo
|
|
|
+ productName := "港口数据-库存-江内港口"
|
|
|
+
|
|
|
+ for _, data := range responseData {
|
|
|
+ var frequency = "周度"
|
|
|
+
|
|
|
+ indexInfoList = append(indexInfoList, models.FenWeiNetIndexInfo{
|
|
|
+ IndexName: productName + data.ProductItemName + "/汾渭",
|
|
|
+ Unit: data.StockChnName,
|
|
|
+ Frequency: frequency,
|
|
|
+ TerminalCode: utils.TerminalCode,
|
|
|
+ ClassifyName: productName,
|
|
|
+ DataTime: data.DataDate,
|
|
|
+ Value: data.Stock,
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ return indexInfoList, nil
|
|
|
+}
|
|
|
+
|
|
|
// PortDataDispatchNorthernPortProcessor 港口数据-调度-北方港口
|
|
|
type PortDataDispatchNorthernPortProcessor struct {
|
|
|
BaseProcessor
|
|
@@ -498,6 +1003,29 @@ func (p *PortDataDispatchNorthernPortProcessor) GenerateRequestParams(currentTim
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func (p *PortDataDispatchNorthernPortProcessor) ProcessResponse(data string) ([]models.FenWeiNetIndexInfo, error) {
|
|
|
+ responseData := fillFenWeiNetResponseData(data)
|
|
|
+
|
|
|
+ var indexInfoList []models.FenWeiNetIndexInfo
|
|
|
+ productName := "港口数据-调度-北方港口"
|
|
|
+
|
|
|
+ for _, data := range responseData {
|
|
|
+ var frequency = "日度"
|
|
|
+
|
|
|
+ indexInfoList = append(indexInfoList, models.FenWeiNetIndexInfo{
|
|
|
+ IndexName: productName + "-" + data.ProductItemName + "-" + data.PortName + "/汾渭",
|
|
|
+ Unit: data.TonsChnUnit,
|
|
|
+ Frequency: frequency,
|
|
|
+ TerminalCode: utils.TerminalCode,
|
|
|
+ ClassifyName: productName,
|
|
|
+ DataTime: data.DataDate,
|
|
|
+ Value: data.Tons,
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ return indexInfoList, nil
|
|
|
+}
|
|
|
+
|
|
|
// PortDataThroughputProcessor 港口数据-运量
|
|
|
type PortDataThroughputProcessor struct {
|
|
|
BaseProcessor
|
|
@@ -529,6 +1057,29 @@ func (p *PortDataThroughputProcessor) GenerateRequestParams(currentTime string)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func (p *PortDataThroughputProcessor) ProcessResponse(data string) ([]models.FenWeiNetIndexInfo, error) {
|
|
|
+ responseData := fillFenWeiNetResponseData(data)
|
|
|
+
|
|
|
+ var indexInfoList []models.FenWeiNetIndexInfo
|
|
|
+ productName := "港口数据-运量"
|
|
|
+
|
|
|
+ for _, data := range responseData {
|
|
|
+ var frequency = "日度"
|
|
|
+
|
|
|
+ indexInfoList = append(indexInfoList, models.FenWeiNetIndexInfo{
|
|
|
+ IndexName: productName + data.PortSonName + "/汾渭",
|
|
|
+ Unit: data.TransportVolumeChnUnit,
|
|
|
+ Frequency: frequency,
|
|
|
+ TerminalCode: utils.TerminalCode,
|
|
|
+ ClassifyName: productName,
|
|
|
+ DataTime: data.DataDate,
|
|
|
+ Value: data.TransportVolume,
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ return indexInfoList, nil
|
|
|
+}
|
|
|
+
|
|
|
// DaqinLineDailyThroughputProcessor 大秦线日运量
|
|
|
type DaqinLineDailyThroughputProcessor struct {
|
|
|
BaseProcessor
|
|
@@ -555,6 +1106,29 @@ func (p *DaqinLineDailyThroughputProcessor) GenerateRequestParams(currentTime st
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func (p *DaqinLineDailyThroughputProcessor) ProcessResponse(data string) ([]models.FenWeiNetIndexInfo, error) {
|
|
|
+ responseData := fillFenWeiNetResponseData(data)
|
|
|
+
|
|
|
+ var indexInfoList []models.FenWeiNetIndexInfo
|
|
|
+ productName := "大秦线日运量"
|
|
|
+
|
|
|
+ for _, data := range responseData {
|
|
|
+ var frequency = "日度"
|
|
|
+
|
|
|
+ indexInfoList = append(indexInfoList, models.FenWeiNetIndexInfo{
|
|
|
+ IndexName: productName + data.StockChnName + "/汾渭",
|
|
|
+ Unit: data.StockChnUnit,
|
|
|
+ Frequency: frequency,
|
|
|
+ TerminalCode: utils.TerminalCode,
|
|
|
+ ClassifyName: productName,
|
|
|
+ DataTime: data.DataDate,
|
|
|
+ Value: data.Stock,
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ return indexInfoList, nil
|
|
|
+}
|
|
|
+
|
|
|
// ThermalCoalPortPriceProcessor 动力煤港口价格
|
|
|
type ThermalCoalPortPriceProcessor struct {
|
|
|
BaseProcessor
|
|
@@ -583,6 +1157,40 @@ func (p *ThermalCoalPortPriceProcessor) GenerateRequestParams(currentTime string
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func (p *ThermalCoalPortPriceProcessor) ProcessResponse(data string) ([]models.FenWeiNetIndexInfo, error) {
|
|
|
+ responseDataMap := fillFenWeiNetResponseMapData(data)
|
|
|
+
|
|
|
+ var indexInfoList []models.FenWeiNetIndexInfo
|
|
|
+ productName := "动力煤港口价格"
|
|
|
+ for productCategoryName, responseDataList := range responseDataMap {
|
|
|
+ utils.FileLog.Info(fmt.Sprintf("productName: %s, responseDataList:size: %v", productName, len(responseDataList)))
|
|
|
+ for _, data := range responseDataList {
|
|
|
+ var frequency = "日度"
|
|
|
+
|
|
|
+ indexInfoList = append(indexInfoList, models.FenWeiNetIndexInfo{
|
|
|
+ IndexName: productName + productCategoryName + "-" + data.PriceRmbChnName + "/汾渭",
|
|
|
+ Unit: data.PriceRmbChnUnit,
|
|
|
+ Frequency: frequency,
|
|
|
+ TerminalCode: utils.TerminalCode,
|
|
|
+ ClassifyName: productName,
|
|
|
+ DataTime: data.DataDate,
|
|
|
+ Value: data.PriceRmb,
|
|
|
+ })
|
|
|
+ indexInfoList = append(indexInfoList, models.FenWeiNetIndexInfo{
|
|
|
+ IndexName: productName + productCategoryName + "-" + data.PriceIndexMomChnName + "/汾渭",
|
|
|
+ Unit: data.PriceIndexMomChnUnit,
|
|
|
+ Frequency: frequency,
|
|
|
+ TerminalCode: utils.TerminalCode,
|
|
|
+ ClassifyName: productName,
|
|
|
+ DataTime: data.DataDate,
|
|
|
+ Value: data.PriceIndexMom,
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return indexInfoList, nil
|
|
|
+}
|
|
|
+
|
|
|
// ThermalCoalConsumptionProcessor 动力煤消费量
|
|
|
type ThermalCoalConsumptionProcessor struct {
|
|
|
BaseProcessor
|
|
@@ -611,6 +1219,38 @@ func (p *ThermalCoalConsumptionProcessor) GenerateRequestParams(currentTime stri
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func (p *ThermalCoalConsumptionProcessor) ProcessResponse(data string) ([]models.FenWeiNetIndexInfo, error) {
|
|
|
+ responseDataMap := fillFenWeiNetResponseMapData(data)
|
|
|
+
|
|
|
+ var indexInfoList []models.FenWeiNetIndexInfo
|
|
|
+ productName := "动力煤消费量"
|
|
|
+ for productCategoryName, responseDataList := range responseDataMap {
|
|
|
+ utils.FileLog.Info(fmt.Sprintf("productName: %s, responseDataList:size: %v", productName, len(responseDataList)))
|
|
|
+ for _, data := range responseDataList {
|
|
|
+ var frequency string
|
|
|
+ if data.MonthlyValueChnName != "" && strings.Contains(data.MonthlyValueChnName, "月度") {
|
|
|
+ frequency = "月度"
|
|
|
+ } else if data.WeekValueChnName != "" && strings.Contains(data.WeekValueChnName, "月度") {
|
|
|
+ frequency = "周度"
|
|
|
+ } else {
|
|
|
+ frequency = "日度"
|
|
|
+ }
|
|
|
+
|
|
|
+ indexInfoList = append(indexInfoList, models.FenWeiNetIndexInfo{
|
|
|
+ IndexName: productName + productCategoryName + "/汾渭",
|
|
|
+ Unit: data.MonthlyValueChnUnit,
|
|
|
+ Frequency: frequency,
|
|
|
+ TerminalCode: utils.TerminalCode,
|
|
|
+ ClassifyName: productName,
|
|
|
+ DataTime: data.DataDate,
|
|
|
+ Value: data.MonthlyValue,
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return indexInfoList, nil
|
|
|
+}
|
|
|
+
|
|
|
// CokingCleanCoalConsumptionProcessor 炼焦精煤消费量
|
|
|
type CokingCleanCoalConsumptionProcessor struct {
|
|
|
BaseProcessor
|
|
@@ -636,3 +1276,53 @@ func (p *CokingCleanCoalConsumptionProcessor) GenerateRequestParams(currentTime
|
|
|
"params": string(paramsJSON),
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+func (p *CokingCleanCoalConsumptionProcessor) ProcessResponse(data string) ([]models.FenWeiNetIndexInfo, error) {
|
|
|
+ responseData := fillFenWeiNetResponseData(data)
|
|
|
+
|
|
|
+ var indexInfoList []models.FenWeiNetIndexInfo
|
|
|
+ productName := "炼焦精煤消费量"
|
|
|
+
|
|
|
+ for _, data := range responseData {
|
|
|
+ var frequency string
|
|
|
+ if data.MonthlyValueChnName != "" && strings.Contains(data.MonthlyValueChnName, "月度") {
|
|
|
+ frequency = "月度"
|
|
|
+ } else if data.WeekValueChnName != "" && strings.Contains(data.WeekValueChnName, "月度") {
|
|
|
+ frequency = "周度"
|
|
|
+ } else {
|
|
|
+ frequency = "日度"
|
|
|
+ }
|
|
|
+
|
|
|
+ indexInfoList = append(indexInfoList, models.FenWeiNetIndexInfo{
|
|
|
+ IndexName: productName + "/汾渭",
|
|
|
+ Unit: data.MonthlyValueChnUnit,
|
|
|
+ Frequency: frequency,
|
|
|
+ TerminalCode: utils.TerminalCode,
|
|
|
+ ClassifyName: productName,
|
|
|
+ DataTime: data.DataDate,
|
|
|
+ Value: data.MonthlyValue,
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ return indexInfoList, nil
|
|
|
+}
|
|
|
+
|
|
|
+func fillFenWeiNetResponseData(data string) []models.FenWeiNetResponse {
|
|
|
+ var result models.FenWeiNetResponseWrapper
|
|
|
+ err := json.Unmarshal([]byte(data), &result)
|
|
|
+ if err != nil {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ responseData := result.Data.Data
|
|
|
+ return responseData
|
|
|
+}
|
|
|
+
|
|
|
+func fillFenWeiNetResponseMapData(data string) map[string][]models.FenWeiNetResponse {
|
|
|
+ var result models.FenWeiNetResponseMapWrapper
|
|
|
+ err := json.Unmarshal([]byte(data), &result)
|
|
|
+ if err != nil {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ responseData := result.Data.Data
|
|
|
+ return responseData
|
|
|
+}
|