|
@@ -0,0 +1,3482 @@
|
|
|
|
+// Package ruizide
|
|
|
|
+// @Author gmy 2024/10/21 10:50:00
|
|
|
|
+package ruizide
|
|
|
|
+
|
|
|
|
+import (
|
|
|
|
+ "encoding/json"
|
|
|
|
+ "eta/eta_data_analysis/models"
|
|
|
|
+ "eta/eta_data_analysis/utils"
|
|
|
|
+ "fmt"
|
|
|
|
+ "github.com/beego/beego/v2/core/logs"
|
|
|
|
+ "math"
|
|
|
|
+ "strconv"
|
|
|
|
+ "strings"
|
|
|
|
+ "unicode"
|
|
|
|
+)
|
|
|
|
+
|
|
|
|
+var classifyMap = map[string]string{
|
|
|
|
+ "Road Index": "analytics library",
|
|
|
|
+ "Road Active Fleet": "analytics library",
|
|
|
|
+ "Aviation Index": "analytics library",
|
|
|
|
+ "Aviation Active Fleet": "analytics library",
|
|
|
|
+ "Demand-Gasoline": "analytics library",
|
|
|
|
+ "Demand - Diesel": "analytics library",
|
|
|
|
+ "Demand - Jet Fuel": "analytics library",
|
|
|
|
+ "Demand - Maritime Bunker": "analytics library",
|
|
|
|
+ "Oil_Demand_Signals_Weekly_Report": "analytics library",
|
|
|
|
+ "cube dashboards": "cube dashboards",
|
|
|
|
+ "Oil Market Cube": "Oil Market Cube",
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// RoadIndexProcessor
|
|
|
|
+// @Description: AnalyticsLibrary处理器
|
|
|
|
+type RoadIndexProcessor struct{}
|
|
|
|
+
|
|
|
|
+func (p *RoadIndexProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing AnalyticsLibrary...")
|
|
|
|
+ if tableName == "Content" {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+ if rowIndex < 4 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "日度"
|
|
|
|
+ unit := "%"
|
|
|
|
+ indexNameColOne := "Index"
|
|
|
|
+ indexNameColTwo := "Index 7DMA"
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify(tableName, sheetName)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexNameOne := sheetName + "/" + rowData[len(rowData)-3] + "/" + indexNameColOne
|
|
|
|
+ indexNameTwo := sheetName + "/" + rowData[len(rowData)-3] + "/" + indexNameColTwo
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCodeOne, err := getIndexId(sheetName, strings.ReplaceAll(strings.ToLower(rowData[len(rowData)-3]), " ", ""), indexNameColOne)
|
|
|
|
+ indexCodeTwo, err := getIndexId(sheetName, strings.ReplaceAll(strings.ToLower(rowData[len(rowData)-3]), " ", ""), indexNameColTwo)
|
|
|
|
+
|
|
|
|
+ indexInfoMap := make(map[string]string)
|
|
|
|
+ indexInfoMap[indexCodeOne] = indexNameOne
|
|
|
|
+ indexInfoMap[indexCodeTwo] = indexNameTwo
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ valueOne, err := strconv.ParseFloat(rowData[len(rowData)-2], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTimeOne := rowData[1]
|
|
|
|
+ formatOne, err := utils.ConvertDateFormat(dataTimeOne)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexNameOne,
|
|
|
|
+ IndexCode: indexCodeOne,
|
|
|
|
+ Value: valueOne,
|
|
|
|
+ DataTime: formatOne,
|
|
|
|
+ })
|
|
|
|
+ valueTwo, err := strconv.ParseFloat(rowData[len(rowData)-1], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexNameTwo,
|
|
|
|
+ IndexCode: indexCodeTwo,
|
|
|
|
+ Value: valueTwo,
|
|
|
|
+ DataTime: formatOne,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// RoadActiveFleetProcessor
|
|
|
|
+// @Description: RoadActiveFleetProcessor处理器
|
|
|
|
+type RoadActiveFleetProcessor struct{}
|
|
|
|
+
|
|
|
|
+func (p *RoadActiveFleetProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing RoadActiveFleet...")
|
|
|
|
+ if tableName == "Content" {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+ if rowIndex < 4 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "日度"
|
|
|
|
+ unit := "辆"
|
|
|
|
+ indexNameColOne := "Active Fleet"
|
|
|
|
+ indexNameColTwo := "Active Fleet 7DMA"
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify(tableName, sheetName)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexNameOne := sheetName + "/" + rowData[len(rowData)-3] + "/" + indexNameColOne
|
|
|
|
+ indexNameTwo := sheetName + "/" + rowData[len(rowData)-3] + "/" + indexNameColTwo
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCodeOne, err := getIndexId(sheetName, strings.ReplaceAll(strings.ToLower(rowData[len(rowData)-3]), " ", ""), indexNameColOne)
|
|
|
|
+ indexCodeTwo, err := getIndexId(sheetName, strings.ReplaceAll(strings.ToLower(rowData[len(rowData)-3]), " ", ""), indexNameColTwo)
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ valueOne, err := strconv.ParseFloat(strings.ReplaceAll(rowData[len(rowData)-2], ",", ""), 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTimeOne := rowData[1]
|
|
|
|
+ formatOne, err := utils.ConvertDateFormat(dataTimeOne)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexNameOne,
|
|
|
|
+ IndexCode: indexCodeOne,
|
|
|
|
+ Value: valueOne,
|
|
|
|
+ DataTime: formatOne,
|
|
|
|
+ })
|
|
|
|
+ valueTwo, err := strconv.ParseFloat(strings.ReplaceAll(rowData[len(rowData)-1], ",", ""), 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexNameTwo,
|
|
|
|
+ IndexCode: indexCodeTwo,
|
|
|
|
+ Value: valueTwo,
|
|
|
|
+ DataTime: formatOne,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("RoadActiveFleetProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("RoadActiveFleetProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// AviationIndexProcessor
|
|
|
|
+// @Description: AviationIndexProcessor处理器
|
|
|
|
+type AviationIndexProcessor struct{}
|
|
|
|
+
|
|
|
|
+func (p *AviationIndexProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing AviationIndexProcessor...")
|
|
|
|
+ if tableName == "Content" {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+ if rowIndex < 4 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "日度"
|
|
|
|
+ unit := "%"
|
|
|
|
+ indexNameColOne := "Index"
|
|
|
|
+ indexNameColTwo := "Index 7DMA"
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify(tableName, sheetName)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexNameOne := sheetName + "/" + rowData[len(rowData)-3] + "/" + indexNameColOne
|
|
|
|
+ indexNameTwo := sheetName + "/" + rowData[len(rowData)-3] + "/" + indexNameColTwo
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCodeOne, err := getIndexId(sheetName, strings.ReplaceAll(strings.ToLower(rowData[len(rowData)-3]), " ", ""), indexNameColOne)
|
|
|
|
+ indexCodeTwo, err := getIndexId(sheetName, strings.ReplaceAll(strings.ToLower(rowData[len(rowData)-3]), " ", ""), indexNameColTwo)
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ valueOne, err := strconv.ParseFloat(strings.ReplaceAll(rowData[len(rowData)-2], ",", ""), 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTimeOne := rowData[1]
|
|
|
|
+ formatOne, err := utils.ConvertDateFormat(dataTimeOne)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexNameOne,
|
|
|
|
+ IndexCode: indexCodeOne,
|
|
|
|
+ Value: valueOne,
|
|
|
|
+ DataTime: formatOne,
|
|
|
|
+ })
|
|
|
|
+ valueTwo, err := strconv.ParseFloat(strings.ReplaceAll(rowData[len(rowData)-1], ",", ""), 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexNameTwo,
|
|
|
|
+ IndexCode: indexCodeTwo,
|
|
|
|
+ Value: valueTwo,
|
|
|
|
+ DataTime: formatOne,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("AviationIndexProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("AviationIndexProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// AviationActiveFleetProcessor
|
|
|
|
+// @Description: AviationActiveFleetProcessor处理器
|
|
|
|
+type AviationActiveFleetProcessor struct{}
|
|
|
|
+
|
|
|
|
+func (p *AviationActiveFleetProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing AviationActiveFleetProcessor...")
|
|
|
|
+ if tableName == "Content" {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+ if rowIndex < 4 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "日度"
|
|
|
|
+ unit := "辆"
|
|
|
|
+ indexNameColOne := "Active Fleet"
|
|
|
|
+ indexNameColTwo := "Active Fleet 7DMA"
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify(tableName, sheetName)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexNameOne := sheetName + "/" + rowData[len(rowData)-3] + "/" + indexNameColOne
|
|
|
|
+ indexNameTwo := sheetName + "/" + rowData[len(rowData)-3] + "/" + indexNameColTwo
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCodeOne, err := getIndexId(sheetName, strings.ReplaceAll(strings.ToLower(rowData[len(rowData)-3]), " ", ""), indexNameColOne)
|
|
|
|
+ indexCodeTwo, err := getIndexId(sheetName, strings.ReplaceAll(strings.ToLower(rowData[len(rowData)-3]), " ", ""), indexNameColTwo)
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ valueOne, err := strconv.ParseFloat(strings.ReplaceAll(rowData[len(rowData)-2], ",", ""), 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTimeOne := rowData[1]
|
|
|
|
+ formatOne, err := utils.ConvertDateFormat(dataTimeOne)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexNameOne,
|
|
|
|
+ IndexCode: indexCodeOne,
|
|
|
|
+ Value: valueOne,
|
|
|
|
+ DataTime: formatOne,
|
|
|
|
+ })
|
|
|
|
+ valueTwo, err := strconv.ParseFloat(strings.ReplaceAll(rowData[len(rowData)-1], ",", ""), 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexNameTwo,
|
|
|
|
+ IndexCode: indexCodeTwo,
|
|
|
|
+ Value: valueTwo,
|
|
|
|
+ DataTime: formatOne,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("AviationActiveFleetProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("AviationActiveFleetProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// DemandGasolineProcessor
|
|
|
|
+// @Description: DemandGasolineProcessor处理器
|
|
|
|
+type DemandGasolineProcessor struct{}
|
|
|
|
+
|
|
|
|
+func (p *DemandGasolineProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing DemandGasolineProcessor...")
|
|
|
|
+ if tableName == "Content" {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+ if rowIndex < 4 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "日度"
|
|
|
|
+ unit := "千桶每天"
|
|
|
|
+ indexNameColOne := "Demand"
|
|
|
|
+ indexNameColTwo := "Demand 7DMA"
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify(tableName, sheetName)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexNameOne := "Gasoline Demand" + "/" + rowData[len(rowData)-3] + "/" + indexNameColOne
|
|
|
|
+ indexNameTwo := "Gasoline Demand" + "/" + rowData[len(rowData)-3] + "/" + indexNameColTwo
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCodeOne, err := getIndexId("Gasoline Demand", strings.ReplaceAll(strings.ToLower(rowData[len(rowData)-3]), " ", ""), indexNameColOne)
|
|
|
|
+ indexCodeTwo, err := getIndexId("Gasoline Demand", strings.ReplaceAll(strings.ToLower(rowData[len(rowData)-3]), " ", ""), indexNameColTwo)
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ var valueOne float64
|
|
|
|
+ if rowData[len(rowData)-2] == "" {
|
|
|
|
+ valueOne = 0
|
|
|
|
+ } else {
|
|
|
|
+ valueOne, err = strconv.ParseFloat(strings.ReplaceAll(rowData[len(rowData)-2], ",", ""), 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTimeOne := rowData[1]
|
|
|
|
+ formatOne, err := utils.ConvertDateFormat(dataTimeOne)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexNameOne,
|
|
|
|
+ IndexCode: indexCodeOne,
|
|
|
|
+ Value: valueOne,
|
|
|
|
+ DataTime: formatOne,
|
|
|
|
+ })
|
|
|
|
+ var valueTwo float64
|
|
|
|
+ if rowData[len(rowData)-1] == "" {
|
|
|
|
+ valueTwo = 0
|
|
|
|
+ } else {
|
|
|
|
+ valueTwo, err = strconv.ParseFloat(strings.ReplaceAll(rowData[len(rowData)-1], ",", ""), 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexNameTwo,
|
|
|
|
+ IndexCode: indexCodeTwo,
|
|
|
|
+ Value: valueTwo,
|
|
|
|
+ DataTime: formatOne,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("DemandGasolineProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("DemandGasolineProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// DemandDieselProcessor
|
|
|
|
+// @Description: DemandDieselProcessor处理器
|
|
|
|
+type DemandDieselProcessor struct{}
|
|
|
|
+
|
|
|
|
+func (p *DemandDieselProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing DemandDieselProcessor...")
|
|
|
|
+ if tableName == "Content" {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+ if rowIndex < 4 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "日度"
|
|
|
|
+ unit := "千桶每天"
|
|
|
|
+ indexNameColOne := "Demand"
|
|
|
|
+ indexNameColTwo := "Demand 7DMA"
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify(tableName, sheetName)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexNameOne := "Demand Diesel" + "/" + rowData[len(rowData)-3] + "/" + indexNameColOne
|
|
|
|
+ indexNameTwo := "Demand Diesel" + "/" + rowData[len(rowData)-3] + "/" + indexNameColTwo
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCodeOne, err := getIndexId("Demand Diesel", strings.ReplaceAll(strings.ToLower(rowData[len(rowData)-3]), " ", ""), indexNameColOne)
|
|
|
|
+ indexCodeTwo, err := getIndexId("Demand Diesel", strings.ReplaceAll(strings.ToLower(rowData[len(rowData)-3]), " ", ""), indexNameColTwo)
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ valueOne, err := strconv.ParseFloat(strings.ReplaceAll(rowData[len(rowData)-2], ",", ""), 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTimeOne := rowData[1]
|
|
|
|
+ formatOne, err := utils.ConvertDateFormat(dataTimeOne)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexNameOne,
|
|
|
|
+ IndexCode: indexCodeOne,
|
|
|
|
+ Value: valueOne,
|
|
|
|
+ DataTime: formatOne,
|
|
|
|
+ })
|
|
|
|
+ valueTwo, err := strconv.ParseFloat(strings.ReplaceAll(rowData[len(rowData)-1], ",", ""), 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexNameTwo,
|
|
|
|
+ IndexCode: indexCodeTwo,
|
|
|
|
+ Value: valueTwo,
|
|
|
|
+ DataTime: formatOne,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("DemandDieselProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("DemandDieselProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// DemandJetFuelProcessor
|
|
|
|
+// @Description: DemandJetFuelProcessor处理器
|
|
|
|
+type DemandJetFuelProcessor struct{}
|
|
|
|
+
|
|
|
|
+func (p *DemandJetFuelProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing DemandJetFuelProcessor...")
|
|
|
|
+ if tableName == "Content" {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+ if rowIndex < 4 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "日度"
|
|
|
|
+ unit := "千桶每天"
|
|
|
|
+ indexNameColOne := "Demand"
|
|
|
|
+ indexNameColTwo := "Demand 7DMA"
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify(tableName, sheetName)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexNameOne := "Demand Jet Fuel" + "/" + rowData[len(rowData)-3] + "/" + indexNameColOne
|
|
|
|
+ indexNameTwo := "Demand Jet Fuel" + "/" + rowData[len(rowData)-3] + "/" + indexNameColTwo
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCodeOne, err := getIndexId("Demand Jet Fuel", strings.ReplaceAll(strings.ToLower(rowData[len(rowData)-3]), " ", ""), indexNameColOne)
|
|
|
|
+ indexCodeTwo, err := getIndexId("Demand Jet Fuel", strings.ReplaceAll(strings.ToLower(rowData[len(rowData)-3]), " ", ""), indexNameColTwo)
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ valueOne, err := strconv.ParseFloat(strings.ReplaceAll(rowData[len(rowData)-2], ",", ""), 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTimeOne := rowData[1]
|
|
|
|
+ formatOne, err := utils.ConvertDateFormat(dataTimeOne)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexNameOne,
|
|
|
|
+ IndexCode: indexCodeOne,
|
|
|
|
+ Value: valueOne,
|
|
|
|
+ DataTime: formatOne,
|
|
|
|
+ })
|
|
|
|
+ valueTwo, err := strconv.ParseFloat(strings.ReplaceAll(rowData[len(rowData)-1], ",", ""), 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexNameTwo,
|
|
|
|
+ IndexCode: indexCodeTwo,
|
|
|
|
+ Value: valueTwo,
|
|
|
|
+ DataTime: formatOne,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("DemandJetFuelProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("DemandJetFuelProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// DemandMaritimeBunkerProcessor
|
|
|
|
+// @Description: DemandMaritimeBunkerProcessor处理器
|
|
|
|
+type DemandMaritimeBunkerProcessor struct{}
|
|
|
|
+
|
|
|
|
+func (p *DemandMaritimeBunkerProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing DemandMaritimeBunkerProcessor...")
|
|
|
|
+ if tableName == "Content" {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+ if rowIndex < 4 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "日度"
|
|
|
|
+ unit := "千桶每天"
|
|
|
|
+ indexNameColOne := "Demand"
|
|
|
|
+ indexNameColTwo := "Demand 7DMA"
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify(tableName, sheetName)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexNameOne := "Demand Maritime Bunker" + "/" + rowData[len(rowData)-3] + "/" + indexNameColOne
|
|
|
|
+ indexNameTwo := "Demand Maritime Bunker" + "/" + rowData[len(rowData)-3] + "/" + indexNameColTwo
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCodeOne, err := getIndexId("Demand Maritime Bunker", strings.ReplaceAll(strings.ToLower(rowData[len(rowData)-3]), " ", ""), indexNameColOne)
|
|
|
|
+ indexCodeTwo, err := getIndexId("Demand Maritime Bunker", strings.ReplaceAll(strings.ToLower(rowData[len(rowData)-3]), " ", ""), indexNameColTwo)
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ valueOne, err := strconv.ParseFloat(strings.ReplaceAll(rowData[len(rowData)-2], ",", ""), 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTimeOne := rowData[1]
|
|
|
|
+ formatOne, err := utils.ConvertDateFormat(dataTimeOne)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexNameOne,
|
|
|
|
+ IndexCode: indexCodeOne,
|
|
|
|
+ Value: valueOne,
|
|
|
|
+ DataTime: formatOne,
|
|
|
|
+ })
|
|
|
|
+ valueTwo, err := strconv.ParseFloat(strings.ReplaceAll(rowData[len(rowData)-1], ",", ""), 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexNameTwo,
|
|
|
|
+ IndexCode: indexCodeTwo,
|
|
|
|
+ Value: valueTwo,
|
|
|
|
+ DataTime: formatOne,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("DemandMaritimeBunkerProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("DemandMaritimeBunkerProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// SupplyRevisionAnalysisChartOneProcessor
|
|
|
|
+// @Description: SupplyRevisionAnalysisChartOneProcessor处理器
|
|
|
|
+type SupplyRevisionAnalysisChartOneProcessor struct{}
|
|
|
|
+
|
|
|
|
+func (p *SupplyRevisionAnalysisChartOneProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing SupplyRevisionAnalysisChartOne...")
|
|
|
|
+ if rowIndex < 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "季度"
|
|
|
|
+ unit := "千桶每天"
|
|
|
|
+ indexNameColSuffix := "YearQuarter"
|
|
|
|
+ indexNameColPrefix := "Country Revision Group"
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("cube dashboards", "Supply Revision Analysis")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexName := "Supply Revision Analysis" + "/" + indexNameColPrefix + "/" + indexNameColSuffix + "/" + rowData[len(rowData)-1]
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCode, err := getIndexId("Supply Revision Analysis "+indexNameColPrefix+" Year Quarter", strings.ReplaceAll(strings.ToLower(rowData[len(rowData)-1]), " ", ""), "")
|
|
|
|
+
|
|
|
|
+ indexInfoMap := make(map[string]string)
|
|
|
|
+ indexInfoMap[indexCode] = indexName
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ var value float64
|
|
|
|
+ if rowData[len(rowData)-2] == "" {
|
|
|
|
+ value = 0
|
|
|
|
+ } else {
|
|
|
|
+ value, err = strconv.ParseFloat(rowData[len(rowData)-2], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTime := rowData[0]
|
|
|
|
+ format, err := utils.ConvertDateFormat2(dataTime)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexName,
|
|
|
|
+ IndexCode: indexCode,
|
|
|
|
+ Value: value,
|
|
|
|
+ DataTime: format,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("SupplyRevisionAnalysisChartOneProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("SupplyRevisionAnalysisChartOneProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// SupplyRevisionAnalysisChartTwoProcessor
|
|
|
|
+// @Description: SupplyRevisionAnalysisChartTwoProcessor处理器
|
|
|
|
+type SupplyRevisionAnalysisChartTwoProcessor struct{}
|
|
|
|
+
|
|
|
|
+func (p *SupplyRevisionAnalysisChartTwoProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing SupplyRevisionAnalysisChartTwoProcessor...")
|
|
|
|
+ if rowIndex < 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "季度"
|
|
|
|
+ unit := "千桶每天"
|
|
|
|
+ indexNameColPrefix := "YearQuarter"
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("cube dashboards", "Supply Revision Analysis")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexNameOne := "Supply Revision Analysis" + "/" + indexNameColPrefix + "/" + "Current"
|
|
|
|
+ indexNameTwo := "Supply Revision Analysis" + "/" + indexNameColPrefix + "/" + "Previous"
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCodeOne, err := getIndexId("Supply Revision Analysis "+indexNameColPrefix, "Current", "")
|
|
|
|
+ indexCodeTwo, err := getIndexId("Supply Revision Analysis "+indexNameColPrefix, "Previous", "")
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ var valueOne float64
|
|
|
|
+ if rowData[len(rowData)-2] == "" {
|
|
|
|
+ valueOne = 0
|
|
|
|
+ } else {
|
|
|
|
+ valueOne, err = strconv.ParseFloat(strings.ReplaceAll(rowData[len(rowData)-2], ",", ""), 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTimeOne := rowData[1]
|
|
|
|
+ formatOne, err := utils.ConvertDateFormat2(dataTimeOne)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexNameOne,
|
|
|
|
+ IndexCode: indexCodeOne,
|
|
|
|
+ Value: valueOne,
|
|
|
|
+ DataTime: formatOne,
|
|
|
|
+ })
|
|
|
|
+ var valueTwo float64
|
|
|
|
+ if rowData[len(rowData)-1] == "" {
|
|
|
|
+ valueTwo = 0
|
|
|
|
+ } else {
|
|
|
|
+ valueTwo, err = strconv.ParseFloat(strings.ReplaceAll(rowData[len(rowData)-1], ",", ""), 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexNameTwo,
|
|
|
|
+ IndexCode: indexCodeTwo,
|
|
|
|
+ Value: valueTwo,
|
|
|
|
+ DataTime: formatOne,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("SupplyRevisionAnalysisChartTwoProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("SupplyRevisionAnalysisChartTwoProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// SupplyRevisionAnalysisChartThreeProcessor
|
|
|
|
+// @Description: SupplyRevisionAnalysisChartThreeProcessor
|
|
|
|
+type SupplyRevisionAnalysisChartThreeProcessor struct{}
|
|
|
|
+
|
|
|
|
+func (p *SupplyRevisionAnalysisChartThreeProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing SupplyRevisionAnalysisChartThreeProcessor...")
|
|
|
|
+ if rowIndex < 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "年度"
|
|
|
|
+ unit := "千桶每天"
|
|
|
|
+ indexNameColSuffix := "Year"
|
|
|
|
+ indexNameColPrefix := "Country Revision Group"
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("cube dashboards", "Supply Revision Analysis")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexName := "Supply Revision Analysis" + "/" + indexNameColPrefix + "/" + indexNameColSuffix + "/" + rowData[len(rowData)-1]
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCode, err := getIndexId("Supply Revision Analysis "+indexNameColPrefix+" "+indexNameColSuffix, strings.ReplaceAll(strings.ToLower(rowData[len(rowData)-1]), " ", ""), "")
|
|
|
|
+
|
|
|
|
+ indexInfoMap := make(map[string]string)
|
|
|
|
+ indexInfoMap[indexCode] = indexName
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ var value float64
|
|
|
|
+ if rowData[len(rowData)-2] == "" {
|
|
|
|
+ value = 0
|
|
|
|
+ } else {
|
|
|
|
+ value, err = strconv.ParseFloat(rowData[len(rowData)-2], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTime := rowData[0]
|
|
|
|
+ format, err := utils.ConvertDateFormat4(dataTime)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexName,
|
|
|
|
+ IndexCode: indexCode,
|
|
|
|
+ Value: value,
|
|
|
|
+ DataTime: format,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("SupplyRevisionAnalysisChartThreeProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("SupplyRevisionAnalysisChartThreeProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// SupplyRevisionAnalysisChartFourProcessor
|
|
|
|
+// @Description: SupplyRevisionAnalysisChartFourProcessor处理器
|
|
|
|
+type SupplyRevisionAnalysisChartFourProcessor struct{}
|
|
|
|
+
|
|
|
|
+func (p *SupplyRevisionAnalysisChartFourProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing SupplyRevisionAnalysisChartFourProcessor...")
|
|
|
|
+ if rowIndex < 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "年度"
|
|
|
|
+ unit := "千桶每天"
|
|
|
|
+ indexNameColPrefix := "Year"
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("cube dashboards", "Supply Revision Analysis")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexNameOne := "Supply Revision Analysis" + "/" + indexNameColPrefix + "/" + "Current"
|
|
|
|
+ indexNameTwo := "Supply Revision Analysis" + "/" + indexNameColPrefix + "/" + "Previous"
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCodeOne, err := getIndexId("Supply Revision Analysis "+indexNameColPrefix, "current", "")
|
|
|
|
+ indexCodeTwo, err := getIndexId("Supply Revision Analysis "+indexNameColPrefix, "previous", "")
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ var valueOne float64
|
|
|
|
+ if rowData[len(rowData)-2] == "" {
|
|
|
|
+ valueOne = 0
|
|
|
|
+ } else {
|
|
|
|
+ valueOne, err = strconv.ParseFloat(strings.ReplaceAll(rowData[len(rowData)-2], ",", ""), 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTimeOne := rowData[0]
|
|
|
|
+ formatOne, err := utils.ConvertDateFormat4(dataTimeOne)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexNameOne,
|
|
|
|
+ IndexCode: indexCodeOne,
|
|
|
|
+ Value: valueOne,
|
|
|
|
+ DataTime: formatOne,
|
|
|
|
+ })
|
|
|
|
+ var valueTwo float64
|
|
|
|
+ if rowData[len(rowData)-1] == "" {
|
|
|
|
+ valueTwo = 0
|
|
|
|
+ } else {
|
|
|
|
+ valueTwo, err = strconv.ParseFloat(strings.ReplaceAll(rowData[len(rowData)-1], ",", ""), 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexNameTwo,
|
|
|
|
+ IndexCode: indexCodeTwo,
|
|
|
|
+ Value: valueTwo,
|
|
|
|
+ DataTime: formatOne,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("SupplyRevisionAnalysisChartFourProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("SupplyRevisionAnalysisChartFourProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// SupplyRevisionAnalysisChartFiveProcessor
|
|
|
|
+// @Description: SupplyRevisionAnalysisChartFiveProcessor处理器
|
|
|
|
+type SupplyRevisionAnalysisChartFiveProcessor struct{}
|
|
|
|
+
|
|
|
|
+func (p *SupplyRevisionAnalysisChartFiveProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing SupplyRevisionAnalysisChartFiveProcessor...")
|
|
|
|
+ if rowIndex < 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "月度"
|
|
|
|
+ unit := "千桶每天"
|
|
|
|
+ indexNameColPrefix := "YearMonth"
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("cube dashboards", "Supply Revision Analysis")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexNameOne := "Supply Revision Analysis" + "/" + indexNameColPrefix + "/" + "Current/Chat5"
|
|
|
|
+ indexNameTwo := "Supply Revision Analysis" + "/" + indexNameColPrefix + "/" + "Previous/Chat5"
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCodeOne, err := getIndexId("Supply Revision Analysis "+indexNameColPrefix, "currentchat5", "")
|
|
|
|
+ indexCodeTwo, err := getIndexId("Supply Revision Analysis "+indexNameColPrefix, "previouschat5", "")
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ var valueOne float64
|
|
|
|
+ if rowData[len(rowData)-2] == "" {
|
|
|
|
+ valueOne = 0
|
|
|
|
+ } else {
|
|
|
|
+ valueOne, err = strconv.ParseFloat(strings.ReplaceAll(rowData[len(rowData)-2], ",", ""), 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTimeOne := rowData[len(rowData)-1]
|
|
|
|
+ timeSplit := strings.Split(dataTimeOne, "-")
|
|
|
|
+ formatOne, err := utils.GetLastDayOfMonth(timeSplit[0] + "-" + timeSplit[1])
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexNameOne,
|
|
|
|
+ IndexCode: indexCodeOne,
|
|
|
|
+ Value: valueOne,
|
|
|
|
+ DataTime: formatOne,
|
|
|
|
+ })
|
|
|
|
+ var valueTwo float64
|
|
|
|
+ if rowData[len(rowData)-3] == "" {
|
|
|
|
+ valueTwo = 0
|
|
|
|
+ } else {
|
|
|
|
+ valueTwo, err = strconv.ParseFloat(strings.ReplaceAll(rowData[len(rowData)-3], ",", ""), 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexNameTwo,
|
|
|
|
+ IndexCode: indexCodeTwo,
|
|
|
|
+ Value: valueTwo,
|
|
|
|
+ DataTime: formatOne,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("SupplyRevisionAnalysisChartFiveProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("SupplyRevisionAnalysisChartFiveProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// SupplyRevisionAnalysisChartSixProcessor
|
|
|
|
+// @Description: SupplyRevisionAnalysisChartSixProcessor
|
|
|
|
+type SupplyRevisionAnalysisChartSixProcessor struct{}
|
|
|
|
+
|
|
|
|
+func (p *SupplyRevisionAnalysisChartSixProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing SupplyRevisionAnalysisChartSixProcessor...")
|
|
|
|
+ if rowIndex < 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "月度"
|
|
|
|
+ unit := "千桶每天"
|
|
|
|
+ indexNameColSuffix := "YearMonth"
|
|
|
|
+ indexNameColPrefix := "Country Revision Group"
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("cube dashboards", "Supply Revision Analysis")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexName := "Supply Revision Analysis" + "/" + indexNameColPrefix + "/" + indexNameColSuffix + "/" + rowData[len(rowData)-2]
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCode, err := getIndexId("Supply Revision Analysis "+indexNameColPrefix+" "+indexNameColSuffix, strings.ReplaceAll(strings.ToLower(rowData[len(rowData)-2]), " ", ""), "")
|
|
|
|
+
|
|
|
|
+ indexInfoMap := make(map[string]string)
|
|
|
|
+ indexInfoMap[indexCode] = indexName
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ var value float64
|
|
|
|
+ if rowData[len(rowData)-1] == "" {
|
|
|
|
+ value = 0
|
|
|
|
+ } else {
|
|
|
|
+ value, err = strconv.ParseFloat(rowData[len(rowData)-1], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTime := rowData[0]
|
|
|
|
+ timeSplit := strings.Split(dataTime, "-")
|
|
|
|
+ format, err := utils.GetLastDayOfMonth(timeSplit[0] + "-" + timeSplit[1])
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexName,
|
|
|
|
+ IndexCode: indexCode,
|
|
|
|
+ Value: value,
|
|
|
|
+ DataTime: format,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("SupplyRevisionAnalysisChartSixProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("SupplyRevisionAnalysisChartSixProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// OilSupplyAnalysisChartOneProcessor
|
|
|
|
+// @Description: OilSupplyAnalysisChartOneProcessor处理器
|
|
|
|
+type OilSupplyAnalysisChartOneProcessor struct{}
|
|
|
|
+
|
|
|
|
+func (p *OilSupplyAnalysisChartOneProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing OilSupplyAnalysisChartOne...")
|
|
|
|
+ if rowIndex < 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "月度"
|
|
|
|
+ unit := "千桶每天"
|
|
|
|
+ indexNameColSuffix := "Oil And Gas Category"
|
|
|
|
+ //indexNameColPrefix := "CountryRevisionGroup"
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("cube dashboards", "Oil Supply Analysis")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexName := "Oil Supply Analysis" + "/" + indexNameColSuffix + "/" + rowData[len(rowData)-2]
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCode, err := getIndexId("Oil Supply Analysis "+indexNameColSuffix, strings.ReplaceAll(strings.ToLower(rowData[len(rowData)-2]), " ", ""), "")
|
|
|
|
+
|
|
|
|
+ indexInfoMap := make(map[string]string)
|
|
|
|
+ indexInfoMap[indexCode] = indexName
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ value, err := strconv.ParseFloat(rowData[len(rowData)-1], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTime := rowData[0]
|
|
|
|
+ format, err := utils.ConvertDateFormat3(dataTime)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexName,
|
|
|
|
+ IndexCode: indexCode,
|
|
|
|
+ Value: value,
|
|
|
|
+ DataTime: format,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("OilSupplyAnalysisChartOneProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("OilSupplyAnalysisChartOneProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// OilSupplyAnalysisChartTwoProcessor
|
|
|
|
+// @Description: OilSupplyAnalysisChartTwoProcessor处理器
|
|
|
|
+type OilSupplyAnalysisChartTwoProcessor struct{}
|
|
|
|
+
|
|
|
|
+func (p *OilSupplyAnalysisChartTwoProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing OilSupplyAnalysisChartTwoProcessor...")
|
|
|
|
+ if rowIndex < 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "月度"
|
|
|
|
+ unit := "千桶每天"
|
|
|
|
+ indexNameColSuffix := "Region"
|
|
|
|
+ //indexNameColPrefix := "CountryRevisionGroup"
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("cube dashboards", "Oil Supply Analysis")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexName := "Oil Supply Analysis" + "/" + indexNameColSuffix + "/" + rowData[len(rowData)-1]
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCode, err := getIndexId("Oil Supply Analysis "+indexNameColSuffix, strings.ReplaceAll(strings.ToLower(rowData[len(rowData)-1]), " ", ""), "")
|
|
|
|
+
|
|
|
|
+ indexInfoMap := make(map[string]string)
|
|
|
|
+ indexInfoMap[indexCode] = indexName
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ value, err := strconv.ParseFloat(rowData[len(rowData)-2], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTime := rowData[0]
|
|
|
|
+ format, err := utils.ConvertDateFormat3(dataTime)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexName,
|
|
|
|
+ IndexCode: indexCode,
|
|
|
|
+ Value: value,
|
|
|
|
+ DataTime: format,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("OilSupplyAnalysisChartTwoProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("OilSupplyAnalysisChartTwoProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// OilSupplyAnalysisChartThreeProcessor
|
|
|
|
+// @Description: OilSupplyAnalysisChartThreeProcessor处理器
|
|
|
|
+type OilSupplyAnalysisChartThreeProcessor struct{}
|
|
|
|
+
|
|
|
|
+func (p *OilSupplyAnalysisChartThreeProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing OilSupplyAnalysisChartThreeProcessor...")
|
|
|
|
+ if rowIndex < 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "月度"
|
|
|
|
+ unit := "千桶每天"
|
|
|
|
+ indexNameColSuffix := "CapacityDetail"
|
|
|
|
+ //indexNameColPrefix := "CountryRevisionGroup"
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("cube dashboards", "Oil Supply Analysis")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexName := "Oil Supply Analysis" + "/" + indexNameColSuffix + "/" + rowData[len(rowData)-2]
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCode, err := getIndexId("Oil Supply Analysis "+indexNameColSuffix, strings.ReplaceAll(strings.ToLower(rowData[len(rowData)-2]), " ", ""), "")
|
|
|
|
+
|
|
|
|
+ indexInfoMap := make(map[string]string)
|
|
|
|
+ indexInfoMap[indexCode] = indexName
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ value, err := strconv.ParseFloat(rowData[len(rowData)-1], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTime := rowData[0]
|
|
|
|
+ format, err := utils.ConvertDateFormat3(dataTime)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexName,
|
|
|
|
+ IndexCode: indexCode,
|
|
|
|
+ Value: value,
|
|
|
|
+ DataTime: format,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("OilSupplyAnalysisChartThreeProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("OilSupplyAnalysisChartThreeProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// OilSupplyAnalysisChartFourProcessor
|
|
|
|
+// @Description: OilSupplyAnalysisChartFourProcessor处理器
|
|
|
|
+type OilSupplyAnalysisChartFourProcessor struct{}
|
|
|
|
+
|
|
|
|
+func (p *OilSupplyAnalysisChartFourProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing OilSupplyAnalysisChartFourProcessor...")
|
|
|
|
+ if rowIndex < 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "月度"
|
|
|
|
+ unit := "千桶每天"
|
|
|
|
+ indexNameColSuffix := "Oil Classification Group"
|
|
|
|
+ //indexNameColPrefix := "CountryRevisionGroup"
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("cube dashboards", "Oil Supply Analysis")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexName := "Oil Supply Analysis" + "/" + indexNameColSuffix + "/" + rowData[len(rowData)-2]
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCode, err := getIndexId("Oil Supply Analysis "+indexNameColSuffix, strings.ReplaceAll(strings.ToLower(rowData[len(rowData)-2]), " ", ""), "")
|
|
|
|
+
|
|
|
|
+ indexInfoMap := make(map[string]string)
|
|
|
|
+ indexInfoMap[indexCode] = indexName
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ value, err := strconv.ParseFloat(rowData[len(rowData)-1], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTime := rowData[0]
|
|
|
|
+ format, err := utils.ConvertDateFormat3(dataTime)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexName,
|
|
|
|
+ IndexCode: indexCode,
|
|
|
|
+ Value: value,
|
|
|
|
+ DataTime: format,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("OilSupplyAnalysisChartFourProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("OilSupplyAnalysisChartFourProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// OilDemandAnalysisContinentProcessor
|
|
|
|
+// @Description: OilDemandAnalysisContinentProcessor处理器
|
|
|
|
+type OilDemandAnalysisContinentProcessor struct{}
|
|
|
|
+
|
|
|
|
+func (p *OilDemandAnalysisContinentProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing OilDemandAnalysisContinentProcessor...")
|
|
|
|
+ if rowIndex < 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "月度"
|
|
|
|
+ unit := "千桶每天"
|
|
|
|
+ indexNameColSuffix := "Continent"
|
|
|
|
+ //indexNameColPrefix := "CountryRevisionGroup"
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("cube dashboards", "Oil Demand Analysis")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexName := "Oil Demand Analysis" + "/" + indexNameColSuffix + "/" + rowData[len(rowData)-2]
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCode, err := getIndexId("Oil Demand Analysis "+indexNameColSuffix, strings.ReplaceAll(strings.ToLower(rowData[len(rowData)-2]), " ", ""), "")
|
|
|
|
+
|
|
|
|
+ indexInfoMap := make(map[string]string)
|
|
|
|
+ indexInfoMap[indexCode] = indexName
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ value, err := strconv.ParseFloat(rowData[len(rowData)-1], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTime := rowData[0]
|
|
|
|
+ format, err := utils.ConvertDateFormat3(dataTime)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexName,
|
|
|
|
+ IndexCode: indexCode,
|
|
|
|
+ Value: value,
|
|
|
|
+ DataTime: format,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("OilDemandAnalysisContinentProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("OilDemandAnalysisContinentProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// OilDemandAnalysisRegionProcessor
|
|
|
|
+// @Description: OilDemandAnalysisRegionProcessor处理器
|
|
|
|
+type OilDemandAnalysisRegionProcessor struct{}
|
|
|
|
+
|
|
|
|
+func (p *OilDemandAnalysisRegionProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing OilDemandAnalysisRegionProcessor...")
|
|
|
|
+ if rowIndex < 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "月度"
|
|
|
|
+ unit := "千桶每天"
|
|
|
|
+ indexNameColSuffix := "Region"
|
|
|
|
+ //indexNameColPrefix := "CountryRevisionGroup"
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("cube dashboards", "Oil Demand Analysis")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexName := "Oil Demand Analysis" + "/" + indexNameColSuffix + "/" + rowData[len(rowData)-2]
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCode, err := getIndexId("Oil Demand Analysis "+indexNameColSuffix, strings.ReplaceAll(strings.ToLower(rowData[len(rowData)-2]), " ", ""), "")
|
|
|
|
+
|
|
|
|
+ indexInfoMap := make(map[string]string)
|
|
|
|
+ indexInfoMap[indexCode] = indexName
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ value, err := strconv.ParseFloat(rowData[len(rowData)-1], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTime := rowData[0]
|
|
|
|
+ format, err := utils.ConvertDateFormat3(dataTime)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexName,
|
|
|
|
+ IndexCode: indexCode,
|
|
|
|
+ Value: value,
|
|
|
|
+ DataTime: format,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("OilDemandAnalysisRegionProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("OilDemandAnalysisRegionProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// OilDemandAnalysisCountryProcessor
|
|
|
|
+// @Description: OilDemandAnalysisCountryProcessor
|
|
|
|
+type OilDemandAnalysisCountryProcessor struct{}
|
|
|
|
+
|
|
|
|
+func (p *OilDemandAnalysisCountryProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing OilDemandAnalysisCountryProcessor...")
|
|
|
|
+ if rowIndex < 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "月度"
|
|
|
|
+ unit := "千桶每天"
|
|
|
|
+ indexNameColSuffix := "Country"
|
|
|
|
+ //indexNameColPrefix := "CountryRevisionGroup"
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("cube dashboards", "Oil Demand Analysis")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexName := "Oil Demand Analysis" + "/" + indexNameColSuffix + "/" + rowData[len(rowData)-2]
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCode, err := getIndexId("Oil Demand Analysis "+indexNameColSuffix, strings.ReplaceAll(strings.ToLower(rowData[len(rowData)-2]), " ", ""), "")
|
|
|
|
+
|
|
|
|
+ indexInfoMap := make(map[string]string)
|
|
|
|
+ indexInfoMap[indexCode] = indexName
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ value, err := strconv.ParseFloat(rowData[len(rowData)-1], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTime := rowData[0]
|
|
|
|
+ format, err := utils.ConvertDateFormat3(dataTime)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexName,
|
|
|
|
+ IndexCode: indexCode,
|
|
|
|
+ Value: value,
|
|
|
|
+ DataTime: format,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("OilDemandAnalysisCountryProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("OilDemandAnalysisCountryProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// OilDemandAnalysisProductCategoryProcessor
|
|
|
|
+// @Description: OilDemandAnalysisProductCategoryProcessor处理器
|
|
|
|
+type OilDemandAnalysisProductCategoryProcessor struct{}
|
|
|
|
+
|
|
|
|
+func (p *OilDemandAnalysisProductCategoryProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing OilDemandAnalysisProductCategoryProcessor...")
|
|
|
|
+ if rowIndex < 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "月度"
|
|
|
|
+ unit := "千桶每天"
|
|
|
|
+ indexNameColSuffix := "Product category"
|
|
|
|
+ //indexNameColPrefix := "CountryRevisionGroup"
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("cube dashboards", "Oil Demand Analysis")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexName := "Oil Demand Analysis" + "/" + indexNameColSuffix + "/" + rowData[len(rowData)-2]
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCode, err := getIndexId("Oil Demand Analysis "+indexNameColSuffix, strings.ReplaceAll(strings.ToLower(rowData[len(rowData)-2]), " ", ""), "")
|
|
|
|
+
|
|
|
|
+ indexInfoMap := make(map[string]string)
|
|
|
|
+ indexInfoMap[indexCode] = indexName
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ value, err := strconv.ParseFloat(rowData[len(rowData)-1], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTime := rowData[0]
|
|
|
|
+ format, err := utils.ConvertDateFormat3(dataTime)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexName,
|
|
|
|
+ IndexCode: indexCode,
|
|
|
|
+ Value: value,
|
|
|
|
+ DataTime: format,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("OilDemandAnalysisProductCategoryProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("OilDemandAnalysisProductCategoryProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// OilDemandAnalysisProductDetailProcessor
|
|
|
|
+// @Description: OilDemandAnalysisProductDetailProcessor处理器
|
|
|
|
+type OilDemandAnalysisProductDetailProcessor struct{}
|
|
|
|
+
|
|
|
|
+func (p *OilDemandAnalysisProductDetailProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing OilDemandAnalysisProductDetailProcessor...")
|
|
|
|
+ if rowIndex < 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "月度"
|
|
|
|
+ unit := "千桶每天"
|
|
|
|
+ indexNameColSuffix := "Product detail"
|
|
|
|
+ //indexNameColPrefix := "CountryRevisionGroup"
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("cube dashboards", "Oil Demand Analysis")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexName := "Oil Demand Analysis" + "/" + indexNameColSuffix + "/" + rowData[len(rowData)-2]
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCode, err := getIndexId("Oil Demand Analysis "+indexNameColSuffix, strings.ReplaceAll(strings.ToLower(rowData[len(rowData)-2]), " ", ""), "")
|
|
|
|
+
|
|
|
|
+ indexInfoMap := make(map[string]string)
|
|
|
|
+ indexInfoMap[indexCode] = indexName
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ value, err := strconv.ParseFloat(rowData[len(rowData)-1], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTime := rowData[0]
|
|
|
|
+ format, err := utils.ConvertDateFormat3(dataTime)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexName,
|
|
|
|
+ IndexCode: indexCode,
|
|
|
|
+ Value: value,
|
|
|
|
+ DataTime: format,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("OilDemandAnalysisProductDetailProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("OilDemandAnalysisProductDetailProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// OilDemandAnalysisSectorCategoryProcessor
|
|
|
|
+// @Description: OilDemandAnalysisSectorCategoryProcessor处理器
|
|
|
|
+type OilDemandAnalysisSectorCategoryProcessor struct{}
|
|
|
|
+
|
|
|
|
+func (p *OilDemandAnalysisSectorCategoryProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing OilDemandAnalysisSectorCategoryProcessor...")
|
|
|
|
+ if rowIndex < 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "月度"
|
|
|
|
+ unit := "千桶每天"
|
|
|
|
+ indexNameColSuffix := "Sector category"
|
|
|
|
+ //indexNameColPrefix := "CountryRevisionGroup"
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("cube dashboards", "Oil Demand Analysis")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexName := "Oil Demand Analysis" + "/" + indexNameColSuffix + "/" + rowData[len(rowData)-2]
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCode, err := getIndexId("Oil Demand Analysis "+indexNameColSuffix, strings.ReplaceAll(strings.ToLower(rowData[len(rowData)-2]), " ", ""), "")
|
|
|
|
+
|
|
|
|
+ indexInfoMap := make(map[string]string)
|
|
|
|
+ indexInfoMap[indexCode] = indexName
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ value, err := strconv.ParseFloat(rowData[len(rowData)-1], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTime := rowData[0]
|
|
|
|
+ format, err := utils.ConvertDateFormat3(dataTime)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexName,
|
|
|
|
+ IndexCode: indexCode,
|
|
|
|
+ Value: value,
|
|
|
|
+ DataTime: format,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("OilDemandAnalysisSectorCategoryProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("OilDemandAnalysisSectorCategoryProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// OilDemandAnalysisSectorDetailProcessor
|
|
|
|
+// @Description: OilDemandAnalysisSectorDetailProcessor处理器
|
|
|
|
+type OilDemandAnalysisSectorDetailProcessor struct{}
|
|
|
|
+
|
|
|
|
+func (p *OilDemandAnalysisSectorDetailProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing OilDemandAnalysisSectorDetailProcessor...")
|
|
|
|
+ if rowIndex < 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "月度"
|
|
|
|
+ unit := "千桶每天"
|
|
|
|
+ indexNameColSuffix := "Sector detail"
|
|
|
|
+ //indexNameColPrefix := "CountryRevisionGroup"
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("cube dashboards", "Oil Demand Analysis")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexName := "Oil Demand Analysis" + "/" + indexNameColSuffix + "/" + rowData[len(rowData)-2]
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCode, err := getIndexId("Oil Demand Analysis "+indexNameColSuffix, strings.ReplaceAll(strings.ToLower(rowData[len(rowData)-2]), " ", ""), "")
|
|
|
|
+
|
|
|
|
+ indexInfoMap := make(map[string]string)
|
|
|
|
+ indexInfoMap[indexCode] = indexName
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ value, err := strconv.ParseFloat(rowData[len(rowData)-1], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTime := rowData[0]
|
|
|
|
+ format, err := utils.ConvertDateFormat3(dataTime)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexName,
|
|
|
|
+ IndexCode: indexCode,
|
|
|
|
+ Value: value,
|
|
|
|
+ DataTime: format,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("OilDemandAnalysisSectorDetailProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("OilDemandAnalysisSectorDetailProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// OilDemandAnalysisScenarioProcessor
|
|
|
|
+// @Description: OilDemandAnalysisScenarioProcessor处理器
|
|
|
|
+type OilDemandAnalysisScenarioProcessor struct{}
|
|
|
|
+
|
|
|
|
+func (p *OilDemandAnalysisScenarioProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing OilDemandAnalysisScenarioProcessor...")
|
|
|
|
+ if rowIndex < 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "月度"
|
|
|
|
+ unit := "千桶每天"
|
|
|
|
+ indexNameColSuffix := "Scenario"
|
|
|
|
+ //indexNameColPrefix := "CountryRevisionGroup"
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("cube dashboards", "Oil Demand Analysis")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexName := "Oil Demand Analysis" + "/" + indexNameColSuffix + "/" + rowData[len(rowData)-2]
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCode, err := getIndexId("Oil Demand Analysis "+indexNameColSuffix, strings.ReplaceAll(strings.ToLower(rowData[len(rowData)-2]), " ", ""), "")
|
|
|
|
+
|
|
|
|
+ indexInfoMap := make(map[string]string)
|
|
|
|
+ indexInfoMap[indexCode] = indexName
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ value, err := strconv.ParseFloat(rowData[len(rowData)-1], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTime := rowData[0]
|
|
|
|
+ format, err := utils.ConvertDateFormat3(dataTime)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexName,
|
|
|
|
+ IndexCode: indexCode,
|
|
|
|
+ Value: value,
|
|
|
|
+ DataTime: format,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("OilDemandAnalysisScenarioProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("OilDemandAnalysisScenarioProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// UpstreamSupplyOilQualityApiProcessor
|
|
|
|
+// @Description: UpstreamSupplyOilQualityApiProcessor处理器
|
|
|
|
+type UpstreamSupplyOilQualityApiProcessor struct{}
|
|
|
|
+
|
|
|
|
+var rzdApiFlag string
|
|
|
|
+
|
|
|
|
+func (p *UpstreamSupplyOilQualityApiProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing UpstreamSupplyOilQualityApiProcessor...")
|
|
|
|
+ if rowIndex <= 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if rowData[0] != "" {
|
|
|
|
+ rzdApiFlag = rowData[0]
|
|
|
|
+ } else {
|
|
|
|
+ rowData[0] = rzdApiFlag
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "月度"
|
|
|
|
+ unit := "°"
|
|
|
|
+ indexNameColSuffix := "Oil Quality"
|
|
|
|
+ //indexNameColPrefix := "CountryRevisionGroup"
|
|
|
|
+
|
|
|
|
+ if !utils.IsNumeric(rowData[0]) {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+ if rowData[1] == "Sum" {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("Oil Market Cube", "Upstream Supply")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexName := "Upstream Supply" + "/" + indexNameColSuffix + "/" + "API"
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCode, err := getIndexId("Upstream Supply "+indexNameColSuffix, strings.ToLower("API"), "")
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ value, err := strconv.ParseFloat(rowData[len(rowData)-1], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTime := rowData[0]
|
|
|
|
+ format, err := utils.ConvertDateFormat6(dataTime + "-" + rowData[1])
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexName,
|
|
|
|
+ IndexCode: indexCode,
|
|
|
|
+ Value: value,
|
|
|
|
+ DataTime: format,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("UpstreamSupplyOilQualityApiProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("UpstreamSupplyOilQualityApiProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// OilMarketCubeUpstreamSupplyOilQualitySulphurProcessor
|
|
|
|
+// @Description: OilMarketCubeUpstreamSupplyOilQualitySulphurProcessor处理器
|
|
|
|
+type OilMarketCubeUpstreamSupplyOilQualitySulphurProcessor struct{}
|
|
|
|
+
|
|
|
|
+var rzdSulphurFlag string
|
|
|
|
+
|
|
|
|
+func (p *OilMarketCubeUpstreamSupplyOilQualitySulphurProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing OilMarketCubeUpstreamSupplyOilQualitySulphurProcessor...")
|
|
|
|
+ if rowIndex <= 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if rowData[0] != "" {
|
|
|
|
+ rzdSulphurFlag = rowData[0]
|
|
|
|
+ } else {
|
|
|
|
+ rowData[0] = rzdSulphurFlag
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "月度"
|
|
|
|
+ unit := "%wt"
|
|
|
|
+ indexNameColSuffix := "Oil Quality"
|
|
|
|
+ //indexNameColPrefix := "CountryRevisionGroup"
|
|
|
|
+
|
|
|
|
+ if !utils.IsNumeric(rowData[0]) {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+ if rowData[1] == "Sum" {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("Oil Market Cube", "Upstream Supply")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexName := "Upstream Supply" + "/" + indexNameColSuffix + "/" + "Sulphur"
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCode, err := getIndexId("Upstream Supply "+indexNameColSuffix, strings.ToLower("Sulphur"), "")
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ value, err := strconv.ParseFloat(rowData[len(rowData)-1], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTime := rowData[0]
|
|
|
|
+ format, err := utils.ConvertDateFormat6(dataTime + "-" + rowData[1])
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexName,
|
|
|
|
+ IndexCode: indexCode,
|
|
|
|
+ Value: value,
|
|
|
|
+ DataTime: format,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("OilMarketCubeUpstreamSupplyOilQualitySulphurProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("OilMarketCubeUpstreamSupplyOilQualitySulphurProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// OilMarketCubeUpstreamSupplyCapacityCapacityProcessor
|
|
|
|
+// @Description: OilMarketCubeUpstreamSupplyCapacityCapacityProcessor处理器
|
|
|
|
+type OilMarketCubeUpstreamSupplyCapacityCapacityProcessor struct{}
|
|
|
|
+
|
|
|
|
+var rzdCapacityFlag string
|
|
|
|
+
|
|
|
|
+func (p *OilMarketCubeUpstreamSupplyCapacityCapacityProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing OilMarketCubeUpstreamSupplyCapacityCapacityProcessor...")
|
|
|
|
+ if rowIndex <= 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if rowData[0] != "" {
|
|
|
|
+ rzdCapacityFlag = rowData[0]
|
|
|
|
+ } else {
|
|
|
|
+ rowData[0] = rzdCapacityFlag
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "月度"
|
|
|
|
+ unit := "kbbl/d"
|
|
|
|
+ indexNameColSuffix := "Capacity"
|
|
|
|
+ //indexNameColPrefix := "CountryRevisionGroup"
|
|
|
|
+
|
|
|
|
+ if !utils.IsNumeric(rowData[0]) {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+ if rowData[1] == "Sum" {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("Oil Market Cube", "Upstream Supply")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexName := "Upstream Supply" + "/" + indexNameColSuffix
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCode, err := getIndexId("Upstream Supply ", strings.ReplaceAll(strings.ToLower(indexNameColSuffix), " ", ""), "")
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ value, err := strconv.ParseFloat(rowData[len(rowData)-1], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTime := rowData[0]
|
|
|
|
+ format, err := utils.ConvertDateFormat6(dataTime + "-" + rowData[1])
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexName,
|
|
|
|
+ IndexCode: indexCode,
|
|
|
|
+ Value: value,
|
|
|
|
+ DataTime: format,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("OilMarketCubeUpstreamSupplyCapacityCapacityProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("OilMarketCubeUpstreamSupplyCapacityCapacityProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// OilMarketCubeUpstreamSupplyProductionProcessor
|
|
|
|
+// @Description: OilMarketCubeUpstreamSupplyProductionProcessor处理器
|
|
|
|
+type OilMarketCubeUpstreamSupplyProductionProcessor struct{}
|
|
|
|
+
|
|
|
|
+var rzdProductionFlag string
|
|
|
|
+
|
|
|
|
+func (p *OilMarketCubeUpstreamSupplyProductionProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing OilMarketCubeUpstreamSupplyProductionProcessor...")
|
|
|
|
+ if rowIndex <= 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if rowData[0] != "" {
|
|
|
|
+ rzdProductionFlag = rowData[0]
|
|
|
|
+ } else {
|
|
|
|
+ rowData[0] = rzdProductionFlag
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "月度"
|
|
|
|
+ unit := "kbbl/d"
|
|
|
|
+ indexNameColSuffix := "Production"
|
|
|
|
+ //indexNameColPrefix := "CountryRevisionGroup"
|
|
|
|
+
|
|
|
|
+ if !utils.IsNumeric(rowData[0]) {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+ if rowData[1] == "Sum" {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("Oil Market Cube", "Upstream Supply")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexName := "Upstream Supply" + "/" + indexNameColSuffix
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCode, err := getIndexId("Upstream Supply", strings.ReplaceAll(strings.ToLower(indexNameColSuffix), " ", ""), "")
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ value, err := strconv.ParseFloat(rowData[len(rowData)-1], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTime := rowData[0]
|
|
|
|
+ format, err := utils.ConvertDateFormat6(dataTime + "-" + rowData[1])
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexName,
|
|
|
|
+ IndexCode: indexCode,
|
|
|
|
+ Value: value,
|
|
|
|
+ DataTime: format,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("OilMarketCubeUpstreamSupplyProductionProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("OilMarketCubeUpstreamSupplyProductionProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// UpstreamSupplyProductionWoSeasonalityProcessor
|
|
|
|
+// @Description: UpstreamSupplyProductionWoSeasonalityProcessor处理器
|
|
|
|
+type UpstreamSupplyProductionWoSeasonalityProcessor struct{}
|
|
|
|
+
|
|
|
|
+var rzdProductionWoSeasonalityFlag string
|
|
|
|
+
|
|
|
|
+func (p *UpstreamSupplyProductionWoSeasonalityProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing UpstreamSupplyProductionWoSeasonalityProcessor...")
|
|
|
|
+ if rowIndex <= 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if rowData[0] != "" {
|
|
|
|
+ rzdProductionWoSeasonalityFlag = rowData[0]
|
|
|
|
+ } else {
|
|
|
|
+ rowData[0] = rzdProductionWoSeasonalityFlag
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "月度"
|
|
|
|
+ unit := "kbbl/d"
|
|
|
|
+ indexNameColSuffix := "Production Wo Seasonality"
|
|
|
|
+ //indexNameColPrefix := "CountryRevisionGroup"
|
|
|
|
+
|
|
|
|
+ if !utils.IsNumeric(rowData[0]) {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+ if rowData[1] == "Sum" {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("Oil Market Cube", "Upstream Supply")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexName := "Upstream Supply" + "/" + indexNameColSuffix
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCode, err := getIndexId("Upstream Supply", strings.ReplaceAll(strings.ToLower(indexNameColSuffix), " ", ""), "")
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ value, err := strconv.ParseFloat(rowData[len(rowData)-1], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTime := rowData[0]
|
|
|
|
+ format, err := utils.ConvertDateFormat6(dataTime + "-" + rowData[1])
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexName,
|
|
|
|
+ IndexCode: indexCode,
|
|
|
|
+ Value: value,
|
|
|
|
+ DataTime: format,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("UpstreamSupplyProductionWoSeasonalityProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("UpstreamSupplyProductionWoSeasonalityProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// UpstreamSupplyOPECPolicyReferenceProductionProcessor
|
|
|
|
+// @Description: UpstreamSupplyOPECPolicyReferenceProductionProcessor处理器
|
|
|
|
+type UpstreamSupplyOPECPolicyReferenceProductionProcessor struct{}
|
|
|
|
+
|
|
|
|
+var rzdReferenceProductionFlag string
|
|
|
|
+
|
|
|
|
+func (p *UpstreamSupplyOPECPolicyReferenceProductionProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing UpstreamSupplyOPECPolicyReferenceProductionProcessor...")
|
|
|
|
+ if rowIndex <= 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if rowData[0] != "" {
|
|
|
|
+ rzdReferenceProductionFlag = rowData[0]
|
|
|
|
+ } else {
|
|
|
|
+ rowData[0] = rzdReferenceProductionFlag
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "月度"
|
|
|
|
+ unit := "kbbl/d"
|
|
|
|
+ indexNameColPrefix := "OPEC_Policy"
|
|
|
|
+ indexNameColSuffix := "Reference Production"
|
|
|
|
+
|
|
|
|
+ if !utils.IsNumeric(rowData[0]) {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+ if rowData[1] == "Sum" {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("Oil Market Cube", "Upstream Supply")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexName := "Upstream Supply" + "/" + indexNameColPrefix + "/" + indexNameColSuffix
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCode, err := getIndexId("Upstream Supply "+indexNameColPrefix, strings.ReplaceAll(strings.ToLower(indexNameColSuffix), " ", ""), "")
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ value, err := strconv.ParseFloat(rowData[len(rowData)-1], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTime := rowData[0]
|
|
|
|
+ format, err := utils.ConvertDateFormat6(dataTime + "-" + rowData[1])
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexName,
|
|
|
|
+ IndexCode: indexCode,
|
|
|
|
+ Value: value,
|
|
|
|
+ DataTime: format,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("UpstreamSupplyOPECPolicyReferenceProductionProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("UpstreamSupplyOPECPolicyReferenceProductionProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// UpstreamSupplyOPECPolicyTargetProductionProcessor
|
|
|
|
+// @Description: UpstreamSupplyOPECPolicyTargetProductionProcessor处理器
|
|
|
|
+type UpstreamSupplyOPECPolicyTargetProductionProcessor struct{}
|
|
|
|
+
|
|
|
|
+var rzdTargetProductionFlag string
|
|
|
|
+
|
|
|
|
+func (p *UpstreamSupplyOPECPolicyTargetProductionProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing UpstreamSupplyOPECPolicyTargetProductionProcessor...")
|
|
|
|
+ if rowIndex <= 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if rowData[0] != "" {
|
|
|
|
+ rzdTargetProductionFlag = rowData[0]
|
|
|
|
+ } else {
|
|
|
|
+ rowData[0] = rzdTargetProductionFlag
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "月度"
|
|
|
|
+ unit := "kbbl/d"
|
|
|
|
+ indexNameColPrefix := "OPEC_Policy"
|
|
|
|
+ indexNameColSuffix := "Target Production"
|
|
|
|
+
|
|
|
|
+ if !utils.IsNumeric(rowData[0]) {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+ if rowData[1] == "Sum" {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("Oil Market Cube", "Upstream Supply")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexName := "Upstream Supply" + "/" + indexNameColPrefix + "/" + indexNameColSuffix
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCode, err := getIndexId("Upstream Supply "+indexNameColPrefix, strings.ReplaceAll(strings.ToLower(indexNameColSuffix), " ", ""), "")
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ value, err := strconv.ParseFloat(rowData[len(rowData)-1], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTime := rowData[0]
|
|
|
|
+ format, err := utils.ConvertDateFormat6(dataTime + "-" + rowData[1])
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexName,
|
|
|
|
+ IndexCode: indexCode,
|
|
|
|
+ Value: value,
|
|
|
|
+ DataTime: format,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("UpstreamSupplyOPECPolicyTargetProductionProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("UpstreamSupplyOPECPolicyTargetProductionProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// UpstreamSupplyOPECPolicyTargetCutProcessor
|
|
|
|
+// @Description: UpstreamSupplyOPECPolicyTargetCutProcessor处理器
|
|
|
|
+type UpstreamSupplyOPECPolicyTargetCutProcessor struct{}
|
|
|
|
+
|
|
|
|
+var rzdTargetCutFlag string
|
|
|
|
+
|
|
|
|
+func (p *UpstreamSupplyOPECPolicyTargetCutProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing UpstreamSupplyOPECPolicyTargetCutProcessor...")
|
|
|
|
+ if rowIndex <= 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if rowData[0] != "" {
|
|
|
|
+ rzdTargetCutFlag = rowData[0]
|
|
|
|
+ } else {
|
|
|
|
+ rowData[0] = rzdTargetCutFlag
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "月度"
|
|
|
|
+ unit := "kbbl/d"
|
|
|
|
+ indexNameColPrefix := "OPEC_Policy"
|
|
|
|
+ indexNameColSuffix := "Target Cut"
|
|
|
|
+
|
|
|
|
+ if !utils.IsNumeric(rowData[0]) {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+ if rowData[1] == "Sum" {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("Oil Market Cube", "Upstream Supply")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexName := "Upstream Supply" + "/" + indexNameColPrefix + "/" + indexNameColSuffix
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCode, err := getIndexId("Upstream Supply "+indexNameColPrefix, strings.ReplaceAll(strings.ToLower(indexNameColSuffix), " ", ""), "")
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ value, err := strconv.ParseFloat(rowData[len(rowData)-1], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTime := rowData[0]
|
|
|
|
+ format, err := utils.ConvertDateFormat6(dataTime + "-" + rowData[1])
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexName,
|
|
|
|
+ IndexCode: indexCode,
|
|
|
|
+ Value: value,
|
|
|
|
+ DataTime: format,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("UpstreamSupplyOPECPolicyTargetCutProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("UpstreamSupplyOPECPolicyTargetCutProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// UpstreamSupplyOPECPolicyActualCutProcessor
|
|
|
|
+// @Description: UpstreamSupplyOPECPolicyActualCutProcessor处理器
|
|
|
|
+type UpstreamSupplyOPECPolicyActualCutProcessor struct{}
|
|
|
|
+
|
|
|
|
+var rzdActualCutFlag string
|
|
|
|
+
|
|
|
|
+func (p *UpstreamSupplyOPECPolicyActualCutProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing UpstreamSupplyOPECPolicyActualCutProcessor...")
|
|
|
|
+ if rowIndex <= 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if rowData[0] != "" {
|
|
|
|
+ rzdActualCutFlag = rowData[0]
|
|
|
|
+ } else {
|
|
|
|
+ rowData[0] = rzdActualCutFlag
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "月度"
|
|
|
|
+ unit := "kbbl/d"
|
|
|
|
+ indexNameColPrefix := "OPEC_Policy"
|
|
|
|
+ indexNameColSuffix := "Actual Cut"
|
|
|
|
+
|
|
|
|
+ if !utils.IsNumeric(rowData[0]) {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+ if rowData[1] == "Sum" {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("Oil Market Cube", "Upstream Supply")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexName := "Upstream Supply" + "/" + indexNameColPrefix + "/" + indexNameColSuffix
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCode, err := getIndexId("Upstream Supply "+indexNameColPrefix, strings.ReplaceAll(strings.ToLower(indexNameColSuffix), " ", ""), "")
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ value, err := strconv.ParseFloat(rowData[len(rowData)-1], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTime := rowData[0]
|
|
|
|
+ format, err := utils.ConvertDateFormat6(dataTime + "-" + rowData[1])
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexName,
|
|
|
|
+ IndexCode: indexCode,
|
|
|
|
+ Value: value,
|
|
|
|
+ DataTime: format,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("UpstreamSupplyOPECPolicyActualCutProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("UpstreamSupplyOPECPolicyActualCutProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// UpstreamSupplyOPECPolicyComplianceProcessor
|
|
|
|
+// @Description: UpstreamSupplyOPECPolicyComplianceProcessor处理器
|
|
|
|
+type UpstreamSupplyOPECPolicyComplianceProcessor struct{}
|
|
|
|
+
|
|
|
|
+var rzdComplianceFlag string
|
|
|
|
+
|
|
|
|
+func (p *UpstreamSupplyOPECPolicyComplianceProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing UpstreamSupplyOPECPolicyComplianceProcessor...")
|
|
|
|
+ if rowIndex <= 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if rowData[0] != "" {
|
|
|
|
+ rzdComplianceFlag = rowData[0]
|
|
|
|
+ } else {
|
|
|
|
+ rowData[0] = rzdComplianceFlag
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "月度"
|
|
|
|
+ unit := "kbbl/d"
|
|
|
|
+ indexNameColPrefix := "OPEC_Policy"
|
|
|
|
+ indexNameColSuffix := "Compliance"
|
|
|
|
+
|
|
|
|
+ if !utils.IsNumeric(rowData[0]) {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+ if rowData[1] == "Sum" {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("Oil Market Cube", "Upstream Supply")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexName := "Upstream Supply" + "/" + indexNameColPrefix + "/" + indexNameColSuffix
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCode, err := getIndexId("Upstream Supply "+indexNameColPrefix, strings.ReplaceAll(strings.ToLower(indexNameColSuffix), " ", ""), "")
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ value, err := strconv.ParseFloat(rowData[len(rowData)-1], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTime := rowData[0]
|
|
|
|
+ format, err := utils.ConvertDateFormat6(dataTime + "-" + rowData[1])
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexName,
|
|
|
|
+ IndexCode: indexCode,
|
|
|
|
+ Value: value,
|
|
|
|
+ DataTime: format,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("UpstreamSupplyOPECPolicyComplianceProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("UpstreamSupplyOPECPolicyComplianceProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// UpstreamSupplyOPECPolicyProductionSubjectToCutProcessor
|
|
|
|
+// @Description: UpstreamSupplyOPECPolicyProductionSubjectToCutProcessor处理器
|
|
|
|
+type UpstreamSupplyOPECPolicyProductionSubjectToCutProcessor struct{}
|
|
|
|
+
|
|
|
|
+var rzdProductionSubjectToCutFlag string
|
|
|
|
+
|
|
|
|
+func (p *UpstreamSupplyOPECPolicyProductionSubjectToCutProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing UpstreamSupplyOPECPolicyProductionSubjectToCutProcessor...")
|
|
|
|
+ if rowIndex <= 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if rowData[0] != "" {
|
|
|
|
+ rzdProductionSubjectToCutFlag = rowData[0]
|
|
|
|
+ } else {
|
|
|
|
+ rowData[0] = rzdProductionSubjectToCutFlag
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "月度"
|
|
|
|
+ unit := "kbbl/d"
|
|
|
|
+ indexNameColPrefix := "OPEC_Policy"
|
|
|
|
+ indexNameColSuffix := "Production Subject To Cut"
|
|
|
|
+
|
|
|
|
+ if !utils.IsNumeric(rowData[0]) {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+ if rowData[1] == "Sum" {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("Oil Market Cube", "Upstream Supply")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexName := "Upstream Supply" + "/" + indexNameColPrefix + "/" + indexNameColSuffix
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCode, err := getIndexId("Upstream Supply "+indexNameColPrefix, strings.ReplaceAll(strings.ToLower(indexNameColSuffix), " ", ""), "")
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ value, err := strconv.ParseFloat(rowData[len(rowData)-1], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTime := rowData[0]
|
|
|
|
+ format, err := utils.ConvertDateFormat6(dataTime + "-" + rowData[1])
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexName,
|
|
|
|
+ IndexCode: indexCode,
|
|
|
|
+ Value: value,
|
|
|
|
+ DataTime: format,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("UpstreamSupplyOPECPolicyProductionSubjectToCutProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("UpstreamSupplyOPECPolicyProductionSubjectToCutProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// ProductsDemandProductsDemandMeanProcessor
|
|
|
|
+// @Description: ProductsDemandProductsDemandMeanProcessor处理器
|
|
|
|
+type ProductsDemandProductsDemandMeanProcessor struct{}
|
|
|
|
+
|
|
|
|
+var rzdProductsDemandMeanFlag string
|
|
|
|
+
|
|
|
|
+func (p *ProductsDemandProductsDemandMeanProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing ProductsDemandProductsDemandMeanProcessor...")
|
|
|
|
+ if rowIndex <= 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if rowData[0] != "" {
|
|
|
|
+ rzdProductsDemandMeanFlag = rowData[0]
|
|
|
|
+ } else {
|
|
|
|
+ rowData[0] = rzdProductsDemandMeanFlag
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "月度"
|
|
|
|
+ unit := "kbbl/d"
|
|
|
|
+ //indexNameColPrefix := "OPEC_Policy"
|
|
|
|
+ indexNameColSuffix := "Products Demand Mean (1.0 DG) "
|
|
|
|
+
|
|
|
|
+ if !utils.IsNumeric(rowData[0]) {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+ if rowData[1] == "Sum" {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("Oil Market Cube", "Products Demand")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexName := "Products Demand" + "/" + indexNameColSuffix
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCode, err := getIndexId("Products Demand "+"Products Demand Mean", strings.ReplaceAll(strings.ToLower("1.0dg"), " ", ""), "")
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ value, err := strconv.ParseFloat(rowData[len(rowData)-1], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTime := rowData[0]
|
|
|
|
+ format, err := utils.ConvertDateFormat6(dataTime + "-" + rowData[1])
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexName,
|
|
|
|
+ IndexCode: indexCode,
|
|
|
|
+ Value: value,
|
|
|
|
+ DataTime: format,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("ProductsDemandProductsDemandMeanProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("ProductsDemandProductsDemandMeanProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// ProductsDemandProductsDemandAddSigmaProcessor
|
|
|
|
+// @Description: ProductsDemandProductsDemandAddSigmaProcessor处理器
|
|
|
|
+type ProductsDemandProductsDemandAddSigmaProcessor struct{}
|
|
|
|
+
|
|
|
|
+var rzdAddSigmaFlag string
|
|
|
|
+
|
|
|
|
+func (p *ProductsDemandProductsDemandAddSigmaProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing ProductsDemandProductsDemandAddSigmaProcessor...")
|
|
|
|
+ if rowIndex <= 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if rowData[0] != "" {
|
|
|
|
+ rzdAddSigmaFlag = rowData[0]
|
|
|
|
+ } else {
|
|
|
|
+ rowData[0] = rzdAddSigmaFlag
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "月度"
|
|
|
|
+ unit := "kbbl/d"
|
|
|
|
+ //indexNameColPrefix := "OPEC_Policy"
|
|
|
|
+ indexNameColSuffix := "Products Demand +Sigma (2.2 DG) "
|
|
|
|
+
|
|
|
|
+ if !utils.IsNumeric(rowData[0]) {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+ if rowData[1] == "Sum" {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("Oil Market Cube", "Products Demand")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexName := "Products Demand" + "/" + indexNameColSuffix
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCode, err := getIndexId("Products Demand "+"Products Demand Sigma", strings.ReplaceAll(strings.ToLower("2.2dg"), " ", ""), "")
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ value, err := strconv.ParseFloat(rowData[len(rowData)-1], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTime := rowData[0]
|
|
|
|
+ format, err := utils.ConvertDateFormat6(dataTime + "-" + rowData[1])
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexName,
|
|
|
|
+ IndexCode: indexCode,
|
|
|
|
+ Value: value,
|
|
|
|
+ DataTime: format,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("ProductsDemandProductsDemandAddSigmaProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("ProductsDemandProductsDemandAddSigmaProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// ProductsDemandProductsDemandSubSigmaProcessor
|
|
|
|
+// @Description: ProductsDemandProductsDemandSubSigmaProcessor处理器
|
|
|
|
+type ProductsDemandProductsDemandSubSigmaProcessor struct{}
|
|
|
|
+
|
|
|
|
+var rzdSubSigmaFlag string
|
|
|
|
+
|
|
|
|
+func (p *ProductsDemandProductsDemandSubSigmaProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing ProductsDemandProductsDemandSubSigmaProcessor...")
|
|
|
|
+ if rowIndex <= 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if rowData[0] != "" {
|
|
|
|
+ rzdSubSigmaFlag = rowData[0]
|
|
|
|
+ } else {
|
|
|
|
+ rowData[0] = rzdSubSigmaFlag
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "月度"
|
|
|
|
+ unit := "kbbl/d"
|
|
|
|
+ //indexNameColPrefix := "OPEC_Policy"
|
|
|
|
+ indexNameColSuffix := "Products Demand -Sigma (1.8 DG) "
|
|
|
|
+
|
|
|
|
+ if !utils.IsNumeric(rowData[0]) {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+ if rowData[1] == "Sum" {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("Oil Market Cube", "Products Demand")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexName := "Products Demand" + "/" + indexNameColSuffix
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCode, err := getIndexId("Products Demand "+"Products Demand Sigma", strings.ReplaceAll(strings.ToLower("1.8dg"), " ", ""), "")
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ value, err := strconv.ParseFloat(rowData[len(rowData)-1], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTime := rowData[0]
|
|
|
|
+ format, err := utils.ConvertDateFormat6(dataTime + "-" + rowData[1])
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexName,
|
|
|
|
+ IndexCode: indexCode,
|
|
|
|
+ Value: value,
|
|
|
|
+ DataTime: format,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("ProductsDemandProductsDemandSubSigmaProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("ProductsDemandProductsDemandSubSigmaProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// BalancesTotalLiquidsBalancesProcessor
|
|
|
|
+// @Description: BalancesTotalLiquidsBalancesProcessor处理器
|
|
|
|
+type BalancesTotalLiquidsBalancesProcessor struct{}
|
|
|
|
+
|
|
|
|
+var rzdTotalLiquidsBalancesFlag string
|
|
|
|
+
|
|
|
|
+func (p *BalancesTotalLiquidsBalancesProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing BalancesTotalLiquidsBalancesProcessor...")
|
|
|
|
+ if rowIndex <= 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if rowData[0] != "" {
|
|
|
|
+ rzdTotalLiquidsBalancesFlag = rowData[0]
|
|
|
|
+ } else {
|
|
|
|
+ rowData[0] = rzdTotalLiquidsBalancesFlag
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "月度"
|
|
|
|
+ unit := "kbbl/d"
|
|
|
|
+ //indexNameColPrefix := "OPEC_Policy"
|
|
|
|
+ indexNameColSuffix := "Total Liquids Balances"
|
|
|
|
+
|
|
|
|
+ if !utils.IsNumeric(rowData[0]) {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+ if rowData[1] == "Sum" {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("Oil Market Cube", "Balances")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexName := "Balances" + "/" + indexNameColSuffix
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCode, err := getIndexId("Balances", strings.ReplaceAll(strings.ToLower(indexNameColSuffix), " ", ""), "")
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ value, err := strconv.ParseFloat(rowData[len(rowData)-1], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTime := rowData[0]
|
|
|
|
+ format, err := utils.ConvertDateFormat6(dataTime + "-" + rowData[1])
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexName,
|
|
|
|
+ IndexCode: indexCode,
|
|
|
|
+ Value: value,
|
|
|
|
+ DataTime: format,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("BalancesTotalLiquidsBalancesProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("BalancesTotalLiquidsBalancesProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// GeographyLatitudeProcessor
|
|
|
|
+// @Description: GeographyLatitudeProcessor处理器
|
|
|
|
+type GeographyLatitudeProcessor struct{}
|
|
|
|
+
|
|
|
|
+var rzdLatitudeFlag string
|
|
|
|
+
|
|
|
|
+func (p *GeographyLatitudeProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing GeographyLatitudeProcessor...")
|
|
|
|
+ if rowIndex <= 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if rowData[0] != "" {
|
|
|
|
+ rzdLatitudeFlag = rowData[0]
|
|
|
|
+ } else {
|
|
|
|
+ rowData[0] = rzdLatitudeFlag
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "月度"
|
|
|
|
+ unit := ""
|
|
|
|
+ //indexNameColPrefix := "OPEC_Policy"
|
|
|
|
+ indexNameColSuffix := "Latitude"
|
|
|
|
+
|
|
|
|
+ if !utils.IsNumeric(rowData[0]) {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+ if rowData[1] == "Sum" {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("Oil Market Cube", "Geography")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexName := "Geography" + "/" + indexNameColSuffix
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCode, err := getIndexId("Geography", strings.ReplaceAll(strings.ToLower(indexNameColSuffix), " ", ""), "")
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ value, err := strconv.ParseFloat(rowData[len(rowData)-1], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTime := rowData[0]
|
|
|
|
+ format, err := utils.ConvertDateFormat6(dataTime + "-" + rowData[1])
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexName,
|
|
|
|
+ IndexCode: indexCode,
|
|
|
|
+ Value: value,
|
|
|
|
+ DataTime: format,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("GeographyLatitudeProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("GeographyLatitudeProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// GeographyLongitudeProcessor
|
|
|
|
+// @Description: GeographyLongitudeProcessor处理器
|
|
|
|
+type GeographyLongitudeProcessor struct{}
|
|
|
|
+
|
|
|
|
+var rzdLongitudeFlag string
|
|
|
|
+
|
|
|
|
+func (p *GeographyLongitudeProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ logs.Info("Processing GeographyLongitudeProcessor...")
|
|
|
|
+ if rowIndex <= 1 {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if rowData[0] != "" {
|
|
|
|
+ rzdLongitudeFlag = rowData[0]
|
|
|
|
+ } else {
|
|
|
|
+ rowData[0] = rzdLongitudeFlag
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ frequency := "月度"
|
|
|
|
+ unit := ""
|
|
|
|
+ //indexNameColPrefix := "OPEC_Policy"
|
|
|
|
+ indexNameColSuffix := "Longitude"
|
|
|
|
+
|
|
|
|
+ if !utils.IsNumeric(rowData[0]) {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+ if rowData[1] == "Sum" {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // step_1: 分类
|
|
|
|
+ classifyId, err := dealClassify("Oil Market Cube", "Geography")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("classifyId: %v", classifyId)
|
|
|
|
+
|
|
|
|
+ // step_2: 指标
|
|
|
|
+ // 指标名称
|
|
|
|
+ indexName := "Geography" + "/" + indexNameColSuffix
|
|
|
|
+
|
|
|
|
+ // 生成指标编码
|
|
|
|
+ indexCode, err := getIndexId("Geography", strings.ReplaceAll(strings.ToLower(indexNameColSuffix), " ", ""), "")
|
|
|
|
+
|
|
|
|
+ var indexInfoList []*models.IndexInfo
|
|
|
|
+ value, err := strconv.ParseFloat(rowData[len(rowData)-1], 64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataTime := rowData[0]
|
|
|
|
+ format, err := utils.ConvertDateFormat6(dataTime + "-" + rowData[1])
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ indexInfoList = append(indexInfoList, &models.IndexInfo{
|
|
|
|
+ IndexName: indexName,
|
|
|
|
+ IndexCode: indexCode,
|
|
|
|
+ Value: value,
|
|
|
|
+ DataTime: format,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ indexInfoList, err = dealIndex(indexInfoList, frequency, unit, classifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("GeographyLongitudeProcessor indexInfoList: %v", indexInfoList)
|
|
|
|
+
|
|
|
|
+ // step_3: 指标数据
|
|
|
|
+ dataList, err := dealData(indexInfoList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("GeographyLongitudeProcessor dataList: %v", dataList)
|
|
|
|
+
|
|
|
|
+ return dataList, err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func dealData(indexInfoList []*models.IndexInfo) ([]models.BaseFromRzdData, error) {
|
|
|
|
+ var dataList []models.BaseFromRzdData
|
|
|
|
+ for _, indexInfo := range indexInfoList {
|
|
|
|
+ paramsLib := make(map[string]interface{})
|
|
|
|
+ paramsLib["IndexCode"] = indexInfo.IndexCode
|
|
|
|
+ paramsLib["DataTime"] = indexInfo.DataTime
|
|
|
|
+ postEdbLib, err := httpRequestFill(paramsLib, utils.GET_RZD_INDEX_DATA_BY_CODE_AND_TIME)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ var requestResponse models.RequestResponse[models.BaseFromRzdData]
|
|
|
|
+ err = json.Unmarshal(postEdbLib, &requestResponse)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ if requestResponse.Data.BaseFromRzdIndexId == 0 {
|
|
|
|
+ dataOne := models.BaseFromRzdData{
|
|
|
|
+ BaseFromRzdIndexId: indexInfo.IndexInfoId,
|
|
|
|
+ CreateTime: utils.GetCurrentTime(),
|
|
|
|
+ DataTime: indexInfo.DataTime,
|
|
|
|
+ IndexCode: indexInfo.IndexCode,
|
|
|
|
+ ModifyTime: utils.GetCurrentTime(),
|
|
|
|
+ Value: math.Round(indexInfo.Value*10000) / 10000,
|
|
|
|
+ }
|
|
|
|
+ dataList = append(dataList, dataOne)
|
|
|
|
+ } else {
|
|
|
|
+ // 编辑
|
|
|
|
+ if requestResponse.Data.Value != math.Round(indexInfo.Value*10000)/10000 {
|
|
|
|
+ rzdData := requestResponse.Data
|
|
|
|
+ rzdData.Value = math.Round(indexInfo.Value*10000) / 10000
|
|
|
|
+
|
|
|
|
+ _, err = httpRequestFill(rzdData, utils.UPDATE_RZD_EDB_DATA)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return dataList, nil
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func dealIndex(indexInfoList []*models.IndexInfo, frequency string, unit string, classifyId int) ([]*models.IndexInfo, error) {
|
|
|
|
+ for _, index := range indexInfoList {
|
|
|
|
+ // 处理第一个指标
|
|
|
|
+ paramsLib := make(map[string]interface{})
|
|
|
|
+ paramsLib["indexCode"] = index.IndexCode
|
|
|
|
+ postEdbLib, err := httpRequestFill(paramsLib, utils.GET_RZD_INDEX_BY_CODE)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, fmt.Errorf("getIndexId() : Failed to get rzd index by code: %v", err)
|
|
|
|
+ }
|
|
|
|
+ var requestResponse models.RequestResponse[models.BaseFromRzdIndex]
|
|
|
|
+ err = json.Unmarshal(postEdbLib, &requestResponse)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ if requestResponse.Data.BaseFromRzdIndexId == 0 {
|
|
|
|
+ indexOne := models.BaseFromRzdIndex{
|
|
|
|
+ CreateTime: utils.GetCurrentTime(),
|
|
|
|
+ ModifyTime: utils.GetCurrentTime(),
|
|
|
|
+ BaseFromLyClassifyId: classifyId,
|
|
|
|
+ IndexCode: index.IndexCode,
|
|
|
|
+ IndexName: index.IndexName,
|
|
|
|
+ Frequency: frequency,
|
|
|
|
+ Unit: unit,
|
|
|
|
+ }
|
|
|
|
+ // 这里避免服务器宕机 出现唯一索引异常,进行分开保存
|
|
|
|
+ postEdbLib, err = httpRequestFill(indexOne, utils.ADD_RZD_INDEX)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, fmt.Errorf("getIndexId() : Failed to get rzd index by code: %v", err)
|
|
|
|
+ }
|
|
|
|
+ var requestResponse models.RequestResponse[int]
|
|
|
|
+ err = json.Unmarshal(postEdbLib, &requestResponse)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ logs.Info("indexOneId: %v", requestResponse.Data)
|
|
|
|
+
|
|
|
|
+ index.IndexInfoId = requestResponse.Data
|
|
|
|
+ } else {
|
|
|
|
+ logs.Info("indexOneId: %v", requestResponse.Data.BaseFromRzdIndexId)
|
|
|
|
+ index.IndexInfoId = requestResponse.Data.BaseFromRzdIndexId
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return indexInfoList, nil
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func getIndexId(prefix string, area string, suffix string) (string, error) {
|
|
|
|
+ prefixWords := strings.Fields(prefix) // 分割字符串为单词
|
|
|
|
+ firstLetters := ""
|
|
|
|
+
|
|
|
|
+ for _, word := range prefixWords {
|
|
|
|
+ if len(word) > 0 {
|
|
|
|
+ firstLetters += string(unicode.ToLower(rune(word[0]))) // 获取小写的第一个字母
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ suffixWords := strings.Fields(suffix) // 分割字符串为单词
|
|
|
|
+ SecondLetters := ""
|
|
|
|
+
|
|
|
|
+ for _, word := range suffixWords {
|
|
|
|
+ if len(word) > 0 {
|
|
|
|
+ SecondLetters += string(unicode.ToLower(rune(word[0]))) // 获取小写的第一个字母
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ indexCode := "rzd" + firstLetters + area + SecondLetters
|
|
|
|
+
|
|
|
|
+ return indexCode, nil
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 处理分类
|
|
|
|
+func dealClassify(tableName, sheetName string) (int, error) {
|
|
|
|
+ // 查询一级分类是否存在
|
|
|
|
+ paramsLib := make(map[string]interface{})
|
|
|
|
+ paramsLib["classifyName"] = classifyMap[tableName]
|
|
|
|
+ postEdbLib, err := httpRequestFill(paramsLib, utils.GET_RZD_CLASSIFY_BY_NAME)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return 0, fmt.Errorf("AnalyticsLibraryProcessor Process() : failed to get classify: %v", err)
|
|
|
|
+ }
|
|
|
|
+ var requestResponse models.RequestResponse[models.BaseFromRzdClassify]
|
|
|
|
+ err = json.Unmarshal(postEdbLib, &requestResponse)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return 0, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 处理一级分类
|
|
|
|
+ var parentId int
|
|
|
|
+ if requestResponse.Data.BaseFromRzdClassifyId == 0 {
|
|
|
|
+ // 一级分类不存在,新增一级分类
|
|
|
|
+ paramsLib = make(map[string]interface{})
|
|
|
|
+ paramsLib["parentId"] = 0
|
|
|
|
+ paramsLib["classifyName"] = classifyMap[tableName]
|
|
|
|
+ postEdbLib, err = httpRequestFill(paramsLib, utils.ADD_RZD_CLASSIFY)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return 0, fmt.Errorf("AnalyticsLibraryProcessor Process() : failed to add classify: %v", err)
|
|
|
|
+ }
|
|
|
|
+ var requestResponse models.RequestResponse[int]
|
|
|
|
+ err = json.Unmarshal(postEdbLib, &requestResponse)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return 0, err
|
|
|
|
+ }
|
|
|
|
+ parentId = requestResponse.Data
|
|
|
|
+ } else {
|
|
|
|
+ // 一级分类已存在,使用其 ID
|
|
|
|
+ parentId = requestResponse.Data.BaseFromRzdClassifyId
|
|
|
|
+ }
|
|
|
|
+ // 查询二级分类是否存在
|
|
|
|
+ paramsSubLib := make(map[string]interface{})
|
|
|
|
+ paramsSubLib["classifyName"] = sheetName // 这里替换成实际的二级分类名称
|
|
|
|
+ postSubEdbLib, err := httpRequestFill(paramsSubLib, utils.GET_RZD_CLASSIFY_BY_NAME)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return 0, fmt.Errorf("AnalyticsLibraryProcessor Process() : failed to get sub classify: %v", err)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ var subRequestResponse models.RequestResponse[models.BaseFromRzdClassify]
|
|
|
|
+ err = json.Unmarshal(postSubEdbLib, &subRequestResponse)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return 0, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 新增二级分类
|
|
|
|
+ var classifyId int
|
|
|
|
+ if subRequestResponse.Data.BaseFromRzdClassifyId == 0 {
|
|
|
|
+ paramsLib = make(map[string]interface{})
|
|
|
|
+ paramsLib["parentId"] = parentId
|
|
|
|
+ paramsLib["classifyName"] = sheetName
|
|
|
|
+ postEdbLib, err = httpRequestFill(paramsLib, utils.ADD_RZD_CLASSIFY)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return 0, fmt.Errorf("AnalyticsLibraryProcessor Process() : failed to add classify: %v", err)
|
|
|
|
+ }
|
|
|
|
+ var requestResponse models.RequestResponse[int]
|
|
|
|
+ err = json.Unmarshal(postEdbLib, &requestResponse)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return 0, err
|
|
|
|
+ }
|
|
|
|
+ classifyId = requestResponse.Data
|
|
|
|
+ } else {
|
|
|
|
+ classifyId = subRequestResponse.Data.BaseFromRzdClassifyId
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return classifyId, nil
|
|
|
|
+}
|