|
@@ -10,6 +10,7 @@ import (
|
|
|
"fmt"
|
|
|
"github.com/araddon/dateparse"
|
|
|
"github.com/shopspring/decimal"
|
|
|
+ "github.com/tealeg/xlsx"
|
|
|
"github.com/xuri/excelize/v2"
|
|
|
"strings"
|
|
|
)
|
|
@@ -255,212 +256,219 @@ func Refresh(excelInfo *excel.ExcelInfo) (err error, errMsg string, isSendEmail
|
|
|
for _, v := range list {
|
|
|
edbInfoIdList = append(edbInfoIdList, v.EdbInfoId)
|
|
|
|
|
|
- dateList := make([]string, 0)
|
|
|
- dataList := make([]string, 0)
|
|
|
+ // 获取对应的日期和数据列表
|
|
|
+ relDateList, relDataList, tmpErr, tmpErrMsg := getDateAndDataList(v, xlsxFile)
|
|
|
+ if tmpErr != nil {
|
|
|
+ err = tmpErr
|
|
|
+ errMsg = tmpErrMsg
|
|
|
+ return
|
|
|
+ }
|
|
|
+ req2 := &ResetCustomAnalysisData{
|
|
|
+ EdbInfoId: v.EdbInfoId,
|
|
|
+ DateList: relDateList,
|
|
|
+ DataList: relDataList,
|
|
|
+ }
|
|
|
|
|
|
- // 日期序列
|
|
|
- {
|
|
|
- sheetName, startColumnName, endColumnName, startNum, endNum, isAll, isRow, isColumn, tmpErr := GetSheetStr(v.DateSequenceStr)
|
|
|
- if tmpErr != nil {
|
|
|
- err = tmpErr
|
|
|
- return
|
|
|
- }
|
|
|
+ // 调用指标库去更新
|
|
|
+ reqJson, tmpErr := json.Marshal(req2)
|
|
|
+ if tmpErr != nil {
|
|
|
+ err = tmpErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+ respItem, tmpErr := data.ResetCustomAnalysisData(string(reqJson))
|
|
|
+ if tmpErr != nil {
|
|
|
+ err = tmpErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if respItem.Ret != 200 {
|
|
|
+ errMsg = respItem.Msg
|
|
|
+ err = errors.New(respItem.ErrMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //sheetInfo.Cell()
|
|
|
+ }
|
|
|
|
|
|
- // 查找sheet页
|
|
|
- sheetInfo, ok := xlsxFile.Sheet[sheetName]
|
|
|
- if !ok {
|
|
|
- errMsg = "找不到" + sheetName
|
|
|
- err = errors.New(errMsg)
|
|
|
- return
|
|
|
- }
|
|
|
+ if len(edbInfoIdList) > 0 {
|
|
|
+ err, _ = data.EdbInfoRefreshAllFromBaseV3(edbInfoIdList, false, true, true)
|
|
|
+ }
|
|
|
|
|
|
- startNum = startNum - 1
|
|
|
- endNum = endNum - 1
|
|
|
- // 选择行的数据
|
|
|
- if isRow {
|
|
|
- // 因为是选择一行的数据,所以开始行和结束行时一样的
|
|
|
- //endNum = startNum - 1
|
|
|
-
|
|
|
- // 开始列名、结束列
|
|
|
- var startColumn, endColumn int
|
|
|
- if isAll {
|
|
|
- // 结束列(其实也就是整列的个数)
|
|
|
- endColumn = len(sheetInfo.Cols) - 1
|
|
|
- } else {
|
|
|
- tmpStartColumn, tmpErr := excelize.ColumnNameToNumber(startColumnName)
|
|
|
- if tmpErr != nil {
|
|
|
- errMsg = "列名异常:" + startColumnName
|
|
|
- err = errors.New(errMsg)
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- tmpEndColumn, tmpErr := excelize.ColumnNameToNumber(endColumnName)
|
|
|
- if tmpErr != nil {
|
|
|
- errMsg = "列名异常:" + endColumnName
|
|
|
- err = errors.New(errMsg)
|
|
|
- return
|
|
|
- }
|
|
|
- startColumn = tmpStartColumn - 1
|
|
|
- endColumn = tmpEndColumn - 1
|
|
|
- }
|
|
|
+ //xlsxFile.Sheet[]
|
|
|
|
|
|
- for currColumn := startColumn; currColumn <= endColumn; currColumn++ {
|
|
|
- currCell := sheetInfo.Cell(startNum, currColumn)
|
|
|
- if currCell == nil {
|
|
|
- errMsg = fmt.Sprintf("第%d列,第%d行数据异常", startColumn, startNum)
|
|
|
- err = errors.New(errMsg)
|
|
|
- return
|
|
|
- }
|
|
|
- dateList = append(dateList, currCell.Value)
|
|
|
- }
|
|
|
+ return
|
|
|
+}
|
|
|
|
|
|
- } else if isColumn { // 选择列的数据
|
|
|
- if isAll {
|
|
|
- // 选择一整列的话,结束行得根据实际情况调整(其实也就是整个sheet有多少行)
|
|
|
- endNum = len(sheetInfo.Rows) - 1
|
|
|
- }
|
|
|
+func getDateAndDataList(excelEdbMappingItem *excel.ExcelEdbMappingItem, xlsxFile *xlsx.File) (newDateList []string, newDataList []float64, err error, errMsg string) {
|
|
|
+ dateList := make([]string, 0)
|
|
|
+ dataList := make([]string, 0)
|
|
|
+
|
|
|
+ // 日期序列
|
|
|
+ {
|
|
|
+ sheetName, startColumnName, endColumnName, startNum, endNum, isAll, isRow, isColumn, tmpErr := GetSheetStr(excelEdbMappingItem.DateSequenceStr)
|
|
|
+ if tmpErr != nil {
|
|
|
+ err = tmpErr
|
|
|
+ return
|
|
|
+ }
|
|
|
|
|
|
- startColumn, tmpErr := excelize.ColumnNameToNumber(startColumnName)
|
|
|
+ // 查找sheet页
|
|
|
+ sheetInfo, ok := xlsxFile.Sheet[sheetName]
|
|
|
+ if !ok {
|
|
|
+ errMsg = "找不到" + sheetName
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ startNum = startNum - 1
|
|
|
+ endNum = endNum - 1
|
|
|
+ // 选择行的数据
|
|
|
+ if isRow {
|
|
|
+ // 因为是选择一行的数据,所以开始行和结束行时一样的
|
|
|
+ //endNum = startNum - 1
|
|
|
+
|
|
|
+ // 开始列名、结束列
|
|
|
+ var startColumn, endColumn int
|
|
|
+ if isAll {
|
|
|
+ // 结束列(其实也就是整列的个数)
|
|
|
+ endColumn = len(sheetInfo.Cols) - 1
|
|
|
+ } else {
|
|
|
+ tmpStartColumn, tmpErr := excelize.ColumnNameToNumber(startColumnName)
|
|
|
if tmpErr != nil {
|
|
|
errMsg = "列名异常:" + startColumnName
|
|
|
err = errors.New(errMsg)
|
|
|
return
|
|
|
}
|
|
|
- startColumn = startColumn - 1
|
|
|
-
|
|
|
- for currRow := startNum; currRow <= endNum; currRow++ {
|
|
|
- currCell := sheetInfo.Cell(currRow, startColumn)
|
|
|
- if currCell == nil {
|
|
|
- errMsg = fmt.Sprintf("第%d列,第%d行数据异常", startColumn, startNum)
|
|
|
- err = errors.New(errMsg)
|
|
|
- return
|
|
|
- }
|
|
|
- dateList = append(dateList, currCell.Value)
|
|
|
+
|
|
|
+ tmpEndColumn, tmpErr := excelize.ColumnNameToNumber(endColumnName)
|
|
|
+ if tmpErr != nil {
|
|
|
+ errMsg = "列名异常:" + endColumnName
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
}
|
|
|
+ startColumn = tmpStartColumn - 1
|
|
|
+ endColumn = tmpEndColumn - 1
|
|
|
}
|
|
|
|
|
|
- }
|
|
|
+ for currColumn := startColumn; currColumn <= endColumn; currColumn++ {
|
|
|
+ currCell := sheetInfo.Cell(startNum, currColumn)
|
|
|
+ if currCell == nil {
|
|
|
+ errMsg = fmt.Sprintf("第%d列,第%d行数据异常", startColumn, startNum)
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ dateList = append(dateList, currCell.Value)
|
|
|
+ }
|
|
|
|
|
|
- // 数据序列
|
|
|
- {
|
|
|
- sheetName, startColumnName, endColumnName, startNum, endNum, isAll, isRow, isColumn, tmpErr := GetSheetStr(v.DataSequenceStr)
|
|
|
- if tmpErr != nil {
|
|
|
- err = tmpErr
|
|
|
- return
|
|
|
+ } else if isColumn { // 选择列的数据
|
|
|
+ if isAll {
|
|
|
+ // 选择一整列的话,结束行得根据实际情况调整(其实也就是整个sheet有多少行)
|
|
|
+ endNum = len(sheetInfo.Rows) - 1
|
|
|
}
|
|
|
|
|
|
- // 查找sheet页
|
|
|
- sheetInfo, ok := xlsxFile.Sheet[sheetName]
|
|
|
- if !ok {
|
|
|
- errMsg = "找不到" + sheetName
|
|
|
+ startColumn, tmpErr := excelize.ColumnNameToNumber(startColumnName)
|
|
|
+ if tmpErr != nil {
|
|
|
+ errMsg = "列名异常:" + startColumnName
|
|
|
err = errors.New(errMsg)
|
|
|
return
|
|
|
}
|
|
|
+ startColumn = startColumn - 1
|
|
|
|
|
|
- startNum = startNum - 1
|
|
|
- endNum = endNum - 1
|
|
|
- // 选择行的数据
|
|
|
- if isRow {
|
|
|
- // 开始列名、结束列
|
|
|
- var startColumn, endColumn int
|
|
|
- if isAll {
|
|
|
- // 结束列(其实也就是整列的个数)
|
|
|
- endColumn = len(sheetInfo.Cols) - 1
|
|
|
- } else {
|
|
|
-
|
|
|
- tmpStartColumn, tmpErr := excelize.ColumnNameToNumber(startColumnName)
|
|
|
- if tmpErr != nil {
|
|
|
- errMsg = "列名异常:" + startColumnName
|
|
|
- err = errors.New(errMsg)
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- tmpEndColumn, tmpErr := excelize.ColumnNameToNumber(endColumnName)
|
|
|
- if tmpErr != nil {
|
|
|
- errMsg = "列名异常:" + endColumnName
|
|
|
- err = errors.New(errMsg)
|
|
|
- return
|
|
|
- }
|
|
|
- startColumn = tmpStartColumn - 1
|
|
|
- endColumn = tmpEndColumn - 1
|
|
|
+ for currRow := startNum; currRow <= endNum; currRow++ {
|
|
|
+ currCell := sheetInfo.Cell(currRow, startColumn)
|
|
|
+ if currCell == nil {
|
|
|
+ errMsg = fmt.Sprintf("第%d列,第%d行数据异常", startColumn, startNum)
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
}
|
|
|
+ dateList = append(dateList, currCell.Value)
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- for currColumn := startColumn; currColumn <= endColumn; currColumn++ {
|
|
|
- currCell := sheetInfo.Cell(startNum, currColumn)
|
|
|
- if currCell == nil {
|
|
|
- errMsg = fmt.Sprintf("第%d列,第%d行数据异常", startColumn, startNum)
|
|
|
- err = errors.New(errMsg)
|
|
|
- return
|
|
|
- }
|
|
|
- dataList = append(dataList, currCell.Value)
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
- } else if isColumn { // 选择列的数据
|
|
|
- if isAll {
|
|
|
- // 选择一整列的话,结束行得根据实际情况调整(其实也就是整个sheet有多少行)
|
|
|
- endNum = len(sheetInfo.Rows) - 1
|
|
|
- }
|
|
|
+ // 数据序列
|
|
|
+ {
|
|
|
+ sheetName, startColumnName, endColumnName, startNum, endNum, isAll, isRow, isColumn, tmpErr := GetSheetStr(excelEdbMappingItem.DataSequenceStr)
|
|
|
+ if tmpErr != nil {
|
|
|
+ err = tmpErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查找sheet页
|
|
|
+ sheetInfo, ok := xlsxFile.Sheet[sheetName]
|
|
|
+ if !ok {
|
|
|
+ errMsg = "找不到" + sheetName
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ startNum = startNum - 1
|
|
|
+ endNum = endNum - 1
|
|
|
+ // 选择行的数据
|
|
|
+ if isRow {
|
|
|
+ // 开始列名、结束列
|
|
|
+ var startColumn, endColumn int
|
|
|
+ if isAll {
|
|
|
+ // 结束列(其实也就是整列的个数)
|
|
|
+ endColumn = len(sheetInfo.Cols) - 1
|
|
|
+ } else {
|
|
|
|
|
|
- startColumn, tmpErr := excelize.ColumnNameToNumber(startColumnName)
|
|
|
+ tmpStartColumn, tmpErr := excelize.ColumnNameToNumber(startColumnName)
|
|
|
if tmpErr != nil {
|
|
|
errMsg = "列名异常:" + startColumnName
|
|
|
err = errors.New(errMsg)
|
|
|
return
|
|
|
}
|
|
|
- startColumn = startColumn - 1
|
|
|
-
|
|
|
- for currRow := startNum; currRow <= endNum; currRow++ {
|
|
|
- currCell := sheetInfo.Cell(currRow, startColumn)
|
|
|
- if currCell == nil {
|
|
|
- errMsg = fmt.Sprintf("第%d列,第%d行数据异常", startColumn, startNum)
|
|
|
- err = errors.New(errMsg)
|
|
|
- return
|
|
|
- }
|
|
|
- dataList = append(dataList, currCell.Value)
|
|
|
+
|
|
|
+ tmpEndColumn, tmpErr := excelize.ColumnNameToNumber(endColumnName)
|
|
|
+ if tmpErr != nil {
|
|
|
+ errMsg = "列名异常:" + endColumnName
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
}
|
|
|
+ startColumn = tmpStartColumn - 1
|
|
|
+ endColumn = tmpEndColumn - 1
|
|
|
}
|
|
|
|
|
|
- }
|
|
|
+ for currColumn := startColumn; currColumn <= endColumn; currColumn++ {
|
|
|
+ currCell := sheetInfo.Cell(startNum, currColumn)
|
|
|
+ if currCell == nil {
|
|
|
+ errMsg = fmt.Sprintf("第%d列,第%d行数据异常", startColumn, startNum)
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ dataList = append(dataList, currCell.Value)
|
|
|
+ }
|
|
|
|
|
|
- //fmt.Println("日期序列结束")
|
|
|
+ } else if isColumn { // 选择列的数据
|
|
|
+ if isAll {
|
|
|
+ // 选择一整列的话,结束行得根据实际情况调整(其实也就是整个sheet有多少行)
|
|
|
+ endNum = len(sheetInfo.Rows) - 1
|
|
|
+ }
|
|
|
|
|
|
- // 将excel中的日期、数据系列处理
|
|
|
- relDateList, relDataList, tmpErr, tmpErrMsg := HandleEdbSequenceVal(dateList, dataList)
|
|
|
- if tmpErr != nil {
|
|
|
- err = tmpErr
|
|
|
- errMsg = tmpErrMsg
|
|
|
- return
|
|
|
- }
|
|
|
- req2 := &ResetCustomAnalysisData{
|
|
|
- EdbInfoId: v.EdbInfoId,
|
|
|
- DateList: relDateList,
|
|
|
- DataList: relDataList,
|
|
|
- }
|
|
|
+ startColumn, tmpErr := excelize.ColumnNameToNumber(startColumnName)
|
|
|
+ if tmpErr != nil {
|
|
|
+ errMsg = "列名异常:" + startColumnName
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ startColumn = startColumn - 1
|
|
|
|
|
|
- // 调用指标库去更新
|
|
|
- reqJson, tmpErr := json.Marshal(req2)
|
|
|
- if tmpErr != nil {
|
|
|
- err = tmpErr
|
|
|
- return
|
|
|
- }
|
|
|
- respItem, tmpErr := data.ResetCustomAnalysisData(string(reqJson))
|
|
|
- if tmpErr != nil {
|
|
|
- err = tmpErr
|
|
|
- return
|
|
|
- }
|
|
|
- if respItem.Ret != 200 {
|
|
|
- errMsg = respItem.Msg
|
|
|
- err = errors.New(respItem.ErrMsg)
|
|
|
- return
|
|
|
+ for currRow := startNum; currRow <= endNum; currRow++ {
|
|
|
+ currCell := sheetInfo.Cell(currRow, startColumn)
|
|
|
+ if currCell == nil {
|
|
|
+ errMsg = fmt.Sprintf("第%d列,第%d行数据异常", startColumn, startNum)
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ dataList = append(dataList, currCell.Value)
|
|
|
+ }
|
|
|
}
|
|
|
- //sheetInfo.Cell()
|
|
|
- }
|
|
|
|
|
|
- if len(edbInfoIdList) > 0 {
|
|
|
- err, _ = data.EdbInfoRefreshAllFromBaseV3(edbInfoIdList, false, true, true)
|
|
|
}
|
|
|
|
|
|
- //xlsxFile.Sheet[]
|
|
|
+ //fmt.Println("日期序列结束")
|
|
|
+
|
|
|
+ // 将excel中的日期、数据系列处理
|
|
|
+ newDateList, newDataList, err, errMsg = HandleEdbSequenceVal(dateList, dataList)
|
|
|
|
|
|
return
|
|
|
}
|