kobe6258 2 tháng trước cách đây
mục cha
commit
66e182bb49

+ 153 - 0
services/ruizide/oil_demand_analysis_processor.go

@@ -0,0 +1,153 @@
+package ruizide
+
+import (
+	"encoding/json"
+	"eta/eta_data_analysis/models"
+	"eta/eta_data_analysis/utils"
+	"github.com/xuri/excelize/v2"
+	"os"
+	"path/filepath"
+)
+
+const (
+	OilDemandAnalysis = "Oil Demand Analysis"
+	SheetName         = "Chart 1"
+)
+
+var (
+	OilDemandAnalysisConfigMap = map[string]OSAPConfig{
+		"Oil_Demand_Analysis_Product_Detail": {
+			Frequency:          "月度",
+			Unit:               "千桶每天",
+			IndexNameColSuffix: "Product detail",
+			IndexRow:           2,
+			DataRow:            1,
+			DateRow:            0,
+		},
+		"Oil_Demand_Analysis_Region": {
+			Frequency:          "月度",
+			Unit:               "千桶每天",
+			IndexNameColSuffix: "Region",
+			IndexRow:           2,
+			DataRow:            1,
+			DateRow:            0,
+		},
+		"Oil_Demand_Analysis_Scenario": {
+			Frequency:          "月度",
+			Unit:               "千桶每天",
+			IndexNameColSuffix: "Scenario",
+			IndexRow:           2,
+			DataRow:            1,
+			DateRow:            0,
+		},
+		"Oil_Demand_Analysis_Continent": {
+			Frequency:          "月度",
+			Unit:               "千桶每天",
+			IndexNameColSuffix: "Continent",
+			IndexRow:           2,
+			DataRow:            1,
+			DateRow:            0,
+		},
+		"Oil_Demand_Analysis_Country": {
+			Frequency:          "月度",
+			Unit:               "千桶每天",
+			IndexNameColSuffix: "Country",
+			IndexRow:           2,
+			DataRow:            1,
+			DateRow:            0,
+		},
+		"Oil_Demand_Analysis_Product_Category": {
+			Frequency:          "月度",
+			Unit:               "千桶每天",
+			IndexNameColSuffix: "Product category",
+			IndexRow:           2,
+			DataRow:            1,
+			DateRow:            0,
+		},
+		"Oil_Demand_Analysis_Sector_Detail": {
+			Frequency:          "月度",
+			Unit:               "千桶每天",
+			IndexNameColSuffix: "Sector detail",
+			IndexRow:           2,
+			DataRow:            1,
+			DateRow:            0,
+		},
+		"Oil_Demand_Analysis_Sector_Category": {
+			Frequency:          "月度",
+			Unit:               "千桶每天",
+			IndexNameColSuffix: "Sector category",
+			IndexRow:           2,
+			DataRow:            1,
+			DateRow:            0,
+		},
+	}
+)
+
+type ODAPConfig struct {
+	Frequency          string
+	Unit               string
+	IndexNameColSuffix string
+	IndexRow           int
+	DataRow            int
+	DateRow            int
+}
+
+type OilDemandAnalysisProcessor struct {
+}
+
+func (p *OilDemandAnalysisProcessor) Process(tableName string) (err error) {
+	var fileName string
+	// 解析表格
+	fileName = tableName + "_" + utils.GetCurrentYearMonth() + ".xlsx"
+	filePath := filepath.Join(excelDir, fileName)
+	if _, err = os.Stat(filePath); os.IsNotExist(err) {
+		utils.FileLog.Error("文件不存在: %v", err)
+		return
+	}
+	// 打开 Excel 文件
+	file, err := excelize.OpenFile(filePath)
+	if err != nil {
+		utils.FileLog.Error("无法打开 Excel 文件: %v", err)
+		return
+	}
+	classifyIds, err := dealClassify(CubeDashboards, []string{OilDemandAnalysis})
+	// 获取所有工作表
+	if err != nil {
+		utils.FileLog.Error("获取分类Id失败: %v", err)
+		return
+	}
+	//按照sheet页来处理数据,一个sheet发送一次服务器
+	var indexMap = make(map[string]*models.IndexInfo)
+	// 获取工作表的最大行数
+	dataRows, excelErr := file.GetRows(SheetName) // 直接获取所有行数据
+	if excelErr != nil {
+		utils.FileLog.Error("获取工作表数据时出错: %v", excelErr)
+		return
+	}
+	if sheetConfig, ok := OilDemandAnalysisConfigMap[tableName]; ok {
+		// 匹配非数字字符
+		classifyId := classifyIds[OilDemandAnalysis]
+		indexMap, err = DataHandler(dataRows, sheetConfig, classifyId, OilDemandAnalysis)
+		// 新增数据源指标数据
+		if len(indexMap) > 0 {
+			for _, index := range indexMap {
+				pars := chunkIndexData(index, rzdBatchSize)
+				for _, par := range pars {
+					// 转换成json
+					marshal, parseErr := json.Marshal(par)
+					if parseErr != nil {
+						utils.FileLog.Error("json.Marshal err: %v", parseErr)
+						return parseErr
+					}
+					// 发送 HTTP POST 请求
+					_, err = utils.HttpPostRequest(utils.EDB_LIB_URL+utils.ADD_BATCH_RZD_DATA, string(marshal), "application/json")
+					if err != nil {
+						utils.FileLog.Error("postEdbLib err: %v", err)
+						return err
+					}
+				}
+			}
+		}
+	}
+	return
+}

