|
@@ -37,37 +37,39 @@ public class FireStatisticsServiceImpl implements FireStatisticsService {
|
|
|
@Override
|
|
|
public List<Object> getFireCountByData(Date startTime,Date endTime,String address,String fireType) {
|
|
|
List<Object> list = new ArrayList<>();
|
|
|
- List<Integer> thisYearList = new ArrayList<>();
|
|
|
- List<Double> monthList = new ArrayList<>();
|
|
|
- List<Double> yearList = new ArrayList<>();
|
|
|
Date date = new Date();
|
|
|
+ Date beginDayOfYear = DateUtils.getBeginDayOfYear(date);
|
|
|
//获取传入时间的最大时间和最小时间
|
|
|
int distanceOfTwoDate =Integer.parseInt(DateUtils.getYear(endTime)) - Integer.parseInt(DateUtils.getYear(startTime)) + 1;
|
|
|
- Date startMax = DateUtils.getFirstDayOfMonth(DateUtils.setMonths(startTime, 0));
|
|
|
- Date endMax = DateUtils.getLastDayOfMonth(DateUtils.setMonths(endTime, 11));
|
|
|
//获取数据库全部项目的最小时间和最大时间
|
|
|
Date maxDate = fireStatisticsMapper.selectMaxDate();
|
|
|
Date minDate = fireStatisticsMapper.selectMinDate();
|
|
|
int distanceOfTwoDateYear =Integer.parseInt(DateUtils.getYear(maxDate)) - Integer.parseInt(DateUtils.getYear(minDate)) + 1;
|
|
|
- for (int i = 0; i < 12; i++) {
|
|
|
- //获取今年的12个月份数据
|
|
|
- date = DateUtils.setDays(date,1);
|
|
|
- Date setMonths = DateUtils.setMonths(date, i);
|
|
|
- Date firstDayOfMonth = DateUtils.getFirstDayOfMonth(setMonths);
|
|
|
- Date lastDayOfMonth = DateUtils.getLastDayOfMonth(setMonths);
|
|
|
- thisYearList.add(fireStatisticsMapper.selectCount(firstDayOfMonth, lastDayOfMonth, address,fireType,null,null));
|
|
|
- //月平均值
|
|
|
- Integer monthCount = fireStatisticsMapper.selectCountByRangeDate(startMax, endMax, address, fireType,i+1);
|
|
|
- monthList.add(Arith.div(monthCount, distanceOfTwoDate,2));
|
|
|
- Integer yearCount = fireStatisticsMapper.selectCountByRangeDate(null, null,address, fireType,i+1);
|
|
|
- yearList.add(Arith.div(yearCount, distanceOfTwoDateYear,2));
|
|
|
- }
|
|
|
- list.add(thisYearList);
|
|
|
- list.add(monthList);
|
|
|
- list.add(yearList);
|
|
|
+ list.add(perfect(beginDayOfYear, date, address, fireType, 1));
|
|
|
+ list.add(perfect(startTime,endTime,address,fireType,distanceOfTwoDate));
|
|
|
+ list.add(perfect(null,null,address,fireType,distanceOfTwoDateYear));
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
+ public List<Object> perfect(Date startTime,Date endTime,String address,String fireType, Integer subTime){
|
|
|
+ List<Map<String, Object>> list = fireStatisticsMapper.selectCountByDate(startTime, endTime, fireType, address);
|
|
|
+ List<Object> avgList = new ArrayList<>();
|
|
|
+ for (int i = 1; i <= 12; i++) {
|
|
|
+ int finalI = i;
|
|
|
+ list.stream()
|
|
|
+ .filter(map -> Integer.parseInt(map.get("monthTime").toString()) == finalI)
|
|
|
+ .findFirst()
|
|
|
+ .map(map -> {
|
|
|
+ avgList.add(Arith.div(Double.parseDouble(map.get("aCount").toString()),subTime,2));
|
|
|
+ return Optional.empty();
|
|
|
+ })
|
|
|
+ .orElseGet(() -> {
|
|
|
+ avgList.add(0.00);
|
|
|
+ return Optional.empty();
|
|
|
+ });
|
|
|
+ }
|
|
|
+ return avgList;
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
|
public CommonPage<FireStatisticsPO> page(Integer current, Integer size, Date startTime, Date endTime, String address) {
|