Roc před 1 rokem
rodič
revize
74020c31e0
1 změnil soubory, kde provedl 174 přidání a 166 odebrání
  1. 174 166
      services/data/excel/custom_analysis_edb.go

+ 174 - 166
services/data/excel/custom_analysis_edb.go

@@ -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
 }