package com.ycl.service.unlawful.impl; import com.ycl.dto.statistics.CategoryDto; import com.ycl.dto.statistics.StatusDto; import com.ycl.dto.statistics.UnlawfulDto; import com.ycl.mapper.unlawful.UnlawfulMapper; import com.ycl.service.unlawful.UnlawfulService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.RoundingMode; import java.text.NumberFormat; import java.util.ArrayList; import java.util.List; @Service public class UnlawfulServiceImpl implements UnlawfulService { private List res = new ArrayList<>(); @Resource private UnlawfulMapper unlawfuldao; /** * 按类型 */ @Override public List getUnlawfulByType(Integer currentPage, Integer pageSize, String startTime, String endTime) { Double total = unlawfuldao.getTotal().doubleValue(); List data = unlawfuldao.getDataByType(currentPage, pageSize, startTime, endTime); data.forEach(categoryDto -> { StatusDto statusData = unlawfuldao.getStatusDataByType(startTime, endTime, categoryDto.getId()); format(res, total, categoryDto, statusData); }); return res; } @Override public List getUnlawfulByTypeExport() { Double total = unlawfuldao.getTotal().doubleValue(); List data = unlawfuldao.getDataByTypeExp(); data.forEach(categoryDto -> { StatusDto statusData = unlawfuldao.getStatusDataByType(null, null, categoryDto.getId()); format(res, total, categoryDto, statusData); }); return res; } /** * 按区域 */ @Override public List getUnlawfulByStreet(Integer currentPage, Integer pageSize, String startTime, String endTime) { Double total = unlawfuldao.getTotal().doubleValue(); List data = unlawfuldao.getDataByStreet(currentPage, pageSize, startTime, endTime); data.forEach(categoryDto -> { StatusDto statusData = unlawfuldao.getStatusDataByStreet(startTime, endTime, categoryDto.getId()); format(res, total, categoryDto, statusData); }); return res; } @Override public List getUnlawfulByStreetExport() { Double total = unlawfuldao.getTotal().doubleValue(); List data = unlawfuldao.getDataByStreetExp(); data.forEach(categoryDto -> { StatusDto statusData = unlawfuldao.getStatusDataByStreet(null, null, categoryDto.getId()); format(res, total, categoryDto, statusData); }); return res; } /** * 按报警点位 */ @Override public List getUnlawfulBySite(Integer currentPage, Integer pageSize, String startTime, String endTime) { Double total = unlawfuldao.getTotal().doubleValue(); List data = unlawfuldao.getDataBySite(currentPage, pageSize, startTime, endTime); data.forEach(site -> { StatusDto statusData = unlawfuldao.getStatusDataBySite(startTime, endTime, site); format1(res, total, site, statusData); }); return res; } @Override public List getUnlawfulBySiteExport() { Double total = unlawfuldao.getTotal().doubleValue(); List data = unlawfuldao.getDataBySiteExp(); data.forEach(site -> { StatusDto statusData = unlawfuldao.getStatusDataBySite(null, null, site); format1(res, total, site, statusData); }); return res; } private Double changeFormat(Double previous){ NumberFormat numberInstance = NumberFormat.getNumberInstance(); numberInstance.setMaximumFractionDigits(2); numberInstance.setRoundingMode(RoundingMode.HALF_UP); String format = numberInstance.format(previous); return Double.parseDouble(format); } private void format(List res, Double total, CategoryDto categoryDto, StatusDto statusData) { UnlawfulDto build = UnlawfulDto.builder().name(categoryDto.getName()) //类型名称 .count(statusData.getTotal()) //事件总数 .ratio(changeFormat(statusData.getTotal().doubleValue() / total)) //占比 .register(statusData.getRegister()) //立案 .notRegister(statusData.getNotRegister()) //暂不立案 .closing(statusData.getClosing()) //结案 .relearn(statusData.getRelearn()) //在学习 .checked(statusData.getChecked()) //已审核 .checkedRatio(changeFormat(statusData.getChecked().doubleValue() / statusData.getTotal().doubleValue())) //审核率 .registerRatio(changeFormat(statusData.getRegister().doubleValue() / statusData.getTotal().doubleValue())) //立案率 .build(); res.add(build); } private void format1(List res, Double total, String site, StatusDto statusData) { UnlawfulDto build = UnlawfulDto.builder().name(site) //类型名称 .count(statusData.getTotal()) //事件总数 .ratio(changeFormat(statusData.getTotal().doubleValue() / total)) //占比 .register(statusData.getRegister()) //立案 .notRegister(statusData.getNotRegister()) //暂不立案 .closing(statusData.getClosing()) //结案 .relearn(statusData.getRelearn()) //在学习 .checked(statusData.getChecked()) //已审核 .checkedRatio(changeFormat(statusData.getChecked().doubleValue() / statusData.getTotal().doubleValue())) //审核率 .registerRatio(changeFormat(statusData.getRegister().doubleValue() / statusData.getTotal().doubleValue())) //立案率 .build(); res.add(build); } }