|
@@ -2,12 +2,14 @@ package com.cpp.web.service.accuracy.impl;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.cpp.system.service.ISysDictDataService;
|
|
|
import com.cpp.web.domain.accuracy.AccuracyPassRate;
|
|
|
import com.cpp.web.domain.enums.DataSourcesEnum;
|
|
|
import com.cpp.web.domain.enums.ForecastTypeEnum;
|
|
|
import com.cpp.web.mapper.accuracy.AccuracyPassRateMapper;
|
|
|
import com.cpp.web.service.accuracy.AccuracyPassRateService;
|
|
|
import com.cpp.web.utils.StartAndEndMonthUtil;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
@@ -26,7 +28,8 @@ import java.util.stream.Collectors;
|
|
|
@Service
|
|
|
public class AccuracyPassRateServiceImpl extends ServiceImpl<AccuracyPassRateMapper, AccuracyPassRate> implements AccuracyPassRateService {
|
|
|
|
|
|
-
|
|
|
+ @Autowired
|
|
|
+ private ISysDictDataService dictDataService;
|
|
|
@Override
|
|
|
public List<AccuracyPassRate> findByTimeBetweenAndForecastTypeAndDataSourcesAndAgoAndForecastModelAndStationCode(Date startTime, Date endTime, ForecastTypeEnum forecastType, DataSourcesEnum dataSources, Integer ago, String forecastModel, String stationCode) {
|
|
|
QueryWrapper<AccuracyPassRate> wrapper = new QueryWrapper<>();
|
|
@@ -98,14 +101,19 @@ public class AccuracyPassRateServiceImpl extends ServiceImpl<AccuracyPassRateMap
|
|
|
AccuracyPassRate::getForecastModel,
|
|
|
Collectors.averagingDouble(apr -> stringToDouble.apply(apr.getAccuracy()))
|
|
|
));
|
|
|
-
|
|
|
+ Map<String, Double> updatedAverageByCategory = averageByCategory.entrySet().stream()
|
|
|
+ .collect(Collectors.toMap(
|
|
|
+ entry->dictDataService.selectDictLabel("forecast_model",entry.getKey())==null?entry.getKey():dictDataService.selectDictLabel("forecast_model",entry.getKey()),
|
|
|
+ entry->entry.getValue()
|
|
|
+ ));
|
|
|
sortMap = new TreeMap<>(new Comparator<String>() {
|
|
|
@Override
|
|
|
public int compare(String o1, String o2) {
|
|
|
- return averageByCategory.get(o2).compareTo(averageByCategory.get(o1));
|
|
|
+ return updatedAverageByCategory.get(o2).compareTo(updatedAverageByCategory.get(o1));
|
|
|
}
|
|
|
});
|
|
|
- sortMap.putAll(averageByCategory);
|
|
|
+
|
|
|
+ sortMap.putAll(updatedAverageByCategory);
|
|
|
|
|
|
}
|
|
|
return sortMap;
|
|
@@ -114,7 +122,6 @@ public class AccuracyPassRateServiceImpl extends ServiceImpl<AccuracyPassRateMap
|
|
|
@Override
|
|
|
public List<Map<String,String>> finfBySingleMonthBetweenAndForecastTypeAndStationCode(Long startTime, Long endTime, ForecastTypeEnum forecastType, DataSourcesEnum dataSources, String stationCode,String stationName,String uploadDataSources) {
|
|
|
List<Map<String,String>> list = new ArrayList<>();
|
|
|
-
|
|
|
List<long[]> longs = StartAndEndMonthUtil.singleMonth(startTime, endTime);
|
|
|
Collections.reverse(longs);
|
|
|
|
|
@@ -142,8 +149,7 @@ public class AccuracyPassRateServiceImpl extends ServiceImpl<AccuracyPassRateMap
|
|
|
wrapper2.orderByDesc("time");
|
|
|
}
|
|
|
List<AccuracyPassRate> accuracyPassRateList = baseMapper.selectList(wrapper);
|
|
|
- System.out.println("---------------");
|
|
|
- System.out.println(accuracyPassRateList);
|
|
|
+
|
|
|
List<AccuracyPassRate> accuracyPassRateList2 = baseMapper.selectList(wrapper2);
|
|
|
|
|
|
accuracyPassRateList = accuracyPassRateList.stream().filter(f -> !"无可用数据计算".equals(f.getAccuracy()) && !"无计算公式".equals(f.getAccuracy())).collect(Collectors.toList());
|
|
@@ -176,7 +182,7 @@ public class AccuracyPassRateServiceImpl extends ServiceImpl<AccuracyPassRateMap
|
|
|
Map<String,String> map = new HashMap<>();
|
|
|
map.put("station",stationName);
|
|
|
map.put("month",new SimpleDateFormat("yyyy-MM").format(new Date(aLong[0])));
|
|
|
- map.put("preModels",entry.getKey());
|
|
|
+ map.put("preModels",dictDataService.selectDictLabel("forecast_model",entry.getKey())==null?entry.getKey():dictDataService.selectDictLabel("forecast_model",entry.getKey()));
|
|
|
map.put("shortAccuracy",BigDecimal.valueOf(entry.getValue()).setScale(2, RoundingMode.HALF_UP).toString());
|
|
|
map.put("uploadShortAccuracy",collect.toString());
|
|
|
map.put("accuracyRanking",String.valueOf(++count));
|