From 054e20801d28fd8ae86dbfdfce21b12a260f5922 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Mon, 17 May 2021 11:04:33 +0800 Subject: [PATCH] =?UTF-8?q?=E9=83=A8=E5=88=86=E6=96=B9=E6=B3=95=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/datastats/form/SubAgencyFormDTO.java | 9 + .../dto/datastats/form/SubGridFormDTO.java | 9 + .../datastats/impl/DataStatsServiceImpl.java | 336 ++++++++++++++---- 3 files changed, 277 insertions(+), 77 deletions(-) diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/SubAgencyFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/SubAgencyFormDTO.java index a02a39456c..d5d3d8a66a 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/SubAgencyFormDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/SubAgencyFormDTO.java @@ -23,6 +23,15 @@ public class SubAgencyFormDTO implements Serializable { * 日维度Id */ private String dateId; + /** + * 排序类型字段 + * 用户【用户:user 党员:party 居民:resi】 + * 党群【党群:group 楼院小组:ordinary 支部小组:branch】 + * 话题【话题:topic 热议中:discussing 已处理:closed 已转议题:shiftIssue】 + * 议题【议题:issue 表决中:voting 已转项目:shiftProject 已处理:closed】 + * 项目【项目:project 处理中:pending 已结案:closed】 + */ + private String type; public interface Agency extends CustomerClientShowGroup{} @Data diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/SubGridFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/SubGridFormDTO.java index d7da58385e..d429b47b7c 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/SubGridFormDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/SubGridFormDTO.java @@ -23,6 +23,15 @@ public class SubGridFormDTO implements Serializable { * 日维度Id */ private String dateId; + /** + * 排序类型字段 + * 用户【用户:user 党员:party 居民:resi】 + * 党群【党群:group 楼院小组:ordinary 支部小组:branch】 + * 话题【话题:topic 热议中:discussing 已处理:closed 已转议题:shiftIssue】 + * 议题【议题:issue 表决中:voting 已转项目:shiftProject 已处理:closed】 + * 项目【项目:project 处理中:pending 已结案:closed】 + */ + private String type; public interface Agency extends CustomerClientShowGroup{} @Data diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java index f289a4abc9..900144795e 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java @@ -84,18 +84,22 @@ public class DataStatsServiceImpl implements DataStatsService { AgencyBasicDataResultDTO.Topic topicSHiftIssue = dataStatsDao.getAgencyTopicShiftIssue(formDTO.getAgencyId(), formDTO.getDateId()); AtomicReference closedTotal = new AtomicReference<>(0); AtomicReference hiddenTotal = new AtomicReference<>(0); - if (topic.size()>NumConstant.ZERO) { + if (topic.size() > NumConstant.ZERO) { resultDTO.setTopicTotal(topic.stream().collect(Collectors.summingInt(AgencyBasicDataResultDTO.Topic::getTopicCount))); topic.forEach(t -> { - if (t.getTopicStatus().equals("closed")){ closedTotal.set(t.getTopicCount()); } - if (t.getTopicStatus().equals("hidden")){ hiddenTotal.set(t.getTopicCount()); } + if (t.getTopicStatus().equals("closed")) { + closedTotal.set(t.getTopicCount()); + } + if (t.getTopicStatus().equals("hidden")) { + hiddenTotal.set(t.getTopicCount()); + } }); } if (null != topicSHiftIssue) { resultDTO.setShiftIssueTotal(topicSHiftIssue.getShiftedIssueTotal()); resultDTO.setShiftIssueRatio(resultDTO.getShiftIssueTotal() == 0 || resultDTO.getTopicTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) resultDTO.getShiftIssueTotal() / (float) resultDTO.getTopicTotal()))); } - resultDTO.setDiscussingTotal(resultDTO.getTopicTotal()-closedTotal.get()-hiddenTotal.get()-resultDTO.getShiftIssueTotal()); + resultDTO.setDiscussingTotal(resultDTO.getTopicTotal() - closedTotal.get() - hiddenTotal.get() - resultDTO.getShiftIssueTotal()); resultDTO.setDiscussingRatio(resultDTO.getDiscussingTotal() == 0 || resultDTO.getTopicTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) resultDTO.getDiscussingTotal() / (float) resultDTO.getTopicTotal()))); resultDTO.setClosedTopicTotal(closedTotal.get()); resultDTO.setClosedTopicRatio(resultDTO.getClosedTopicTotal() == 0 || resultDTO.getTopicTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) resultDTO.getClosedTopicTotal() / (float) resultDTO.getTopicTotal()))); @@ -142,10 +146,14 @@ public class DataStatsServiceImpl implements DataStatsService { SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD); formDTO.setDateId(format.format(yesterday)); } + //排序类型,默认按用户总数降序 + if (StringUtils.isBlank(formDTO.getDateId())) { + formDTO.setType("user"); + } //1.查询当前组织的直属下级组织信息【机关维度】 List subAgencyList = dataStatsDao.getSubAgencyList(formDTO.getAgencyId()); - if(subAgencyList.size() agencyIds = subAgencyList.stream().map(DimAgencyEntity::getId).collect(Collectors.toList()); @@ -153,17 +161,34 @@ public class DataStatsServiceImpl implements DataStatsService { //2.查询直属下级组织注册用户日统计数据,默认按用户总数降序 resultList = dataStatsDao.getSubAgencyUser(agencyIds, formDTO.getDateId()); - //3.封装数据并返回 - resultList.forEach(re->{ + //3.封装数据 + resultList.forEach(re -> { re.setPartyMemberRatio(re.getPartyMemberTotal() == 0 || re.getUserTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) re.getPartyMemberTotal() / (float) re.getUserTotal()))); re.setResiRatio(re.getResiTotal() == 0 || re.getUserTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) re.getResiTotal() / (float) re.getUserTotal()))); - subAgencyList.forEach(sub->{ - if(re.getAgencyId().equals(sub.getId())){ + subAgencyList.forEach(sub -> { + if (re.getAgencyId().equals(sub.getId())) { re.setAgencyName(sub.getAgencyName()); } }); }); + //4.按要求排序并返回 + Collections.sort(resultList, new Comparator() { + @Override + public int compare(SubAgencyUserResultDTO o1, SubAgencyUserResultDTO o2) { + if ("party".equals(formDTO.getType())) { + //升序 + //return o1.getPartyMemberTotal().compareTo(o2.getPartyMemberTotal()); + //降序 + return o2.getPartyMemberTotal().compareTo(o1.getPartyMemberTotal()); + } else if ("resi".equals(formDTO.getType())) { + return o2.getResiTotal().compareTo(o1.getResiTotal()); + } else { + return o2.getUserTotal().compareTo(o1.getUserTotal()); + } + } + }); + return resultList; } @@ -184,10 +209,14 @@ public class DataStatsServiceImpl implements DataStatsService { SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD); formDTO.setDateId(format.format(yesterday)); } + //排序类型,默认按用户总数降序 + if (StringUtils.isBlank(formDTO.getDateId())) { + formDTO.setType("user"); + } //1.查询组织直属网格列表【网格维度】 List gridList = dataStatsDao.getSubGridList(formDTO.getAgencyId()); - if(gridList.size() gridIds = gridList.stream().map(DimGridEntity::getId).collect(Collectors.toList()); @@ -195,17 +224,32 @@ public class DataStatsServiceImpl implements DataStatsService { //2.查询网格层级注册用户日统计数据,默认按用户总数降序 resultList = dataStatsDao.getSubGridUser(gridIds, formDTO.getDateId()); - //3.封装数据并返回 - resultList.forEach(re->{ + //3.封装数据 + resultList.forEach(re -> { re.setPartyMemberRatio(re.getPartyMemberTotal() == 0 || re.getUserTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) re.getPartyMemberTotal() / (float) re.getUserTotal()))); re.setResiRatio(re.getResiTotal() == 0 || re.getUserTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) re.getResiTotal() / (float) re.getUserTotal()))); - gridList.forEach(sub->{ - if(re.getGridId().equals(sub.getId())){ + gridList.forEach(sub -> { + if (re.getGridId().equals(sub.getId())) { re.setGridName(sub.getGridName()); } }); }); + //4.按要求排序并返回 + Collections.sort(resultList, new Comparator() { + @Override + public int compare(SubGridUserResultDTO o1, SubGridUserResultDTO o2) { + if ("party".equals(formDTO.getType())) { + //降序 + return o2.getPartyMemberTotal().compareTo(o1.getPartyMemberTotal()); + } else if ("resi".equals(formDTO.getType())) { + return o2.getResiTotal().compareTo(o1.getResiTotal()); + } else { + return o2.getUserTotal().compareTo(o1.getUserTotal()); + } + } + }); + return resultList; } @@ -226,10 +270,14 @@ public class DataStatsServiceImpl implements DataStatsService { SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD); formDTO.setDateId(format.format(yesterday)); } + //排序类型,默认按用户总数降序 + if (StringUtils.isBlank(formDTO.getDateId())) { + formDTO.setType("group"); + } //1.查询当前组织的直属下级组织信息【机关维度】 List subAgencyList = dataStatsDao.getSubAgencyList(formDTO.getAgencyId()); - if(subAgencyList.size() agencyIds = subAgencyList.stream().map(DimAgencyEntity::getId).collect(Collectors.toList()); @@ -237,17 +285,31 @@ public class DataStatsServiceImpl implements DataStatsService { //2.查询直属下级组织小组日统计数据,默认按群组总数降序 resultList = dataStatsDao.getSubAgencyGroup(agencyIds, formDTO.getDateId()); - //3.封装数据并返回 - resultList.forEach(re->{ + //3.封装数据 + resultList.forEach(re -> { re.setOrdinaryRatio(re.getOrdinaryTotal() == 0 || re.getGroupTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) re.getOrdinaryTotal() / (float) re.getGroupTotal()))); re.setBranchRatio(re.getBranchTotal() == 0 || re.getGroupTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) re.getBranchTotal() / (float) re.getGroupTotal()))); - subAgencyList.forEach(sub->{ - if(re.getAgencyId().equals(sub.getId())){ + subAgencyList.forEach(sub -> { + if (re.getAgencyId().equals(sub.getId())) { re.setAgencyName(sub.getAgencyName()); } }); }); + //4.按要求排序并返回 + Collections.sort(resultList, new Comparator() { + @Override + public int compare(SubAgencyGroupResultDTO o1, SubAgencyGroupResultDTO o2) { + if ("ordinary".equals(formDTO.getType())) { + return o2.getOrdinaryTotal().compareTo(o1.getOrdinaryTotal()); + } else if ("branch".equals(formDTO.getType())) { + return o2.getBranchTotal().compareTo(o1.getBranchTotal()); + } else { + return o2.getGroupTotal().compareTo(o1.getGroupTotal()); + } + } + }); + return resultList; } @@ -268,10 +330,14 @@ public class DataStatsServiceImpl implements DataStatsService { SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD); formDTO.setDateId(format.format(yesterday)); } + //排序类型,默认按用户总数降序 + if (StringUtils.isBlank(formDTO.getDateId())) { + formDTO.setType("group"); + } //1.查询组织直属网格列表【网格维度】 List gridList = dataStatsDao.getSubGridList(formDTO.getAgencyId()); - if(gridList.size() gridIds = gridList.stream().map(DimGridEntity::getId).collect(Collectors.toList()); @@ -280,24 +346,38 @@ public class DataStatsServiceImpl implements DataStatsService { resultList = dataStatsDao.getSubGridGroup(gridIds, formDTO.getDateId()); //3.封装数据并返回 - resultList.forEach(re->{ + resultList.forEach(re -> { re.setOrdinaryRatio(re.getOrdinaryTotal() == 0 || re.getGroupTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) re.getOrdinaryTotal() / (float) re.getGroupTotal()))); re.setBranchRatio(re.getBranchTotal() == 0 || re.getGroupTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) re.getBranchTotal() / (float) re.getGroupTotal()))); - gridList.forEach(sub->{ - if(re.getGridId().equals(sub.getId())){ + gridList.forEach(sub -> { + if (re.getGridId().equals(sub.getId())) { re.setGridName(sub.getGridName()); } }); }); + //4.按要求排序并返回 + Collections.sort(resultList, new Comparator() { + @Override + public int compare(SubGridGroupResultDTO o1, SubGridGroupResultDTO o2) { + if ("ordinary".equals(formDTO.getType())) { + return o2.getOrdinaryTotal().compareTo(o1.getOrdinaryTotal()); + } else if ("branch".equals(formDTO.getType())) { + return o2.getBranchTotal().compareTo(o1.getBranchTotal()); + } else { + return o2.getGroupTotal().compareTo(o1.getGroupTotal()); + } + } + }); + return resultList; } /** + * @return * @Param formDTO * @Description 查询当前组织的直属下级组织话题数据 * @author sun - * @return */ @Override public List subAgencyTopic(SubAgencyFormDTO formDTO) { @@ -311,10 +391,14 @@ public class DataStatsServiceImpl implements DataStatsService { SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD); formDTO.setDateId(format.format(yesterday)); } + //排序类型,默认按用户总数降序 + if (StringUtils.isBlank(formDTO.getDateId())) { + formDTO.setType("topic"); + } //1.查询当前组织的直属下级组织信息【机关维度】 List subAgencyList = dataStatsDao.getSubAgencyList(formDTO.getAgencyId()); - if(subAgencyList.size() agencyIds = subAgencyList.stream().map(DimAgencyEntity::getId).collect(Collectors.toList()); @@ -324,27 +408,31 @@ public class DataStatsServiceImpl implements DataStatsService { List topic = dataStatsDao.getSubAgencyTopic(agencyIds, formDTO.getDateId()); //查询直属下级组织转议题话题-日统计数据表 List topicShiftIssue = dataStatsDao.getSubAgencyTopicShiftIssue(agencyIds, formDTO.getDateId()); - agencyIds.forEach(agencyId->{ + agencyIds.forEach(agencyId -> { SubAgencyTopicResultDTO resultDTO = new SubAgencyTopicResultDTO(); AtomicInteger topicTotal = new AtomicInteger(0); AtomicInteger closedTotal = new AtomicInteger(0); AtomicInteger hiddenTotal = new AtomicInteger(0); AtomicInteger shiftIssueTotal = new AtomicInteger(0); AtomicReference agencyName = new AtomicReference<>(""); - topic.forEach(t->{ - if(t.getAgencyId().equals(agencyId)){ + topic.forEach(t -> { + if (t.getAgencyId().equals(agencyId)) { topicTotal.addAndGet(t.getTopicCount()); - if (t.getTopicStatus().equals("closed")){ closedTotal.set(t.getTopicCount()); } - if (t.getTopicStatus().equals("hidden")){ hiddenTotal.set(t.getTopicCount()); } + if (t.getTopicStatus().equals("closed")) { + closedTotal.set(t.getTopicCount()); + } + if (t.getTopicStatus().equals("hidden")) { + hiddenTotal.set(t.getTopicCount()); + } } }); - topicShiftIssue.forEach(t->{ - if(t.getAgencyId().equals(agencyId)){ + topicShiftIssue.forEach(t -> { + if (t.getAgencyId().equals(agencyId)) { shiftIssueTotal.addAndGet(t.getShiftedIssueTotal()); } }); - subAgencyList.forEach(sub->{ - if(agencyId.equals(sub.getId())){ + subAgencyList.forEach(sub -> { + if (agencyId.equals(sub.getId())) { agencyName.set(sub.getAgencyName()); } }); @@ -352,7 +440,7 @@ public class DataStatsServiceImpl implements DataStatsService { resultDTO.setAgencyId(agencyId); resultDTO.setAgencyName(agencyName.get()); resultDTO.setTopicTotal(topicTotal.get()); - resultDTO.setDiscussingTotal(topicTotal.get()-closedTotal.get()-hiddenTotal.get()-shiftIssueTotal.get()); + resultDTO.setDiscussingTotal(topicTotal.get() - closedTotal.get() - hiddenTotal.get() - shiftIssueTotal.get()); resultDTO.setDiscussingRatio(resultDTO.getDiscussingTotal() == 0 || resultDTO.getTopicTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) resultDTO.getDiscussingTotal() / (float) resultDTO.getTopicTotal()))); resultDTO.setClosedTopicTotal(closedTotal.get()); resultDTO.setClosedTopicRatio(resultDTO.getClosedTopicTotal() == 0 || resultDTO.getTopicTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) resultDTO.getClosedTopicTotal() / (float) resultDTO.getTopicTotal()))); @@ -362,14 +450,19 @@ public class DataStatsServiceImpl implements DataStatsService { resultList.add(resultDTO); }); - //3.默认按话题总数降序 + //3.按要求排序并返回 Collections.sort(resultList, new Comparator() { @Override public int compare(SubAgencyTopicResultDTO o1, SubAgencyTopicResultDTO o2) { - //升序 - //return o1.getTopicTotal().compareTo(o2.getTopicTotal()); - //降序 - return o2.getTopicTotal().compareTo(o1.getTopicTotal()); + if ("discussing".equals(formDTO.getType())) { + return o2.getDiscussingTotal().compareTo(o1.getDiscussingTotal()); + } else if ("closed".equals(formDTO.getType())) { + return o2.getClosedTopicTotal().compareTo(o1.getClosedTopicTotal()); + } else if ("shiftIssue".equals(formDTO.getType())) { + return o2.getShiftIssueTotal().compareTo(o1.getShiftIssueTotal()); + } else { + return o2.getTopicTotal().compareTo(o1.getTopicTotal()); + } } }); @@ -377,10 +470,10 @@ public class DataStatsServiceImpl implements DataStatsService { } /** + * @return * @Param formDTO * @Description 查询当前组织下直属网格列表话题数据 * @author sun - * @return */ @Override public List subGridTopic(SubGridFormDTO formDTO) { @@ -394,10 +487,14 @@ public class DataStatsServiceImpl implements DataStatsService { SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD); formDTO.setDateId(format.format(yesterday)); } + //排序类型,默认按用户总数降序 + if (StringUtils.isBlank(formDTO.getDateId())) { + formDTO.setType("topic"); + } //1.查询组织直属网格列表【网格维度】 List gridList = dataStatsDao.getSubGridList(formDTO.getAgencyId()); - if(gridList.size() gridIds = gridList.stream().map(DimGridEntity::getId).collect(Collectors.toList()); @@ -407,27 +504,31 @@ public class DataStatsServiceImpl implements DataStatsService { List topic = dataStatsDao.getSubGridTopic(gridIds, formDTO.getDateId()); //查询网格层级转议题话题-日统计数据表 List topicShiftIssue = dataStatsDao.getSubGridTopicShiftIssue(gridIds, formDTO.getDateId()); - gridIds.forEach(gridId->{ + gridIds.forEach(gridId -> { SubGridTopicResultDTO resultDTO = new SubGridTopicResultDTO(); AtomicInteger topicTotal = new AtomicInteger(0); AtomicInteger closedTotal = new AtomicInteger(0); AtomicInteger hiddenTotal = new AtomicInteger(0); AtomicInteger shiftIssueTotal = new AtomicInteger(0); AtomicReference gridName = new AtomicReference<>(""); - topic.forEach(t->{ - if(t.getGridId().equals(gridId)){ + topic.forEach(t -> { + if (t.getGridId().equals(gridId)) { topicTotal.addAndGet(t.getTopicCount()); - if (t.getTopicStatus().equals("closed")){ closedTotal.set(t.getTopicCount()); } - if (t.getTopicStatus().equals("hidden")){ hiddenTotal.set(t.getTopicCount()); } + if (t.getTopicStatus().equals("closed")) { + closedTotal.set(t.getTopicCount()); + } + if (t.getTopicStatus().equals("hidden")) { + hiddenTotal.set(t.getTopicCount()); + } } }); - topicShiftIssue.forEach(t->{ - if(t.getGridId().equals(gridId)){ + topicShiftIssue.forEach(t -> { + if (t.getGridId().equals(gridId)) { shiftIssueTotal.addAndGet(t.getShiftedIssueTotal()); } }); - gridList.forEach(sub->{ - if(gridId.equals(sub.getId())){ + gridList.forEach(sub -> { + if (gridId.equals(sub.getId())) { gridName.set(sub.getGridName()); } }); @@ -435,7 +536,7 @@ public class DataStatsServiceImpl implements DataStatsService { resultDTO.setGridId(gridId); resultDTO.setGridName(gridName.get()); resultDTO.setTopicTotal(topicTotal.get()); - resultDTO.setDiscussingTotal(topicTotal.get()-closedTotal.get()-hiddenTotal.get()-shiftIssueTotal.get()); + resultDTO.setDiscussingTotal(topicTotal.get() - closedTotal.get() - hiddenTotal.get() - shiftIssueTotal.get()); resultDTO.setDiscussingRatio(resultDTO.getDiscussingTotal() == 0 || resultDTO.getTopicTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) resultDTO.getDiscussingTotal() / (float) resultDTO.getTopicTotal()))); resultDTO.setClosedTopicTotal(closedTotal.get()); resultDTO.setClosedTopicRatio(resultDTO.getClosedTopicTotal() == 0 || resultDTO.getTopicTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) resultDTO.getClosedTopicTotal() / (float) resultDTO.getTopicTotal()))); @@ -445,14 +546,19 @@ public class DataStatsServiceImpl implements DataStatsService { resultList.add(resultDTO); }); - //3.默认按话题总数降序 + //3.按要求排序并返回 Collections.sort(resultList, new Comparator() { @Override public int compare(SubGridTopicResultDTO o1, SubGridTopicResultDTO o2) { - //升序 - //return o1.getTopicTotal().compareTo(o2.getTopicTotal()); - //降序 - return o2.getTopicTotal().compareTo(o1.getTopicTotal()); + if ("discussing".equals(formDTO.getType())) { + return o2.getDiscussingTotal().compareTo(o1.getDiscussingTotal()); + } else if ("closed".equals(formDTO.getType())) { + return o2.getClosedTopicTotal().compareTo(o1.getClosedTopicTotal()); + } else if ("shiftIssue".equals(formDTO.getType())) { + return o2.getShiftIssueTotal().compareTo(o1.getShiftIssueTotal()); + } else { + return o2.getTopicTotal().compareTo(o1.getTopicTotal()); + } } }); @@ -476,10 +582,14 @@ public class DataStatsServiceImpl implements DataStatsService { SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD); formDTO.setDateId(format.format(yesterday)); } + //排序类型,默认按用户总数降序 + if (StringUtils.isBlank(formDTO.getDateId())) { + formDTO.setType("issue"); + } //1.查询当前组织的直属下级组织信息【机关维度】 List subAgencyList = dataStatsDao.getSubAgencyList(formDTO.getAgencyId()); - if(subAgencyList.size() agencyIds = subAgencyList.stream().map(DimAgencyEntity::getId).collect(Collectors.toList()); @@ -487,18 +597,34 @@ public class DataStatsServiceImpl implements DataStatsService { //2.查询直属下级组织议题日统计数据,默认按议题总数降序 resultList = dataStatsDao.getSubAgencyIssue(agencyIds, formDTO.getDateId()); - //3.封装数据并返回 - resultList.forEach(re->{ + //3.封装数据 + resultList.forEach(re -> { re.setVotingRatio(re.getVotingTotal() == 0 || re.getIssueTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) re.getVotingTotal() / (float) re.getIssueTotal()))); re.setClosedIssueRatio(re.getClosedIssueTotal() == 0 || re.getIssueTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) re.getClosedIssueTotal() / (float) re.getIssueTotal()))); re.setShiftProjectRatio(re.getShiftProjectTotal() == 0 || re.getIssueTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) re.getShiftProjectTotal() / (float) re.getIssueTotal()))); - subAgencyList.forEach(sub->{ - if(re.getAgencyId().equals(sub.getId())){ + subAgencyList.forEach(sub -> { + if (re.getAgencyId().equals(sub.getId())) { re.setAgencyName(sub.getAgencyName()); } }); }); + //4.按要求排序并返回 + Collections.sort(resultList, new Comparator() { + @Override + public int compare(SubAgencyIssueResultDTO o1, SubAgencyIssueResultDTO o2) { + if ("voting".equals(formDTO.getType())) { + return o2.getVotingTotal().compareTo(o1.getVotingTotal()); + } else if ("shiftProject".equals(formDTO.getType())) { + return o2.getShiftProjectTotal().compareTo(o1.getShiftProjectTotal()); + } else if ("closed".equals(formDTO.getType())) { + return o2.getClosedIssueTotal().compareTo(o1.getClosedIssueTotal()); + } else { + return o2.getIssueTotal().compareTo(o1.getIssueTotal()); + } + } + }); + return resultList; } @@ -519,10 +645,14 @@ public class DataStatsServiceImpl implements DataStatsService { SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD); formDTO.setDateId(format.format(yesterday)); } + //排序类型,默认按用户总数降序 + if (StringUtils.isBlank(formDTO.getDateId())) { + formDTO.setType("issue"); + } //1.查询组织直属网格列表【网格维度】 List gridList = dataStatsDao.getSubGridList(formDTO.getAgencyId()); - if(gridList.size() gridIds = gridList.stream().map(DimGridEntity::getId).collect(Collectors.toList()); @@ -530,18 +660,34 @@ public class DataStatsServiceImpl implements DataStatsService { //2.查询网格层级议题日统计数据,默认按议题总数降序 resultList = dataStatsDao.getSubGridIssue(gridIds, formDTO.getDateId()); - //3.封装数据并返回 - resultList.forEach(re->{ + //3.封装数据 + resultList.forEach(re -> { re.setVotingRatio(re.getVotingTotal() == 0 || re.getIssueTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) re.getVotingTotal() / (float) re.getIssueTotal()))); re.setClosedIssueRatio(re.getClosedIssueTotal() == 0 || re.getIssueTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) re.getClosedIssueTotal() / (float) re.getIssueTotal()))); re.setShiftProjectRatio(re.getShiftProjectTotal() == 0 || re.getIssueTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) re.getShiftProjectTotal() / (float) re.getIssueTotal()))); - gridList.forEach(sub->{ - if(re.getGridId().equals(sub.getId())){ + gridList.forEach(sub -> { + if (re.getGridId().equals(sub.getId())) { re.setGridName(sub.getGridName()); } }); }); + //4.按要求排序并返回 + Collections.sort(resultList, new Comparator() { + @Override + public int compare(SubGridIssueResultDTO o1, SubGridIssueResultDTO o2) { + if ("voting".equals(formDTO.getType())) { + return o2.getVotingTotal().compareTo(o1.getVotingTotal()); + } else if ("shiftProject".equals(formDTO.getType())) { + return o2.getShiftProjectTotal().compareTo(o1.getShiftProjectTotal()); + } else if ("closed".equals(formDTO.getType())) { + return o2.getClosedIssueTotal().compareTo(o1.getClosedIssueTotal()); + } else { + return o2.getIssueTotal().compareTo(o1.getIssueTotal()); + } + } + }); + return resultList; } @@ -562,10 +708,14 @@ public class DataStatsServiceImpl implements DataStatsService { SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD); formDTO.setDateId(format.format(yesterday)); } + //排序类型,默认按用户总数降序 + if (StringUtils.isBlank(formDTO.getDateId())) { + formDTO.setType("project"); + } //1.查询当前组织的直属下级组织信息【机关维度】 List subAgencyList = dataStatsDao.getSubAgencyList(formDTO.getAgencyId()); - if(subAgencyList.size() agencyIds = subAgencyList.stream().map(DimAgencyEntity::getId).collect(Collectors.toList()); @@ -573,17 +723,31 @@ public class DataStatsServiceImpl implements DataStatsService { //2.查询直属下级组织项目日统计数据,默认按项目总数降序 resultList = dataStatsDao.getSubAgencyProject(agencyIds, formDTO.getDateId()); - //3.封装数据并返回 - resultList.forEach(re->{ + //3.封装数据 + resultList.forEach(re -> { re.setPendingRatio(re.getPendingTotal() == 0 || re.getProjectTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) re.getPendingTotal() / (float) re.getProjectTotal()))); re.setClosedProjectRatio(re.getClosedProjectTotal() == 0 || re.getProjectTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) re.getClosedProjectTotal() / (float) re.getProjectTotal()))); - subAgencyList.forEach(sub->{ - if(re.getAgencyId().equals(sub.getId())){ + subAgencyList.forEach(sub -> { + if (re.getAgencyId().equals(sub.getId())) { re.setAgencyName(sub.getAgencyName()); } }); }); + //4.按要求排序并返回 + Collections.sort(resultList, new Comparator() { + @Override + public int compare(SubAgencyProjectResultDTO o1, SubAgencyProjectResultDTO o2) { + if ("pending".equals(formDTO.getType())) { + return o2.getPendingTotal().compareTo(o1.getPendingTotal()); + } else if ("closed".equals(formDTO.getType())) { + return o2.getClosedProjectTotal().compareTo(o1.getClosedProjectTotal()); + } else { + return o2.getProjectTotal().compareTo(o1.getProjectTotal()); + } + } + }); + return resultList; } @@ -604,10 +768,14 @@ public class DataStatsServiceImpl implements DataStatsService { SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD); formDTO.setDateId(format.format(yesterday)); } + //排序类型,默认按用户总数降序 + if (StringUtils.isBlank(formDTO.getDateId())) { + formDTO.setType("project"); + } //1.查询组织直属网格列表【网格维度】 List gridList = dataStatsDao.getSubGridList(formDTO.getAgencyId()); - if(gridList.size() gridIds = gridList.stream().map(DimGridEntity::getId).collect(Collectors.toList()); @@ -615,17 +783,31 @@ public class DataStatsServiceImpl implements DataStatsService { //2.查询网格层级项目日统计数据,默认按项目总数降序 resultList = dataStatsDao.getSubGridProject(gridIds, formDTO.getDateId()); - //3.封装数据并返回 - resultList.forEach(re->{ + //3.封装数据 + resultList.forEach(re -> { re.setPendingRatio(re.getPendingTotal() == 0 || re.getProjectTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) re.getPendingTotal() / (float) re.getProjectTotal()))); re.setClosedProjectRatio(re.getClosedProjectTotal() == 0 || re.getProjectTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) re.getClosedProjectTotal() / (float) re.getProjectTotal()))); - gridList.forEach(sub->{ - if(re.getGridId().equals(sub.getId())){ + gridList.forEach(sub -> { + if (re.getGridId().equals(sub.getId())) { re.setGridName(sub.getGridName()); } }); }); + //4.按要求排序并返回 + Collections.sort(resultList, new Comparator() { + @Override + public int compare(SubGridProjectResultDTO o1, SubGridProjectResultDTO o2) { + if ("pending".equals(formDTO.getType())) { + return o2.getPendingTotal().compareTo(o1.getPendingTotal()); + } else if ("closed".equals(formDTO.getType())) { + return o2.getClosedProjectTotal().compareTo(o1.getClosedProjectTotal()); + } else { + return o2.getProjectTotal().compareTo(o1.getProjectTotal()); + } + } + }); + return resultList; }