|
@@ -4,10 +4,13 @@ import (
|
|
"encoding/json"
|
|
"encoding/json"
|
|
"errors"
|
|
"errors"
|
|
"eta/eta_api/models/data_manage/excel"
|
|
"eta/eta_api/models/data_manage/excel"
|
|
|
|
+ "eta/eta_api/services/data"
|
|
excelServices "eta/eta_api/services/excel"
|
|
excelServices "eta/eta_api/services/excel"
|
|
"eta/eta_api/utils"
|
|
"eta/eta_api/utils"
|
|
|
|
+ "fmt"
|
|
"github.com/araddon/dateparse"
|
|
"github.com/araddon/dateparse"
|
|
"github.com/shopspring/decimal"
|
|
"github.com/shopspring/decimal"
|
|
|
|
+ "github.com/xuri/excelize/v2"
|
|
"strings"
|
|
"strings"
|
|
)
|
|
)
|
|
|
|
|
|
@@ -183,6 +186,7 @@ func HandleEdbSequenceVal(dateSequenceVal, dataSequenceVal []string) (newDateLis
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+// Refresh 刷新表格关联的指标信息
|
|
func Refresh(excelInfo *excel.ExcelInfo) (err error, errMsg string, isSendEmail bool) {
|
|
func Refresh(excelInfo *excel.ExcelInfo) (err error, errMsg string, isSendEmail bool) {
|
|
isSendEmail = true
|
|
isSendEmail = true
|
|
|
|
|
|
@@ -192,6 +196,11 @@ func Refresh(excelInfo *excel.ExcelInfo) (err error, errMsg string, isSendEmail
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ // 没有关联指标,那么就退出吧
|
|
|
|
+ if len(list) <= 0 {
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
for k, v := range list {
|
|
for k, v := range list {
|
|
var tmpCalculateFormula excel.CalculateFormula
|
|
var tmpCalculateFormula excel.CalculateFormula
|
|
err = json.Unmarshal([]byte(v.CalculateFormula), &tmpCalculateFormula)
|
|
err = json.Unmarshal([]byte(v.CalculateFormula), &tmpCalculateFormula)
|
|
@@ -205,20 +214,231 @@ func Refresh(excelInfo *excel.ExcelInfo) (err error, errMsg string, isSendEmail
|
|
list[k] = v
|
|
list[k] = v
|
|
}
|
|
}
|
|
|
|
|
|
- //for _, v := range list {
|
|
|
|
- // sheetName, startColumnName, endColumnName string, startNum, endNum int, isAll, isRow, isColumn bool, err := GetSheetStr(v.DataSequenceStr)
|
|
|
|
- //}
|
|
|
|
-
|
|
|
|
- //luckySheet, err, errMsg := GetCustomAnalysisExcelData(excelInfo)
|
|
|
|
- //if err != nil {
|
|
|
|
- // return
|
|
|
|
- //}
|
|
|
|
- //
|
|
|
|
- //// 获取excel表格数据
|
|
|
|
- //xlsxFile, err := luckySheet.GetExcelData()
|
|
|
|
- //if err != nil {
|
|
|
|
- // return
|
|
|
|
- //}
|
|
|
|
|
|
+ luckySheet, err, errMsg := GetCustomAnalysisExcelData(excelInfo)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 获取excel表格数据
|
|
|
|
+ xlsxFile, err := luckySheet.GetExcelData()
|
|
|
|
+ if err != nil {
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ fmt.Println(xlsxFile)
|
|
|
|
+
|
|
|
|
+ // ResetCustomAnalysisData 数据重置的结构体
|
|
|
|
+ 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
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 查找sheet页
|
|
|
|
+ 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 {
|
|
|
|
+ //startNum = startNum - 1
|
|
|
|
+ //endNum = endNum - 1
|
|
|
|
+
|
|
|
|
+ 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 {
|
|
|
|
+ // 结束行(其实也就是整个sheet有多少行)
|
|
|
|
+ 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
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 查找sheet页
|
|
|
|
+ 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 {
|
|
|
|
+ //startNum = startNum - 1
|
|
|
|
+ //endNum = endNum - 1
|
|
|
|
+
|
|
|
|
+ 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 {
|
|
|
|
+ // 结束行(其实也就是整个sheet有多少行)
|
|
|
|
+ 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("日期序列结束")
|
|
|
|
+
|
|
|
|
+ // 将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,
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 调用指标库去更新
|
|
|
|
+ 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()
|
|
|
|
+ }
|
|
|
|
|
|
//xlsxFile.Sheet[]
|
|
//xlsxFile.Sheet[]
|
|
|
|
|