| 
					
				 | 
			
			
				@@ -1,11 +1,33 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package com.usky.fire.service.impl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.baomidou.mybatisplus.core.metadata.IPage; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.baomidou.mybatisplus.core.toolkit.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.baomidou.mybatisplus.core.toolkit.Wrappers; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.usky.common.core.bean.CommonPage; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.usky.common.core.exception.BusinessException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.usky.common.core.util.Arith; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.usky.common.core.util.DateUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.usky.common.mybatis.core.AbstractCrudService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.usky.fire.domain.DemPoliceInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.usky.fire.mapper.DemPoliceInfoMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.usky.fire.service.DemFireStatisticsAttachService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.usky.fire.service.DemPoliceInfoService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.usky.common.mybatis.core.AbstractCrudService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.usky.fire.service.vo.AlertStatisticsVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.usky.fire.service.vo.FireLevelRatioVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.text.SimpleDateFormat; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.time.Instant; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.time.LocalDateTime; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.time.ZoneId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.stream.Collectors; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * <p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * 警情信息 服务实现类 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -17,4 +39,181 @@ import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public class DemPoliceInfoServiceImpl extends AbstractCrudService<DemPoliceInfoMapper, DemPoliceInfo> implements DemPoliceInfoService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public static final String[] ALERT_TYPE = {"火灾", "社会救助", "抢险救援", "排爆安检"}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private DemFireStatisticsAttachService demFireStatisticsAttachService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public Map<String, List<AlertStatisticsVO>> getAlertStatisticsByMonth(String startTime, String endTime, String streetTown) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        QueryWrapper<DemPoliceInfo> queryWrapper = new QueryWrapper<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        queryWrapper.select("month(filing_time) monthTime", "COUNT(id) as aCount", "case_type as aType") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .between("filing_time", startTime, endTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(StringUtils.isNotBlank(streetTown), "street_town", streetTown) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .groupBy("monthTime", "aType"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<String, List<AlertStatisticsVO>> typeMap = enhanceList(this.listMaps(queryWrapper)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Date maxDate = getMaxDate(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Date minDate = getMinDate(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        int distanceOfTwoDateYear = Integer.parseInt(DateUtils.getYear(maxDate)) - Integer.parseInt(DateUtils.getYear(minDate)) + 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        perfect(typeMap, 13, distanceOfTwoDateYear, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return typeMap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public List<AlertStatisticsVO> getAlertStatistics(String startTime, String endTime, String streetTown) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Date startTime1 = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Date endTime1 = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                startTime1 = simpleDateFormat.parse(startTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                endTime1 = simpleDateFormat.parse(endTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                throw new BusinessException("时间格式错误"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //获取同比 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Date upStartTime = DateUtils.addYears(startTime1, -1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Date upEndTime = DateUtils.addYears(endTime1, -1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<AlertStatisticsVO> list = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        list.add(getAsV(startTime1, endTime1, ALERT_TYPE[0], streetTown)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        list.add(getAsV(startTime1, endTime1, ALERT_TYPE[1], streetTown)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        list.add(getAsV(startTime1, endTime1, ALERT_TYPE[2], streetTown)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        list.add(getAsV(startTime1, endTime1, ALERT_TYPE[3], streetTown)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        list.forEach(alertStatisticsVO -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            AlertStatisticsVO upAsv = getAsV(upStartTime, upEndTime, alertStatisticsVO.getType(), streetTown); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Integer number = alertStatisticsVO.getNumber(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Integer upNumber = upAsv.getNumber(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (number.equals(upNumber)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                alertStatisticsVO.setSameStatus(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else if (number > upNumber) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                alertStatisticsVO.setSameStatus(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                alertStatisticsVO.setSameStatus(2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (0 != upNumber) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                double radio = Arith.div(Arith.sub(number, upNumber), upNumber); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                alertStatisticsVO.setRadio(Math.abs(radio)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (number != 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    alertStatisticsVO.setRadio(1.00); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    alertStatisticsVO.setRadio(0.00); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return list; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public CommonPage<DemPoliceInfo> page(Integer current, Integer size, String startTime, String endTime, String streetTown) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        IPage<DemPoliceInfo> page = new Page<>(current, size); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        LambdaQueryWrapper<DemPoliceInfo> queryWrapper = Wrappers.lambdaQuery(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        queryWrapper.between(StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime), DemPoliceInfo::getCreateTime, startTime, endTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(StringUtils.isNotBlank(streetTown), DemPoliceInfo::getStreetTown, streetTown) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .orderByDesc(DemPoliceInfo::getCreateTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        page = this.page(page, queryWrapper); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return this.ToCommonPage(page); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public List<String> getFireType() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<FireLevelRatioVO> list = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<String> fireTypes = demFireStatisticsAttachService.fireCauseType(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (CollectionUtils.isNotEmpty(fireTypes)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (String cause : fireTypes) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                FireLevelRatioVO fireLevelRatioVo = new FireLevelRatioVO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                fireLevelRatioVo.setFireType(cause); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Integer count = demFireStatisticsAttachService.fireStatisticsAttachCount(cause); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                fireLevelRatioVo.setRadio(count.doubleValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                list.add(fireLevelRatioVo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return list.stream().sorted(Comparator.comparing(FireLevelRatioVO::getRadio).reversed()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .map(FireLevelRatioVO::getFireType).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public AlertStatisticsVO getAsV(Date startTime, Date endTime, String type, String streetTown) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        AlertStatisticsVO alertStatisticsVo = new AlertStatisticsVO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        LambdaQueryWrapper<DemPoliceInfo> queryWrapper = Wrappers.lambdaQuery(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        queryWrapper.eq(StringUtils.isNotBlank(type), DemPoliceInfo::getCaseType, type) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(StringUtils.isNotBlank(streetTown), DemPoliceInfo::getStreetTown, streetTown); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (null != startTime && null != endTime) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            queryWrapper.between(DemPoliceInfo::getArrivalTime, startTime, endTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        alertStatisticsVo.setType(type); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        alertStatisticsVo.setNumber(this.count(queryWrapper)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return alertStatisticsVo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public Map<String, List<AlertStatisticsVO>> enhanceList(List<Map<String, Object>> mapList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<AlertStatisticsVO> list = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (Map<String, Object> map : mapList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            AlertStatisticsVO alertStatisticsVo = new AlertStatisticsVO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            alertStatisticsVo.setType(map.get("aType").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            alertStatisticsVo.setMonth(map.get("monthTime").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            alertStatisticsVo.setNumber(Integer.parseInt(map.get("aCount").toString())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            list.add(alertStatisticsVo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return list.stream().collect(Collectors.groupingBy(AlertStatisticsVO::getType)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public Date getMaxDate() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        IPage<DemPoliceInfo> page = new Page<>(1, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        LambdaQueryWrapper<DemPoliceInfo> maxQuery = Wrappers.lambdaQuery(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        maxQuery.isNotNull(DemPoliceInfo::getCreateTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .orderByDesc(DemPoliceInfo::getCreateTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        IPage<DemPoliceInfo> maxPage = this.page(page, maxQuery); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        LocalDateTime localDateTime = maxPage.getRecords().get(0).getCreateTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Date date = Date.from(instant); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return date; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public Date getMinDate() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        IPage<DemPoliceInfo> page = new Page<>(1, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        LambdaQueryWrapper<DemPoliceInfo> minQuery = Wrappers.lambdaQuery(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        minQuery.isNotNull(DemPoliceInfo::getCreateTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .orderByAsc(DemPoliceInfo::getCreateTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        IPage<DemPoliceInfo> minPage = this.page(page, minQuery); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        LocalDateTime localDateTime = minPage.getRecords().get(0).getCreateTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Date date = Date.from(instant); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return date; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void perfect(Map<String, List<AlertStatisticsVO>> typeMap, Integer times, Integer subTime, Integer defaultTime) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (String type : ALERT_TYPE) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!typeMap.containsKey(type)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                typeMap.put(type, new ArrayList<>()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            perfectDate(typeMap.get(type), times, subTime, defaultTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void perfectDate(List<AlertStatisticsVO> list, Integer times, Integer subTime, Integer defaultTime) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (int i = defaultTime; i < times; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            int finalI = i; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            list.stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .filter(asv -> Integer.parseInt(asv.getMonth()) == finalI) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .findFirst() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .map(asv -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        asv.setAvg(Arith.div(asv.getNumber(), subTime)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        return asv; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .orElseGet(() -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        AlertStatisticsVO asv = new AlertStatisticsVO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        asv.setMonth(Integer.toString(finalI)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        asv.setNumber(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        asv.setAvg(0.00); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        list.add(asv); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        return asv; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        list.sort(Comparator.comparingInt(x -> Integer.parseInt(x.getMonth()))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |