新需求接口开发

master
liuqingkun 3 years ago
parent 016fef6d86
commit eb3e45c6bd
  1. 171
      src/main/java/org/springblade/modules/business/controller/ReportController.java
  2. 5
      src/main/java/org/springblade/modules/business/entity/DataEntity.java
  3. 15
      src/main/java/org/springblade/modules/business/service/ILargeScreenService.java
  4. 128
      src/main/java/org/springblade/modules/business/service/impl/LargeScreenServiceImpl.java
  5. 1
      src/main/resources/application.yml

@ -19,6 +19,7 @@ package org.springblade.modules.business.controller;
import com.github.xiaoymin.knife4j.annotations.ApiSort; import com.github.xiaoymin.knife4j.annotations.ApiSort;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springblade.common.cache.DictBizCache; import org.springblade.common.cache.DictBizCache;
import org.springblade.common.constant.BusinessConstant; import org.springblade.common.constant.BusinessConstant;
import org.springblade.common.constant.CommonConstant; import org.springblade.common.constant.CommonConstant;
@ -27,17 +28,21 @@ import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query; import org.springblade.core.mp.support.Query;
import org.springblade.core.tenant.annotation.TenantDS; import org.springblade.core.tenant.annotation.TenantDS;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.modules.business.entity.Appeal;
import org.springblade.modules.business.entity.DataEntity;
import org.springblade.modules.business.service.ILargeScreenService; import org.springblade.modules.business.service.ILargeScreenService;
import org.springblade.modules.business.utils.LocalDateTimeUtils;
import org.springblade.modules.system.entity.DictBiz; import org.springblade.modules.system.entity.DictBiz;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.text.ParseException; import java.text.ParseException;
import java.util.ArrayList; import java.text.SimpleDateFormat;
import java.util.HashMap; import java.time.LocalDateTime;
import java.util.List; import java.time.format.DateTimeFormatter;
import java.util.Map; import java.util.*;
/** /**
* 控制器 * 控制器
@ -75,7 +80,24 @@ public class ReportController extends BladeController {
*/ */
@GetMapping("/getAppealList") @GetMapping("/getAppealList")
public R getAppealList(Integer timeFrame, String startTime, String endTime) { public R getAppealList(Integer timeFrame, String startTime, String endTime) {
return R.data(largeScreenService.getAppealList()); LocalDateTime start = null;
LocalDateTime end = null;
if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) {
DateTimeFormatter fmt = DateTimeFormatter.ofPattern(DateUtil.PATTERN_DATETIME);
start = LocalDateTime.parse(startTime, fmt);
end = LocalDateTime.parse(endTime, fmt);
} else if (timeFrame == 1) {
start = LocalDateTimeUtils.monthStartTime();
end = LocalDateTimeUtils.monthEndTime();
} else if (timeFrame == 2) {
start = LocalDateTimeUtils.quarterStartTime();
end = LocalDateTimeUtils.quarterEndTime();
} else {
start = LocalDateTimeUtils.yearStartTime();
end = LocalDateTimeUtils.yearEndTime();
}
return R.data(largeScreenService.getAppealList(start, end));
} }
/** /**
@ -83,7 +105,23 @@ public class ReportController extends BladeController {
*/ */
@GetMapping("/getAppealByMon") @GetMapping("/getAppealByMon")
public R getAppealByMon(Integer timeFrame, String startTime, String endTime) { public R getAppealByMon(Integer timeFrame, String startTime, String endTime) {
return R.data(largeScreenService.getAppealByMon()); LocalDateTime start = null;
LocalDateTime end = null;
if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) {
DateTimeFormatter fmt = DateTimeFormatter.ofPattern(DateUtil.PATTERN_DATETIME);
start = LocalDateTime.parse(startTime, fmt);
end = LocalDateTime.parse(endTime, fmt);
} else if (timeFrame == 1) {
start = LocalDateTimeUtils.monthStartTime();
end = LocalDateTimeUtils.monthEndTime();
} else if (timeFrame == 2) {
start = LocalDateTimeUtils.quarterStartTime();
end = LocalDateTimeUtils.quarterEndTime();
} else {
start = LocalDateTimeUtils.yearStartTime();
end = LocalDateTimeUtils.yearEndTime();
}
return R.data(largeScreenService.getAppealByMon(start, end));
} }
/** /**
@ -91,7 +129,23 @@ public class ReportController extends BladeController {
*/ */
@GetMapping("/getAppealTypePercent") @GetMapping("/getAppealTypePercent")
public R getAppealTypePercent(Integer timeFrame, String startTime, String endTime) { public R getAppealTypePercent(Integer timeFrame, String startTime, String endTime) {
return R.data(largeScreenService.getAppealTypePercent()); LocalDateTime start = null;
LocalDateTime end = null;
if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) {
DateTimeFormatter fmt = DateTimeFormatter.ofPattern(DateUtil.PATTERN_DATETIME);
start = LocalDateTime.parse(startTime, fmt);
end = LocalDateTime.parse(endTime, fmt);
} else if (timeFrame == 1) {
start = LocalDateTimeUtils.monthStartTime();
end = LocalDateTimeUtils.monthEndTime();
} else if (timeFrame == 2) {
start = LocalDateTimeUtils.quarterStartTime();
end = LocalDateTimeUtils.quarterEndTime();
} else {
start = LocalDateTimeUtils.yearStartTime();
end = LocalDateTimeUtils.yearEndTime();
}
return R.data(largeScreenService.getAppealTypePercent(start, end));
} }
/** /**
@ -108,7 +162,7 @@ public class ReportController extends BladeController {
*/ */
@GetMapping("/getAppealFinishCountByLoc") @GetMapping("/getAppealFinishCountByLoc")
public R getAppealFinishCountByLoc(Integer timeFrame, String startTime, String endTime) throws ParseException { public R getAppealFinishCountByLoc(Integer timeFrame, String startTime, String endTime) throws ParseException {
Map<String, Object> dataList = largeScreenService.getAppealFinishCountByLoc(timeFrame, startTime, endTime); List<DataEntity> dataList = largeScreenService.getAppealFinishCountByLoc(timeFrame, startTime, endTime);
return R.data(getSortAndData(dataList)); return R.data(getSortAndData(dataList));
} }
@ -126,7 +180,23 @@ public class ReportController extends BladeController {
*/ */
@GetMapping("/getImmediateList") @GetMapping("/getImmediateList")
public R getImmediateList(String streetId, Integer timeFrame, String startTime, String endTime, Query query) { public R getImmediateList(String streetId, Integer timeFrame, String startTime, String endTime, Query query) {
return R.data(largeScreenService.getImmediateList(streetId, Condition.getPage(query))); LocalDateTime start = null;
LocalDateTime end = null;
if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) {
DateTimeFormatter fmt = DateTimeFormatter.ofPattern(DateUtil.PATTERN_DATETIME);
start = LocalDateTime.parse(startTime, fmt);
end = LocalDateTime.parse(endTime, fmt);
} else if (timeFrame == 1) {
start = LocalDateTimeUtils.monthStartTime();
end = LocalDateTimeUtils.monthEndTime();
} else if (timeFrame == 2) {
start = LocalDateTimeUtils.quarterStartTime();
end = LocalDateTimeUtils.quarterEndTime();
} else {
start = LocalDateTimeUtils.yearStartTime();
end = LocalDateTimeUtils.yearEndTime();
}
return R.data(largeScreenService.getImmediateList(streetId, start, end, Condition.getPage(query)));
} }
/** /**
@ -134,7 +204,88 @@ public class ReportController extends BladeController {
*/ */
@GetMapping("/getAppealHot") @GetMapping("/getAppealHot")
public R getAppealHot(Integer timeFrame, String startTime, String endTime) { public R getAppealHot(Integer timeFrame, String startTime, String endTime) {
return R.data(largeScreenService.getAppealHot()); LocalDateTime start = null;
LocalDateTime end = null;
if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) {
DateTimeFormatter fmt = DateTimeFormatter.ofPattern(DateUtil.PATTERN_DATETIME);
start = LocalDateTime.parse(startTime, fmt);
end = LocalDateTime.parse(endTime, fmt);
} else if (timeFrame == 1) {
start = LocalDateTimeUtils.monthStartTime();
end = LocalDateTimeUtils.monthEndTime();
} else if (timeFrame == 2) {
start = LocalDateTimeUtils.quarterStartTime();
end = LocalDateTimeUtils.quarterEndTime();
} else {
start = LocalDateTimeUtils.yearStartTime();
end = LocalDateTimeUtils.yearEndTime();
}
return R.data(largeScreenService.getAppealHot(start, end));
}
@GetMapping("getReportSort")
public R getReportSort(Integer timeFrame, String startTime, String endTime) {
LocalDateTime start = null;
LocalDateTime end = null;
if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) {
DateTimeFormatter fmt = DateTimeFormatter.ofPattern(DateUtil.PATTERN_DATETIME);
start = LocalDateTime.parse(startTime, fmt);
end = LocalDateTime.parse(endTime, fmt);
} else if (timeFrame == 1) {
start = LocalDateTimeUtils.monthStartTime();
end = LocalDateTimeUtils.monthEndTime();
} else if (timeFrame == 2) {
start = LocalDateTimeUtils.quarterStartTime();
end = LocalDateTimeUtils.quarterEndTime();
} else {
start = LocalDateTimeUtils.yearStartTime();
end = LocalDateTimeUtils.yearEndTime();
}
return R.data(largeScreenService.getReportSort(start, end));
}
private Map<String, Object> getSortAndData(List<DataEntity> list) {
// 获取全部街道
List<DictBiz> streetDictList = DictBizCache.getList(BusinessConstant.DICT_KEY_STREET);
// 先将数据根据value做个排名
list.sort((o1, o2) -> o2.getValue() - o1.getValue());
// 构建返回数据
Map<String, Object> levelMap = new HashMap<>();
List<DataEntity> dataList = new ArrayList<>();
for (int idx = 0; idx < list.size(); idx++) {
String streetName = list.get(idx).getName();
Object streetValue = list.get(idx).getValue();
if (idx < 4) {
levelMap.put(streetName, 3);
} else if (idx < 8) {
levelMap.put(streetName, 2);
} else {
levelMap.put(streetName, 1);
}
dataList.add(list.get(idx));
}
// 遍历全部街道列表, 将未添加的街道数据添加上
streetDictList.forEach(street -> {
String streetName = street.getDictValue();
if (!levelMap.containsKey(streetName)) {
levelMap.put(streetName, 1);
DataEntity entity = new DataEntity();
entity.setName(streetName);
entity.setValue(0);
entity.setResolveRate("0");
dataList.add(entity);
}
});
Map<String, Object> resultMap = new HashMap<>();
resultMap.put("levelList", levelMap);
resultMap.put("dataList", dataList);
return resultMap;
} }
private Map<String, Map<String, Object>> getSortAndData(Map<String, Object> dataList) { private Map<String, Map<String, Object>> getSortAndData(Map<String, Object> dataList) {

@ -8,4 +8,9 @@ public class DataEntity {
private String name; private String name;
private Integer value; private Integer value;
/**
* 化解率
*/
private String resolveRate;
} }

@ -23,6 +23,7 @@ import org.springblade.modules.business.entity.DataEntity;
import org.springblade.modules.business.excel.AppealExcel; import org.springblade.modules.business.excel.AppealExcel;
import java.text.ParseException; import java.text.ParseException;
import java.time.LocalDateTime;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -38,20 +39,22 @@ public interface ILargeScreenService {
Map<String, Object> getAppealSubmit(); Map<String, Object> getAppealSubmit();
List<Appeal> getAppealList(); List<Appeal> getAppealList(LocalDateTime start, LocalDateTime end);
Map<String, List<Object>> getAppealByMon(); Map<String, List<Object>> getAppealByMon(LocalDateTime start, LocalDateTime end);
List<Map<String, Object>> getAppealTypePercent(); List<Map<String, Object>> getAppealTypePercent(LocalDateTime start, LocalDateTime end);
Map<String, Object> getAppealSubmitCountByLoc(Integer timeFrame, String startTime, String endTime) throws ParseException; Map<String, Object> getAppealSubmitCountByLoc(Integer timeFrame, String startTime, String endTime) throws ParseException;
Map<String, Object> getAppealFinishCountByLoc(Integer timeFrame, String startTime, String endTime) throws ParseException; List<DataEntity> getAppealFinishCountByLoc(Integer timeFrame, String startTime, String endTime) throws ParseException;
Map<String, Object> getImmediateCountByLoc(Integer timeFrame, String startTime, String endTime) throws ParseException; Map<String, Object> getImmediateCountByLoc(Integer timeFrame, String startTime, String endTime) throws ParseException;
Map<String, List<DataEntity>> getAppealHot(); Map<String, List<DataEntity>> getAppealHot(LocalDateTime start, LocalDateTime end);
IPage<Appeal> getImmediateList(String streetId, IPage<Appeal> page); Map<String, List<DataEntity>> getReportSort(LocalDateTime start, LocalDateTime end);
IPage<Appeal> getImmediateList(String streetId, LocalDateTime start, LocalDateTime end, IPage<Appeal> page);
} }

