|
|
|
|
@ -62,472 +62,374 @@ import java.util.stream.Collectors; |
|
|
|
|
@AllArgsConstructor |
|
|
|
|
public class LargeScreenServiceImpl implements ILargeScreenService { |
|
|
|
|
|
|
|
|
|
private final IAppealService appealService; |
|
|
|
|
|
|
|
|
|
private final AppealMapper appealMapper; |
|
|
|
|
|
|
|
|
|
private final IAppealVisitorService appealVisitorService; |
|
|
|
|
|
|
|
|
|
private final IUserService userService; |
|
|
|
|
|
|
|
|
|
private final IDictBizService dictBizService; |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Map<String, Object> getMediateFinish() { |
|
|
|
|
Map<String, Object> map = new HashMap<>(); |
|
|
|
|
|
|
|
|
|
// 化解成功状态数组
|
|
|
|
|
List<Integer> state = new ArrayList<>(); |
|
|
|
|
state.add(2); |
|
|
|
|
state.add(3); |
|
|
|
|
|
|
|
|
|
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
|
// 总化解数
|
|
|
|
|
wrapper.in(Appeal::getStatus, state); |
|
|
|
|
map.put("all", appealService.count(wrapper)); |
|
|
|
|
wrapper.clear(); |
|
|
|
|
|
|
|
|
|
// 本年度化解数
|
|
|
|
|
wrapper.in(Appeal::getStatus, state); |
|
|
|
|
wrapper.between(Appeal::getFinishTime, LocalDateTimeUtils.yearStartTime(), LocalDateTimeUtils.yearEndTime()); |
|
|
|
|
map.put("year", appealService.count(wrapper)); |
|
|
|
|
wrapper.clear(); |
|
|
|
|
|
|
|
|
|
// 本季度化解数
|
|
|
|
|
wrapper.in(Appeal::getStatus, state); |
|
|
|
|
wrapper.between(Appeal::getFinishTime, LocalDateTimeUtils.quarterStartTime(), LocalDateTimeUtils.quarterEndTime()); |
|
|
|
|
map.put("quarterly", appealService.count(wrapper)); |
|
|
|
|
wrapper.clear(); |
|
|
|
|
|
|
|
|
|
// 本月化解数
|
|
|
|
|
wrapper.in(Appeal::getStatus, state); |
|
|
|
|
wrapper.between(Appeal::getFinishTime, LocalDateTimeUtils.monthStartTime(), LocalDateTimeUtils.monthEndTime()); |
|
|
|
|
map.put("mon", appealService.count(wrapper)); |
|
|
|
|
|
|
|
|
|
return map; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Map<String, Object> getAppealSubmit() { |
|
|
|
|
Map<String, Object> map = new HashMap<>(); |
|
|
|
|
|
|
|
|
|
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
|
// 总化解数
|
|
|
|
|
map.put("all", appealService.count(wrapper)); |
|
|
|
|
wrapper.clear(); |
|
|
|
|
|
|
|
|
|
// 本年度化解数
|
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.yearStartTime(), LocalDateTimeUtils.yearEndTime()); |
|
|
|
|
map.put("year", appealService.count(wrapper)); |
|
|
|
|
wrapper.clear(); |
|
|
|
|
|
|
|
|
|
// 本季度化解数
|
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.quarterStartTime(), LocalDateTimeUtils.quarterEndTime()); |
|
|
|
|
map.put("quarterly", appealService.count(wrapper)); |
|
|
|
|
wrapper.clear(); |
|
|
|
|
|
|
|
|
|
// 本月化解数
|
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.monthStartTime(), LocalDateTimeUtils.monthEndTime()); |
|
|
|
|
map.put("mon", appealService.count(wrapper)); |
|
|
|
|
|
|
|
|
|
return map; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public List<Appeal> getAppealList() { |
|
|
|
|
// 化解成功状态数组
|
|
|
|
|
List<Integer> state = new ArrayList<>(); |
|
|
|
|
state.add(0); |
|
|
|
|
state.add(1); |
|
|
|
|
|
|
|
|
|
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
|
// 只查这几个字段值
|
|
|
|
|
private final IAppealService appealService; |
|
|
|
|
|
|
|
|
|
private final IAppealVisitorService appealVisitorService; |
|
|
|
|
|
|
|
|
|
private final IUserService userService; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Map<String, Object> getMediateFinish() { |
|
|
|
|
Map<String, Object> map = new HashMap<>(); |
|
|
|
|
|
|
|
|
|
// 化解成功状态数组
|
|
|
|
|
List<Integer> state = new ArrayList<>(); |
|
|
|
|
state.add(2); |
|
|
|
|
state.add(3); |
|
|
|
|
|
|
|
|
|
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
|
// 总化解数
|
|
|
|
|
wrapper.in(Appeal::getStatus, state); |
|
|
|
|
map.put("all", appealService.count(wrapper)); |
|
|
|
|
wrapper.clear(); |
|
|
|
|
|
|
|
|
|
// 本年度化解数
|
|
|
|
|
wrapper.in(Appeal::getStatus, state); |
|
|
|
|
wrapper.between(Appeal::getFinishTime, LocalDateTimeUtils.yearStartTime(), LocalDateTimeUtils.yearEndTime()); |
|
|
|
|
map.put("year", appealService.count(wrapper)); |
|
|
|
|
wrapper.clear(); |
|
|
|
|
|
|
|
|
|
// 本季度化解数
|
|
|
|
|
wrapper.in(Appeal::getStatus, state); |
|
|
|
|
wrapper.between(Appeal::getFinishTime, LocalDateTimeUtils.quarterStartTime(), LocalDateTimeUtils.quarterEndTime()); |
|
|
|
|
map.put("quarterly", appealService.count(wrapper)); |
|
|
|
|
wrapper.clear(); |
|
|
|
|
|
|
|
|
|
// 本月化解数
|
|
|
|
|
wrapper.in(Appeal::getStatus, state); |
|
|
|
|
wrapper.between(Appeal::getFinishTime, LocalDateTimeUtils.monthStartTime(), LocalDateTimeUtils.monthEndTime()); |
|
|
|
|
map.put("mon", appealService.count(wrapper)); |
|
|
|
|
|
|
|
|
|
return map; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Map<String, Object> getAppealSubmit() { |
|
|
|
|
Map<String, Object> map = new HashMap<>(); |
|
|
|
|
|
|
|
|
|
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
|
// 总化解数
|
|
|
|
|
map.put("all", appealService.count(wrapper)); |
|
|
|
|
wrapper.clear(); |
|
|
|
|
|
|
|
|
|
// 本年度化解数
|
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.yearStartTime(), LocalDateTimeUtils.yearEndTime()); |
|
|
|
|
map.put("year", appealService.count(wrapper)); |
|
|
|
|
wrapper.clear(); |
|
|
|
|
|
|
|
|
|
// 本季度化解数
|
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.quarterStartTime(), LocalDateTimeUtils.quarterEndTime()); |
|
|
|
|
map.put("quarterly", appealService.count(wrapper)); |
|
|
|
|
wrapper.clear(); |
|
|
|
|
|
|
|
|
|
// 本月化解数
|
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.monthStartTime(), LocalDateTimeUtils.monthEndTime()); |
|
|
|
|
map.put("mon", appealService.count(wrapper)); |
|
|
|
|
|
|
|
|
|
return map; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public List<Appeal> getAppealList() { |
|
|
|
|
// 化解成功状态数组
|
|
|
|
|
List<Integer> state = new ArrayList<>(); |
|
|
|
|
state.add(0); |
|
|
|
|
state.add(1); |
|
|
|
|
|
|
|
|
|
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
|
// 只查这几个字段值
|
|
|
|
|
// wrapper.select(Appeal::getId, Appeal::getDisputeName, Appeal::getFirstRegTime, Appeal::getStatus, Appeal::getStreetId);
|
|
|
|
|
// 待处理、正在处理
|
|
|
|
|
wrapper.in(Appeal::getStatus, state); |
|
|
|
|
// 根据登记时间倒序
|
|
|
|
|
wrapper.orderByDesc(Appeal::getFirstRegTime); |
|
|
|
|
List<Appeal> appeals = appealService.list(wrapper); |
|
|
|
|
|
|
|
|
|
// 获取前50条
|
|
|
|
|
List<Appeal> appealList = appeals.stream().limit(50).collect(Collectors.toList()); |
|
|
|
|
|
|
|
|
|
// 所属街道赋字典值
|
|
|
|
|
appealList.forEach(appeal -> appeal.setStreet(DictBizCache.getById(appeal.getStreetId()).getDictValue())); |
|
|
|
|
return appealList; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Map<String, List<Object>> getAppealByMon() { |
|
|
|
|
Map<String, List<Object>> map = new HashMap<>(); |
|
|
|
|
List<Object> dateList = new ArrayList<>(); |
|
|
|
|
List<Object> handlerCountList = new ArrayList<>(); |
|
|
|
|
List<Object> finishContList = new ArrayList<>(); |
|
|
|
|
map.put("dateList", dateList); |
|
|
|
|
map.put("handlerCountList", handlerCountList); |
|
|
|
|
map.put("finishContList", finishContList); |
|
|
|
|
|
|
|
|
|
List<Integer> state = new ArrayList<>(); |
|
|
|
|
state.add(2); |
|
|
|
|
state.add(3); |
|
|
|
|
|
|
|
|
|
// 当月
|
|
|
|
|
Map<String, List<Object>> map0 = getStartAndEndTime(map, state, 0); |
|
|
|
|
|
|
|
|
|
// 前1个月
|
|
|
|
|
Map<String, List<Object>> map1 = getStartAndEndTime(map0, state, 1); |
|
|
|
|
|
|
|
|
|
// 前2个月
|
|
|
|
|
Map<String, List<Object>> map2 = getStartAndEndTime(map1, state, 2); |
|
|
|
|
|
|
|
|
|
// 前3个月
|
|
|
|
|
Map<String, List<Object>> map3 = getStartAndEndTime(map2, state, 3); |
|
|
|
|
|
|
|
|
|
// 前4个月
|
|
|
|
|
Map<String, List<Object>> map4 = getStartAndEndTime(map3, state, 4); |
|
|
|
|
|
|
|
|
|
// 前5个月
|
|
|
|
|
return getStartAndEndTime(map4, state, 5); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Map<String, Object> getAppealTypePercent() { |
|
|
|
|
// 先查所有
|
|
|
|
|
List<Appeal> appeals = appealService.list(); |
|
|
|
|
|
|
|
|
|
// 根据纠纷类型分组
|
|
|
|
|
Map<String, List<Appeal>> collect = appeals.stream().collect(Collectors.groupingBy(Appeal::getDisputeName)); |
|
|
|
|
Set<String> names = collect.keySet(); |
|
|
|
|
|
|
|
|
|
// 纠纷类型对应的数量
|
|
|
|
|
Map<String, Integer> map = new HashMap<>(); |
|
|
|
|
for (String name : names) { |
|
|
|
|
map.put(name, collect.get(name).size()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 根据数量排序
|
|
|
|
|
List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet()); |
|
|
|
|
list.sort((o1, o2) -> o2.getValue() - o1.getValue()); |
|
|
|
|
|
|
|
|
|
Map<String, Object> hashMap = new HashMap<>(); |
|
|
|
|
DecimalFormat df = new DecimalFormat("#0.0"); |
|
|
|
|
|
|
|
|
|
// 如果类型小于5,正常计算
|
|
|
|
|
if (list.size() <= 5) { |
|
|
|
|
for (Map.Entry<String, Integer> entry : list) { |
|
|
|
|
hashMap.put(entry.getKey(), df.format((double) entry.getValue() / (double) appeals.size() * 100) + "%"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
// 如果类型大于5,前五正常计算,其余全部按照其他纠纷计算
|
|
|
|
|
else { |
|
|
|
|
for (int i = 0; i < 5; i++) { |
|
|
|
|
Map.Entry<String, Integer> entry = list.get(i); |
|
|
|
|
hashMap.put(entry.getKey(), df.format((double) entry.getValue() / (double) appeals.size() * 100) + "%"); |
|
|
|
|
} |
|
|
|
|
int size = 0; |
|
|
|
|
for (int i = 5; i < list.size(); i++) { |
|
|
|
|
Map.Entry<String, Integer> entry = list.get(i); |
|
|
|
|
size += entry.getValue(); |
|
|
|
|
} |
|
|
|
|
hashMap.put("其他纠纷", df.format((double) size / (double) appeals.size() * 100) + "%"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return hashMap; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Map<String, Object> getAppealSubmitCountByLoc(Integer timeFrame, String startTime, String endTime) throws ParseException { |
|
|
|
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
|
|
|
|
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
|
if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) { |
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, dateFormat.parse(startTime), dateFormat.parse(endTime)); |
|
|
|
|
} else if (timeFrame == 1) { |
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.monthStartTime(), LocalDateTimeUtils.monthEndTime()); |
|
|
|
|
} else if (timeFrame == 2) { |
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.quarterStartTime(), LocalDateTimeUtils.quarterEndTime()); |
|
|
|
|
} else if (timeFrame == 3) { |
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.yearStartTime(), LocalDateTimeUtils.yearEndTime()); |
|
|
|
|
} |
|
|
|
|
List<Appeal> appeals = appealService.list(wrapper); |
|
|
|
|
appeals.forEach(appeal -> appeal.setStreet(DictBizCache.getById(appeal.getStreetId()).getDictValue())); |
|
|
|
|
|
|
|
|
|
// 根据街道分组
|
|
|
|
|
Map<String, List<Appeal>> collect = appeals.stream().collect(Collectors.groupingBy(Appeal::getStreet)); |
|
|
|
|
Set<String> names = collect.keySet(); |
|
|
|
|
|
|
|
|
|
// 街道对应的数量
|
|
|
|
|
Map<String, Object> map = new HashMap<>(); |
|
|
|
|
for (String name : names) { |
|
|
|
|
map.put(name, collect.get(name).size()); |
|
|
|
|
} |
|
|
|
|
return map; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Map<String, Object> getAppealFinishCountByLoc(Integer timeFrame, String startTime, String endTime) throws ParseException { |
|
|
|
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
|
|
|
|
|
|
|
|
|
// 化解成功状态数组
|
|
|
|
|
List<Integer> state = new ArrayList<>(); |
|
|
|
|
state.add(2); |
|
|
|
|
state.add(3); |
|
|
|
|
|
|
|
|
|
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
|
wrapper.in(Appeal::getStatus, state); |
|
|
|
|
if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) { |
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, dateFormat.parse(startTime), dateFormat.parse(endTime)); |
|
|
|
|
} else if (timeFrame == 1) { |
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.monthStartTime(), LocalDateTimeUtils.monthEndTime()); |
|
|
|
|
} else if (timeFrame == 2) { |
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.quarterStartTime(), LocalDateTimeUtils.quarterEndTime()); |
|
|
|
|
} else if (timeFrame == 3) { |
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.yearStartTime(), LocalDateTimeUtils.yearEndTime()); |
|
|
|
|
} |
|
|
|
|
List<Appeal> appeals = appealService.list(wrapper); |
|
|
|
|
appeals.forEach(appeal -> appeal.setStreet(DictBizCache.getById(appeal.getStreetId()).getDictValue())); |
|
|
|
|
|
|
|
|
|
// 根据街道分组
|
|
|
|
|
Map<String, List<Appeal>> collect = appeals.stream().collect(Collectors.groupingBy(Appeal::getStreet)); |
|
|
|
|
Set<String> names = collect.keySet(); |
|
|
|
|
|
|
|
|
|
// 街道对应的数量
|
|
|
|
|
Map<String, Object> map = new HashMap<>(); |
|
|
|
|
for (String name : names) { |
|
|
|
|
map.put(name, collect.get(name).size()); |
|
|
|
|
} |
|
|
|
|
return map; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Map<String, Object> getImmediateCountByLoc(Integer timeFrame, String startTime, String endTime) throws ParseException { |
|
|
|
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
|
|
|
|
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
|
wrapper.eq(Appeal::getSkipGrant, 1); |
|
|
|
|
if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) { |
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, dateFormat.parse(startTime), dateFormat.parse(endTime)); |
|
|
|
|
} else if (timeFrame == 1) { |
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.monthStartTime(), LocalDateTimeUtils.monthEndTime()); |
|
|
|
|
} else if (timeFrame == 2) { |
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.quarterStartTime(), LocalDateTimeUtils.quarterEndTime()); |
|
|
|
|
} else if (timeFrame == 3) { |
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.yearStartTime(), LocalDateTimeUtils.yearEndTime()); |
|
|
|
|
} |
|
|
|
|
List<Appeal> appeals = appealService.list(wrapper); |
|
|
|
|
appeals.forEach(appeal -> appeal.setStreet(DictBizCache.getById(appeal.getStreetId()).getDictValue())); |
|
|
|
|
|
|
|
|
|
// 根据街道分组
|
|
|
|
|
Map<String, List<Appeal>> collect = appeals.stream().collect(Collectors.groupingBy(Appeal::getStreet)); |
|
|
|
|
Set<String> names = collect.keySet(); |
|
|
|
|
|
|
|
|
|
// 街道对应的数量
|
|
|
|
|
Map<String, Object> map = new HashMap<>(); |
|
|
|
|
for (String name : names) { |
|
|
|
|
map.put(name, collect.get(name).size()); |
|
|
|
|
} |
|
|
|
|
return map; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public IPage<Appeal> getImmediateList(String streetId, IPage<Appeal> page) { |
|
|
|
|
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
|
wrapper.select(Appeal::getId, Appeal::getFirstRegTime, Appeal::getDisputeName); |
|
|
|
|
wrapper.eq(Appeal::getStreetId, streetId); |
|
|
|
|
wrapper.eq(Appeal::getSkipGrant, 1); |
|
|
|
|
wrapper.orderByDesc(Appeal::getCreateTime); |
|
|
|
|
IPage<Appeal> iPage = appealService.page(page, wrapper); |
|
|
|
|
|
|
|
|
|
// 给每条数据赋值来访人姓名
|
|
|
|
|
List<Appeal> records = iPage.getRecords(); |
|
|
|
|
if (CollectionUtils.isNotEmpty(records)) { |
|
|
|
|
for (Appeal record : records) { |
|
|
|
|
// 获取sort=1的来访人
|
|
|
|
|
AppealVisitor visitor = appealVisitorService.getOne(new LambdaQueryWrapper<AppealVisitor>().eq(AppealVisitor::getAppealId, record.getId()).eq(AppealVisitor::getSort, 1)); |
|
|
|
|
if (visitor != null) { |
|
|
|
|
record.setUsername(visitor.getUsername()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
iPage.setRecords(records); |
|
|
|
|
} |
|
|
|
|
return iPage; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
|
public void importAppeal(List<AppealExcel> excels) { |
|
|
|
|
if (CollectionUtils.isNotEmpty(excels)) { |
|
|
|
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); |
|
|
|
|
List<Appeal> appeals = new ArrayList<>(); |
|
|
|
|
List<AppealVisitor> visitors = new ArrayList<>(); |
|
|
|
|
excels.forEach(excel -> { |
|
|
|
|
if (StringUtils.isNotBlank(excel.getDisputeName())) { |
|
|
|
|
Appeal appeal = Objects.requireNonNull(BeanUtil.copy(excel, Appeal.class)); |
|
|
|
|
appeal.setId(IdWorker.getId()); |
|
|
|
|
// 所属街道字典id
|
|
|
|
|
if (StringUtils.isNotBlank(excel.getStreetId())) { |
|
|
|
|
List<DictBiz> street = dictBizService.list(new LambdaQueryWrapper<DictBiz>().eq(DictBiz::getCode, "street").like(DictBiz::getDictValue, excel.getStreetId())); |
|
|
|
|
if (CollectionUtils.isNotEmpty(street)) { |
|
|
|
|
appeal.setStreetId(street.get(0).getId()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 纠纷字典id
|
|
|
|
|
if (StringUtils.isNotBlank(appeal.getDisputeName())) { |
|
|
|
|
List<DictBiz> values = dictBizService.list(new LambdaQueryWrapper<DictBiz>().eq(DictBiz::getCode, "dispute_type").like(DictBiz::getDictValue, appeal.getDisputeName())); |
|
|
|
|
if (CollectionUtils.isNotEmpty(values)) { |
|
|
|
|
appeal.setDisputeId(values.get(0).getId()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 数据录入时, 处理部门
|
|
|
|
|
if (StringUtils.isNotBlank(excel.getHandleDept())) { |
|
|
|
|
List<User> users = userService.list(new LambdaQueryWrapper<User>().like(User::getName, excel.getHandleDept())); |
|
|
|
|
if (CollectionUtils.isNotEmpty(users)) { |
|
|
|
|
appeal.setHandleDept(users.get(0).getId()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 纠纷等级(事件等级), 0:简单, 1:一般, 2:重大, 3:疑难
|
|
|
|
|
if (StringUtils.isNotBlank(excel.getDisputeLevel())) { |
|
|
|
|
if ("简单".equals(excel.getDisputeLevel())) { |
|
|
|
|
appeal.setDisputeLevel(0); |
|
|
|
|
} else if ("一般".equals(excel.getDisputeLevel())) { |
|
|
|
|
appeal.setDisputeLevel(1); |
|
|
|
|
} else if ("重大".equals(excel.getDisputeLevel())) { |
|
|
|
|
appeal.setDisputeLevel(2); |
|
|
|
|
} else if ("疑难".equals(excel.getDisputeLevel())) { |
|
|
|
|
appeal.setDisputeLevel(3); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 首次登记时间
|
|
|
|
|
if (StringUtils.isNotBlank(excel.getFirstRegTime())) { |
|
|
|
|
try { |
|
|
|
|
appeal.setFirstRegTime(dateFormat.parse(excel.getFirstRegTime())); |
|
|
|
|
} catch (ParseException e) { |
|
|
|
|
e.printStackTrace(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 诉求状态(办理状态)
|
|
|
|
|
if (StringUtils.isNotBlank(excel.getStatus())) { |
|
|
|
|
if ("正在处理".equals(excel.getStatus())) { |
|
|
|
|
appeal.setStatus(1); |
|
|
|
|
} else if ("达成协议".equals(excel.getStatus())) { |
|
|
|
|
appeal.setStatus(2); |
|
|
|
|
} else if ("调解成功".equals(excel.getStatus()) || "完成归档".equals(excel.getStatus())) { |
|
|
|
|
appeal.setStatus(3); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 是否越级上报
|
|
|
|
|
appeal.setSkipGrant(0); |
|
|
|
|
|
|
|
|
|
// 数据来源 0:系统添加, 1:数据导入
|
|
|
|
|
appeal.setSourceType(BusinessConstant.SOURCE_TYPE_IMPORT); |
|
|
|
|
|
|
|
|
|
// 上访人员
|
|
|
|
|
if (StringUtils.isNotBlank(excel.getUsername())) { |
|
|
|
|
AppealVisitor visitor = new AppealVisitor(); |
|
|
|
|
visitor.setAppealId(appeal.getId()); |
|
|
|
|
visitor.setSort(1); |
|
|
|
|
visitor.setUsername(excel.getUsername()); |
|
|
|
|
visitors.add(visitor); |
|
|
|
|
} |
|
|
|
|
appeals.add(appeal); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
appealService.saveBatch(appeals); |
|
|
|
|
appealVisitorService.saveBatch(visitors); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public List<AppealExcel> exportAppeal(String appealStatus, String startTime, String endTime, String appealType, String windowId, String username) { |
|
|
|
|
List<AppealExcel> excels = appealMapper.exportAppeal(appealStatus, startTime, endTime, appealType, windowId, username); |
|
|
|
|
return excels; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Map<String, List<DataEntity>> getAppealHot() { |
|
|
|
|
Map<String, List<DataEntity>> map = new HashMap(); |
|
|
|
|
// 化解成功状态数组
|
|
|
|
|
List<Integer> state = new ArrayList<>(); |
|
|
|
|
state.add(2); |
|
|
|
|
state.add(3); |
|
|
|
|
|
|
|
|
|
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
|
wrapper.in(Appeal::getStatus, state); |
|
|
|
|
List<Appeal> appeals = appealService.list(wrapper); |
|
|
|
|
appeals.forEach(appeal -> { |
|
|
|
|
appeal.setStreet(DictBizCache.getById(appeal.getStreetId()).getDictValue()); |
|
|
|
|
appeal.setName(userService.getById(appeal.getHandleDept()).getName()); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
// 根据街道分组
|
|
|
|
|
Map<String, List<Appeal>> street = appeals.stream().collect(Collectors.groupingBy(Appeal::getStreet)); |
|
|
|
|
Set<String> names = street.keySet(); |
|
|
|
|
|
|
|
|
|
// 封装到数据对象
|
|
|
|
|
List<DataEntity> strees = new ArrayList<>(); |
|
|
|
|
for (String name : names) { |
|
|
|
|
DataEntity entity = new DataEntity(); |
|
|
|
|
entity.setName(name); |
|
|
|
|
entity.setNum(street.get(name).size()); |
|
|
|
|
strees.add(entity); |
|
|
|
|
} |
|
|
|
|
// 倒序
|
|
|
|
|
List<DataEntity> streeList = strees.stream().sorted(Comparator.comparing(DataEntity::getNum).reversed()).collect(Collectors.toList()); |
|
|
|
|
map.put("street", streeList); |
|
|
|
|
|
|
|
|
|
// 根据部门分组
|
|
|
|
|
Map<String, List<Appeal>> town = appeals.stream().collect(Collectors.groupingBy(Appeal::getName)); |
|
|
|
|
Set<String> depts = town.keySet(); |
|
|
|
|
|
|
|
|
|
// 封装到数据对象
|
|
|
|
|
List<DataEntity> towns = new ArrayList<>(); |
|
|
|
|
for (String name : depts) { |
|
|
|
|
DataEntity entity = new DataEntity(); |
|
|
|
|
entity.setName(name); |
|
|
|
|
entity.setNum(town.get(name).size()); |
|
|
|
|
towns.add(entity); |
|
|
|
|
} |
|
|
|
|
// 倒序
|
|
|
|
|
List<DataEntity> townList = towns.stream().sorted(Comparator.comparing(DataEntity::getNum).reversed()).collect(Collectors.toList()); |
|
|
|
|
map.put("town", townList); |
|
|
|
|
|
|
|
|
|
return map; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private Map<String, List<Object>> getStartAndEndTime(Map<String, List<Object>> map, List<Integer> state, Integer month) { |
|
|
|
|
List<Object> dateList = map.get("dateList"); |
|
|
|
|
List<Object> handlerCountList = map.get("handlerCountList"); |
|
|
|
|
List<Object> finishContList = map.get("finishContList"); |
|
|
|
|
|
|
|
|
|
// 当月开始时间
|
|
|
|
|
LocalDateTime start = LocalDateTime.of(LocalDate.now().withDayOfMonth(1).minusMonths(month), LocalTime.MIDNIGHT); |
|
|
|
|
|
|
|
|
|
// 当月结束时间
|
|
|
|
|
LocalDateTime end = start.plusMonths(1).minusSeconds(1); |
|
|
|
|
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM"); |
|
|
|
|
|
|
|
|
|
// 月份:2023-06
|
|
|
|
|
dateList.add(start.format(dateFormatter)); |
|
|
|
|
|
|
|
|
|
// 登记数
|
|
|
|
|
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, start, end); |
|
|
|
|
handlerCountList.add(appealService.count(wrapper)); |
|
|
|
|
|
|
|
|
|
// 调解成功数
|
|
|
|
|
wrapper.clear(); |
|
|
|
|
wrapper.in(Appeal::getStatus, state); |
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, start, end); |
|
|
|
|
finishContList.add(appealService.count(wrapper)); |
|
|
|
|
|
|
|
|
|
map.put("dateList", dateList); |
|
|
|
|
map.put("handlerCountList", handlerCountList); |
|
|
|
|
map.put("finishContList", finishContList); |
|
|
|
|
return map; |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
// 待处理、正在处理
|
|
|
|
|
wrapper.in(Appeal::getStatus, state); |
|
|
|
|
// 根据登记时间倒序
|
|
|
|
|
wrapper.orderByDesc(Appeal::getFirstRegTime); |
|
|
|
|
List<Appeal> appeals = appealService.list(wrapper); |
|
|
|
|
|
|
|
|
|
// 获取前50条
|
|
|
|
|
List<Appeal> appealList = appeals.stream().limit(50).collect(Collectors.toList()); |
|
|
|
|
|
|
|
|
|
// 所属街道赋字典值
|
|
|
|
|
appealList.forEach(appeal -> appeal.setStreet(DictBizCache.getById(appeal.getStreetId()).getDictValue())); |
|
|
|
|
return appealList; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Map<String, List<Object>> getAppealByMon() { |
|
|
|
|
Map<String, List<Object>> map = new HashMap<>(); |
|
|
|
|
List<Object> dateList = new ArrayList<>(); |
|
|
|
|
List<Object> handlerCountList = new ArrayList<>(); |
|
|
|
|
List<Object> finishContList = new ArrayList<>(); |
|
|
|
|
map.put("dateList", dateList); |
|
|
|
|
map.put("handlerCountList", handlerCountList); |
|
|
|
|
map.put("finishContList", finishContList); |
|
|
|
|
|
|
|
|
|
List<Integer> state = new ArrayList<>(); |
|
|
|
|
state.add(2); |
|
|
|
|
state.add(3); |
|
|
|
|
|
|
|
|
|
// 当月
|
|
|
|
|
Map<String, List<Object>> map0 = getStartAndEndTime(map, state, 0); |
|
|
|
|
|
|
|
|
|
// 前1个月
|
|
|
|
|
Map<String, List<Object>> map1 = getStartAndEndTime(map0, state, 1); |
|
|
|
|
|
|
|
|
|
// 前2个月
|
|
|
|
|
Map<String, List<Object>> map2 = getStartAndEndTime(map1, state, 2); |
|
|
|
|
|
|
|
|
|
// 前3个月
|
|
|
|
|
Map<String, List<Object>> map3 = getStartAndEndTime(map2, state, 3); |
|
|
|
|
|
|
|
|
|
// 前4个月
|
|
|
|
|
Map<String, List<Object>> map4 = getStartAndEndTime(map3, state, 4); |
|
|
|
|
|
|
|
|
|
// 前5个月
|
|
|
|
|
return getStartAndEndTime(map4, state, 5); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Map<String, Object> getAppealTypePercent() { |
|
|
|
|
// 先查所有
|
|
|
|
|
List<Appeal> appeals = appealService.list(); |
|
|
|
|
|
|
|
|
|
// 根据纠纷类型分组
|
|
|
|
|
Map<String, List<Appeal>> collect = appeals.stream().collect(Collectors.groupingBy(Appeal::getDisputeName)); |
|
|
|
|
Set<String> names = collect.keySet(); |
|
|
|
|
|
|
|
|
|
// 纠纷类型对应的数量
|
|
|
|
|
Map<String, Integer> map = new HashMap<>(); |
|
|
|
|
for (String name : names) { |
|
|
|
|
map.put(name, collect.get(name).size()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 根据数量排序
|
|
|
|
|
List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet()); |
|
|
|
|
list.sort((o1, o2) -> o2.getValue() - o1.getValue()); |
|
|
|
|
|
|
|
|
|
Map<String, Object> hashMap = new HashMap<>(); |
|
|
|
|
DecimalFormat df = new DecimalFormat("#0.0"); |
|
|
|
|
|
|
|
|
|
// 如果类型小于5,正常计算
|
|
|
|
|
if (list.size() <= 5) { |
|
|
|
|
for (Map.Entry<String, Integer> entry : list) { |
|
|
|
|
hashMap.put(entry.getKey(), df.format((double) entry.getValue() / (double) appeals.size() * 100) + "%"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
// 如果类型大于5,前五正常计算,其余全部按照其他纠纷计算
|
|
|
|
|
else { |
|
|
|
|
for (int i = 0; i < 5; i++) { |
|
|
|
|
Map.Entry<String, Integer> entry = list.get(i); |
|
|
|
|
hashMap.put(entry.getKey(), df.format((double) entry.getValue() / (double) appeals.size() * 100) + "%"); |
|
|
|
|
} |
|
|
|
|
int size = 0; |
|
|
|
|
for (int i = 5; i < list.size(); i++) { |
|
|
|
|
Map.Entry<String, Integer> entry = list.get(i); |
|
|
|
|
size += entry.getValue(); |
|
|
|
|
} |
|
|
|
|
hashMap.put("其他纠纷", df.format((double) size / (double) appeals.size() * 100) + "%"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return hashMap; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Map<String, Object> getAppealSubmitCountByLoc(Integer timeFrame, String startTime, String endTime) throws ParseException { |
|
|
|
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
|
|
|
|
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
|
if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) { |
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, dateFormat.parse(startTime), dateFormat.parse(endTime)); |
|
|
|
|
} else if (timeFrame == 1) { |
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.monthStartTime(), LocalDateTimeUtils.monthEndTime()); |
|
|
|
|
} else if (timeFrame == 2) { |
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.quarterStartTime(), LocalDateTimeUtils.quarterEndTime()); |
|
|
|
|
} else if (timeFrame == 3) { |
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.yearStartTime(), LocalDateTimeUtils.yearEndTime()); |
|
|
|
|
} |
|
|
|
|
List<Appeal> appeals = appealService.list(wrapper); |
|
|
|
|
appeals.forEach(appeal -> appeal.setStreet(DictBizCache.getById(appeal.getStreetId()).getDictValue())); |
|
|
|
|
|
|
|
|
|
// 根据街道分组
|
|
|
|
|
Map<String, List<Appeal>> collect = appeals.stream().collect(Collectors.groupingBy(Appeal::getStreet)); |
|
|
|
|
Set<String> names = collect.keySet(); |
|
|
|
|
|
|
|
|
|
// 街道对应的数量
|
|
|
|
|
Map<String, Object> map = new HashMap<>(); |
|
|
|
|
for (String name : names) { |
|
|
|
|
map.put(name, collect.get(name).size()); |
|
|
|
|
} |
|
|
|
|
return map; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Map<String, Object> getAppealFinishCountByLoc(Integer timeFrame, String startTime, String endTime) throws ParseException { |
|
|
|
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
|
|
|
|
|
|
|
|
|
// 化解成功状态数组
|
|
|
|
|
List<Integer> state = new ArrayList<>(); |
|
|
|
|
state.add(2); |
|
|
|
|
state.add(3); |
|
|
|
|
|
|
|
|
|
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
|
wrapper.in(Appeal::getStatus, state); |
|
|
|
|
if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) { |
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, dateFormat.parse(startTime), dateFormat.parse(endTime)); |
|
|
|
|
} else if (timeFrame == 1) { |
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.monthStartTime(), LocalDateTimeUtils.monthEndTime()); |
|
|
|
|
} else if (timeFrame == 2) { |
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.quarterStartTime(), LocalDateTimeUtils.quarterEndTime()); |
|
|
|
|
} else if (timeFrame == 3) { |
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.yearStartTime(), LocalDateTimeUtils.yearEndTime()); |
|
|
|
|
} |
|
|
|
|
List<Appeal> appeals = appealService.list(wrapper); |
|
|
|
|
appeals.forEach(appeal -> appeal.setStreet(DictBizCache.getById(appeal.getStreetId()).getDictValue())); |
|
|
|
|
|
|
|
|
|
// 根据街道分组
|
|
|
|
|
Map<String, List<Appeal>> collect = appeals.stream().collect(Collectors.groupingBy(Appeal::getStreet)); |
|
|
|
|
Set<String> names = collect.keySet(); |
|
|
|
|
|
|
|
|
|
// 街道对应的数量
|
|
|
|
|
Map<String, Object> map = new HashMap<>(); |
|
|
|
|
for (String name : names) { |
|
|
|
|
map.put(name, collect.get(name).size()); |
|
|
|
|
} |
|
|
|
|
return map; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Map<String, Object> getImmediateCountByLoc(Integer timeFrame, String startTime, String endTime) throws ParseException { |
|
|
|
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
|
|
|
|
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
|
wrapper.eq(Appeal::getSkipGrant, 1); |
|
|
|
|
if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) { |
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, dateFormat.parse(startTime), dateFormat.parse(endTime)); |
|
|
|
|
} else if (timeFrame == 1) { |
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.monthStartTime(), LocalDateTimeUtils.monthEndTime()); |
|
|
|
|
} else if (timeFrame == 2) { |
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.quarterStartTime(), LocalDateTimeUtils.quarterEndTime()); |
|
|
|
|
} else if (timeFrame == 3) { |
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.yearStartTime(), LocalDateTimeUtils.yearEndTime()); |
|
|
|
|
} |
|
|
|
|
List<Appeal> appeals = appealService.list(wrapper); |
|
|
|
|
appeals.forEach(appeal -> appeal.setStreet(DictBizCache.getById(appeal.getStreetId()).getDictValue())); |
|
|
|
|
|
|
|
|
|
// 根据街道分组
|
|
|
|
|
Map<String, List<Appeal>> collect = appeals.stream().collect(Collectors.groupingBy(Appeal::getStreet)); |
|
|
|
|
Set<String> names = collect.keySet(); |
|
|
|
|
|
|
|
|
|
// 街道对应的数量
|
|
|
|
|
Map<String, Object> map = new HashMap<>(); |
|
|
|
|
for (String name : names) { |
|
|
|
|
map.put(name, collect.get(name).size()); |
|
|
|
|
} |
|
|
|
|
return map; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public IPage<Appeal> getImmediateList(String streetId, IPage<Appeal> page) { |
|
|
|
|
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
|
wrapper.select(Appeal::getId, Appeal::getFirstRegTime, Appeal::getDisputeName); |
|
|
|
|
wrapper.eq(Appeal::getStreetId, streetId); |
|
|
|
|
wrapper.eq(Appeal::getSkipGrant, 1); |
|
|
|
|
wrapper.orderByDesc(Appeal::getCreateTime); |
|
|
|
|
IPage<Appeal> iPage = appealService.page(page, wrapper); |
|
|
|
|
|
|
|
|
|
// 给每条数据赋值来访人姓名
|
|
|
|
|
List<Appeal> records = iPage.getRecords(); |
|
|
|
|
if (CollectionUtils.isNotEmpty(records)) { |
|
|
|
|
for (Appeal record : records) { |
|
|
|
|
// 获取sort=1的来访人
|
|
|
|
|
AppealVisitor visitor = appealVisitorService.getOne(new LambdaQueryWrapper<AppealVisitor>().eq(AppealVisitor::getAppealId, record.getId()).eq(AppealVisitor::getSort, 1)); |
|
|
|
|
if (visitor != null) { |
|
|
|
|
record.setUsername(visitor.getUsername()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
iPage.setRecords(records); |
|
|
|
|
} |
|
|
|
|
return iPage; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Map<String, List<DataEntity>> getAppealHot() { |
|
|
|
|
Map<String, List<DataEntity>> map = new HashMap(); |
|
|
|
|
// 化解成功状态数组
|
|
|
|
|
List<Integer> state = new ArrayList<>(); |
|
|
|
|
state.add(2); |
|
|
|
|
state.add(3); |
|
|
|
|
|
|
|
|
|
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
|
wrapper.in(Appeal::getStatus, state); |
|
|
|
|
List<Appeal> appeals = appealService.list(wrapper); |
|
|
|
|
appeals.forEach(appeal -> { |
|
|
|
|
appeal.setStreet(DictBizCache.getById(appeal.getStreetId()).getDictValue()); |
|
|
|
|
appeal.setName(userService.getById(appeal.getHandleDept()).getName()); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
// 根据街道分组
|
|
|
|
|
Map<String, List<Appeal>> street = appeals.stream().collect(Collectors.groupingBy(Appeal::getStreet)); |
|
|
|
|
Set<String> names = street.keySet(); |
|
|
|
|
|
|
|
|
|
// 封装到数据对象
|
|
|
|
|
List<DataEntity> strees = new ArrayList<>(); |
|
|
|
|
for (String name : names) { |
|
|
|
|
DataEntity entity = new DataEntity(); |
|
|
|
|
entity.setName(name); |
|
|
|
|
entity.setNum(street.get(name).size()); |
|
|
|
|
strees.add(entity); |
|
|
|
|
} |
|
|
|
|
// 倒序
|
|
|
|
|
List<DataEntity> streeList = strees.stream().sorted(Comparator.comparing(DataEntity::getNum).reversed()).collect(Collectors.toList()); |
|
|
|
|
map.put("street", streeList); |
|
|
|
|
|
|
|
|
|
// 根据部门分组
|
|
|
|
|
Map<String, List<Appeal>> town = appeals.stream().collect(Collectors.groupingBy(Appeal::getName)); |
|
|
|
|
Set<String> depts = town.keySet(); |
|
|
|
|
|
|
|
|
|
// 封装到数据对象
|
|
|
|
|
List<DataEntity> towns = new ArrayList<>(); |
|
|
|
|
for (String name : depts) { |
|
|
|
|
DataEntity entity = new DataEntity(); |
|
|
|
|
entity.setName(name); |
|
|
|
|
entity.setNum(town.get(name).size()); |
|
|
|
|
towns.add(entity); |
|
|
|
|
} |
|
|
|
|
// 倒序
|
|
|
|
|
List<DataEntity> townList = towns.stream().sorted(Comparator.comparing(DataEntity::getNum).reversed()).collect(Collectors.toList()); |
|
|
|
|
map.put("town", townList); |
|
|
|
|
|
|
|
|
|
return map; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private Map<String, List<Object>> getStartAndEndTime(Map<String, List<Object>> map, List<Integer> state, Integer month) { |
|
|
|
|
List<Object> dateList = map.get("dateList"); |
|
|
|
|
List<Object> handlerCountList = map.get("handlerCountList"); |
|
|
|
|
List<Object> finishContList = map.get("finishContList"); |
|
|
|
|
|
|
|
|
|
// 当月开始时间
|
|
|
|
|
LocalDateTime start = LocalDateTime.of(LocalDate.now().withDayOfMonth(1).minusMonths(month), LocalTime.MIDNIGHT); |
|
|
|
|
|
|
|
|
|
// 当月结束时间
|
|
|
|
|
LocalDateTime end = start.plusMonths(1).minusSeconds(1); |
|
|
|
|
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM"); |
|
|
|
|
|
|
|
|
|
// 月份:2023-06
|
|
|
|
|
dateList.add(start.format(dateFormatter)); |
|
|
|
|
|
|
|
|
|
// 登记数
|
|
|
|
|
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, start, end); |
|
|
|
|
handlerCountList.add(appealService.count(wrapper)); |
|
|
|
|
|
|
|
|
|
// 调解成功数
|
|
|
|
|
wrapper.clear(); |
|
|
|
|
wrapper.in(Appeal::getStatus, state); |
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, start, end); |
|
|
|
|
finishContList.add(appealService.count(wrapper)); |
|
|
|
|
|
|
|
|
|
map.put("dateList", dateList); |
|
|
|
|
map.put("handlerCountList", handlerCountList); |
|
|
|
|
map.put("finishContList", finishContList); |
|
|
|
|
return map; |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|