package com.ycl.service.unlawful.impl;
|
|
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 org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.math.RoundingMode;
|
import java.text.NumberFormat;
|
import java.time.format.DateTimeFormatter;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
@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 -> {
|
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;
|
}
|
|
@Override
|
public Integer getTotalByType(String startTime, String endTime) {
|
return unlawfuldao.getTotalByType(startTime, endTime);
|
}
|
|
/**
|
* 按区域
|
*/
|
@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;
|
}
|
|
@Override
|
public Integer getTotalByStreet(String startTime, String endTime) {
|
return unlawfuldao.getTotalByStreet(startTime, endTime);
|
}
|
|
/**
|
* 按报警点位
|
*/
|
@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;
|
}
|
|
@Override
|
public Integer getTotalByTime(String startTime, String endTime) {
|
return unlawfuldao.getTotalBySite(startTime, endTime);
|
}
|
|
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);
|
}
|
}
|