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