+ 6 - 6
services/ruizide/oil_supply_analysis_processor.go

@@ -101,7 +101,7 @@ func (p *OilSupplyAnalysisProcessor) Process(tableName string) (err error) {
 		if sheetConfig, ok := OilSupplyAnalysisConfigMap[sheetName]; ok {
 			// 匹配非数字字符
 			classifyId := classifyIds[OilSupplyAnalysis]
-			indexMap, err = DataHandler(dataRows, sheetConfig, classifyId)
+			indexMap, err = DataHandler(dataRows, sheetConfig, classifyId, OilSupplyAnalysis)
 			// 新增数据源指标数据
 			if len(indexMap) > 0 {
 				for _, index := range indexMap {
@@ -126,10 +126,10 @@ func (p *OilSupplyAnalysisProcessor) Process(tableName string) (err error) {
 	}
 	return
 }
-func DataHandler(dataRows [][]string, sheetConfig OSAPConfig, classifyId int) (indexMap map[string]*models.IndexInfo, err error) {
+func DataHandler(dataRows [][]string, sheetConfig OSAPConfig, classifyId int, topName string) (indexMap map[string]*models.IndexInfo, err error) {
 	indexMap = make(map[string]*models.IndexInfo)
-	for _, rowData := range dataRows[BeginRow : len(dataRows)-1] {
-		less := Rows - len(rowData)
+	for _, rowData := range dataRows[OsaBeginRow : len(dataRows)-1] {
+		less := OsaRows - len(rowData)
 		if less > 0 {
 			for i := 0; i < less; i++ {
 				rowData = append(rowData, "")
@@ -137,9 +137,9 @@ func DataHandler(dataRows [][]string, sheetConfig OSAPConfig, classifyId int) (i
 		}
 		// step_2: 指标
 		// 指标名称
-		indexName := OilSupplyAnalysis + "/" + sheetConfig.IndexNameColSuffix + "/" + rowData[sheetConfig.IndexRow]
+		indexName := topName + "/" + sheetConfig.IndexNameColSuffix + "/" + rowData[sheetConfig.IndexRow]
 		// 生成指标编码
-		indexCode := getIndexId(fmt.Sprintf("%s %s", OilSupplyAnalysis, sheetConfig.IndexNameColSuffix), strings.ReplaceAll(strings.ToLower(rowData[sheetConfig.IndexRow]), " ", ""), "")
+		indexCode := getIndexId(fmt.Sprintf("%s %s", topName, sheetConfig.IndexNameColSuffix), strings.ReplaceAll(strings.ToLower(rowData[sheetConfig.IndexRow]), " ", ""), "")
 		dataTime := rowData[sheetConfig.DateRow]
 		if dataTime == "0" {
 			continue

+ 0 - 536
services/ruizide/processor_business_logic.go

@@ -11,542 +11,6 @@ import (
 	"unicode"
 )
 
-// // OilDemandAnalysisContinentProcessor
-// // @Description: OilDemandAnalysisContinentProcessor处理器
-// type OilDemandAnalysisContinentProcessor struct{}
-//
-//	func (p *OilDemandAnalysisContinentProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
-//		utils.FileLog.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
-//		}
-//		utils.FileLog.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
-//		}
-//		utils.FileLog.Info("OilDemandAnalysisContinentProcessor indexInfoList: %v", indexInfoList)
-//
-//		// step_3: 指标数据
-//		dataList, err := dealData(indexInfoList)
-//		if err != nil {
-//			return nil, err
-//		}
-//		utils.FileLog.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) {
-//		utils.FileLog.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
-//		}
-//		utils.FileLog.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
-//		}
-//		utils.FileLog.Info("OilDemandAnalysisRegionProcessor indexInfoList: %v", indexInfoList)
-//
-//		// step_3: 指标数据
-//		dataList, err := dealData(indexInfoList)
-//		if err != nil {
-//			return nil, err
-//		}
-//		utils.FileLog.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) {
-//		utils.FileLog.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
-//		}
-//		utils.FileLog.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
-//		}
-//		utils.FileLog.Info("OilDemandAnalysisCountryProcessor indexInfoList: %v", indexInfoList)
-//
-//		// step_3: 指标数据
-//		dataList, err := dealData(indexInfoList)
-//		if err != nil {
-//			return nil, err
-//		}
-//		utils.FileLog.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) {
-//		utils.FileLog.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
-//		}
-//		utils.FileLog.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
-//		}
-//		utils.FileLog.Info("OilDemandAnalysisProductCategoryProcessor indexInfoList: %v", indexInfoList)
-//
-//		// step_3: 指标数据
-//		dataList, err := dealData(indexInfoList)
-//		if err != nil {
-//			return nil, err
-//		}
-//		utils.FileLog.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) {
-//		utils.FileLog.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
-//		}
-//		utils.FileLog.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
-//		}
-//		utils.FileLog.Info("OilDemandAnalysisProductDetailProcessor indexInfoList: %v", indexInfoList)
-//
-//		// step_3: 指标数据
-//		dataList, err := dealData(indexInfoList)
-//		if err != nil {
-//			return nil, err
-//		}
-//		utils.FileLog.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) {
-//		utils.FileLog.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
-//		}
-//		utils.FileLog.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
-//		}
-//		utils.FileLog.Info("OilDemandAnalysisSectorCategoryProcessor indexInfoList: %v", indexInfoList)
-//
-//		// step_3: 指标数据
-//		dataList, err := dealData(indexInfoList)
-//		if err != nil {
-//			return nil, err
-//		}
-//		utils.FileLog.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) {
-//		utils.FileLog.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
-//		}
-//		utils.FileLog.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
-//		}
-//		utils.FileLog.Info("OilDemandAnalysisSectorDetailProcessor indexInfoList: %v", indexInfoList)
-//
-//		// step_3: 指标数据
-//		dataList, err := dealData(indexInfoList)
-//		if err != nil {
-//			return nil, err
-//		}
-//		utils.FileLog.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) {
-//		utils.FileLog.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
-//		}
-//		utils.FileLog.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
-//		}
-//		utils.FileLog.Info("OilDemandAnalysisScenarioProcessor indexInfoList: %v", indexInfoList)
-//
-//		// step_3: 指标数据
-//		dataList, err := dealData(indexInfoList)
-//		if err != nil {
-//			return nil, err
-//		}
-//		utils.FileLog.Info("OilDemandAnalysisScenarioProcessor dataList: %v", dataList)
-//
-//		return dataList, err
-//	}
-//
 // // UpstreamSupplyOilQualityApiProcessor
 // // @Description: UpstreamSupplyOilQualityApiProcessor处理器
 // type UpstreamSupplyOilQualityApiProcessor struct{}

+ 16 - 59
services/ruizide/processor_factory.go

@@ -60,6 +60,10 @@ var (
 			ClassifyName: "Oil Supply Analysis",
 			Sort:         2,
 		},
+		"Oil Demand Analysis": {
+			ClassifyName: "Oil Demand Analysis",
+			Sort:         2,
+		},
 	}
 )
 
@@ -72,62 +76,7 @@ type RzdDataProcessor interface {
 }
 
 func GetProcessor(tableName string, sheetName string) (ReportProcessor, error) {
-	//else if tableName == "Oil_Demand_Analysis_Continent" {
-	//	switch sheetName {
-	//	case "Chart1":
-	//		return &OilDemandAnalysisContinentProcessor{}, nil
-	//	default:
-	//		return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
-	//	}
-	//} else if tableName == "Oil_Demand_Analysis_Region" {
-	//	switch sheetName {
-	//	case "Chart1":
-	//		return &OilDemandAnalysisRegionProcessor{}, nil
-	//	default:
-	//		return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
-	//	}
-	//} else if tableName == "Oil_Demand_Analysis_Country" {
-	//	switch sheetName {
-	//	case "Chart1":
-	//		return &OilDemandAnalysisCountryProcessor{}, nil
-	//	default:
-	//		return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
-	//	}
-	//} else if tableName == "Oil_Demand_Analysis_Product_Category" {
-	//	switch sheetName {
-	//	case "Chart1":
-	//		return &OilDemandAnalysisProductCategoryProcessor{}, nil
-	//	default:
-	//		return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
-	//	}
-	//} else if tableName == "Oil_Demand_Analysis_Product_Detail" {
-	//	switch sheetName {
-	//	case "Chart1":
-	//		return &OilDemandAnalysisProductDetailProcessor{}, nil
-	//	default:
-	//		return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
-	//	}
-	//} else if tableName == "Oil_Demand_Analysis_Sector_Category" {
-	//	switch sheetName {
-	//	case "Chart1":
-	//		return &OilDemandAnalysisSectorCategoryProcessor{}, nil
-	//	default:
-	//		return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
-	//	}
-	//} else if tableName == "Oil_Demand_Analysis_Sector_Detail" {
-	//	switch sheetName {
-	//	case "Chart1":
-	//		return &OilDemandAnalysisSectorDetailProcessor{}, nil
-	//	default:
-	//		return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
-	//	}
-	//} else if tableName == "Oil_Demand_Analysis_Scenario" {
-	//	switch sheetName {
-	//	case "Chart1":
-	//		return &OilDemandAnalysisScenarioProcessor{}, nil
-	//	default:
-	//		return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
-	//	}
+
 	//} else if tableName == "Oil_Market_Cube_Upstream_Supply_Oil_Quality_Api" {
 	//	switch sheetName {
 	//	case "ExportCubeBrowser 1":
@@ -253,9 +202,17 @@ func GetProcessor(tableName string, sheetName string) (ReportProcessor, error) {
 }
 
 var RzdProcessorMap = map[string]RzdDataProcessor{
-	"Oil_Demand_Signals_Weekly_Report": &OilDemandSignalsWeeklyReportProcessor{},
-	"Supply_Revision_Analysis":         &SupplyRevisionAnalysisProcessor{},
-	"Oil_Supply_Analysis":              &OilSupplyAnalysisProcessor{},
+	"Oil_Demand_Signals_Weekly_Report":     &OilDemandSignalsWeeklyReportProcessor{},
+	"Supply_Revision_Analysis":             &SupplyRevisionAnalysisProcessor{},
+	"Oil_Supply_Analysis":                  &OilSupplyAnalysisProcessor{},
+	"Oil_Demand_Analysis_Product_Detail":   &OilDemandAnalysisProcessor{},
+	"Oil_Demand_Analysis_Region":           &OilDemandAnalysisProcessor{},
+	"Oil_Demand_Analysis_Scenario":         &OilDemandAnalysisProcessor{},
+	"Oil_Demand_Analysis_Continent":        &OilDemandAnalysisProcessor{},
+	"Oil_Demand_Analysis_Country":          &OilDemandAnalysisProcessor{},
+	"Oil_Demand_Analysis_Product_Category": &OilDemandAnalysisProcessor{},
+	"Oil_Demand_Analysis_Sector_Category":  &OilDemandAnalysisProcessor{},
+	"Oil_Demand_Analysis_Sector_Detail":    &OilDemandAnalysisProcessor{},
 }
 
 func GetRZDProcessor(tableName string) (RzdDataProcessor, error) {