@ -129,7 +129,7 @@ public class LargeScreenServiceImpl implements ILargeScreenService {
} }
@Override @Override
public List<Appeal> getAppealList() { public List<Appeal> getAppealList(LocalDateTime start, LocalDateTime end) {
// 化解成功状态数组 // 化解成功状态数组
List<Integer> state = new ArrayList<>(); List<Integer> state = new ArrayList<>();
state.add(0); state.add(0);
@ -138,6 +138,7 @@ public class LargeScreenServiceImpl implements ILargeScreenService {
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>();
// 待处理、正在处理 // 待处理、正在处理
wrapper.in(Appeal::getStatus, state); wrapper.in(Appeal::getStatus, state);
wrapper.between(Appeal::getFirstRegTime, start, end);
// 根据登记时间倒序 // 根据登记时间倒序
wrapper.orderByDesc(Appeal::getFirstRegTime); wrapper.orderByDesc(Appeal::getFirstRegTime);
List<Appeal> appeals = appealService.list(wrapper); List<Appeal> appeals = appealService.list(wrapper);
@ -160,7 +161,7 @@ public class LargeScreenServiceImpl implements ILargeScreenService {
} }
@Override @Override
public Map<String, List<Object>> getAppealByMon() { public Map<String, List<Object>> getAppealByMon(LocalDateTime start, LocalDateTime end) {
Map<String, List<Object>> map = new HashMap<>(); Map<String, List<Object>> map = new HashMap<>();
List<Object> dateList = new ArrayList<>(); List<Object> dateList = new ArrayList<>();
List<Object> handlerCountList = new ArrayList<>(); List<Object> handlerCountList = new ArrayList<>();
@ -193,9 +194,11 @@ public class LargeScreenServiceImpl implements ILargeScreenService {
} }
@Override @Override
public List<Map<String, Object>> getAppealTypePercent() { public List<Map<String, Object>> getAppealTypePercent(LocalDateTime start, LocalDateTime end) {
// 先查所有 // 先查所有
List<Appeal> appeals = appealService.list(); LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>();
wrapper.between(Appeal::getFirstRegTime, start, end);
List<Appeal> appeals = appealService.list(wrapper);
appeals.forEach(appeal -> { appeals.forEach(appeal -> {
String disputeName = Func.isEmpty(appeal.getDisputeName()) ? DictBizCache.getById(appeal.getDisputeId()).getDictValue() : appeal.getDisputeName(); String disputeName = Func.isEmpty(appeal.getDisputeName()) ? DictBizCache.getById(appeal.getDisputeId()).getDictValue() : appeal.getDisputeName();
appeal.setDisputeName(disputeName); appeal.setDisputeName(disputeName);
@ -294,7 +297,7 @@ public class LargeScreenServiceImpl implements ILargeScreenService {
} }
@Override @Override
public Map<String, Object> getAppealFinishCountByLoc(Integer timeFrame, String startTime, String endTime) throws ParseException { public List<DataEntity> getAppealFinishCountByLoc(Integer timeFrame, String startTime, String endTime) throws ParseException {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 化解成功状态数组 // 化解成功状态数组
@ -303,7 +306,6 @@ public class LargeScreenServiceImpl implements ILargeScreenService {
state.add(3); state.add(3);
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>();
wrapper.in(Appeal::getStatus, state);
if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) { if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) {
wrapper.between(Appeal::getFirstRegTime, dateFormat.parse(startTime), dateFormat.parse(endTime)); wrapper.between(Appeal::getFirstRegTime, dateFormat.parse(startTime), dateFormat.parse(endTime));
} else if (timeFrame == 1) { } else if (timeFrame == 1) {
@ -313,21 +315,35 @@ public class LargeScreenServiceImpl implements ILargeScreenService {
} else if (timeFrame == 3) { } else if (timeFrame == 3) {
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.yearStartTime(), LocalDateTimeUtils.yearEndTime()); wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.yearStartTime(), LocalDateTimeUtils.yearEndTime());
} }
List<Appeal> appeals = appealService.list(wrapper); List<Appeal> appealList = appealService.list(wrapper);
// 过滤掉无街道的, 防止异常 // 过滤掉无街道的, 防止异常
appeals = appeals.stream().filter(appeal -> Func.isNotEmpty(appeal.getStreetId())).collect(Collectors.toList()); appealList = appealList.stream().filter(appeal -> Func.isNotEmpty(appeal.getStreetId())).collect(Collectors.toList());
appeals.forEach(appeal -> appeal.setStreet(DictBizCache.getById(appeal.getStreetId()).getDictValue())); appealList.forEach(appeal -> appeal.setStreet(DictBizCache.getById(appeal.getStreetId()).getDictValue()));
List<Appeal> resolveList = appealList.stream().filter(appeal -> state.contains(appeal.getStatus())).collect(Collectors.toList());
// 根据街道分组 // 根据街道分组
Map<String, List<Appeal>> collect = appeals.stream().collect(Collectors.groupingBy(Appeal::getStreet)); Map<String, List<Appeal>> reportList = appealList.stream().collect(Collectors.groupingBy(Appeal::getStreet));
Map<String, List<Appeal>> collect = resolveList.stream().collect(Collectors.groupingBy(Appeal::getStreet));
Set<String> names = collect.keySet(); Set<String> names = collect.keySet();
// 街道对应的数量 // 街道对应的数量
Map<String, Object> map = new HashMap<>(); List<DataEntity> result = new ArrayList<>();
Map<String, Object> map;
for (String name : names) { for (String name : names) {
map.put(name, collect.get(name).size()); DataEntity entity = new DataEntity();
entity.setName(name);
entity.setValue(collect.get(name).size());
String resolveRate = "0";
if (entity.getValue() > 0) {
double rate = (entity.getValue() / reportList.get(name).size()) * 100;
resolveRate = calRate(rate);
} }
return map; entity.setResolveRate(resolveRate);
result.add(entity);
}
return result;
} }
@Override @Override
@ -362,11 +378,12 @@ public class LargeScreenServiceImpl implements ILargeScreenService {
} }
@Override @Override
public IPage<Appeal> getImmediateList(String streetId, IPage<Appeal> page) { public IPage<Appeal> getImmediateList(String streetId, LocalDateTime start, LocalDateTime end, IPage<Appeal> page) {
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>();
wrapper.select(Appeal::getId, Appeal::getFirstRegTime, Appeal::getDisputeId, Appeal::getDisputeName); wrapper.select(Appeal::getId, Appeal::getFirstRegTime, Appeal::getDisputeId, Appeal::getDisputeName);
wrapper.eq(Appeal::getStreetId, streetId); wrapper.eq(Appeal::getStreetId, streetId);
wrapper.eq(Appeal::getSkipGrant, BusinessConstant.CODE_TRUE); wrapper.eq(Appeal::getSkipGrant, BusinessConstant.CODE_TRUE);
wrapper.between(Appeal::getFirstRegTime, start, end);
wrapper.orderByDesc(Appeal::getCreateTime); wrapper.orderByDesc(Appeal::getCreateTime);
IPage<Appeal> iPage = appealService.page(page, wrapper); IPage<Appeal> iPage = appealService.page(page, wrapper);
@ -388,25 +405,31 @@ public class LargeScreenServiceImpl implements ILargeScreenService {
} }
@Override @Override
public Map<String, List<DataEntity>> getAppealHot() { public Map<String, List<DataEntity>> getAppealHot(LocalDateTime start, LocalDateTime end) {
Map<String, List<DataEntity>> map = new HashMap(); Map<String, List<DataEntity>> map = new HashMap();
// 化解成功状态数组 // 化解成功状态数组
List<Integer> state = Arrays.asList(BusinessConstant.APPEAL_STATUS_AGREEMENT, BusinessConstant.APPEAL_STATUS_FINISH); List<Integer> state = Arrays.asList(BusinessConstant.APPEAL_STATUS_AGREEMENT, BusinessConstant.APPEAL_STATUS_FINISH);
// 获取所有化解成功的诉求记录 // 获取所有化解成功的诉求记录
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>();
wrapper.in(Appeal::getStatus, state); wrapper.between(Appeal::getFirstRegTime, start, end);
List<Appeal> appeals = appealService.list(wrapper); List<Appeal> appealList = appealService.list(wrapper);
// 过滤掉无街道和处理部门的, 防止异常 // 过滤掉无街道和处理部门的, 防止异常
appeals = appeals.stream().filter( appealList = appealList.stream().filter(
appeal -> Func.isNotEmpty(appeal.getStreetId()) && Func.isNotEmpty(appeal.getHandleDept()) appeal -> Func.isNotEmpty(appeal.getStreetId()) && Func.isNotEmpty(appeal.getHandleDept())
).collect(Collectors.toList()); ).collect(Collectors.toList());
// 获取所有化解成功的诉求记录
List<Appeal> appealFinishList = appealList.stream().filter(
appeal -> state.contains(appeal.getStatus())
).collect(Collectors.toList());
// 获取所有街道 // 获取所有街道
List<DictBiz> dataList = dictService.getList(BusinessConstant.DICT_KEY_STREET); List<DictBiz> dataList = dictService.getList(BusinessConstant.DICT_KEY_STREET);
// 根据街道分组 // 根据街道分组
Map<Long, List<Appeal>> street = appeals.stream().collect(Collectors.groupingBy(Appeal::getStreetId)); Map<Long, List<Appeal>> reportStreetList = appealList.stream().collect(Collectors.groupingBy(Appeal::getStreetId));
Map<Long, List<Appeal>> street = appealFinishList.stream().collect(Collectors.groupingBy(Appeal::getStreetId));
// 封装到数据对象 // 封装到数据对象
List<DataEntity> strees = new ArrayList<>(); List<DataEntity> strees = new ArrayList<>();
@ -415,6 +438,12 @@ public class LargeScreenServiceImpl implements ILargeScreenService {
DataEntity entity = new DataEntity(); DataEntity entity = new DataEntity();
entity.setName(dictBiz.getDictValue()); entity.setName(dictBiz.getDictValue());
entity.setValue(street.containsKey(dictBizId) ? street.get(dictBizId).size() : 0); entity.setValue(street.containsKey(dictBizId) ? street.get(dictBizId).size() : 0);
String resolveRate = "0";
if (entity.getValue() > 0) {
double rate = (entity.getValue() / reportStreetList.get(dictBizId).size()) * 100;
resolveRate = calRate(rate);
}
entity.setResolveRate(resolveRate);
strees.add(entity); strees.add(entity);
}); });
@ -425,7 +454,8 @@ public class LargeScreenServiceImpl implements ILargeScreenService {
// 获取所有部门 // 获取所有部门
List<User> userList = UserCache.getServerWindowList(); List<User> userList = UserCache.getServerWindowList();
// 根据部门分组 // 根据部门分组
Map<Long, List<Appeal>> town = appeals.stream().collect(Collectors.groupingBy(Appeal::getHandleDept)); Map<Long, List<Appeal>> reportTownList = appealList.stream().collect(Collectors.groupingBy(Appeal::getHandleDept));
Map<Long, List<Appeal>> town = appealFinishList.stream().collect(Collectors.groupingBy(Appeal::getHandleDept));
// 封装到数据对象 // 封装到数据对象
List<DataEntity> towns = new ArrayList<>(); List<DataEntity> towns = new ArrayList<>();
@ -434,6 +464,16 @@ public class LargeScreenServiceImpl implements ILargeScreenService {
DataEntity entity = new DataEntity(); DataEntity entity = new DataEntity();
entity.setName(user.getName()); entity.setName(user.getName());
entity.setValue(town.containsKey(id) ? town.get(id).size() : 0); entity.setValue(town.containsKey(id) ? town.get(id).size() : 0);
String resolveRate = "0";
if (entity.getValue() > 0) {
if (reportTownList.containsKey(id)) {
double rate = (entity.getValue() / reportTownList.get(id).size()) * 100;
resolveRate = calRate(rate);
} else {
resolveRate = "100%";
}
}
entity.setResolveRate(resolveRate);
towns.add(entity); towns.add(entity);
}); });
@ -444,6 +484,42 @@ public class LargeScreenServiceImpl implements ILargeScreenService {
return map; return map;
} }
@Override
public Map<String, List<DataEntity>> getReportSort(LocalDateTime start, LocalDateTime end) {
Map<String, List<DataEntity>> map = new HashMap();
// 获取所有上报的诉求记录
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>();
wrapper.between(Appeal::getFirstRegTime, start, end);
List<Appeal> appeals = appealService.list(wrapper);
// 过滤掉无街道的, 防止异常
appeals = appeals.stream().filter(
appeal -> Func.isNotEmpty(appeal.getStreetId())
).collect(Collectors.toList());
// 获取所有街道
List<DictBiz> dataList = dictService.getList(BusinessConstant.DICT_KEY_STREET);
// 根据街道分组
Map<Long, List<Appeal>> street = appeals.stream().collect(Collectors.groupingBy(Appeal::getStreetId));
// 封装到数据对象
List<DataEntity> strees = new ArrayList<>();
dataList.forEach(dictBiz -> {
Long dictBizId = dictBiz.getId();
DataEntity entity = new DataEntity();
entity.setName(dictBiz.getDictValue());
entity.setValue(street.containsKey(dictBizId) ? street.get(dictBizId).size() : 0);
strees.add(entity);
});
// 倒序
List<DataEntity> streeList = strees.stream().sorted(Comparator.comparing(DataEntity::getValue).reversed()).collect(Collectors.toList());
map.put("street", streeList);
return map;
}
private Map<String, List<Object>> getStartAndEndTime(Map<String, List<Object>> map, List<Integer> state, Integer month) { private Map<String, List<Object>> getStartAndEndTime(Map<String, List<Object>> map, List<Integer> state, Integer month) {
List<Object> dateList = map.get("dateList"); List<Object> dateList = map.get("dateList");
List<Object> handlerCountList = map.get("handlerCountList"); List<Object> handlerCountList = map.get("handlerCountList");
@ -474,6 +550,18 @@ public class LargeScreenServiceImpl implements ILargeScreenService {
map.put("handlerCountList", handlerCountList); map.put("handlerCountList", handlerCountList);
map.put("finishContList", finishContList); map.put("finishContList", finishContList);
return map; return map;
}
private String calRate(double rate) {
String resolveRate = String.format("%.2f", rate);
if ("100.00".equalsIgnoreCase(resolveRate)) {
resolveRate = "100";
}
if ("0.00".equalsIgnoreCase(resolveRate)) {
resolveRate = "0";
}
return resolveRate + "%";
} }
} }

@ -187,6 +187,7 @@ blade:
skip-url: skip-url:
- /blade-test/** - /blade-test/**
- /blade-business/report/** - /blade-business/report/**
- /blade-business/appealMediate/getLastMediation
- /blade-system/dict/common/getStreetList - /blade-system/dict/common/getStreetList
#授权认证配置 #授权认证配置
auth: auth:

Loading…
Cancel
Save