From 598828cad6ecc0755aadab06b678551c6dfc4a71 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Fri, 14 May 2021 17:39:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E6=95=B0=E6=8D=AE=E9=83=A8?= =?UTF-8?q?=E5=88=86=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3=E5=8F=8A=E5=B0=8F?= =?UTF-8?q?=E7=BB=84=E6=80=BB=E6=95=B0=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/datastats/form/SubAgencyFormDTO.java | 12 + .../dto/datastats/form/SubGridFormDTO.java | 12 + .../result/SubAgencyGroupResultDTO.java | 33 ++ .../result/SubAgencyIssueResultDTO.java | 37 ++ .../result/SubAgencyProjectResultDTO.java | 33 ++ .../result/SubAgencyTopicResultDTO.java | 37 ++ .../result/SubGridGroupResultDTO.java | 33 ++ .../result/SubGridIssueResultDTO.java | 37 ++ .../result/SubGridProjectResultDTO.java | 33 ++ .../result/SubGridTopicResultDTO.java | 37 ++ .../controller/DataStatsController.java | 92 +++- .../dataaggre/dao/datastats/DataStatsDao.java | 69 ++- .../service/datastats/DataStatsService.java | 62 ++- .../datastats/impl/DataStatsServiceImpl.java | 438 +++++++++++++++++- .../mapper/datastats/DatsStatsDao.xml | 172 ++++++- .../impl/FactOriginExtractServiceImpl.java | 33 ++ 16 files changed, 1148 insertions(+), 22 deletions(-) create mode 100644 epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubAgencyGroupResultDTO.java create mode 100644 epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubAgencyIssueResultDTO.java create mode 100644 epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubAgencyProjectResultDTO.java create mode 100644 epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubAgencyTopicResultDTO.java create mode 100644 epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubGridGroupResultDTO.java create mode 100644 epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubGridIssueResultDTO.java create mode 100644 epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubGridProjectResultDTO.java create mode 100644 epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubGridTopicResultDTO.java 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 c70db44b6e..a02a39456c 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 @@ -25,4 +25,16 @@ public class SubAgencyFormDTO implements Serializable { private String dateId; public interface Agency extends CustomerClientShowGroup{} + @Data + public static class Topic implements Serializable { + //组织Id + private String agencyId; + //话题数量 + private Integer topicCount; + //话题状态 已关闭:closed、已屏蔽:hidden、 讨论中:discussing + private String topicStatus; + //话题已转议题数量 + private Integer shiftedIssueTotal; + } + } 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 e21141e22a..d7da58385e 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 @@ -25,4 +25,16 @@ public class SubGridFormDTO implements Serializable { private String dateId; public interface Agency extends CustomerClientShowGroup{} + @Data + public static class Topic implements Serializable { + //网格Id + private String gridId; + //话题数量 + private Integer topicCount; + //话题状态 已关闭:closed、已屏蔽:hidden、 讨论中:discussing + private String topicStatus; + //话题已转议题数量 + private Integer shiftedIssueTotal; + } + } diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubAgencyGroupResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubAgencyGroupResultDTO.java new file mode 100644 index 0000000000..144368c26e --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubAgencyGroupResultDTO.java @@ -0,0 +1,33 @@ +package com.epmet.dataaggre.dto.datastats.result; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @Description 基础数据-查询当前组织的直属下级组织群组数据-接口返参 + * @Auth sun + */ +@Data +public class SubAgencyGroupResultDTO implements Serializable { + private static final long serialVersionUID = 466974582608407121L; + @JsonIgnore + BigDecimal bi = new BigDecimal(0); + //组织Id + private String agencyId; + //组织名称 + private String agencyName; + //党群小组总数 + private Integer groupTotal = 0; + //楼院小组总数 + private Integer ordinaryTotal = 0; + //楼院小组总数占比 + private BigDecimal ordinaryRatio = bi; + //支部小组总数 + private Integer branchTotal = 0; + //支部小组总数占比 + private BigDecimal branchRatio = bi; + +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubAgencyIssueResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubAgencyIssueResultDTO.java new file mode 100644 index 0000000000..5bece9dab4 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubAgencyIssueResultDTO.java @@ -0,0 +1,37 @@ +package com.epmet.dataaggre.dto.datastats.result; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @Description 基础数据-查询当前组织的直属下级组织议题数据-接口返参 + * @Auth sun + */ +@Data +public class SubAgencyIssueResultDTO implements Serializable { + private static final long serialVersionUID = 466974582608407121L; + @JsonIgnore + BigDecimal bi = new BigDecimal(0); + //组织Id + private String agencyId; + //组织名称 + private String agencyName; + //议题总数 + private Integer issueTotal = 0; + //表决中总数 + private Integer votingTotal = 0; + //表决中总数占比 + private BigDecimal votingRatio = bi; + //已处理总数 + private Integer closedIssueTotal = 0; + //已处理总数占比 + private BigDecimal closedIssueRatio = bi; + //已转项目总数 + private Integer shiftProjectTotal = 0; + //已转项目总数占比 + private BigDecimal shiftProjectRatio = bi; + +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubAgencyProjectResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubAgencyProjectResultDTO.java new file mode 100644 index 0000000000..33aa889ad4 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubAgencyProjectResultDTO.java @@ -0,0 +1,33 @@ +package com.epmet.dataaggre.dto.datastats.result; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @Description 基础数据-查询当前组织的直属下级组织项目数据-接口返参 + * @Auth sun + */ +@Data +public class SubAgencyProjectResultDTO implements Serializable { + private static final long serialVersionUID = 466974582608407121L; + @JsonIgnore + BigDecimal bi = new BigDecimal(0); + //组织Id + private String agencyId; + //组织名称 + private String agencyName; + //项目总数 + private Integer projectTotal = 0; + //处理中总数 + private Integer pendingTotal = 0; + //处理中总数占比 + private BigDecimal pendingRatio = bi; + //已结案总数 + private Integer closedProjectTotal = 0; + //已结案总数占比 + private BigDecimal closedProjectRatio = bi; + +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubAgencyTopicResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubAgencyTopicResultDTO.java new file mode 100644 index 0000000000..bad0896389 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubAgencyTopicResultDTO.java @@ -0,0 +1,37 @@ +package com.epmet.dataaggre.dto.datastats.result; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @Description 基础数据-查询当前组织的直属下级组织话题数据-接口返参 + * @Auth sun + */ +@Data +public class SubAgencyTopicResultDTO implements Serializable { + private static final long serialVersionUID = 466974582608407121L; + @JsonIgnore + BigDecimal bi = new BigDecimal(0); + //组织Id + private String agencyId; + //组织名称 + private String agencyName; + //话题总数 + private Integer topicTotal = 0; + //热议中总数 + private Integer discussingTotal = 0; + //热议中总数占比 + private BigDecimal discussingRatio = bi; + //已处理总数 + private Integer closedTopicTotal = 0; + //已处理总数占比 + private BigDecimal closedTopicRatio = bi; + //转议题总数 + private Integer shiftIssueTotal = 0; + //转议题总数占比 + private BigDecimal shiftIssueRatio = bi; + +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubGridGroupResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubGridGroupResultDTO.java new file mode 100644 index 0000000000..eff29276d7 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubGridGroupResultDTO.java @@ -0,0 +1,33 @@ +package com.epmet.dataaggre.dto.datastats.result; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @Description 基础数据-查询当前组织下直属网格列表群组数据-接口返参 + * @Auth sun + */ +@Data +public class SubGridGroupResultDTO implements Serializable { + private static final long serialVersionUID = 466974582608407121L; + @JsonIgnore + BigDecimal bi = new BigDecimal(0); + //网格Id + private String gridId; + //网格名称 + private String gridName; + //党群小组总数 + private Integer groupTotal = 0; + //楼院小组总数 + private Integer ordinaryTotal = 0; + //楼院小组总数占比 + private BigDecimal ordinaryRatio = bi; + //支部小组总数 + private Integer branchTotal = 0; + //支部小组总数占比 + private BigDecimal branchRatio = bi; + +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubGridIssueResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubGridIssueResultDTO.java new file mode 100644 index 0000000000..e6131de173 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubGridIssueResultDTO.java @@ -0,0 +1,37 @@ +package com.epmet.dataaggre.dto.datastats.result; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @Description 基础数据-查询当前组织下直属网格列表议题数据-接口返参 + * @Auth sun + */ +@Data +public class SubGridIssueResultDTO implements Serializable { + private static final long serialVersionUID = 466974582608407121L; + @JsonIgnore + BigDecimal bi = new BigDecimal(0); + //网格Id + private String gridId; + //网格名称 + private String gridName; + //议题总数 + private Integer issueTotal = 0; + //表决中总数 + private Integer votingTotal = 0; + //表决中总数占比 + private BigDecimal votingRatio = bi; + //已处理总数 + private Integer closedIssueTotal = 0; + //已处理总数占比 + private BigDecimal closedIssueRatio = bi; + //已转项目总数 + private Integer shiftProjectTotal = 0; + //已转项目总数占比 + private BigDecimal shiftProjectRatio = bi; + +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubGridProjectResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubGridProjectResultDTO.java new file mode 100644 index 0000000000..d548cbe0a0 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubGridProjectResultDTO.java @@ -0,0 +1,33 @@ +package com.epmet.dataaggre.dto.datastats.result; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @Description 基础数据-查询当前组织下直属网格列表项目数据-接口返参 + * @Auth sun + */ +@Data +public class SubGridProjectResultDTO implements Serializable { + private static final long serialVersionUID = 466974582608407121L; + @JsonIgnore + BigDecimal bi = new BigDecimal(0); + //网格Id + private String gridId; + //网格名称 + private String gridName; + //项目总数 + private Integer projectTotal = 0; + //处理中总数 + private Integer pendingTotal = 0; + //处理中总数占比 + private BigDecimal pendingRatio = bi; + //已结案总数 + private Integer closedProjectTotal = 0; + //已结案总数占比 + private BigDecimal closedProjectRatio = bi; + +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubGridTopicResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubGridTopicResultDTO.java new file mode 100644 index 0000000000..88d4850f13 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubGridTopicResultDTO.java @@ -0,0 +1,37 @@ +package com.epmet.dataaggre.dto.datastats.result; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @Description 基础数据-查询当前组织下直属网格列表话题数据-接口返参 + * @Auth sun + */ +@Data +public class SubGridTopicResultDTO implements Serializable { + private static final long serialVersionUID = 466974582608407121L; + @JsonIgnore + BigDecimal bi = new BigDecimal(0); + //网格Id + private String gridId; + //网格名称 + private String gridName; + //话题总数 + private Integer topicTotal = 0; + //热议中总数 + private Integer discussingTotal = 0; + //热议中总数占比 + private BigDecimal discussingRatio = bi; + //已处理总数 + private Integer closedTopicTotal = 0; + //已处理总数占比 + private BigDecimal closedTopicRatio = bi; + //转议题总数 + private Integer shiftIssueTotal = 0; + //转议题总数占比 + private BigDecimal shiftIssueRatio = bi; + +} diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/DataStatsController.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/DataStatsController.java index 81188aee40..951696b919 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/DataStatsController.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/DataStatsController.java @@ -5,9 +5,7 @@ import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dataaggre.dto.datastats.form.AgenctBasicDataFormDTO; import com.epmet.dataaggre.dto.datastats.form.SubAgencyFormDTO; import com.epmet.dataaggre.dto.datastats.form.SubGridFormDTO; -import com.epmet.dataaggre.dto.datastats.result.AgencyBasicDataResultDTO; -import com.epmet.dataaggre.dto.datastats.result.SubAgencyUserResultDTO; -import com.epmet.dataaggre.dto.datastats.result.SubGridUserResultDTO; +import com.epmet.dataaggre.dto.datastats.result.*; import com.epmet.dataaggre.service.datastats.DataStatsService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; @@ -61,4 +59,92 @@ public class DataStatsController { return new Result>().ok(dataStatsService.subGridUser(formDTO)); } + /** + * @Param formDTO + * @Description 查询当前组织的直属下级组织群组数据 + * @author sun + */ + @PostMapping("subagencygroup") + public Result> subAgencyGroup(@RequestBody SubAgencyFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, SubAgencyFormDTO.Agency.class); + return new Result>().ok(dataStatsService.subAgencyGroup(formDTO)); + } + + /** + * @Param formDTO + * @Description 查询当前组织下直属网格列表群组数据 + * @author sun + */ + @PostMapping("subgridgroup") + public Result> subGridGroup(@RequestBody SubGridFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, SubGridFormDTO.Agency.class); + return new Result>().ok(dataStatsService.subGridGroup(formDTO)); + } + + /** + * @Param formDTO + * @Description 查询当前组织的直属下级组织话题数据 + * @author sun + */ + @PostMapping("subagencytopic") + public Result> subAgencyTopic(@RequestBody SubAgencyFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, SubAgencyFormDTO.Agency.class); + return new Result>().ok(dataStatsService.subAgencyTopic(formDTO)); + } + + /** + * @Param formDTO + * @Description 查询当前组织下直属网格列表话题数据 + * @author sun + */ + @PostMapping("subgridtopic") + public Result> subGridTopic(@RequestBody SubGridFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, SubGridFormDTO.Agency.class); + return new Result>().ok(dataStatsService.subGridTopic(formDTO)); + } + + /** + * @Param formDTO + * @Description 查询当前组织的直属下级组织议题数据 + * @author sun + */ + @PostMapping("subagencyissue") + public Result> subAgencyIssue(@RequestBody SubAgencyFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, SubAgencyFormDTO.Agency.class); + return new Result>().ok(dataStatsService.subAgencyIssue(formDTO)); + } + + /** + * @Param formDTO + * @Description 查询当前组织下直属网格列表议题数据 + * @author sun + */ + @PostMapping("subgridissue") + public Result> subGridIssue(@RequestBody SubGridFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, SubGridFormDTO.Agency.class); + return new Result>().ok(dataStatsService.subGridIssue(formDTO)); + } + + /** + * @Param formDTO + * @Description 查询当前组织的直属下级组织项目数据 + * @author sun + */ + @PostMapping("subagencyproject") + public Result> subAgencyProject(@RequestBody SubAgencyFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, SubAgencyFormDTO.Agency.class); + return new Result>().ok(dataStatsService.subAgencyProject(formDTO)); + } + + /** + * @Param formDTO + * @Description 查询当前组织下直属网格列表项目数据 + * @author sun + */ + @PostMapping("subgridproject") + public Result> subGridProject(@RequestBody SubGridFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, SubGridFormDTO.Agency.class); + return new Result>().ok(dataStatsService.subGridProject(formDTO)); + } + } 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 c0ef0d6e14..c96b053cba 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 @@ -17,9 +17,9 @@ package com.epmet.dataaggre.dao.datastats; -import com.epmet.dataaggre.dto.datastats.result.AgencyBasicDataResultDTO; -import com.epmet.dataaggre.dto.datastats.result.SubAgencyUserResultDTO; -import com.epmet.dataaggre.dto.datastats.result.SubGridUserResultDTO; +import com.epmet.dataaggre.dto.datastats.form.SubAgencyFormDTO; +import com.epmet.dataaggre.dto.datastats.form.SubGridFormDTO; +import com.epmet.dataaggre.dto.datastats.result.*; import com.epmet.dataaggre.entity.datastats.DimAgencyEntity; import com.epmet.dataaggre.entity.datastats.DimGridEntity; import org.apache.ibatis.annotations.Mapper; @@ -77,7 +77,7 @@ public interface DataStatsDao { List getSubAgencyList(@Param("pid") String pid); /** - * @Description 查询当前组织的直属下级组织信息 + * @Description 查询直属下级组织注册用户日统计数据,默认按用户总数降序 * @author sun */ List getSubAgencyUser(@Param("agencyIds") List agencyIds, @Param("dateId") String dateId); @@ -93,4 +93,65 @@ public interface DataStatsDao { * @author sun */ List getSubGridUser(@Param("gridIds") List gridIds, @Param("dateId") String dateId); + + /** + * @Description 查询直属下级组织小组日统计数据,默认按群组总数降序 + * @author sun + */ + List getSubAgencyGroup(@Param("agencyIds") List agencyIds, @Param("dateId") String dateId); + + /** + * @Description 查询网格层级小组日统计数据,默认按群组总数降序 + * @author sun + */ + List getSubGridGroup(@Param("gridIds") List gridIds, @Param("dateId") String dateId); + + /** + * @Description 查询直属下级组织状态话题-日统计数据 + * @author sun + */ + List getSubAgencyTopic(@Param("agencyIds") List agencyIds, @Param("dateId") String dateId); + + /** + * @Description 查询直属下级组织转议题话题-日统计数据表 + * @author sun + */ + List getSubAgencyTopicShiftIssue(@Param("agencyIds") List agencyIds, @Param("dateId") String dateId); + + /** + * @Description 查询网格层级状态话题-日统计数据 + * @author sun + */ + List getSubGridTopic(@Param("gridIds") List gridIds, @Param("dateId") String dateId); + + /** + * @Description 查询网格层级转议题话题-日统计数据表 + * @author sun + */ + List getSubGridTopicShiftIssue(@Param("gridIds") List gridIds, @Param("dateId") String dateId); + + /** + * @Description 查询直属下级组织议题日统计数据,默认按议题总数降序 + * @author sun + */ + List getSubAgencyIssue(@Param("agencyIds") List agencyIds, @Param("dateId") String dateId); + + /** + * @Description 查询网格层级议题日统计数据,默认按议题总数降序 + * @author sun + */ + List getSubGridIssue(@Param("gridIds") List gridIds, @Param("dateId") String dateId); + + /** + * @Description 查询直属下级组织项目日统计数据,默认按项目总数降序 + * @author sun + */ + List getSubAgencyProject(@Param("agencyIds") List agencyIds, @Param("dateId") String dateId); + + /** + * @Description 查询网格层级项目日统计数据,默认按项目总数降序 + * @author sun + */ + List getSubGridProject(@Param("gridIds") List gridIds, @Param("dateId") String dateId); + } \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java index a69361e18a..6eb826dc8d 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java @@ -3,9 +3,7 @@ package com.epmet.dataaggre.service.datastats; import com.epmet.dataaggre.dto.datastats.form.AgenctBasicDataFormDTO; import com.epmet.dataaggre.dto.datastats.form.SubAgencyFormDTO; import com.epmet.dataaggre.dto.datastats.form.SubGridFormDTO; -import com.epmet.dataaggre.dto.datastats.result.AgencyBasicDataResultDTO; -import com.epmet.dataaggre.dto.datastats.result.SubAgencyUserResultDTO; -import com.epmet.dataaggre.dto.datastats.result.SubGridUserResultDTO; +import com.epmet.dataaggre.dto.datastats.result.*; import java.util.List; @@ -35,4 +33,62 @@ public interface DataStatsService { * @author sun */ List subGridUser(SubGridFormDTO formDTO); + + /** + * @Param formDTO + * @Description 查询当前组织的直属下级组织群组数据 + * @author sun + */ + List subAgencyGroup(SubAgencyFormDTO formDTO); + + /** + * @Param formDTO + * @Description 查询当前组织下直属网格列表群组数据 + * @author sun + */ + List subGridGroup(SubGridFormDTO formDTO); + + /** + * @Param formDTO + * @Description 查询当前组织的直属下级组织话题数据 + * @author sun + * @return + */ + List subAgencyTopic(SubAgencyFormDTO formDTO); + + /** + * @Param formDTO + * @Description 查询当前组织下直属网格列表话题数据 + * @author sun + * @return + */ + List subGridTopic(SubGridFormDTO formDTO); + + /** + * @Param formDTO + * @Description 查询当前组织的直属下级组织议题数据 + * @author sun + */ + List subAgencyIssue(SubAgencyFormDTO formDTO); + + /** + * @Param formDTO + * @Description 查询当前组织下直属网格列表议题数据 + * @author sun + */ + List subGridIssue(SubGridFormDTO formDTO); + + /** + * @Param formDTO + * @Description 查询当前组织的直属下级组织项目数据 + * @author sun + */ + List subAgencyProject(SubAgencyFormDTO formDTO); + + /** + * @Param formDTO + * @Description 查询当前组织下直属网格列表项目数据 + * @author sun + */ + List subGridProject(SubGridFormDTO formDTO); } 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 0c4465b7fe..f289a4abc9 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 @@ -1,7 +1,6 @@ package com.epmet.dataaggre.service.datastats.impl; import com.epmet.commons.dynamic.datasource.annotation.DataSource; -import com.epmet.commons.mybatis.entity.BaseEpmetEntity; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.utils.DateUtils; import com.epmet.dataaggre.constant.DataSourceConstant; @@ -9,9 +8,7 @@ import com.epmet.dataaggre.dao.datastats.DataStatsDao; import com.epmet.dataaggre.dto.datastats.form.AgenctBasicDataFormDTO; import com.epmet.dataaggre.dto.datastats.form.SubAgencyFormDTO; import com.epmet.dataaggre.dto.datastats.form.SubGridFormDTO; -import com.epmet.dataaggre.dto.datastats.result.AgencyBasicDataResultDTO; -import com.epmet.dataaggre.dto.datastats.result.SubAgencyUserResultDTO; -import com.epmet.dataaggre.dto.datastats.result.SubGridUserResultDTO; +import com.epmet.dataaggre.dto.datastats.result.*; import com.epmet.dataaggre.entity.datastats.DimAgencyEntity; import com.epmet.dataaggre.entity.datastats.DimGridEntity; import com.epmet.dataaggre.service.datastats.DataStatsService; @@ -23,9 +20,8 @@ import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.text.NumberFormat; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; @@ -51,7 +47,7 @@ public class DataStatsServiceImpl implements DataStatsService { AgencyBasicDataResultDTO resultDTO = new AgencyBasicDataResultDTO(); resultDTO.setAgencyId(formDTO.getAgencyId()); NumberFormat numberFormat = NumberFormat.getInstance(); - numberFormat.setMaximumFractionDigits(NumConstant.SIX); + numberFormat.setMaximumFractionDigits(NumConstant.FOUR); //入参有日期的则按具体时间执行,没有的则按当前时间前一天执行 if (StringUtils.isBlank(formDTO.getDateId())) { @@ -72,7 +68,7 @@ public class DataStatsServiceImpl implements DataStatsService { //2.查询组织下最新群组日统计数据 AgencyBasicDataResultDTO group = dataStatsDao.getAgnecyGroup(formDTO.getAgencyId(), formDTO.getDateId()); - if (null != user) { + if (null != group) { resultDTO.setGroupTotal(group.getGroupTotal()); resultDTO.setOrdinaryTotal(group.getOrdinaryTotal()); resultDTO.setOrdinaryRatio(group.getOrdinaryTotal() == 0 || group.getGroupTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) group.getOrdinaryTotal() / (float) group.getGroupTotal()))); @@ -138,7 +134,7 @@ public class DataStatsServiceImpl implements DataStatsService { public List subAgencyUser(SubAgencyFormDTO formDTO) { List resultList = new ArrayList<>(); NumberFormat numberFormat = NumberFormat.getInstance(); - numberFormat.setMaximumFractionDigits(NumConstant.SIX); + numberFormat.setMaximumFractionDigits(NumConstant.FOUR); //入参有日期的则按具体时间执行,没有的则按当前时间前一天执行 if (StringUtils.isBlank(formDTO.getDateId())) { @@ -180,7 +176,7 @@ public class DataStatsServiceImpl implements DataStatsService { public List subGridUser(SubGridFormDTO formDTO) { List resultList = new ArrayList<>(); NumberFormat numberFormat = NumberFormat.getInstance(); - numberFormat.setMaximumFractionDigits(NumConstant.SIX); + numberFormat.setMaximumFractionDigits(NumConstant.FOUR); //入参有日期的则按具体时间执行,没有的则按当前时间前一天执行 if (StringUtils.isBlank(formDTO.getDateId())) { @@ -213,4 +209,424 @@ public class DataStatsServiceImpl implements DataStatsService { return resultList; } + /** + * @Param formDTO + * @Description 查询当前组织的直属下级组织群组数据 + * @author sun + */ + @Override + public List subAgencyGroup(SubAgencyFormDTO formDTO) { + List resultList = new ArrayList<>(); + NumberFormat numberFormat = NumberFormat.getInstance(); + numberFormat.setMaximumFractionDigits(NumConstant.FOUR); + + //入参有日期的则按具体时间执行,没有的则按当前时间前一天执行 + if (StringUtils.isBlank(formDTO.getDateId())) { + Date yesterday = DateUtils.addDateDays(new Date(), -1); + SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD); + formDTO.setDateId(format.format(yesterday)); + } + + //1.查询当前组织的直属下级组织信息【机关维度】 + List subAgencyList = dataStatsDao.getSubAgencyList(formDTO.getAgencyId()); + if(subAgencyList.size() agencyIds = subAgencyList.stream().map(DimAgencyEntity::getId).collect(Collectors.toList()); + + //2.查询直属下级组织小组日统计数据,默认按群组总数降序 + resultList = dataStatsDao.getSubAgencyGroup(agencyIds, formDTO.getDateId()); + + //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())){ + re.setAgencyName(sub.getAgencyName()); + } + }); + }); + + return resultList; + } + + /** + * @Param formDTO + * @Description 查询当前组织下直属网格列表群组数据 + * @author sun + */ + @Override + public List subGridGroup(SubGridFormDTO formDTO) { + List resultList = new ArrayList<>(); + NumberFormat numberFormat = NumberFormat.getInstance(); + numberFormat.setMaximumFractionDigits(NumConstant.FOUR); + + //入参有日期的则按具体时间执行,没有的则按当前时间前一天执行 + if (StringUtils.isBlank(formDTO.getDateId())) { + Date yesterday = DateUtils.addDateDays(new Date(), -1); + SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD); + formDTO.setDateId(format.format(yesterday)); + } + + //1.查询组织直属网格列表【网格维度】 + List gridList = dataStatsDao.getSubGridList(formDTO.getAgencyId()); + if(gridList.size() gridIds = gridList.stream().map(DimGridEntity::getId).collect(Collectors.toList()); + + //2.查询网格层级小组日统计数据,默认按群组总数降序 + resultList = dataStatsDao.getSubGridGroup(gridIds, formDTO.getDateId()); + + //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()))); + gridList.forEach(sub->{ + if(re.getGridId().equals(sub.getId())){ + re.setGridName(sub.getGridName()); + } + }); + }); + + return resultList; + } + + /** + * @Param formDTO + * @Description 查询当前组织的直属下级组织话题数据 + * @author sun + * @return + */ + @Override + public List subAgencyTopic(SubAgencyFormDTO formDTO) { + List resultList = new ArrayList<>(); + NumberFormat numberFormat = NumberFormat.getInstance(); + numberFormat.setMaximumFractionDigits(NumConstant.FOUR); + + //入参有日期的则按具体时间执行,没有的则按当前时间前一天执行 + if (StringUtils.isBlank(formDTO.getDateId())) { + Date yesterday = DateUtils.addDateDays(new Date(), -1); + SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD); + formDTO.setDateId(format.format(yesterday)); + } + + //1.查询当前组织的直属下级组织信息【机关维度】 + List subAgencyList = dataStatsDao.getSubAgencyList(formDTO.getAgencyId()); + if(subAgencyList.size() agencyIds = subAgencyList.stream().map(DimAgencyEntity::getId).collect(Collectors.toList()); + + //2.查询直属下级组织状态话题-日统计数据 + //机关日表里三种类型数据之和就是话题总量,讨论中数量与热议中不是一个概念,热议中=总量-关闭数-屏蔽数-转议题数 + List topic = dataStatsDao.getSubAgencyTopic(agencyIds, formDTO.getDateId()); + //查询直属下级组织转议题话题-日统计数据表 + List topicShiftIssue = dataStatsDao.getSubAgencyTopicShiftIssue(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); + AtomicReference agencyName = new AtomicReference<>(""); + 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()); } + } + }); + topicShiftIssue.forEach(t->{ + if(t.getAgencyId().equals(agencyId)){ + shiftIssueTotal.addAndGet(t.getShiftedIssueTotal()); + } + }); + subAgencyList.forEach(sub->{ + if(agencyId.equals(sub.getId())){ + agencyName.set(sub.getAgencyName()); + } + }); + + resultDTO.setAgencyId(agencyId); + resultDTO.setAgencyName(agencyName.get()); + resultDTO.setTopicTotal(topicTotal.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()))); + resultDTO.setShiftIssueTotal(shiftIssueTotal.get()); + resultDTO.setShiftIssueRatio(resultDTO.getShiftIssueTotal() == 0 || resultDTO.getTopicTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) resultDTO.getShiftIssueTotal() / (float) resultDTO.getTopicTotal()))); + + resultList.add(resultDTO); + }); + + //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()); + } + }); + + return resultList; + } + + /** + * @Param formDTO + * @Description 查询当前组织下直属网格列表话题数据 + * @author sun + * @return + */ + @Override + public List subGridTopic(SubGridFormDTO formDTO) { + List resultList = new ArrayList<>(); + NumberFormat numberFormat = NumberFormat.getInstance(); + numberFormat.setMaximumFractionDigits(NumConstant.FOUR); + + //入参有日期的则按具体时间执行,没有的则按当前时间前一天执行 + if (StringUtils.isBlank(formDTO.getDateId())) { + Date yesterday = DateUtils.addDateDays(new Date(), -1); + SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD); + formDTO.setDateId(format.format(yesterday)); + } + + //1.查询组织直属网格列表【网格维度】 + List gridList = dataStatsDao.getSubGridList(formDTO.getAgencyId()); + if(gridList.size() gridIds = gridList.stream().map(DimGridEntity::getId).collect(Collectors.toList()); + + //2.查询网格层级话题数据 + //查询网格层级状态话题-日统计数据 机关日表里三种类型数据之和就是话题总量,讨论中数量与热议中不是一个概念,热议中=总量-关闭数-屏蔽数-转议题数 + List topic = dataStatsDao.getSubGridTopic(gridIds, formDTO.getDateId()); + //查询网格层级转议题话题-日统计数据表 + List topicShiftIssue = dataStatsDao.getSubGridTopicShiftIssue(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); + AtomicReference gridName = new AtomicReference<>(""); + 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()); } + } + }); + topicShiftIssue.forEach(t->{ + if(t.getGridId().equals(gridId)){ + shiftIssueTotal.addAndGet(t.getShiftedIssueTotal()); + } + }); + gridList.forEach(sub->{ + if(gridId.equals(sub.getId())){ + gridName.set(sub.getGridName()); + } + }); + + resultDTO.setGridId(gridId); + resultDTO.setGridName(gridName.get()); + resultDTO.setTopicTotal(topicTotal.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()))); + resultDTO.setShiftIssueTotal(shiftIssueTotal.get()); + resultDTO.setShiftIssueRatio(resultDTO.getShiftIssueTotal() == 0 || resultDTO.getTopicTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) resultDTO.getShiftIssueTotal() / (float) resultDTO.getTopicTotal()))); + + resultList.add(resultDTO); + }); + + //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()); + } + }); + + return resultList; + } + + /** + * @Param formDTO + * @Description 查询当前组织的直属下级组织议题数据 + * @author sun + */ + @Override + public List subAgencyIssue(SubAgencyFormDTO formDTO) { + List resultList = new ArrayList<>(); + NumberFormat numberFormat = NumberFormat.getInstance(); + numberFormat.setMaximumFractionDigits(NumConstant.FOUR); + + //入参有日期的则按具体时间执行,没有的则按当前时间前一天执行 + if (StringUtils.isBlank(formDTO.getDateId())) { + Date yesterday = DateUtils.addDateDays(new Date(), -1); + SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD); + formDTO.setDateId(format.format(yesterday)); + } + + //1.查询当前组织的直属下级组织信息【机关维度】 + List subAgencyList = dataStatsDao.getSubAgencyList(formDTO.getAgencyId()); + if(subAgencyList.size() agencyIds = subAgencyList.stream().map(DimAgencyEntity::getId).collect(Collectors.toList()); + + //2.查询直属下级组织议题日统计数据,默认按议题总数降序 + resultList = dataStatsDao.getSubAgencyIssue(agencyIds, formDTO.getDateId()); + + //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())){ + re.setAgencyName(sub.getAgencyName()); + } + }); + }); + + return resultList; + } + + /** + * @Param formDTO + * @Description 查询当前组织下直属网格列表议题数据 + * @author sun + */ + @Override + public List subGridIssue(SubGridFormDTO formDTO) { + List resultList = new ArrayList<>(); + NumberFormat numberFormat = NumberFormat.getInstance(); + numberFormat.setMaximumFractionDigits(NumConstant.FOUR); + + //入参有日期的则按具体时间执行,没有的则按当前时间前一天执行 + if (StringUtils.isBlank(formDTO.getDateId())) { + Date yesterday = DateUtils.addDateDays(new Date(), -1); + SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD); + formDTO.setDateId(format.format(yesterday)); + } + + //1.查询组织直属网格列表【网格维度】 + List gridList = dataStatsDao.getSubGridList(formDTO.getAgencyId()); + if(gridList.size() gridIds = gridList.stream().map(DimGridEntity::getId).collect(Collectors.toList()); + + //2.查询网格层级议题日统计数据,默认按议题总数降序 + resultList = dataStatsDao.getSubGridIssue(gridIds, formDTO.getDateId()); + + //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())){ + re.setGridName(sub.getGridName()); + } + }); + }); + + return resultList; + } + + /** + * @Param formDTO + * @Description 查询当前组织的直属下级组织项目数据 + * @author sun + */ + @Override + public List subAgencyProject(SubAgencyFormDTO formDTO) { + List resultList = new ArrayList<>(); + NumberFormat numberFormat = NumberFormat.getInstance(); + numberFormat.setMaximumFractionDigits(NumConstant.FOUR); + + //入参有日期的则按具体时间执行,没有的则按当前时间前一天执行 + if (StringUtils.isBlank(formDTO.getDateId())) { + Date yesterday = DateUtils.addDateDays(new Date(), -1); + SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD); + formDTO.setDateId(format.format(yesterday)); + } + + //1.查询当前组织的直属下级组织信息【机关维度】 + List subAgencyList = dataStatsDao.getSubAgencyList(formDTO.getAgencyId()); + if(subAgencyList.size() agencyIds = subAgencyList.stream().map(DimAgencyEntity::getId).collect(Collectors.toList()); + + //2.查询直属下级组织项目日统计数据,默认按项目总数降序 + resultList = dataStatsDao.getSubAgencyProject(agencyIds, formDTO.getDateId()); + + //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())){ + re.setAgencyName(sub.getAgencyName()); + } + }); + }); + + return resultList; + } + + /** + * @Param formDTO + * @Description 查询当前组织下直属网格列表项目数据 + * @author sun + */ + @Override + public List subGridProject(SubGridFormDTO formDTO) { + List resultList = new ArrayList<>(); + NumberFormat numberFormat = NumberFormat.getInstance(); + numberFormat.setMaximumFractionDigits(NumConstant.FOUR); + + //入参有日期的则按具体时间执行,没有的则按当前时间前一天执行 + if (StringUtils.isBlank(formDTO.getDateId())) { + Date yesterday = DateUtils.addDateDays(new Date(), -1); + SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD); + formDTO.setDateId(format.format(yesterday)); + } + + //1.查询组织直属网格列表【网格维度】 + List gridList = dataStatsDao.getSubGridList(formDTO.getAgencyId()); + if(gridList.size() gridIds = gridList.stream().map(DimGridEntity::getId).collect(Collectors.toList()); + + //2.查询网格层级项目日统计数据,默认按项目总数降序 + resultList = dataStatsDao.getSubGridProject(gridIds, formDTO.getDateId()); + + //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())){ + re.setGridName(sub.getGridName()); + } + }); + }); + + return resultList; + } + } 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 43ea7b7e85..06967cceab 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 @@ -65,7 +65,7 @@ closed_total AS closedIssueTotal, shift_project_total AS shiftProjectTotal FROM - fact_issue_agency_daily fiad + fact_issue_agency_daily WHERE del_flag = '0' AND agency_id = #{agencyId} @@ -144,4 +144,174 @@ reg_total DESC + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginExtractServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginExtractServiceImpl.java index 9b8a74548e..62a4950f7b 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginExtractServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginExtractServiceImpl.java @@ -5,7 +5,9 @@ import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.DateUtils; import com.epmet.dto.extract.form.ExtractOriginFormDTO; +import com.epmet.dto.group.form.GroupTotalFormDTO; import com.epmet.dto.stats.form.CustomerIdAndDateIdFormDTO; +import com.epmet.service.StatsGroupService; import com.epmet.service.evaluationindex.extract.todata.*; import com.epmet.service.stats.DimCustomerPartymemberService; import com.epmet.service.stats.DimCustomerService; @@ -50,6 +52,8 @@ public class FactOriginExtractServiceImpl implements FactOriginExtractService { private FactOriginProjectCategoryDailyService originProjectCategoryDailyService; @Autowired private FactGroupActDailyService factGroupActDailyService; + @Autowired + private StatsGroupService statsGroupService; @Override @@ -229,6 +233,35 @@ public class FactOriginExtractServiceImpl implements FactOriginExtractService { } }); + //网格、组织小组总数日统计 + threadPool.submit(() -> { + GroupTotalFormDTO formDTO = new GroupTotalFormDTO(); + formDTO.setCustomerId(param.getCustomerId()); + if (!isRange) { + formDTO.setDateId(param.getDateId()); + try { + statsGroupService.gridGroupTotal(formDTO); + } catch (Exception e) { + log.error("小组总数-网格日统计计算错误,参数:" + JSON.toJSONString(formDTO), e); + } + try { + statsGroupService.agencyGroupTotal(formDTO); + } catch (Exception e) { + log.error("小组总数-机关日统计计算错误,参数:" + JSON.toJSONString(formDTO), e); + } + } else { + try { + statsGroupService.gridGroupTotal(formDTO); + } catch (Exception e) { + log.error("小组总数-网格日统计计算错误,参数:" + JSON.toJSONString(formDTO), e); + } + try { + statsGroupService.agencyGroupTotal(formDTO); + } catch (Exception e) { + log.error("小组总数-机关日统计计算错误,参数:" + JSON.toJSONString(formDTO), e); + } + } + }); submitProjectRelationData(param, finalDaysBetween); }