|
@@ -4,10 +4,13 @@ import (
|
|
|
"encoding/json"
|
|
|
"errors"
|
|
|
"eta/eta_api/models/data_manage/excel"
|
|
|
+ "eta/eta_api/services/data"
|
|
|
excelServices "eta/eta_api/services/excel"
|
|
|
"eta/eta_api/utils"
|
|
|
+ "fmt"
|
|
|
"github.com/araddon/dateparse"
|
|
|
"github.com/shopspring/decimal"
|
|
|
+ "github.com/xuri/excelize/v2"
|
|
|
"strings"
|
|
|
)
|
|
|
|
|
@@ -183,6 +186,7 @@ func HandleEdbSequenceVal(dateSequenceVal, dataSequenceVal []string) (newDateLis
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+
|
|
|
func Refresh(excelInfo *excel.ExcelInfo) (err error, errMsg string, isSendEmail bool) {
|
|
|
isSendEmail = true
|
|
|
|
|
@@ -192,6 +196,11 @@ func Refresh(excelInfo *excel.ExcelInfo) (err error, errMsg string, isSendEmail
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ if len(list) <= 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
for k, v := range list {
|
|
|
var tmpCalculateFormula excel.CalculateFormula
|
|
|
err = json.Unmarshal([]byte(v.CalculateFormula), &tmpCalculateFormula)
|
|
@@ -205,20 +214,231 @@ func Refresh(excelInfo *excel.ExcelInfo) (err error, errMsg string, isSendEmail
|
|
|
list[k] = v
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+ luckySheet, err, errMsg := GetCustomAnalysisExcelData(excelInfo)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ xlsxFile, err := luckySheet.GetExcelData()
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ fmt.Println(xlsxFile)
|
|
|
+
|
|
|
+
|
|
|
+ type ResetCustomAnalysisData struct {
|
|
|
+ EdbInfoId int
|
|
|
+ DateList []string
|
|
|
+ DataList []float64
|
|
|
+ }
|
|
|
+
|
|
|
+ for _, v := range list {
|
|
|
+ dateList := make([]string, 0)
|
|
|
+ dataList := make([]string, 0)
|
|
|
+
|
|
|
+
|
|
|
+ {
|
|
|
+ sheetName, startColumnName, endColumnName, startNum, endNum, isAll, isRow, isColumn, tmpErr := GetSheetStr(v.DateSequenceStr)
|
|
|
+ if tmpErr != nil {
|
|
|
+ err = tmpErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ sheetInfo, ok := xlsxFile.Sheet[sheetName]
|
|
|
+ if !ok {
|
|
|
+ errMsg = "找不到" + sheetName
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ 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 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)
|
|
|
+ }
|
|
|
+
|
|
|
+ } else if isColumn {
|
|
|
+ if isAll {
|
|
|
+
|
|
|
+ endNum = len(sheetInfo.Rows) - 1
|
|
|
+ } else {
|
|
|
+ startNum = startNum - 1
|
|
|
+ endNum = endNum - 1
|
|
|
+ }
|
|
|
+
|
|
|
+ startColumn, 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)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ {
|
|
|
+ sheetName, startColumnName, endColumnName, startNum, endNum, isAll, isRow, isColumn, tmpErr := GetSheetStr(v.DataSequenceStr)
|
|
|
+ if tmpErr != nil {
|
|
|
+ err = tmpErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ sheetInfo, ok := xlsxFile.Sheet[sheetName]
|
|
|
+ if !ok {
|
|
|
+ errMsg = "找不到" + sheetName
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ 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 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 {
|
|
|
+
|
|
|
+ endNum = len(sheetInfo.Rows) - 1
|
|
|
+ } else {
|
|
|
+ startNum = startNum - 1
|
|
|
+ endNum = endNum - 1
|
|
|
+ }
|
|
|
+
|
|
|
+ startColumn, 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)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ fmt.Println("日期序列结束")
|
|
|
+
|
|
|
+
|
|
|
+ relDateList, relDataList, tmpErr, tmpErrMsg := HandleEdbSequenceVal(dateList, dataList)
|
|
|
+ if tmpErr != nil {
|
|
|
+ err = tmpErr
|
|
|
+ errMsg = tmpErrMsg
|
|
|
+ return
|
|
|
+ }
|
|
|
+ req2 := &ResetCustomAnalysisData{
|
|
|
+ EdbInfoId: v.EdbInfoId,
|
|
|
+ DateList: relDateList,
|
|
|
+ DataList: relDataList,
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ 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
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|