baizonghao
2023-02-24 ebf167b950e735f873f3fcdbba276df47ada9834
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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<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 -> {
            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<UnlawfulDto> getUnlawfulByTypeExport() {
        List<UnlawfulDto> res = new ArrayList<>();
        Double total = unlawfuldao.getTotal().doubleValue();
        List<CategoryDto> 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);
    }
}