|
@@ -6,9 +6,9 @@ import (
|
|
|
"eta/eta_api/models/data_manage/excel"
|
|
|
excelServices "eta/eta_api/services/excel"
|
|
|
"eta/eta_api/utils"
|
|
|
- "fmt"
|
|
|
"github.com/araddon/dateparse"
|
|
|
"github.com/shopspring/decimal"
|
|
|
+ "strings"
|
|
|
)
|
|
|
|
|
|
// GetCustomAnalysisExcelData 获取自定义分析的表格data数据
|
|
@@ -81,7 +81,6 @@ func GenerateExcelCustomAnalysisExcel(excelInfo *excel.ExcelInfo) (downloadFileP
|
|
|
}
|
|
|
|
|
|
downloadFilePath, err = luckySheet.ToExcel()
|
|
|
- fmt.Println("生成的文件地址:", downloadFilePath)
|
|
|
|
|
|
return
|
|
|
}
|
|
@@ -111,16 +110,19 @@ func HandleEdbSequenceVal(dateSequenceVal, dataSequenceVal []string) (newDateLis
|
|
|
}
|
|
|
continue
|
|
|
}
|
|
|
- startData = true
|
|
|
|
|
|
tmpValDec, tmpErr := decimal.NewFromString(v)
|
|
|
if tmpErr != nil {
|
|
|
- dataList = append(dataList, dataStruct{
|
|
|
- Value: 0,
|
|
|
- Ok: false,
|
|
|
- })
|
|
|
+ if startData {
|
|
|
+ dataList = append(dataList, dataStruct{
|
|
|
+ Value: 0,
|
|
|
+ Ok: false,
|
|
|
+ })
|
|
|
+ }
|
|
|
continue
|
|
|
}
|
|
|
+ startData = true
|
|
|
+
|
|
|
tmpVal, _ := tmpValDec.Float64()
|
|
|
dataList = append(dataList, dataStruct{
|
|
|
Value: tmpVal,
|
|
@@ -142,13 +144,16 @@ func HandleEdbSequenceVal(dateSequenceVal, dataSequenceVal []string) (newDateLis
|
|
|
}
|
|
|
continue
|
|
|
}
|
|
|
- startData = true
|
|
|
|
|
|
t1, tmpErr := dateparse.ParseAny(v)
|
|
|
if tmpErr != nil {
|
|
|
- dateList = append(dateList, "")
|
|
|
+ if startData {
|
|
|
+ dateList = append(dateList, "")
|
|
|
+ }
|
|
|
continue
|
|
|
}
|
|
|
+ startData = true
|
|
|
+
|
|
|
dateList = append(dateList, t1.Format(utils.FormatDate))
|
|
|
}
|
|
|
}
|
|
@@ -177,3 +182,140 @@ func HandleEdbSequenceVal(dateSequenceVal, dataSequenceVal []string) (newDateLis
|
|
|
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+func Refresh(excelInfo *excel.ExcelInfo) (err error, errMsg string, isSendEmail bool) {
|
|
|
+ isSendEmail = true
|
|
|
+
|
|
|
+ list, err := excel.GetAllExcelEdbMappingItemByExcelInfoId(excelInfo.ExcelInfoId)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "获取失败"
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ for k, v := range list {
|
|
|
+ var tmpCalculateFormula excel.CalculateFormula
|
|
|
+ err = json.Unmarshal([]byte(v.CalculateFormula), &tmpCalculateFormula)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "获取失败"
|
|
|
+ err = errors.New("公式转换失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ v.DateSequenceStr = tmpCalculateFormula.DateSequenceStr
|
|
|
+ v.DataSequenceStr = tmpCalculateFormula.DataSequenceStr
|
|
|
+ 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
|
|
|
+ //}
|
|
|
+
|
|
|
+ //xlsxFile.Sheet[]
|
|
|
+
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// GetSheetStr
|
|
|
+// @return sheetName string 用户选择的sheet名称
|
|
|
+// @return startColumnName string 用户选择的开始列名称
|
|
|
+// @return endColumnName string 用户选择的结束列名称
|
|
|
+// @return startNum int 用户选择的开始列单元格位置
|
|
|
+// @return endNum int 用户选择的结束列单元格位置
|
|
|
+// @return isAll bool 是否选择整行/列数据
|
|
|
+// @return isRow bool 是否选择行数据
|
|
|
+// @return isColumn bool 是否选择列数据
|
|
|
+func GetSheetStr(sequenceStr string) (sheetName, startColumnName, endColumnName string, startNum, endNum int, isAll, isRow, isColumn bool, err error) {
|
|
|
+ // 找出sheetName
|
|
|
+ tmpList := strings.Split(sequenceStr, "!")
|
|
|
+ if len(tmpList) != 2 {
|
|
|
+ err = errors.New("错误的公式,查找sheet异常:" + sequenceStr)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ sheetName = tmpList[0]
|
|
|
+
|
|
|
+ // 分离开始/结束单元格
|
|
|
+ tmpList = strings.Split(tmpList[1], ":")
|
|
|
+ if len(tmpList) != 2 {
|
|
|
+ err = errors.New("错误的公式,查找开始/结束单元格异常:" + sequenceStr)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ startList := strings.Split(tmpList[0], "$")
|
|
|
+ endList := strings.Split(tmpList[1], "$")
|
|
|
+
|
|
|
+ lenList := len(startList)
|
|
|
+ if lenList != len(endList) {
|
|
|
+ err = errors.New("错误的公式,开始与结束单元格异常:" + sequenceStr)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if lenList != 3 && lenList != 2 {
|
|
|
+ err = errors.New("错误的公式:" + sequenceStr)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ startColumnName = startList[1]
|
|
|
+ endColumnName = endList[1]
|
|
|
+
|
|
|
+ // 长度为2的话,那说明是整行或整列
|
|
|
+ if lenList == 2 {
|
|
|
+ isAll = true
|
|
|
+
|
|
|
+ startDeci, tmpErr1 := decimal.NewFromString(startList[1])
|
|
|
+ endDeci, tmpErr2 := decimal.NewFromString(endList[1])
|
|
|
+
|
|
|
+ if tmpErr1 == nil && tmpErr2 == nil {
|
|
|
+ isRow = true // 正常转换的话,那么就是整行
|
|
|
+ startNum = int(startDeci.IntPart())
|
|
|
+ endNum = int(endDeci.IntPart())
|
|
|
+ startColumnName = ``
|
|
|
+ endColumnName = ``
|
|
|
+
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if tmpErr1 == nil || tmpErr2 == nil {
|
|
|
+ err = errors.New("错误的公式2:" + sequenceStr)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果不能转成数字,那么就是整列
|
|
|
+ isColumn = true
|
|
|
+
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 确定行
|
|
|
+ startDeci, tmpErr1 := decimal.NewFromString(startList[2])
|
|
|
+ endDeci, tmpErr2 := decimal.NewFromString(endList[2])
|
|
|
+ if tmpErr1 != nil && tmpErr1 != tmpErr2 {
|
|
|
+ err = errors.New("错误的公式3:" + sequenceStr)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ startNum = int(startDeci.IntPart())
|
|
|
+ endNum = int(endDeci.IntPart())
|
|
|
+
|
|
|
+ if startColumnName != endColumnName && startNum != endNum {
|
|
|
+ err = errors.New("选区不允许跨行或者跨列")
|
|
|
+ }
|
|
|
+
|
|
|
+ if startColumnName == endColumnName {
|
|
|
+ isColumn = true // 列数据
|
|
|
+ } else {
|
|
|
+ isRow = true // 行数据
|
|
|
+ }
|
|
|
+
|
|
|
+ return
|
|
|
+}
|