From a54d1ce689e3750daee37e0090c111c969297324 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Tue, 18 May 2021 14:06:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E6=95=B0=E6=8D=AE-=E6=B6=89?= =?UTF-8?q?=E5=8F=8A=E8=AF=9D=E9=A2=98=E6=95=B0=E6=8D=AE=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=E7=9A=84=E9=87=8D=E6=96=B0=E8=B0=83=E6=95=B4=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/datastats/form/SubAgencyFormDTO.java | 2 + .../dto/datastats/form/SubGridFormDTO.java | 2 + .../result/AgencyBasicDataResultDTO.java | 2 + .../dataaggre/dao/datastats/DataStatsDao.java | 18 +++++++ .../datastats/impl/DataStatsServiceImpl.java | 47 ++++++++++++------- .../mapper/datastats/DatsStatsDao.xml | 43 +++++++++++++++++ 6 files changed, 96 insertions(+), 18 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 d5d3d8a66a..4789d534dd 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 @@ -38,6 +38,8 @@ public class SubAgencyFormDTO implements Serializable { public static class Topic implements Serializable { //组织Id private String agencyId; + //话题总量 + private Integer topicTotal; //话题数量 private Integer topicCount; //话题状态 已关闭:closed、已屏蔽:hidden、 讨论中:discussing 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 d429b47b7c..51e790560c 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 @@ -38,6 +38,8 @@ public class SubGridFormDTO implements Serializable { public static class Topic implements Serializable { //网格Id private String gridId; + //话题总量 + private Integer topicTotal; //话题数量 private Integer topicCount; //话题状态 已关闭:closed、已屏蔽:hidden、 讨论中:discussing diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/AgencyBasicDataResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/AgencyBasicDataResultDTO.java index ad7869fd0b..d2202643c8 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/AgencyBasicDataResultDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/AgencyBasicDataResultDTO.java @@ -81,6 +81,8 @@ public class AgencyBasicDataResultDTO implements Serializable { @Data public static class Topic implements Serializable { + //话题总量 + private Integer topicTotal; //话题数量 private Integer topicCount; //话题状态 已关闭:closed、已屏蔽:hidden、 讨论中:discussing diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java index c96b053cba..d84e733e50 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java @@ -58,6 +58,12 @@ public interface DataStatsDao { */ AgencyBasicDataResultDTO.Topic getAgencyTopicShiftIssue(@Param("agencyId") String agencyId, @Param("dateId") String dateId); + /** + * @Description 热议中话题-机关日统计数据 + * @author sun + */ + AgencyBasicDataResultDTO.Topic getAgencyTopicHotDiscuss(@Param("agencyId") String agencyId, @Param("dateId") String dateId); + /** * @Description 查询组织下最新议题日统计数据 * @author sun @@ -118,6 +124,12 @@ public interface DataStatsDao { */ List getSubAgencyTopicShiftIssue(@Param("agencyIds") List agencyIds, @Param("dateId") String dateId); + /** + * @Description 查询直属下级组织热议中话题-机关日统计数据 + * @author sun + */ + List getSubAgencyTopicHotDiscuss(@Param("agencyIds") List agencyIds, @Param("dateId") String dateId); + /** * @Description 查询网格层级状态话题-日统计数据 * @author sun @@ -130,6 +142,12 @@ public interface DataStatsDao { */ List getSubGridTopicShiftIssue(@Param("gridIds") List gridIds, @Param("dateId") String dateId); + /** + * @Description 查询网格层级热议中话题-日统计数据 + * @author sun + */ + List getSubGridTopicHotDiscuss(@Param("gridIds") List gridIds, @Param("dateId") String dateId); + /** * @Description 查询直属下级组织议题日统计数据,默认按议题总数降序 * @author sun 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 900144795e..cf3eefefb7 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 @@ -78,29 +78,32 @@ public class DataStatsServiceImpl implements DataStatsService { //3.查询组织下最新话题日统计数据 //状态话题-机关日统计数据表最新日期三种状态数据 - //机关日表里三种类型数据之和就是话题总量,讨论中数量与热议中不是一个概念,热议中=总量-关闭数-屏蔽数-转议题数 + //机关日表里三种类型数据之和就是话题总量,讨论中数量与热议中不是一个概念 List topic = dataStatsDao.getAgencyTopic(formDTO.getAgencyId(), formDTO.getDateId()); //转议题话题-机关日统计数据表 AgencyBasicDataResultDTO.Topic topicSHiftIssue = dataStatsDao.getAgencyTopicShiftIssue(formDTO.getAgencyId(), formDTO.getDateId()); + //热议中话题-机关日统计数据 + AgencyBasicDataResultDTO.Topic hotdiscuss = dataStatsDao.getAgencyTopicHotDiscuss(formDTO.getAgencyId(), formDTO.getDateId()); AtomicReference closedTotal = new AtomicReference<>(0); - AtomicReference hiddenTotal = new AtomicReference<>(0); 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 (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.setDiscussingRatio(resultDTO.getDiscussingTotal() == 0 || resultDTO.getTopicTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) resultDTO.getDiscussingTotal() / (float) resultDTO.getTopicTotal()))); + //热议中 + if (null != hotdiscuss) { + resultDTO.setDiscussingTotal(hotdiscuss.getTopicCount()); + 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()))); @@ -404,16 +407,18 @@ public class DataStatsServiceImpl implements DataStatsService { List agencyIds = subAgencyList.stream().map(DimAgencyEntity::getId).collect(Collectors.toList()); //2.查询直属下级组织状态话题-日统计数据 - //机关日表里三种类型数据之和就是话题总量,讨论中数量与热议中不是一个概念,热议中=总量-关闭数-屏蔽数-转议题数 + //机关日表里三种类型数据之和就是话题总量,讨论中数量与热议中不是一个概念 List topic = dataStatsDao.getSubAgencyTopic(agencyIds, formDTO.getDateId()); //查询直属下级组织转议题话题-日统计数据表 List topicShiftIssue = dataStatsDao.getSubAgencyTopicShiftIssue(agencyIds, formDTO.getDateId()); + //查询直属下级组织热议中话题-机关日统计数据 + List hotdiscuss = dataStatsDao.getSubAgencyTopicHotDiscuss(agencyIds, formDTO.getDateId()); 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); + AtomicInteger hotdiscussTotal = new AtomicInteger(0); AtomicReference agencyName = new AtomicReference<>(""); topic.forEach(t -> { if (t.getAgencyId().equals(agencyId)) { @@ -421,9 +426,6 @@ public class DataStatsServiceImpl implements DataStatsService { if (t.getTopicStatus().equals("closed")) { closedTotal.set(t.getTopicCount()); } - if (t.getTopicStatus().equals("hidden")) { - hiddenTotal.set(t.getTopicCount()); - } } }); topicShiftIssue.forEach(t -> { @@ -431,6 +433,11 @@ public class DataStatsServiceImpl implements DataStatsService { shiftIssueTotal.addAndGet(t.getShiftedIssueTotal()); } }); + hotdiscuss.forEach(t -> { + if (t.getAgencyId().equals(agencyId)) { + hotdiscussTotal.addAndGet(t.getTopicCount()); + } + }); subAgencyList.forEach(sub -> { if (agencyId.equals(sub.getId())) { agencyName.set(sub.getAgencyName()); @@ -440,7 +447,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(hotdiscussTotal.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()))); @@ -504,12 +511,14 @@ public class DataStatsServiceImpl implements DataStatsService { List topic = dataStatsDao.getSubGridTopic(gridIds, formDTO.getDateId()); //查询网格层级转议题话题-日统计数据表 List topicShiftIssue = dataStatsDao.getSubGridTopicShiftIssue(gridIds, formDTO.getDateId()); + //查询网格层级热议中话题-日统计数据 + List hotdiscuss = dataStatsDao.getSubGridTopicHotDiscuss(gridIds, formDTO.getDateId()); 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); + AtomicInteger hotdiscussTotal = new AtomicInteger(0); AtomicReference gridName = new AtomicReference<>(""); topic.forEach(t -> { if (t.getGridId().equals(gridId)) { @@ -517,9 +526,6 @@ public class DataStatsServiceImpl implements DataStatsService { if (t.getTopicStatus().equals("closed")) { closedTotal.set(t.getTopicCount()); } - if (t.getTopicStatus().equals("hidden")) { - hiddenTotal.set(t.getTopicCount()); - } } }); topicShiftIssue.forEach(t -> { @@ -527,6 +533,11 @@ public class DataStatsServiceImpl implements DataStatsService { shiftIssueTotal.addAndGet(t.getShiftedIssueTotal()); } }); + hotdiscuss.forEach(t -> { + if (t.getGridId().equals(gridId)) { + hotdiscussTotal.addAndGet(t.getTopicCount()); + } + }); gridList.forEach(sub -> { if (gridId.equals(sub.getId())) { gridName.set(sub.getGridName()); @@ -536,7 +547,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(hotdiscussTotal.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()))); diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml index 06967cceab..4096010837 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml @@ -58,6 +58,19 @@ LIMIT 1 + + + + + +