zhanghua
2023-11-21 bbe76086f95dfb34e942d9f2801e17db38391c68
ycl-platform/src/main/java/com/ycl/service/unlawful/impl/UnlawfulServiceImpl.java
@@ -1,11 +1,14 @@
package com.ycl.service.unlawful.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ycl.dto.statistics.CategoryDto;
import com.ycl.dto.statistics.StatusDto;
import com.ycl.dto.statistics.TimeDto;
import com.ycl.dto.statistics.UnlawfulDto;
import com.ycl.mapper.unlawful.UnlawfulMapper;
import com.ycl.service.unlawful.UnlawfulService;
import com.ycl.utils.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -26,177 +29,57 @@
     * 按类型
     */
    @Override
    public List<UnlawfulDto> getUnlawfulByType(Integer currentPage, Integer pageSize, String startTime, String endTime) {
        List<UnlawfulDto> res = new ArrayList<>();
        Double total = unlawfuldao.getTotal().doubleValue();
        List<CategoryDto> 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<UnlawfulDto> getUnlawfulByTypeExport() {
        List<UnlawfulDto> res = new ArrayList<>();
        Double total = unlawfuldao.getTotal().doubleValue();
        List<CategoryDto> data = unlawfuldao.getDataByTypeExp();
        data.forEach(categoryDto -> {
            StatusDto statusData = unlawfuldao.getStatusDataByType(null, null, categoryDto.getId());
            format(res, total, categoryDto, statusData);
        });
        return res;
    public IPage<UnlawfulDto> getUnlawfulByType(Integer currentPage, Integer pageSize, String startTime, String endTime) {
        Page<UnlawfulDto> page = new Page<>(currentPage, pageSize);
        Double total = unlawfuldao.getTotal(startTime, endTime, true, false, false).doubleValue();
        IPage<UnlawfulDto> page1 = unlawfuldao.getDataByType(page, startTime, endTime);
        return getUnlawfulDtoIPage(total, page1);
    }
    @Override
    public Integer getTotalByType(String startTime, String endTime) {
        return unlawfuldao.getTotalByType(startTime, endTime);
    private IPage<UnlawfulDto> getUnlawfulDtoIPage(Double total, IPage<UnlawfulDto> page1) {
        page1.getRecords().forEach(dto -> {
            dto.setRatio(StringUtils.doubleTwo((double) dto.getCount() * 100 / total) + "%");
            dto.setRegisterRatio(StringUtils.doubleTwo((double) dto.getRegister() * 100 / (double) dto.getCount()) + "%");
            dto.setCheckedRatio(StringUtils.doubleTwo((double) dto.getChecked() * 100 / (double) dto.getCount()) + "%");
            dto.setAccuracyRatio(StringUtils.doubleTwo(1.0 - (double) dto.getRelearn() * 100 / (double) dto.getCount()) + "%");
        });
        return page1;
    }
    /**
     * 按区域
     */
    @Override
    public List<UnlawfulDto> getUnlawfulByStreet(Integer currentPage, Integer pageSize, String startTime, String endTime) {
        List<UnlawfulDto> res = new ArrayList<>();
        Double total = unlawfuldao.getTotal().doubleValue();
        List<CategoryDto> 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<UnlawfulDto> getUnlawfulByStreetExport() {
        List<UnlawfulDto> res = new ArrayList<>();
        Double total = unlawfuldao.getTotal().doubleValue();
        List<CategoryDto> data = unlawfuldao.getDataByStreetExp();
        data.forEach(categoryDto -> {
            StatusDto statusData = unlawfuldao.getStatusDataByStreet(null, null, categoryDto.getId());
            format(res, total, categoryDto, statusData);
        });
        return res;
    }
    public IPage<UnlawfulDto> getUnlawfulByStreet(Integer currentPage, Integer pageSize, String startTime, String endTime) {
        Page<UnlawfulDto> page = new Page<>(currentPage, pageSize);
    @Override
    public Integer getTotalByStreet(String startTime, String endTime) {
        return unlawfuldao.getTotalByStreet(startTime, endTime);
        Double total = unlawfuldao.getTotal(startTime, endTime, false, true, false).doubleValue();
        IPage<UnlawfulDto> page1 = unlawfuldao.getDataByStreet(page, startTime, endTime);
        return getUnlawfulDtoIPage(total, page1);
    }
    /**
     * 按报警点位
     */
    @Override
    public List<UnlawfulDto> getUnlawfulBySite(Integer currentPage, Integer pageSize, String startTime, String endTime) {
        List<UnlawfulDto> res = new ArrayList<>();
        Double total = unlawfuldao.getTotal().doubleValue();
        List<String> 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<UnlawfulDto> getUnlawfulBySiteExport() {
        List<UnlawfulDto> res = new ArrayList<>();
        Double total = unlawfuldao.getTotal().doubleValue();
        List<String> data = unlawfuldao.getDataBySiteExp();
        data.forEach(site -> {
            StatusDto statusData = unlawfuldao.getStatusDataBySite(null, null, site);
            format1(res, total, site, statusData);
        });
        return res;
    }
    @Override
    public Integer getTotalBySite(String startTime, String endTime) {
        return unlawfuldao.getTotalBySite(startTime, endTime);
    }
    @Override
    public List<UnlawfulDto> getUnlawfulByTime(Integer currentPage, Integer pageSize, String startTime, String endTime) {
        List<UnlawfulDto> res = new ArrayList<>();
        Double total = unlawfuldao.getTotal().doubleValue();
        List<TimeDto> data = unlawfuldao.getDataByTime(currentPage, pageSize, startTime, endTime);
        data.forEach(timeDto -> {
            StatusDto statusData = unlawfuldao.getStatusDataByTime(startTime, endTime, timeDto.getId());
            format2(res, total, timeDto, statusData);
        });
        return res;
    }
    @Override
    public List<UnlawfulDto> getUnlawfulByTimeExport() {
        List<UnlawfulDto> res = new ArrayList<>();
        Double total = unlawfuldao.getTotal().doubleValue();
        List<TimeDto> data = unlawfuldao.getDataByTimeExp();
        data.forEach(timeDto -> {
            StatusDto statusData = unlawfuldao.getStatusDataByTime(null, null, timeDto.getId());
            format2(res, total, timeDto, statusData);
        });
        return res;
    public IPage<UnlawfulDto> getUnlawfulByTime(Integer currentPage, Integer pageSize, String startTime, String endTime) {
        Page<UnlawfulDto> page = new Page<>(currentPage, pageSize);
        Double total = unlawfuldao.getTotal(startTime, endTime, false, false, false).doubleValue();
        IPage<UnlawfulDto> page1 = unlawfuldao.getDataByTime(page, startTime, endTime);
        return getUnlawfulDtoIPage(total, page1);
    }
    @Override
    public Integer getTotalByTime(String startTime, String endTime) {
        return unlawfuldao.getTotalBySite(startTime, endTime);
    public IPage<UnlawfulDto> getUnlawfulByPoint(Integer currentPage, Integer pageSize, String startTime, String endTime) {
        Page<UnlawfulDto> page = new Page<>(currentPage, pageSize);
        Double total = unlawfuldao.getTotal(startTime, endTime, false, false, true).doubleValue();
        IPage<UnlawfulDto> page1 = unlawfuldao.getDataByPoint(page, startTime, endTime);
        return getUnlawfulDtoIPage(total, page1);
    }
    private Double changeFormat(Double previous){
        NumberFormat numberInstance = NumberFormat.getNumberInstance();
        numberInstance.setMaximumFractionDigits(3);
        numberInstance.setRoundingMode(RoundingMode.HALF_UP);
        String format = numberInstance.format(previous);
        return Double.parseDouble(format);
    }
    private void format(List<UnlawfulDto> 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 format2(List<UnlawfulDto> res, Double total, TimeDto timeDto, StatusDto statusData) {
        DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        UnlawfulDto build = UnlawfulDto.builder().name(timeDto.getTime().format(fmt))     //类型名称
                .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<UnlawfulDto> 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);
    }
}