Browse Source

fix:调整

Roc 1 year ago
parent
commit
0e757f54dd
1 changed files with 57 additions and 7 deletions
  1. 57 7
      services/data/excel_info.go

+ 57 - 7
services/data/excel_info.go

@@ -16,7 +16,7 @@ import (
 )
 
 // GetFirstEdbDataList 获取第一列的数据
-func GetFirstEdbDataList(edbInfo *data_manage.EdbInfo, num int) (resultDataList []request.ManualDataReq, err error) {
+func GetFirstEdbDataList(edbInfo *data_manage.EdbInfo, num int, manualDateList []string) (resultDataList []request.ManualDataReq, err error) {
 	var dataList []*models.EdbDataList
 	switch edbInfo.EdbInfoType {
 	case 0:
@@ -31,6 +31,45 @@ func GetFirstEdbDataList(edbInfo *data_manage.EdbInfo, num int) (resultDataList
 
 	// 获取需要的期数
 	lenData := len(dataList)
+	if lenData <= 0 {
+		return
+	}
+
+	tmpManualDateNum := 0 // 手工数据的期数
+	lenManualDate := len(manualDateList)
+	if lenManualDate > 0 {
+		sortDateList := manualDateList
+		baseDateList := utils.StrArr{}
+		baseDateList = append(baseDateList, sortDateList...)
+		sort.Sort(baseDateList)
+		sortDateList = append([]string{}, baseDateList...)
+
+		lastData := dataList[lenData-1]
+		lastDataDate, tmpErr := time.ParseInLocation(utils.FormatDate, lastData.DataTime, time.Local)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+
+		// 遍历倒序后的日期,然后匹配在实际数据之后日期的个数
+		for _, tmpDateStr := range sortDateList {
+			tmpDate, tmpErr := time.ParseInLocation(utils.FormatDate, tmpDateStr, time.Local)
+			if tmpErr != nil {
+				err = tmpErr
+				return
+			}
+			if tmpDate.After(lastDataDate) {
+				tmpManualDateNum++
+				continue
+			}
+
+			break
+		}
+
+	}
+
+	// 需要的期数减去手工数据的期数,这才是A列指标需要的数据
+	num = num - tmpManualDateNum
 	if num > lenData {
 		num = lenData
 	}
@@ -399,13 +438,22 @@ func GetDataByTableDataConfig(tableDataConfig TableDataConfig) (resultResp reque
 		}
 	}
 
+	manualDateMap := make(map[string]string, 0)
+	manualDateList := make([]string, 0)
+	for _, v := range tableDataConfig.Data {
+		if _, ok := manualDateMap[v.DataTime]; !ok {
+			manualDateMap[v.DataTime] = v.DataTime
+			manualDateList = append(manualDateList, v.DataTime)
+		}
+	}
+
 	// 寻找A列的数据列表
-	firstEdbInfo, ok := edbInfoMap[tableDataConfig.EdbInfoIdList[0]]
+	firstEdbInfo, ok := edbInfoMap[tableDataConfig.Data[0].EdbInfoId]
 	if !ok {
 		err = errors.New("找不到A列指标")
 		return
 	}
-	baseFirstEdbInfoDataList, err := GetFirstEdbDataList(firstEdbInfo, tableDataConfig.Num)
+	baseFirstEdbInfoDataList, err := GetFirstEdbDataList(firstEdbInfo, tableDataConfig.Num, manualDateList)
 	if err != nil {
 		return
 	}
@@ -528,6 +576,7 @@ func GetDataByTableDataConfig(tableDataConfig TableDataConfig) (resultResp reque
 		}
 	}
 
+	// 数据处理,处理成表格的数据格式
 	tableDataMap, textRowListDataResp := handleTable(tagEdbInfoIdMap, lastRealDateTime, sortDateTimeList, edbInfoIdDateDataMap, tableDataConfig.Data, tableDataConfig.TextRowData)
 
 	data := make([]request.EdbInfoData, 0)
@@ -797,7 +846,7 @@ func handleTable(tagEdbInfoIdMap map[string]int, lastRealDateTime time.Time, sor
 		}
 
 		// 计算
-		val, _, err := calculate(colData.Value, tagMap)
+		val, _, err := calculate(strings.ToUpper(colData.Value), tagMap)
 		// 计算失败,退出循环
 		if err != nil {
 			continue
@@ -853,7 +902,7 @@ func handleTable(tagEdbInfoIdMap map[string]int, lastRealDateTime time.Time, sor
 			}
 
 			// 计算
-			val, _, err := calculate(colData.Value, tagMap)
+			val, _, err := calculate(strings.ToUpper(colData.Value), tagMap)
 			// 计算失败,退出循环
 			if err != nil {
 				continue
@@ -895,7 +944,7 @@ func handleTable(tagEdbInfoIdMap map[string]int, lastRealDateTime time.Time, sor
 		}
 
 		// 计算
-		val, _, err := calculate(colData.Value, tagMap)
+		val, _, err := calculate(strings.ToUpper(colData.Value), tagMap)
 		// 计算失败,退出循环
 		if err != nil {
 			continue
@@ -922,6 +971,7 @@ func handleTable(tagEdbInfoIdMap map[string]int, lastRealDateTime time.Time, sor
 		}
 
 	}
+
 	return
 }
 
@@ -979,7 +1029,7 @@ func getCalculateValue(tableDataMap map[int]map[string]request.ManualDataReq, ta
 	}
 
 	// 计算
-	val, _, err = calculate(colData.Value, tagMap)
+	val, _, err = calculate(strings.ToUpper(colData.Value), tagMap)
 	if err != nil {
 		return
 	}