From 2f089309c4586feeb61014197ef327c625651953 Mon Sep 17 00:00:00 2001 From: liuqingkun Date: Wed, 21 Jun 2023 15:08:34 +0800 Subject: [PATCH] bug fix --- .../service/impl/LargeScreenServiceImpl.java | 89 ++++++++++++++++--- .../business/utils/LocalDateTimeUtils.java | 21 +++++ src/main/resources/application-dev.yml | 4 +- 3 files changed, 99 insertions(+), 15 deletions(-) diff --git a/src/main/java/org/springblade/modules/business/service/impl/LargeScreenServiceImpl.java b/src/main/java/org/springblade/modules/business/service/impl/LargeScreenServiceImpl.java index 152e9d9..85a4d00 100644 --- a/src/main/java/org/springblade/modules/business/service/impl/LargeScreenServiceImpl.java +++ b/src/main/java/org/springblade/modules/business/service/impl/LargeScreenServiceImpl.java @@ -40,6 +40,7 @@ import org.springblade.modules.system.service.IDictBizService; import org.springblade.modules.system.service.IUserService; import org.springframework.stereotype.Service; import software.amazon.ion.Decimal; +import sun.security.pkcs11.wrapper.Functions; import javax.swing.text.html.parser.Entity; import java.math.BigDecimal; @@ -164,10 +165,36 @@ public class LargeScreenServiceImpl implements ILargeScreenService { DateTimeFormatter fmt = DateTimeFormatter.ofPattern(DateUtil.PATTERN_DATETIME); List> result = appealService.getAppealByMon(start.format(fmt), end.format(fmt)); + List monList = LocalDateTimeUtils.getMonList(start, end); + List dateList = new ArrayList<>(); + List handlerCountList = new ArrayList<>(); + List finishContList = new ArrayList<>(); + monList.forEach(mon -> { + dateList.add(mon); + boolean has = false; + for (Map entry : result) { + String em = (String) entry.get("mon"); + Object submit = entry.get("submit"); + Object mediation = entry.get("mediation"); + + if (mon.equalsIgnoreCase(em)) { + handlerCountList.add(submit); + finishContList.add(mediation); + has = true; + break; + } + } + + if (!has) { + handlerCountList.add("0"); + finishContList.add("0"); + } + }); + Map> map = new HashMap<>(); - map.put("dateList", result.stream().map(e -> e.get("mon")).collect(Collectors.toList())); - map.put("handlerCountList", result.stream().map(e -> e.get("submit")).collect(Collectors.toList())); - map.put("finishContList", result.stream().map(e -> e.get("mediation")).collect(Collectors.toList())); + map.put("dateList", dateList); + map.put("handlerCountList", handlerCountList); + map.put("finishContList", finishContList); return map; } @@ -393,20 +420,20 @@ public class LargeScreenServiceImpl implements ILargeScreenService { wrapper.between(Appeal::getFirstRegTime, start, end); List appealList = appealService.list(wrapper); - // 过滤掉无街道和处理部门的, 防止异常 - appealList = appealList.stream().filter( - appeal -> Func.isNotEmpty(appeal.getStreetId()) && Func.isNotEmpty(appeal.getHandleDept()) + // 过滤掉无街道的, 防止异常 + List streetDataList = appealList.stream().filter( + appeal -> Func.isNotEmpty(appeal.getStreetId()) ).collect(Collectors.toList()); // 获取所有化解成功的诉求记录 - List appealFinishList = appealList.stream().filter( + List appealFinishList = streetDataList.stream().filter( appeal -> state.contains(appeal.getStatus()) ).collect(Collectors.toList()); // 获取所有街道 List dataList = dictService.getList(BusinessConstant.DICT_KEY_STREET); // 根据街道分组 - Map> reportStreetList = appealList.stream().collect(Collectors.groupingBy(Appeal::getStreetId)); + Map> reportStreetList = streetDataList.stream().collect(Collectors.groupingBy(Appeal::getStreetId)); Map> street = appealFinishList.stream().collect(Collectors.groupingBy(Appeal::getStreetId)); // 封装到数据对象 @@ -428,13 +455,23 @@ public class LargeScreenServiceImpl implements ILargeScreenService { }); // 倒序 - List streeList = strees.stream().sorted(Comparator.comparing(DataEntity::getValue).reversed()).collect(Collectors.toList()); - map.put("street", streeList); + List streetList = strees.stream().sorted(Comparator.comparing(DataEntity::getValue).reversed()).collect(Collectors.toList()); + map.put("street", streetList); + + // 过滤掉处理部门的, 防止异常 + List deptDataList = appealList.stream().filter( + appeal -> Func.isNotEmpty(appeal.getHandleDept()) + ).collect(Collectors.toList()); + + // 获取所有化解成功的诉求记录 + appealFinishList = deptDataList.stream().filter( + appeal -> state.contains(appeal.getStatus()) + ).collect(Collectors.toList()); // 获取所有部门 List userList = UserCache.getServerWindowList(); // 根据部门分组 - Map> reportTownList = appealList.stream().collect(Collectors.groupingBy(Appeal::getHandleDept)); + Map> reportTownList = deptDataList.stream().collect(Collectors.groupingBy(Appeal::getHandleDept)); Map> town = appealFinishList.stream().collect(Collectors.groupingBy(Appeal::getHandleDept)); // 封装到数据对象 @@ -473,17 +510,17 @@ public class LargeScreenServiceImpl implements ILargeScreenService { // 获取所有上报的诉求记录 LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.between(Appeal::getFirstRegTime, start, end); - List appeals = appealService.list(wrapper); + List appealList = appealService.list(wrapper); // 过滤掉无街道的, 防止异常 - appeals = appeals.stream().filter( + List streetDataList = appealList.stream().filter( appeal -> Func.isNotEmpty(appeal.getStreetId()) ).collect(Collectors.toList()); // 获取所有街道 List dataList = dictService.getList(BusinessConstant.DICT_KEY_STREET); // 根据街道分组 - Map> street = appeals.stream().collect(Collectors.groupingBy(Appeal::getStreetId)); + Map> street = streetDataList.stream().collect(Collectors.groupingBy(Appeal::getStreetId)); // 封装到数据对象 List strees = new ArrayList<>(); @@ -499,6 +536,30 @@ public class LargeScreenServiceImpl implements ILargeScreenService { List streeList = strees.stream().sorted(Comparator.comparing(DataEntity::getValue).reversed()).collect(Collectors.toList()); map.put("street", streeList); + + // 过滤掉处理部门的, 防止异常 + List deptDataList = appealList.stream().filter( + appeal -> Func.isNotEmpty(appeal.getHandleDept()) + ).collect(Collectors.toList()); + + // 获取所有部门 + List userList = UserCache.getServerWindowList(); + // 根据部门分组 + Map> town = deptDataList.stream().collect(Collectors.groupingBy(Appeal::getHandleDept)); + + // 封装到数据对象 + List towns = new ArrayList<>(); + userList.forEach(user -> { + Long id = user.getId(); + DataEntity entity = new DataEntity(); + entity.setName(user.getName()); + entity.setValue(town.containsKey(id) ? town.get(id).size() : 0); + towns.add(entity); + }); + + // 倒序 + List townList = towns.stream().sorted(Comparator.comparing(DataEntity::getValue).reversed()).collect(Collectors.toList()); + map.put("town", townList); return map; } } diff --git a/src/main/java/org/springblade/modules/business/utils/LocalDateTimeUtils.java b/src/main/java/org/springblade/modules/business/utils/LocalDateTimeUtils.java index 52f87b2..5801482 100644 --- a/src/main/java/org/springblade/modules/business/utils/LocalDateTimeUtils.java +++ b/src/main/java/org/springblade/modules/business/utils/LocalDateTimeUtils.java @@ -1,9 +1,14 @@ package org.springblade.modules.business.utils; +import org.springblade.core.tool.utils.DateUtil; + import java.time.*; +import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; import java.time.temporal.TemporalAdjusters; +import java.util.ArrayList; import java.util.Date; +import java.util.List; /** * LocalDateTime工具类 @@ -458,4 +463,20 @@ public class LocalDateTimeUtils { public static LocalDateTime nextYearEndTime() { return LocalDateTime.of(LocalDate.now().plus(1L, ChronoUnit.YEARS).with(TemporalAdjusters.lastDayOfYear()), LocalTime.MAX); } + + public static List getMonList(LocalDateTime start, LocalDateTime end) { + List monList = new ArrayList<>(); + + DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM"); + boolean flag = true; + while (flag) { + monList.add(start.format(fmt)); + start = start.plus(1L, ChronoUnit.MONTHS); + if (start.getYear() == end.getYear() && start.getMonth() == end.getMonth()) { + flag = false; + } + } + + return monList; + } } diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 619c694..e7d2dcb 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -1,4 +1,4 @@ -#数据源配置 - dev +# 配置 - 开发 spring: redis: ##redis 单机环境配置 @@ -13,6 +13,8 @@ spring: username: root password: 123456 + +# 配置 - 生产 #server: # port: 10000 #