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