Browse Source

Merge branch 'pool/analysis_edb'

Roc 1 year ago
parent
commit
2670067f9f
2 changed files with 56 additions and 25 deletions
  1. 35 25
      services/data/excel/custom_analysis_edb.go
  2. 21 0
      utils/common.go

+ 35 - 25
services/data/excel/custom_analysis_edb.go

@@ -100,17 +100,14 @@ func HandleEdbSequenceVal(dateSequenceVal, dataSequenceVal []string) (newDateLis
 	}
 	dataList := make([]dataStruct, 0)
 	{
-		var startData bool
 		for _, v := range dataSequenceVal {
 			// 如果没有数据集,那么就过滤
 			if v == `` {
 				// 如果开始插入数据了,那么就需要插入不存在值
-				if startData {
-					dataList = append(dataList, dataStruct{
-						Value: 0,
-						Ok:    false,
-					})
-				}
+				dataList = append(dataList, dataStruct{
+					Value: 0,
+					Ok:    false,
+				})
 				continue
 			}
 
@@ -118,19 +115,38 @@ func HandleEdbSequenceVal(dateSequenceVal, dataSequenceVal []string) (newDateLis
 			v = strings.Replace(v, ",", "", -1)
 			// 过滤空格
 			v = strings.Replace(v, " ", "", -1)
-			tmpValDec, tmpErr := decimal.NewFromString(v)
-			if tmpErr != nil {
-				if startData {
+
+			var tmpVal float64
+			if strings.Contains(v, "%") {
+				// 百分比的数
+				isPercentage, percentageValue := utils.IsPercentage(v)
+				if !isPercentage {
 					dataList = append(dataList, dataStruct{
 						Value: 0,
 						Ok:    false,
 					})
+					continue
 				}
-				continue
+				tmpValDec, tmpErr := decimal.NewFromString(percentageValue)
+				if tmpErr != nil {
+					dataList = append(dataList, dataStruct{
+						Value: 0,
+						Ok:    false,
+					})
+					continue
+				}
+				tmpVal, _ = tmpValDec.Div(decimal.NewFromFloat(100)).Float64()
+			} else {
+				tmpValDec, tmpErr := decimal.NewFromString(v)
+				if tmpErr != nil {
+					dataList = append(dataList, dataStruct{
+						Value: 0,
+						Ok:    false,
+					})
+					continue
+				}
+				tmpVal, _ = tmpValDec.Float64()
 			}
-			startData = true
-
-			tmpVal, _ := tmpValDec.Float64()
 			dataList = append(dataList, dataStruct{
 				Value: tmpVal,
 				Ok:    true,
@@ -141,14 +157,11 @@ func HandleEdbSequenceVal(dateSequenceVal, dataSequenceVal []string) (newDateLis
 	// 日期集
 	dateList := make([]string, 0)
 	{
-		var startData bool
 		for _, v := range dateSequenceVal {
 			// 如果没有数据集,那么就过滤
 			if v == `` {
 				// 如果开始插入数据了,那么就需要插入不存在值
-				if startData {
-					dateList = append(dateList, "")
-				}
+				dateList = append(dateList, "")
 				continue
 			}
 
@@ -156,12 +169,9 @@ func HandleEdbSequenceVal(dateSequenceVal, dataSequenceVal []string) (newDateLis
 			v = strings.Replace(v, " ", "", -1)
 			t1, tmpErr := dateparse.ParseAny(v)
 			if tmpErr != nil {
-				if startData {
-					dateList = append(dateList, "")
-				}
+				dateList = append(dateList, "")
 				continue
 			}
-			startData = true
 
 			dateList = append(dateList, t1.Format(utils.FormatDate))
 		}
@@ -178,15 +188,15 @@ func HandleEdbSequenceVal(dateSequenceVal, dataSequenceVal []string) (newDateLis
 
 	for i := 0; i < num; i++ {
 		date := dateList[i]
-		data := dataList[i]
+		tmpData := dataList[i]
 
 		// 日期为空、数据为空
-		if !data.Ok || date == `` {
+		if !tmpData.Ok || date == `` {
 			continue
 		}
 
 		newDateList = append(newDateList, date)
-		newDataList = append(newDataList, data.Value)
+		newDataList = append(newDataList, tmpData.Value)
 	}
 
 	return

+ 21 - 0
utils/common.go

@@ -2141,3 +2141,24 @@ func DealDateTimeZero(t time.Time, format string) (timeStr string) {
 	}
 	return
 }
+
+// IsPercentage
+// @Description: 判断一个字符串是否是百分比的字符串,并返回百分比的值(比如:50%,返回true 50)
+// @author: Roc
+// @datetime 2023-11-29 14:00:31
+// @param input string
+// @return bool
+// @return string
+func IsPercentage(input string) (bool, string) {
+	percentagePattern := `^(\d{1,2}(\.\d{1,2})?)%$`
+	match, _ := regexp.MatchString(percentagePattern, input)
+
+	if match {
+		// 提取百分比值
+		re := regexp.MustCompile(percentagePattern)
+		match := re.FindStringSubmatch(input)
+		return true, match[1]
+	}
+
+	return false, ""
+}