kobe6258 1 月之前
父节点
当前提交
fb5eb02889

+ 3 - 3
services/ruizide/oil_demand_signals_weekly_report_processor.go

@@ -184,7 +184,7 @@ func (p *OilDemandSignalsWeeklyReportProcessor) Process(tableName string) (err e
 				}
 			}
 			// 匹配非数字字符
-			re := regexp.MustCompile(`^[+-]?\d{1,3}(,\d{3})*(\.\d+)?\s*$`)
+			//re := regexp.MustCompile(`^[-+]?\d*\.?\d+$`)
 
 			classifyId := classifyIds[sheetName]
 			// step_2: 指标
@@ -200,7 +200,7 @@ func (p *OilDemandSignalsWeeklyReportProcessor) Process(tableName string) (err e
 				utils.FileLog.Error(fmt.Sprintf("转换时间数据失败,index_code:%s,time_value:%s err:%v", indexCodeOne, dataTime, convertErr))
 				continue
 			}
-			if rowData[sheetConfig.DataOneRow] != "" && re.MatchString(strings.ReplaceAll(strings.TrimSpace(rowData[sheetConfig.DataOneRow]), ",", "")) {
+			if rowData[sheetConfig.DataOneRow] != "" {
 				valueOne, parseErr := decimal.NewFromString(strings.ReplaceAll(rowData[sheetConfig.DataOneRow], ",", ""))
 				if parseErr != nil {
 					utils.FileLog.Error(fmt.Sprintf("转换data数据失败,index_code:%s,data_value:%s err:%v", indexCodeOne, rowData[sheetConfig.DataOneRow], err))
@@ -238,7 +238,7 @@ func (p *OilDemandSignalsWeeklyReportProcessor) Process(tableName string) (err e
 					}
 				}
 			}
-			if rowData[sheetConfig.DataTwoRow] != "" && re.MatchString(strings.ReplaceAll(strings.TrimSpace(rowData[sheetConfig.DataTwoRow]), ",", "")) {
+			if rowData[sheetConfig.DataTwoRow] != "" {
 				valueTwo, parseErr := decimal.NewFromString(strings.ReplaceAll(rowData[sheetConfig.DataTwoRow], ",", ""))
 				if parseErr != nil {
 					utils.FileLog.Error(fmt.Sprintf("转换data数据失败,index_code:%s,data_value:%s err:%v", indexCodeTwo, rowData[sheetConfig.DataTwoRow], err))

+ 0 - 477
services/ruizide/processor_business_logic.go

@@ -11,483 +11,6 @@ import (
 	"unicode"
 )
 
-//
-//// SupplyRevisionAnalysisChartOneProcessor
-//// @Description: SupplyRevisionAnalysisChartOneProcessor处理器
-//type SupplyRevisionAnalysisChartOneProcessor struct{}
-//
-//func (p *SupplyRevisionAnalysisChartOneProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
-//	utils.FileLog.Info("Processing SupplyRevisionAnalysisChartOne...")
-//	if rowIndex < 1 {
-//		return nil, nil
-//	}
-//
-//	frequency := "季度"
-//	unit := "千桶每天"
-//	indexNameColSuffix := "Year Quarter"
-//	indexNameColPrefix := "Country Revision Group"
-//
-//	// step_1: 分类
-//	classifyId, err := dealClassify("cube dashboards", "Supply Revision Analysis")
-//	if err != nil {
-//		return nil, err
-//	}
-//	utils.FileLog.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")
-//
-//	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.ConvertDateFormatQuarter(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("SupplyRevisionAnalysisChartOneProcessor indexInfoList: %v", indexInfoList)
-//
-//	// step_3: 指标数据
-//	dataList, err := dealData(indexInfoList)
-//	if err != nil {
-//		return nil, err
-//	}
-//	utils.FileLog.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) {
-//	utils.FileLog.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
-//	}
-//	utils.FileLog.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[sheetC]
-//	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
-//	}
-//	utils.FileLog.Info("SupplyRevisionAnalysisChartTwoProcessor indexInfoList: %v", indexInfoList)
-//
-//	// step_3: 指标数据
-//	dataList, err := dealData(indexInfoList)
-//	if err != nil {
-//		return nil, err
-//	}
-//	utils.FileLog.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) {
-//	utils.FileLog.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
-//	}
-//	utils.FileLog.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
-//	}
-//	utils.FileLog.Info("SupplyRevisionAnalysisChartThreeProcessor indexInfoList: %v", indexInfoList)
-//
-//	// step_3: 指标数据
-//	dataList, err := dealData(indexInfoList)
-//	if err != nil {
-//		return nil, err
-//	}
-//	utils.FileLog.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) {
-//	utils.FileLog.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
-//	}
-//	utils.FileLog.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
-//	}
-//	utils.FileLog.Info("SupplyRevisionAnalysisChartFourProcessor indexInfoList: %v", indexInfoList)
-//
-//	// step_3: 指标数据
-//	dataList, err := dealData(indexInfoList)
-//	if err != nil {
-//		return nil, err
-//	}
-//	utils.FileLog.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) {
-//	utils.FileLog.Info("Processing SupplyRevisionAnalysisChartFiveProcessor...")
-//	if rowIndex < 1 {
-//		return nil, nil
-//	}
-//
-//	frequency := "月度"
-//	unit := "千桶每天"
-//	indexNameColPrefix := "YearMonth"
-//
-//	// step_1: 分类
-//	classifyId, err := dealClassify("cube dashboards")
-//	if err != nil {
-//		return nil, err
-//	}
-//	utils.FileLog.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
-//	}
-//	utils.FileLog.Info("SupplyRevisionAnalysisChartFiveProcessor indexInfoList: %v", indexInfoList)
-//
-//	// step_3: 指标数据
-//	dataList, err := dealData(indexInfoList)
-//	if err != nil {
-//		return nil, err
-//	}
-//	utils.FileLog.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) {
-//	utils.FileLog.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
-//	}
-//	utils.FileLog.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
-//	}
-//	utils.FileLog.Info("SupplyRevisionAnalysisChartSixProcessor indexInfoList: %v", indexInfoList)
-//
-//	// step_3: 指标数据
-//	dataList, err := dealData(indexInfoList)
-//	if err != nil {
-//		return nil, err
-//	}
-//	utils.FileLog.Info("SupplyRevisionAnalysisChartSixProcessor dataList: %v", dataList)
-//
-//	return dataList, err
-//}
-
 //
 //// OilSupplyAnalysisChartOneProcessor
 //// @Description: OilSupplyAnalysisChartOneProcessor处理器

+ 9 - 20
services/ruizide/processor_factory.go

@@ -52,6 +52,14 @@ var (
 			ClassifyName: "Oil Market Cube",
 			Sort:         3,
 		},
+		"Supply Revision Analysis": {
+			ClassifyName: "Supply Revision Analysis",
+			Sort:         1,
+		},
+		"Oil_Supply_Analysis": {
+			ClassifyName: "Oil_Supply_Analysis",
+			Sort:         2,
+		},
 	}
 )
 
@@ -64,25 +72,7 @@ type RzdDataProcessor interface {
 }
 
 func GetProcessor(tableName string, sheetName string) (ReportProcessor, error) {
-	//if tableName == "Supply_Revision_Analysis" {
-	//	switch sheetName {
-	//	case "Chart1":
-	//		return &SupplyRevisionAnalysisChartOneProcessor{}, nil
-	//	case "Chart2":
-	//		return &SupplyRevisionAnalysisChartTwoProcessor{}, nil
-	//	case "Chart3":
-	//		return &SupplyRevisionAnalysisChartThreeProcessor{}, nil
-	//	case "Chart4":
-	//		return &SupplyRevisionAnalysisChartFourProcessor{}, nil
-	//	case "Chart5":
-	//		return &SupplyRevisionAnalysisChartFiveProcessor{}, nil
-	//	case "Chart6":
-	//		return &SupplyRevisionAnalysisChartSixProcessor{}, nil
-	//	default:
-	//		return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
-	//	}
-	//}
-	//else if tableName == "Oil_Supply_Analysis" {
+	//if tableName == "Oil_Supply_Analysis" {
 	//	switch sheetName {
 	//	case "Chart1":
 	//		return &OilSupplyAnalysisChartOneProcessor{}, nil
@@ -272,7 +262,6 @@ func GetProcessor(tableName string, sheetName string) (ReportProcessor, error) {
 	//		return nil, fmt.Errorf("unknown sheetName: %s", sheetName)
 	//	}
 	//}
-
 	// 可以添加更多的逻辑来处理其他产品和类别
 	return nil, fmt.Errorf("no processor found for tableName %s and sheetName %s", tableName, sheetName)
 }

+ 35 - 21
services/ruizide/supply_revision_analysis_processor.go

@@ -9,7 +9,6 @@ import (
 	"github.com/xuri/excelize/v2"
 	"os"
 	"path/filepath"
-	"regexp"
 	"strings"
 	"time"
 )
@@ -154,7 +153,6 @@ func (p *SupplyRevisionAnalysisProcessor) Process(tableName string) (err error)
 			utils.FileLog.Error("获取工作表数据时出错: %v", excelErr)
 			continue
 		}
-		fmt.Printf("sheetName:%s,sheetConfig:%d", sheetName, len(dataRows))
 		sheetConfig := SupplyRevisionAnalysisConfigMap[sheetName]
 		// 匹配非数字字符
 		classifyId := classifyIds[SupplyRevisionAnalysis]
@@ -164,7 +162,6 @@ func (p *SupplyRevisionAnalysisProcessor) Process(tableName string) (err error)
 		case "two":
 			indexMap, err = TwoDataHandler(dataRows, sheetConfig, classifyId)
 		}
-		utils.FileLog.Info("读取工作表完成:", sheetName)
 		// 新增数据源指标数据
 		if len(indexMap) > 0 {
 			for _, index := range indexMap {
@@ -189,30 +186,42 @@ func (p *SupplyRevisionAnalysisProcessor) Process(tableName string) (err error)
 	return
 }
 func OneDataHandler(dataRows [][]string, sheetConfig SRAPConfig, classifyId int) (indexMap map[string]*models.IndexInfo, err error) {
-	re := regexp.MustCompile(`^\d*\.?\d*\s*$`)
-	for _, rowData := range dataRows[BeginRow:] {
+	indexMap = make(map[string]*models.IndexInfo)
+	//re := regexp.MustCompile(`^\d*\.?\d*\s*$`)
+	for _, rowData := range dataRows[BeginRow : len(dataRows)-1] {
+		//处理数据不全的情况
+		less := Rows - len(rowData)
+		if less > 0 {
+			for i := 0; i < less; i++ {
+				rowData = append(rowData, "")
+			}
+		}
 		// step_2: 指标
 		// 指标名称
 		indexName := SupplyRevisionAnalysis + "/" + sheetConfig.IndexNameColPrefix + "/" + sheetConfig.IndexNameColSuffix + "/" + rowData[sheetConfig.IndexRow]
 		// 生成指标编码
 		indexCode := getIndexId(fmt.Sprintf("%s %s %s", SupplyRevisionAnalysis, sheetConfig.IndexNameColPrefix, sheetConfig.IndexNameColSuffix), strings.ReplaceAll(strings.ToLower(rowData[sheetConfig.IndexRow]), " ", ""), "")
 		dataTime := rowData[sheetConfig.DateRow]
+		if dataTime == "0" {
+			continue
+		}
 		var date time.Time
 		var convertErr error
 		switch sheetConfig.DateType {
 		case "quarter":
 			date, _, convertErr = utils.ConvertDateFormatQuarter(dataTime)
-		case "month":
-			date, _, convertErr = utils.ConvertDateFormatYear(dataTime)
 		case "year":
-			date, _, convertErr = utils.ConvertLastDayOfMonth(dataTime)
+			date, _, convertErr = utils.ConvertDateFormatYear(dataTime)
+		case "month":
+			timeSplit := strings.Split(dataTime, "-")
+			date, _, convertErr = utils.ConvertLastDayOfMonth(fmt.Sprintf("%s-%s", timeSplit[0], timeSplit[1]))
 		}
 		if convertErr != nil {
 			utils.FileLog.Error(fmt.Sprintf("转换时间数据失败,index_code:%s,time_value:%s err:%v", indexCode, dataTime, convertErr))
 			continue
 		}
-		if rowData[sheetConfig.DataRow] != "" && re.MatchString(strings.TrimSpace(rowData[sheetConfig.DataRow])) {
-			valueOne, parseErr := decimal.NewFromString(rowData[sheetConfig.DataRow])
+		if rowData[sheetConfig.DataRow] != "" {
+			value, parseErr := decimal.NewFromString(rowData[sheetConfig.DataRow])
 			if parseErr != nil {
 				utils.FileLog.Error(fmt.Sprintf("转换data数据失败,index_code:%s,data_value:%s err:%v", indexCode, rowData[sheetConfig.DataRow], err))
 				continue
@@ -223,11 +232,11 @@ func OneDataHandler(dataRows [][]string, sheetConfig SRAPConfig, classifyId int)
 					}
 					if index.EndDate.Before(date) {
 						index.EndDate = date
-						index.LatestValue = valueOne
+						index.LatestValue = value
 					}
 					index.DataList = append(index.DataList, models.IndexData{
 						DataTime: date,
-						Value:    valueOne,
+						Value:    value,
 					})
 				} else {
 					indexMap[indexCode] = &models.IndexInfo{
@@ -237,12 +246,12 @@ func OneDataHandler(dataRows [][]string, sheetConfig SRAPConfig, classifyId int)
 						Unit:        sheetConfig.Unit,
 						StartDate:   date,
 						EndDate:     date,
-						LatestValue: valueOne,
+						LatestValue: value,
 						ClassifyId:  classifyId,
 						DataList: []models.IndexData{
 							{
 								DataTime: date,
-								Value:    valueOne,
+								Value:    value,
 							},
 						},
 					}
@@ -253,9 +262,10 @@ func OneDataHandler(dataRows [][]string, sheetConfig SRAPConfig, classifyId int)
 	return
 }
 func TwoDataHandler(dataRows [][]string, sheetConfig SRAPConfig, classifyId int) (indexMap map[string]*models.IndexInfo, err error) {
+	indexMap = make(map[string]*models.IndexInfo)
 	// 匹配非数字字符
-	re := regexp.MustCompile(`^\d*\.?\d*\s*$`)
-	for _, rowData := range dataRows[BeginRow:] {
+	//re := regexp.MustCompile(`^\d*\.?\d*\s*$`)
+	for _, rowData := range dataRows[BeginRow : len(dataRows)-1] {
 		//处理数据不全的情况
 		less := Rows - len(rowData)
 		if less > 0 {
@@ -273,22 +283,26 @@ func TwoDataHandler(dataRows [][]string, sheetConfig SRAPConfig, classifyId int)
 		indexCodePrevious := getIndexId(fmt.Sprintf("%s %s", SupplyRevisionAnalysis, sheetConfig.IndexNameColPrefix), sheetConfig.CodePrevious, "")
 
 		dataTime := rowData[sheetConfig.DateRow]
+		if dataTime == "0" {
+			continue
+		}
 		var date time.Time
 		var convertErr error
 		switch sheetConfig.DateType {
 		case "quarter":
 			date, _, convertErr = utils.ConvertDateFormatQuarter(dataTime)
-		case "month":
-			date, _, convertErr = utils.ConvertDateFormatYear(dataTime)
 		case "year":
-			date, _, convertErr = utils.ConvertLastDayOfMonth(dataTime)
+			date, _, convertErr = utils.ConvertDateFormatYear(dataTime)
+		case "month":
+			timeSplit := strings.Split(dataTime, "-")
+			date, _, convertErr = utils.ConvertLastDayOfMonth(fmt.Sprintf("%s-%s", timeSplit[0], timeSplit[1]))
 		}
 		if convertErr != nil {
 			utils.FileLog.Error(fmt.Sprintf("转换时间数据失败,index_code:%s,time_value:%s err:%v", indexNameCurrent, dataTime, convertErr))
 			continue
 		}
 
-		if rowData[sheetConfig.DataCurrentRow] != "" && re.MatchString(strings.TrimSpace(rowData[sheetConfig.DataCurrentRow])) {
+		if rowData[sheetConfig.DataCurrentRow] != "" {
 			valueCurrent, parseErr := decimal.NewFromString(rowData[sheetConfig.DataCurrentRow])
 			if parseErr != nil {
 				utils.FileLog.Error(fmt.Sprintf("转换data数据失败,index_code:%s,data_value:%s err:%v", indexCodeCurrent, rowData[sheetConfig.DataCurrentRow], err))
@@ -326,7 +340,7 @@ func TwoDataHandler(dataRows [][]string, sheetConfig SRAPConfig, classifyId int)
 				}
 			}
 		}
-		if rowData[sheetConfig.DataPreviousRow] != "" && re.MatchString(strings.TrimSpace(rowData[sheetConfig.DataPreviousRow])) {
+		if rowData[sheetConfig.DataPreviousRow] != "" {
 			valuePrevious, parseErr := decimal.NewFromString(rowData[sheetConfig.DataPreviousRow])
 			if parseErr != nil {
 				utils.FileLog.Error(fmt.Sprintf("转换data数据失败,index_code:%s,data_value:%s err:%v", indexCodePrevious, rowData[sheetConfig.DataPreviousRow], err))