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; import java.util.function.Consumer; @Service public class UnlawfulServiceImpl implements UnlawfulService { @Resource private UnlawfulMapper unlawfuldao; @Override public List getUnlawfulByType(Integer currentPage, Integer pageSize, String startTime, String endTime) { List res = new ArrayList<>(); Double total = unlawfuldao.getTotal().doubleValue(); List data = unlawfuldao.getDataByType(currentPage, pageSize, startTime, endTime); data.forEach(categoryDto -> { Double checkedRatio; //审核率 Double registerRatio; //立案率 StatusDto statusData = unlawfuldao.getStatusDataByType(startTime, endTime, categoryDto.getId()); UnlawfulDto build = new 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); }); return res; } @Override public List getUnlawfulByTypeExport() { List res = new ArrayList<>(); Double total = unlawfuldao.getTotal().doubleValue(); List data = unlawfuldao.getDataByTypeExp(); data.forEach(categoryDto -> { Double checkedRatio; //审核率 Double registerRatio; //立案率 StatusDto statusData = unlawfuldao.getStatusDataByType(null, null, categoryDto.getId()); UnlawfulDto build = new 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); }); 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); } }