From abc72c6be96212ebfa0f54a612492418ce9d5475 Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Tue, 18 May 2021 10:24:49 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E5=B0=8F=E7=BB=84=E6=88=90=E5=91=98?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=98=AF=E5=90=A6=E5=85=9A=E5=91=98=E8=BA=AB?= =?UTF-8?q?=E4=BB=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feign/DataStatisticalOpenFeignClient.java | 20 ++++++++ ...ataStatisticalOpenFeignClientFallBack.java | 26 ++++++++++ .../StatsPartyMemberVanguardController.java | 49 +++++++++++++++++++ .../StatsPartyMemberVanguardService.java | 29 +++++++++++ .../StatsPartyMemberVanguardServiceImpl.java | 47 ++++++++++++++++++ .../task/StatsPartyMemberVanguardTask.java | 46 +++++++++++++++++ 6 files changed, 217 insertions(+) create mode 100644 epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/StatsPartyMemberVanguardController.java create mode 100644 epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/StatsPartyMemberVanguardService.java create mode 100644 epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/StatsPartyMemberVanguardServiceImpl.java create mode 100644 epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/StatsPartyMemberVanguardTask.java diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/feign/DataStatisticalOpenFeignClient.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/feign/DataStatisticalOpenFeignClient.java index 27a471f2d4..e6a46879f4 100644 --- a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/feign/DataStatisticalOpenFeignClient.java +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/feign/DataStatisticalOpenFeignClient.java @@ -236,4 +236,24 @@ public interface DataStatisticalOpenFeignClient { @PostMapping(value = "/data/stats/indexdict/initCustomerIndex") Result initCustomerIndex(@RequestBody InitCustomerIndexForm formDTO); + /** + * 党员先锋统计-机关 + * @author zhaoqifeng + * @date 2021/5/18 9:26 + * @param formDTO + * @return com.epmet.commons.tools.utils.Result + */ + @PostMapping("/data/stats/vanguard/agencyvanguardstats") + Result agencyVanguardStats(StatsFormDTO formDTO); + + /** + * 党员先锋统计-网格 + * @author zhaoqifeng + * @date 2021/5/18 9:27 + * @param formDTO + * @return com.epmet.commons.tools.utils.Result + */ + @PostMapping("/data/stats/vanguard/gridvanguardstats") + Result gridVanguardStats(StatsFormDTO formDTO); + } diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/feign/impl/DataStatisticalOpenFeignClientFallBack.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/feign/impl/DataStatisticalOpenFeignClientFallBack.java index 88574dbd8d..d842746b35 100644 --- a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/feign/impl/DataStatisticalOpenFeignClientFallBack.java +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/feign/impl/DataStatisticalOpenFeignClientFallBack.java @@ -230,4 +230,30 @@ public class DataStatisticalOpenFeignClientFallBack implements DataStatisticalOp public Result initCustomerIndex(InitCustomerIndexForm formDTO) { return ModuleUtils.feignConError(ServiceConstant.DATA_STATISTICAL_SERVER, "initCustomerIndex", formDTO); } + + /** + * 党员先锋统计-机关 + * + * @param formDTO + * @return com.epmet.commons.tools.utils.Result + * @author zhaoqifeng + * @date 2021/5/18 9:26 + */ + @Override + public Result agencyVanguardStats(StatsFormDTO formDTO) { + return ModuleUtils.feignConError(ServiceConstant.DATA_STATISTICAL_SERVER, "agencyVanguardStats", formDTO); + } + + /** + * 党员先锋统计-网格 + * + * @param formDTO + * @return com.epmet.commons.tools.utils.Result + * @author zhaoqifeng + * @date 2021/5/18 9:27 + */ + @Override + public Result gridVanguardStats(StatsFormDTO formDTO) { + return ModuleUtils.feignConError(ServiceConstant.DATA_STATISTICAL_SERVER, "gridVanguardStats", formDTO); + } } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/StatsPartyMemberVanguardController.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/StatsPartyMemberVanguardController.java new file mode 100644 index 0000000000..a8dd3c8892 --- /dev/null +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/StatsPartyMemberVanguardController.java @@ -0,0 +1,49 @@ +package com.epmet.controller; + +import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.StatsFormDTO; +import com.epmet.service.StatsPartyMemberVanguardService; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * @author zhaoqifeng + * @dscription + * @date 2021/5/18 9:23 + */ +@RequestMapping("vanguard") +@RestController +public class StatsPartyMemberVanguardController { + @Resource + private StatsPartyMemberVanguardService statsPartyMemberVanguardService; + + /** + * 党员先锋统计-机关 + * @author zhaoqifeng + * @date 2021/5/18 9:26 + * @param formDTO + * @return com.epmet.commons.tools.utils.Result + */ + @PostMapping("agencyvanguardstats") + public Result agencyVanguardStats(StatsFormDTO formDTO) { + statsPartyMemberVanguardService.agencyStats(formDTO); + return new Result(); + } + + /** + * 党员先锋统计-网格 + * @author zhaoqifeng + * @date 2021/5/18 9:27 + * @param formDTO + * @return com.epmet.commons.tools.utils.Result + */ + @PostMapping("gridvanguardstats") + public Result gridVanguardStats(StatsFormDTO formDTO) { + statsPartyMemberVanguardService.gridStats(formDTO); + return new Result(); + } + +} diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/StatsPartyMemberVanguardService.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/StatsPartyMemberVanguardService.java new file mode 100644 index 0000000000..d6c0543b9c --- /dev/null +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/StatsPartyMemberVanguardService.java @@ -0,0 +1,29 @@ +package com.epmet.service; + +import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.StatsFormDTO; + +/** + * @author zhaoqifeng + * @dscription + * @date 2021/5/18 9:56 + */ +public interface StatsPartyMemberVanguardService { + /** + * 党员先锋统计-机关 + * @author zhaoqifeng + * @date 2021/5/18 9:58 + * @param params + * @return com.epmet.commons.tools.utils.Result + */ + Result agencyVanguardStats(StatsFormDTO params); + + /** + * 党员先锋统计-网格 + * @author zhaoqifeng + * @date 2021/5/18 9:58 + * @param params + * @return com.epmet.commons.tools.utils.Result + */ + Result gridVanguardStats(StatsFormDTO params); +} diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/StatsPartyMemberVanguardServiceImpl.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/StatsPartyMemberVanguardServiceImpl.java new file mode 100644 index 0000000000..0db94fcfb7 --- /dev/null +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/StatsPartyMemberVanguardServiceImpl.java @@ -0,0 +1,47 @@ +package com.epmet.service.impl; + +import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.StatsFormDTO; +import com.epmet.feign.DataStatisticalOpenFeignClient; +import com.epmet.service.StatsPartyMemberVanguardService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * @author zhaoqifeng + * @dscription + * @date 2021/5/18 9:56 + */ +@Service +public class StatsPartyMemberVanguardServiceImpl implements StatsPartyMemberVanguardService { + @Resource + private DataStatisticalOpenFeignClient dataStatisticalOpenFeignClient; + + + /** + * 党员先锋统计-机关 + * + * @param params + * @return com.epmet.commons.tools.utils.Result + * @author zhaoqifeng + * @date 2021/5/18 9:58 + */ + @Override + public Result agencyVanguardStats(StatsFormDTO params) { + return dataStatisticalOpenFeignClient.agencyVanguardStats(params); + } + + /** + * 党员先锋统计-网格 + * + * @param params + * @return com.epmet.commons.tools.utils.Result + * @author zhaoqifeng + * @date 2021/5/18 9:58 + */ + @Override + public Result gridVanguardStats(StatsFormDTO params) { + return dataStatisticalOpenFeignClient.gridVanguardStats(params); + } +} diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/StatsPartyMemberVanguardTask.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/StatsPartyMemberVanguardTask.java new file mode 100644 index 0000000000..8972bd1832 --- /dev/null +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/StatsPartyMemberVanguardTask.java @@ -0,0 +1,46 @@ +package com.epmet.task; + +import com.alibaba.fastjson.JSON; +import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.StatsFormDTO; +import com.epmet.service.StatsPartyMemberVanguardService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * @author zhaoqifeng + * @dscription + * @date 2021/5/18 9:55 + */ +@Component("statsVanguardTask") +@Slf4j +public class StatsPartyMemberVanguardTask implements ITask { + + @Resource + private StatsPartyMemberVanguardService statsPartyMemberVanguardService; + + @Override + public void run(String params) { + log.info("statsVanguardTask定时任务正在执行,参数为:{}", params); + StatsFormDTO statsFormDTO = new StatsFormDTO(); + if (StringUtils.isNotBlank(params)) { + statsFormDTO = JSON.parseObject(params, StatsFormDTO.class); + } + Result result = statsPartyMemberVanguardService.agencyVanguardStats(statsFormDTO); + if (result.success()) { + log.info("statsVanguardTask组织级别定时任务执行成功"); + } else { + log.error("statsVanguardTask组织级别定时任务执行失败:" + result.getMsg()); + } + + result = statsPartyMemberVanguardService.gridVanguardStats(statsFormDTO); + if (result.success()) { + log.info("statsVanguardTask网格级别定时任务执行成功"); + } else { + log.error("statsVanguardTask网格级别定时任务执行失败:" + result.getMsg()); + } + } +} From fc195cdf7972ac3df74380ed4a2dc788318cca36 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Tue, 18 May 2021 10:50:07 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E7=83=AD=E8=AE=AE=E4=B8=AD=E8=AF=9D?= =?UTF-8?q?=E9=A2=98=E7=BD=91=E6=A0=BC=E3=80=81=E6=9C=BA=E5=85=B3=E6=97=A5?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E7=A8=8B=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FactTopicHotdiscussAgencyDailyDTO.java | 126 +++++++++ .../FactTopicHotdiscussGridDailyDTO.java | 126 +++++++++ .../stats/topic/form/TopicStatusFormDTO.java | 24 ++ .../topic/result/TopicListResultDTO.java | 39 +++ .../controller/StatsTopicController.java | 23 ++ .../FactTopicHotdiscussAgencyDailyDao.java | 38 +++ .../FactTopicHotdiscussGridDailyDao.java | 38 +++ .../java/com/epmet/dao/topic/TopicDao.java | 7 + .../FactTopicHotdiscussAgencyDailyEntity.java | 96 +++++++ .../FactTopicHotdiscussGridDailyEntity.java | 96 +++++++ .../com/epmet/service/StatsTopicService.java | 13 + .../impl/FactOriginExtractServiceImpl.java | 34 +++ .../service/impl/StatsGroupServiceImpl.java | 6 +- .../service/impl/StatsTopicServiceImpl.java | 250 +++++++++++++++++- ...FactTopicHotdiscussAgencyDailyService.java | 101 +++++++ .../FactTopicHotdiscussGridDailyService.java | 101 +++++++ ...TopicHotdiscussAgencyDailyServiceImpl.java | 109 ++++++++ ...ctTopicHotdiscussGridDailyServiceImpl.java | 109 ++++++++ .../com/epmet/service/topic/TopicService.java | 7 + .../service/topic/impl/TopicServiceImpl.java | 11 + .../FactTopicHotdiscussAgencyDailyDao.xml | 15 ++ .../stats/FactTopicHotdiscussGridDailyDao.xml | 15 ++ .../main/resources/mapper/topic/TopicDao.xml | 19 ++ 23 files changed, 1392 insertions(+), 11 deletions(-) create mode 100644 epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/topic/FactTopicHotdiscussAgencyDailyDTO.java create mode 100644 epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/topic/FactTopicHotdiscussGridDailyDTO.java create mode 100644 epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/topic/form/TopicStatusFormDTO.java create mode 100644 epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/topic/result/TopicListResultDTO.java create mode 100644 epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/FactTopicHotdiscussAgencyDailyDao.java create mode 100644 epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/FactTopicHotdiscussGridDailyDao.java create mode 100644 epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/stats/FactTopicHotdiscussAgencyDailyEntity.java create mode 100644 epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/stats/FactTopicHotdiscussGridDailyEntity.java create mode 100644 epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/FactTopicHotdiscussAgencyDailyService.java create mode 100644 epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/FactTopicHotdiscussGridDailyService.java create mode 100644 epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/FactTopicHotdiscussAgencyDailyServiceImpl.java create mode 100644 epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/FactTopicHotdiscussGridDailyServiceImpl.java create mode 100644 epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactTopicHotdiscussAgencyDailyDao.xml create mode 100644 epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactTopicHotdiscussGridDailyDao.xml diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/topic/FactTopicHotdiscussAgencyDailyDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/topic/FactTopicHotdiscussAgencyDailyDTO.java new file mode 100644 index 0000000000..c5c5eeaa21 --- /dev/null +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/topic/FactTopicHotdiscussAgencyDailyDTO.java @@ -0,0 +1,126 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.dto.stats.topic; + +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + + +/** + * 热议中话题机关日统计表【热议中指的没有被关闭、屏蔽、转议题的话题】 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-05-17 + */ +@Data +public class FactTopicHotdiscussAgencyDailyDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 唯一标识 + */ + private String id; + + /** + * 客户ID + */ + private String customerId; + + /** + * 机构ID 关联机关dm表 + */ + private String agencyId; + + /** + * 父级机关ID + */ + private String pid; + + /** + * 统计日期 关联日期dm表 + */ + private String dateId; + + /** + * 周ID + */ + private String weekId; + + /** + * 月ID + */ + private String monthId; + + /** + * 季度ID + */ + private String quarterId; + + /** + * 年ID + */ + private String yearId; + + /** + * 话题总数 + */ + private Integer topicTotal; + + /** + * 话题状态【热议中:hot_discuss】 + */ + private String status; + + /** + * 状态话题数量 + */ + private Integer topicCount; + + /** + * 删除标识 + */ + private String delFlag; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + +} \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/topic/FactTopicHotdiscussGridDailyDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/topic/FactTopicHotdiscussGridDailyDTO.java new file mode 100644 index 0000000000..340f07dc49 --- /dev/null +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/topic/FactTopicHotdiscussGridDailyDTO.java @@ -0,0 +1,126 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.dto.stats.topic; + +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + + +/** + * 热议中话题网格日统计表【热议中指的没有被关闭、屏蔽、转议题的话题】 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-05-17 + */ +@Data +public class FactTopicHotdiscussGridDailyDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 唯一标识 + */ + private String id; + + /** + * 客户ID + */ + private String customerId; + + /** + * 机关ID + */ + private String agencyId; + + /** + * 网格ID 关联网格dm表 + */ + private String gridId; + + /** + * 日期ID + */ + private String dateId; + + /** + * 周ID + */ + private String weekId; + + /** + * 月ID + */ + private String monthId; + + /** + * 季度ID + */ + private String quarterId; + + /** + * 年ID + */ + private String yearId; + + /** + * 话题总数 + */ + private Integer topicTotal; + + /** + * 话题状态【热议中:hot_discuss】 + */ + private String status; + + /** + * 状态话题数量 + */ + private Integer topicCount; + + /** + * 删除标识 + */ + private String delFlag; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + +} \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/topic/form/TopicStatusFormDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/topic/form/TopicStatusFormDTO.java new file mode 100644 index 0000000000..4fd7830330 --- /dev/null +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/topic/form/TopicStatusFormDTO.java @@ -0,0 +1,24 @@ +package com.epmet.dto.stats.topic.form; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author sun + * 热议中话题-网格、机关日统计-接口入参 + */ +@Data +public class TopicStatusFormDTO implements Serializable { + + private static final long serialVersionUID = -4527492073390715391L; + + /** + * 客户Id + */ + private String customerId = ""; + /** + * 需要执行的日期(格式:yyyyMMdd) + */ + private String dateId = ""; +} diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/topic/result/TopicListResultDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/topic/result/TopicListResultDTO.java new file mode 100644 index 0000000000..01c5f60075 --- /dev/null +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/topic/result/TopicListResultDTO.java @@ -0,0 +1,39 @@ +package com.epmet.dto.stats.topic.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author sun + * 热议中话题-网格、机关日统计-接口返参 + */ +@Data +public class TopicListResultDTO implements Serializable { + private static final long serialVersionUID = -7427128491727512781L; + + /** + * 客户Id + */ + private String customerId; + /** + * 话题Id + */ + private String topicId; + /** + * 网格id + */ + private String gridId; + /** + * 小组Id + */ + private String groupId; + /** + * 话题状态(讨论中 - discussing、 已屏蔽 - hidden、 已关闭 - closed) + */ + private String status; + /** + * 是否转为议题,0:false,1:true + * */ + private Boolean shiftIssue; +} diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/StatsTopicController.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/StatsTopicController.java index e76badc8a3..6fffd887bc 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/StatsTopicController.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/StatsTopicController.java @@ -2,6 +2,8 @@ package com.epmet.controller; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.StatsFormDTO; +import com.epmet.dto.group.form.GroupTotalFormDTO; +import com.epmet.dto.stats.topic.form.TopicStatusFormDTO; import com.epmet.service.StatsTopicService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; @@ -27,4 +29,25 @@ public class StatsTopicController { statsTopicService.partition(formDTO); return new Result(); } + + /** + * @Author sun + * @Description 热议中话题-网格日统计 + **/ + @PostMapping("gridtopicstatus") + public Result gridTopicStatus(@RequestBody(required = false) TopicStatusFormDTO formDTO) { + statsTopicService.gridTopicStatus(formDTO); + return new Result(); + } + + /** + * @Author sun + * @Description 热议中话题-机关日统计 + **/ + @PostMapping("agencytopicstatus") + public Result agencyTopicStatus(@RequestBody(required = false) TopicStatusFormDTO formDTO) { + statsTopicService.agencyTopicStatus(formDTO); + return new Result(); + } + } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/FactTopicHotdiscussAgencyDailyDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/FactTopicHotdiscussAgencyDailyDao.java new file mode 100644 index 0000000000..a0ea409d91 --- /dev/null +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/FactTopicHotdiscussAgencyDailyDao.java @@ -0,0 +1,38 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.dao.stats; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.entity.stats.FactTopicHotdiscussAgencyDailyEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * 热议中话题机关日统计表【热议中指的没有被关闭、屏蔽、转议题的话题】 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-05-17 + */ +@Mapper +public interface FactTopicHotdiscussAgencyDailyDao extends BaseDao { + + /** + * @Author sun + * @Description 根据客户Id、日维度Id批量物理删除一下可能存在的历史数据 + **/ + void delTopicAgency(FactTopicHotdiscussAgencyDailyEntity delEntity); +} \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/FactTopicHotdiscussGridDailyDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/FactTopicHotdiscussGridDailyDao.java new file mode 100644 index 0000000000..6a2237cee6 --- /dev/null +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/FactTopicHotdiscussGridDailyDao.java @@ -0,0 +1,38 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.dao.stats; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.entity.stats.FactTopicHotdiscussGridDailyEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * 热议中话题网格日统计表【热议中指的没有被关闭、屏蔽、转议题的话题】 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-05-17 + */ +@Mapper +public interface FactTopicHotdiscussGridDailyDao extends BaseDao { + + /** + * @Author sun + * @Description 根据客户Id、日维度Id批量物理删除一下可能存在的历史数据 + **/ + void delTopicGrid(FactTopicHotdiscussGridDailyEntity delEntity); +} \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/topic/TopicDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/topic/TopicDao.java index d9b11ddc6a..4f37200359 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/topic/TopicDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/topic/TopicDao.java @@ -11,6 +11,7 @@ import com.epmet.dto.group.result.TopicContentResultDTO; import com.epmet.dto.screen.ScreenProjectDataDTO; import com.epmet.dto.screen.ScreenProjectImgDataDTO; import com.epmet.dto.screen.form.ProjectSourceMapFormDTO; +import com.epmet.dto.stats.topic.result.TopicListResultDTO; import com.epmet.dto.topic.ResiTopicDTO; import com.epmet.dto.extract.result.TopicInfoResultDTO; import com.epmet.dto.topic.TopicOriginInfoDTO; @@ -142,4 +143,10 @@ public interface TopicDao { List initNewScreenProjectImgData(@Param("customerId") String customerId, @Param("list") List list); ResiTopicAndImgResultDTO getTopicAndImgs(@Param("topicId") String topicId); + + /** + * @Author sun + * @Description 根据客户Id和截止日期查询话题业务数据 + **/ + List selectTopicList(@Param("customerId") String customerId, @Param("dateId") String dateId); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/stats/FactTopicHotdiscussAgencyDailyEntity.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/stats/FactTopicHotdiscussAgencyDailyEntity.java new file mode 100644 index 0000000000..4590334147 --- /dev/null +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/stats/FactTopicHotdiscussAgencyDailyEntity.java @@ -0,0 +1,96 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.entity.stats; + +import com.baomidou.mybatisplus.annotation.TableName; + +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 热议中话题机关日统计表【热议中指的没有被关闭、屏蔽、转议题的话题】 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-05-17 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("fact_topic_hotdiscuss_agency_daily") +public class FactTopicHotdiscussAgencyDailyEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户ID + */ + private String customerId; + + /** + * 机构ID 关联机关dm表 + */ + private String agencyId; + + /** + * 父级机关ID + */ + private String pid; + + /** + * 统计日期 关联日期dm表 + */ + private String dateId; + + /** + * 周ID + */ + private String weekId; + + /** + * 月ID + */ + private String monthId; + + /** + * 季度ID + */ + private String quarterId; + + /** + * 年ID + */ + private String yearId; + + /** + * 话题总数 + */ + private Integer topicTotal; + + /** + * 话题状态【热议中:hot_discuss】 + */ + private String status; + + /** + * 状态话题数量 + */ + private Integer topicCount; + +} diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/stats/FactTopicHotdiscussGridDailyEntity.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/stats/FactTopicHotdiscussGridDailyEntity.java new file mode 100644 index 0000000000..9b1fde9b74 --- /dev/null +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/stats/FactTopicHotdiscussGridDailyEntity.java @@ -0,0 +1,96 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.entity.stats; + +import com.baomidou.mybatisplus.annotation.TableName; + +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 热议中话题网格日统计表【热议中指的没有被关闭、屏蔽、转议题的话题】 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-05-17 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("fact_topic_hotdiscuss_grid_daily") +public class FactTopicHotdiscussGridDailyEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户ID + */ + private String customerId; + + /** + * 机关ID + */ + private String agencyId; + + /** + * 网格ID 关联网格dm表 + */ + private String gridId; + + /** + * 日期ID + */ + private String dateId; + + /** + * 周ID + */ + private String weekId; + + /** + * 月ID + */ + private String monthId; + + /** + * 季度ID + */ + private String quarterId; + + /** + * 年ID + */ + private String yearId; + + /** + * 话题总数 + */ + private Integer topicTotal; + + /** + * 话题状态【热议中:hot_discuss】 + */ + private String status; + + /** + * 状态话题数量 + */ + private Integer topicCount; + +} diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/StatsTopicService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/StatsTopicService.java index 0c17e21420..8a6464c255 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/StatsTopicService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/StatsTopicService.java @@ -1,6 +1,7 @@ package com.epmet.service; import com.epmet.dto.StatsFormDTO; +import com.epmet.dto.stats.topic.form.TopicStatusFormDTO; /** * @Description 话题统计Service接口 @@ -18,4 +19,16 @@ public interface StatsTopicService { * @date 2020.06.28 14:38 **/ void partition(StatsFormDTO formDTO); + + /** + * @Author sun + * @Description 热议中话题-网格日统计 + **/ + void gridTopicStatus(TopicStatusFormDTO formDTO); + + /** + * @Author sun + * @Description 热议中话题-机关日统计 + **/ + void agencyTopicStatus(TopicStatusFormDTO formDTO); } 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 62a4950f7b..2ec8212d21 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 @@ -7,7 +7,9 @@ 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.dto.stats.topic.form.TopicStatusFormDTO; import com.epmet.service.StatsGroupService; +import com.epmet.service.StatsTopicService; import com.epmet.service.evaluationindex.extract.todata.*; import com.epmet.service.stats.DimCustomerPartymemberService; import com.epmet.service.stats.DimCustomerService; @@ -54,6 +56,8 @@ public class FactOriginExtractServiceImpl implements FactOriginExtractService { private FactGroupActDailyService factGroupActDailyService; @Autowired private StatsGroupService statsGroupService; + @Autowired + private StatsTopicService statsTopicService; @Override @@ -263,6 +267,36 @@ public class FactOriginExtractServiceImpl implements FactOriginExtractService { } }); + //热议中话题网格、机关日统计 + threadPool.submit(() -> { + TopicStatusFormDTO formDTO = new TopicStatusFormDTO(); + formDTO.setCustomerId(param.getCustomerId()); + if (!isRange) { + formDTO.setDateId(param.getDateId()); + try { + statsTopicService.gridTopicStatus(formDTO); + } catch (Exception e) { + log.error("热议中话题-网格日统计计算错误,参数:" + JSON.toJSONString(formDTO), e); + } + try { + statsTopicService.agencyTopicStatus(formDTO); + } catch (Exception e) { + log.error("热议中话题-机关日统计计算错误,参数:" + JSON.toJSONString(formDTO), e); + } + } else { + try { + statsTopicService.gridTopicStatus(formDTO); + } catch (Exception e) { + log.error("热议中话题-网格日统计计算错误,参数:" + JSON.toJSONString(formDTO), e); + } + try { + statsTopicService.agencyTopicStatus(formDTO); + } catch (Exception e) { + log.error("热议中话题-机关日统计计算错误,参数:" + JSON.toJSONString(formDTO), e); + } + } + }); + submitProjectRelationData(param, finalDaysBetween); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsGroupServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsGroupServiceImpl.java index f222a9ee8e..50382aa75e 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsGroupServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsGroupServiceImpl.java @@ -583,11 +583,11 @@ public class StatsGroupServiceImpl implements StatsGroupService { FactGroupTotalAgencyDailyEntity delEntity = new FactGroupTotalAgencyDailyEntity(); delEntity.setCustomerId(customerId); delEntity.setDateId(dimId.getDateId()); - log.info("StatsGroupServiceImpl.agencyGroupStats-根据客户Id、日维度Id批量删除小组总数网格日统计表数据,对应客户Id:" + customerId + ",日维度Id:" + dimId.getDateId()); + log.info("StatsGroupServiceImpl.agencyGroupStats-根据客户Id、日维度Id批量删除小组总数机关日统计表数据,对应客户Id:" + customerId + ",日维度Id:" + dimId.getDateId()); factGroupTotalAgencyDailyService.delDateGroupTotal(delEntity); - //5.2:批量保存网格日统计数据 - log.info("StatsGroupServiceImpl.agencyGroupStats-批量新增小组总数网格日统计表数据,对应客户Id:" + customerId + ",日维度Id:" + dimId.getDateId()); + //5.2:批量保存机关日统计数据 + log.info("StatsGroupServiceImpl.agencyGroupStats-批量新增小组总数机关日统计表数据,对应客户Id:" + customerId + ",日维度Id:" + dimId.getDateId()); factGroupTotalAgencyDailyService.insertBatch(list); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsTopicServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsTopicServiceImpl.java index 423c47174e..74e0c8615b 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsTopicServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsTopicServiceImpl.java @@ -6,12 +6,15 @@ import com.epmet.commons.tools.utils.DateUtils; import com.epmet.constant.ProjectConstant; import com.epmet.dto.AgencySubTreeDto; import com.epmet.dto.StatsFormDTO; +import com.epmet.dto.stats.DimAgencyDTO; import com.epmet.dto.stats.DimTopicStatusDTO; +import com.epmet.dto.stats.topic.form.TopicStatusFormDTO; +import com.epmet.dto.stats.topic.result.TopicListResultDTO; import com.epmet.dto.stats.topic.result.TopicStatisticalData; +import com.epmet.entity.evaluationindex.extract.FactOriginGroupMainDailyEntity; +import com.epmet.entity.stats.*; import com.epmet.service.StatsTopicService; -import com.epmet.service.stats.DimAgencyService; -import com.epmet.service.stats.DimCustomerService; -import com.epmet.service.stats.DimTopicStatusService; +import com.epmet.service.stats.*; import com.epmet.service.stats.topic.TopicStatisticalService; import com.epmet.service.topic.TopicService; import com.epmet.util.DimIdGenerator; @@ -23,7 +26,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import java.text.SimpleDateFormat; import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; /** * @Description 话题统计Service @@ -35,21 +40,22 @@ import java.util.*; public class StatsTopicServiceImpl implements StatsTopicService { protected static final Logger log = LoggerFactory.getLogger(StatsTopicServiceImpl.class); - @Autowired private DimCustomerService dimCustomerService; - @Autowired private DimAgencyService dimAgencyService; - @Autowired private DimTopicStatusService dimTopicStatusService; - @Autowired private TopicService topicService; - @Autowired private TopicStatisticalService topicStatisticalService; + @Autowired + private DimGridService dimGridService; + @Autowired + private FactTopicHotdiscussGridDailyService factTopicHotdiscussGridDailyService; + @Autowired + private FactTopicHotdiscussAgencyDailyService factTopicHotdiscussAgencyDailyService; /** * @param formDTO 如果目标日期为空,则自动计算为T-1天 @@ -122,4 +128,232 @@ public class StatsTopicServiceImpl implements StatsTopicService { } } + + /** + * @Author sun + * @Description 热议中话题-网格日统计 + **/ + @Override + public void gridTopicStatus(TopicStatusFormDTO formDTO) { + //入参有日期的则按具体时间执行,没有的则按当前时间前一天执行 + 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)); + } + //入参有客户Id的则按客户Id执行,没有的则全部客户都执行 + if (null != formDTO && StringUtils.isNotBlank(formDTO.getCustomerId())) { + log.info("热议中话题网格日统计数据,当前统计的客户Id:" + formDTO.getCustomerId()); + gridTopic(formDTO.getCustomerId(), formDTO.getDateId()); + } else { + int pageNo = 1; + int pageSize = 100; + List customerIdList = null; + do { + //获取有效客户列表 + customerIdList = dimCustomerService.selectCustomerIdPage(pageNo++, pageSize); + if (!CollectionUtils.isEmpty(customerIdList)) { + for (String customerId : customerIdList) { + try { + log.info("for循环统计热议中话题网格日统计数据,当前统计的客户Id:" + customerId); + //遍历统计每一个客户数据 + gridTopic(customerId, formDTO.getDateId()); + } catch (Exception e) { + log.error("热议中话题-网格日统计-程序错误,对应客户Id:" + customerId, e); + log.error("Error creating model JSON", e); + } + } + } + } while (!CollectionUtils.isEmpty(customerIdList) && customerIdList.size() == pageSize); + } + + } + + /** + * @Author sun + * @Description 热议中话题-网格日统计 + **/ + private void gridTopic(String customerId, String dateId) { + //1:查询各维度表Id,方便使用 + Date date = DateUtils.parseDate(dateId,DateUtils.DATE_PATTERN_YYYYMMDD); + DimIdGenerator.DimIdBean dimId = DimIdGenerator.getDimIdBean(date); + + //2:根据客户Id查询网格维度表数据 + log.info("StatsGroupServiceImpl.customerGridStats-根据客户Id查询网格维度数据,对应客户Id:" + customerId); + List dimGridList = dimGridService.getGridListByCustomerId(customerId); + + //3.根据客户Id查询客户下有效的话题数据,查询dateId之前的数据 + List list = topicService.getTopicList(customerId, dateId); + + //4.遍历封装数据 + List saveList = new ArrayList<>(); + dimGridList.forEach(grid->{ + FactTopicHotdiscussGridDailyEntity entity = new FactTopicHotdiscussGridDailyEntity(); + AtomicInteger total = new AtomicInteger(0); + AtomicInteger num = new AtomicInteger(0); + list.forEach(l->{ + if(grid.getId().equals(l.getGridId()) ){ + total.addAndGet(1); + if(l.getStatus().equals("discussing") && !l.getShiftIssue()){ + num.addAndGet(1); + } + } + }); + entity.setCustomerId(customerId); + entity.setAgencyId(grid.getAgencyId()); + entity.setGridId(grid.getId()); + entity.setDateId(dimId.getDateId()); + entity.setWeekId(dimId.getWeekId()); + entity.setMonthId(dimId.getMonthId()); + entity.setQuarterId(dimId.getQuarterId()); + entity.setYearId(dimId.getYearId()); + entity.setTopicTotal(total.get()); + entity.setStatus("hot_discuss"); + entity.setTopicCount(num.get()); + saveList.add(entity); + }); + + //5.批量插入数据库,先删后增的逻辑 + if (!CollectionUtils.isEmpty(saveList)) { + //5.1:根据客户Id、日维度Id批量物理删除一下可能存在的历史数据 + FactTopicHotdiscussGridDailyEntity delEntity = new FactTopicHotdiscussGridDailyEntity(); + delEntity.setCustomerId(customerId); + delEntity.setDateId(dimId.getDateId()); + factTopicHotdiscussGridDailyService.delTopicGrid(delEntity); + + //5.2:批量保存网格日统计数据 + log.info("StatsTopicServiceImpl.gridTopic-批量新增热议中话题网格日统计表数据,对应客户Id:" + customerId + ",日维度Id:" + dimId.getDateId()); + factTopicHotdiscussGridDailyService.insertBatch(saveList); + } + + } + + /** + * @Author sun + * @Description 热议中话题-机关日统计 + **/ + @Override + public void agencyTopicStatus(TopicStatusFormDTO formDTO) { + //入参有日期的则按具体时间执行,没有的则按当前时间前一天执行 + 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)); + } + //入参有客户Id的则按客户Id执行,没有的则全部客户都执行 + if (null != formDTO && StringUtils.isNotBlank(formDTO.getCustomerId())) { + log.info("单独统计客户组织下热议中话题日统计数据,当前统计的客户Id:" + formDTO.getCustomerId()); + agencyTopic(formDTO.getCustomerId(), formDTO.getDateId()); + } else { + int pageNo = 1; + int pageSize = 100; + List customerIdList = null; + do { + customerIdList = dimCustomerService.selectCustomerIdPage(pageNo++, pageSize); + if (!CollectionUtils.isEmpty(customerIdList)) { + for (String customerId : customerIdList) { + try { + log.info("for循环统计机关热议中话题日统计数据,当前统计的客户Id:" + customerId); + //遍历统计每一个客户数据 + agencyTopic(customerId, formDTO.getDateId()); + } catch (Exception e) { + log.error("热议中话题机关日统计程序错误,对应客户Id:" + customerId, e); + log.error("Error creating model JSON", e); + } + } + } + } while (!CollectionUtils.isEmpty(customerIdList) && customerIdList.size() == pageSize); + } + + } + + /** + * @Author sun + * @Description 热议中话题-机关日统计数据 + **/ + private void agencyTopic(String customerId, String dateId) { + //1:查询各维度表Id,方便使用 + Date date = DateUtils.parseDate(dateId,DateUtils.DATE_PATTERN_YYYYMMDD); + DimIdGenerator.DimIdBean dimId = DimIdGenerator.getDimIdBean(date); + + //2:根据客户Id查询机关维度表数据 + log.info("StatsTopicServiceImpl.agencyTopic-根据客户Id查询机关维度数据,对应客户Id:" + customerId); + DimAgencyDTO dimAgencyDTO = new DimAgencyDTO(); + dimAgencyDTO.setCustomerId(customerId); + List agencyList = dimAgencyService.getDimAgencyList(dimAgencyDTO); + + //3.根据客户Id查询网格维度表数据 + List gridList = dimGridService.getGridListByCustomerId(customerId); + + //4..根据客户Id查询客户下有效的话题数据,查询dateId之前的数据 + List groupList = topicService.getTopicList(customerId, dateId); + + List list = new ArrayList<>(); + //5.遍历组织维度数据分别计算每个组织下话题数据 + DimIdGenerator.DimIdBean finalDimId = dimId; + agencyList.forEach(agency->{ + FactTopicHotdiscussAgencyDailyEntity entity = new FactTopicHotdiscussAgencyDailyEntity(); + //5-1.汇总组织及所有下级组织列表 + Map map = new HashMap<>(); + map.put(agency.getId(), agency.getId()); + String subPids = ((null == agency.getPids() || "".equals(agency.getPids())) ? agency.getId() : agency.getPids() + ":" + agency.getId()); + agencyList.forEach(sub -> { + if (sub.getPids().contains(subPids)) { + map.put(sub.getId(), sub.getId()); + } + }); + + //5-2.汇总组织及下级所有的网格列表 + List agencyGridList = new ArrayList<>(); + gridList.forEach(grid->{ + if (map.containsKey(grid.getAgencyId())) { + agencyGridList.add(grid.getId()); + } + }); + + AtomicInteger total = new AtomicInteger(0); + AtomicInteger num = new AtomicInteger(0); + //5-3.根据汇总的网格列表统计对应的群组数据 + agencyGridList.forEach(gridId -> { + groupList.forEach(l -> { + if (gridId.equals(l.getGridId())) { + total.addAndGet(1); + if(l.getStatus().equals("discussing") && !l.getShiftIssue()){ + num.addAndGet(1); + } + } + }); + }); + //封装数据 + entity.setCustomerId(agency.getCustomerId()); + entity.setAgencyId(agency.getId()); + entity.setPid(agency.getPid()); + entity.setDateId(finalDimId.getDateId()); + entity.setWeekId(finalDimId.getWeekId()); + entity.setMonthId(finalDimId.getMonthId()); + entity.setQuarterId(finalDimId.getQuarterId()); + entity.setYearId(finalDimId.getYearId()); + entity.setTopicTotal(total.get()); + entity.setStatus("hot_discuss"); + entity.setTopicCount(num.get()); + list.add(entity); + }); + + //6.批量插入数据库,先删后增的逻辑 + if (!CollectionUtils.isEmpty(list)) { + //5.1:根据客户Id、日维度Id批量物理删除一下可能存在的历史数据 + FactTopicHotdiscussAgencyDailyEntity delEntity = new FactTopicHotdiscussAgencyDailyEntity(); + delEntity.setCustomerId(customerId); + delEntity.setDateId(dimId.getDateId()); + log.info("StatsTopicServiceImpl.agencyTopic-根据客户Id、日维度Id批量删除热议中话题机关日统计表数据,对应客户Id:" + customerId + ",日维度Id:" + dimId.getDateId()); + factTopicHotdiscussAgencyDailyService.delTopicAgency(delEntity); + + //5.2:批量保存机关日统计数据 + log.info("StatsTopicServiceImpl.agencyTopic-批量新增小组总数网格日统计表数据,对应客户Id:" + customerId + ",日维度Id:" + dimId.getDateId()); + factTopicHotdiscussAgencyDailyService.insertBatch(list); + } + + } + + } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/FactTopicHotdiscussAgencyDailyService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/FactTopicHotdiscussAgencyDailyService.java new file mode 100644 index 0000000000..7e60409a73 --- /dev/null +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/FactTopicHotdiscussAgencyDailyService.java @@ -0,0 +1,101 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.service.stats; + +import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.commons.tools.page.PageData; +import com.epmet.dto.stats.topic.FactTopicHotdiscussAgencyDailyDTO; +import com.epmet.entity.stats.FactTopicHotdiscussAgencyDailyEntity; + +import java.util.List; +import java.util.Map; + +/** + * 热议中话题机关日统计表【热议中指的没有被关闭、屏蔽、转议题的话题】 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-05-17 + */ +public interface FactTopicHotdiscussAgencyDailyService extends BaseService { + + /** + * 默认分页 + * + * @param params + * @return PageData + * @author generator + * @date 2021-05-17 + */ + PageData page(Map params); + + /** + * 默认查询 + * + * @param params + * @return java.util.List + * @author generator + * @date 2021-05-17 + */ + List list(Map params); + + /** + * 单条查询 + * + * @param id + * @return FactTopicHotdiscussAgencyDailyDTO + * @author generator + * @date 2021-05-17 + */ + FactTopicHotdiscussAgencyDailyDTO get(String id); + + /** + * 默认保存 + * + * @param dto + * @return void + * @author generator + * @date 2021-05-17 + */ + void save(FactTopicHotdiscussAgencyDailyDTO dto); + + /** + * 默认更新 + * + * @param dto + * @return void + * @author generator + * @date 2021-05-17 + */ + void update(FactTopicHotdiscussAgencyDailyDTO dto); + + /** + * 批量删除 + * + * @param ids + * @return void + * @author generator + * @date 2021-05-17 + */ + void delete(String[] ids); + + /** + * @Author sun + * @Description 根据客户Id、日维度Id批量物理删除一下可能存在的历史数据 + **/ + void delTopicAgency(FactTopicHotdiscussAgencyDailyEntity delEntity); +} \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/FactTopicHotdiscussGridDailyService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/FactTopicHotdiscussGridDailyService.java new file mode 100644 index 0000000000..e7a3fbfe0a --- /dev/null +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/FactTopicHotdiscussGridDailyService.java @@ -0,0 +1,101 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.service.stats; + +import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.commons.tools.page.PageData; +import com.epmet.dto.stats.topic.FactTopicHotdiscussGridDailyDTO; +import com.epmet.entity.stats.FactTopicHotdiscussGridDailyEntity; + +import java.util.List; +import java.util.Map; + +/** + * 热议中话题网格日统计表【热议中指的没有被关闭、屏蔽、转议题的话题】 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-05-17 + */ +public interface FactTopicHotdiscussGridDailyService extends BaseService { + + /** + * 默认分页 + * + * @param params + * @return PageData + * @author generator + * @date 2021-05-17 + */ + PageData page(Map params); + + /** + * 默认查询 + * + * @param params + * @return java.util.List + * @author generator + * @date 2021-05-17 + */ + List list(Map params); + + /** + * 单条查询 + * + * @param id + * @return FactTopicHotdiscussGridDailyDTO + * @author generator + * @date 2021-05-17 + */ + FactTopicHotdiscussGridDailyDTO get(String id); + + /** + * 默认保存 + * + * @param dto + * @return void + * @author generator + * @date 2021-05-17 + */ + void save(FactTopicHotdiscussGridDailyDTO dto); + + /** + * 默认更新 + * + * @param dto + * @return void + * @author generator + * @date 2021-05-17 + */ + void update(FactTopicHotdiscussGridDailyDTO dto); + + /** + * 批量删除 + * + * @param ids + * @return void + * @author generator + * @date 2021-05-17 + */ + void delete(String[] ids); + + /** + * @Author sun + * @Description 根据客户Id、日维度Id批量物理删除一下可能存在的历史数据 + **/ + void delTopicGrid(FactTopicHotdiscussGridDailyEntity delEntity); +} \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/FactTopicHotdiscussAgencyDailyServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/FactTopicHotdiscussAgencyDailyServiceImpl.java new file mode 100644 index 0000000000..af5f866943 --- /dev/null +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/FactTopicHotdiscussAgencyDailyServiceImpl.java @@ -0,0 +1,109 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.service.stats.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.constant.FieldConstant; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.dao.stats.FactTopicHotdiscussAgencyDailyDao; +import com.epmet.dto.stats.topic.FactTopicHotdiscussAgencyDailyDTO; +import com.epmet.entity.stats.FactTopicHotdiscussAgencyDailyEntity; +import com.epmet.service.stats.FactTopicHotdiscussAgencyDailyService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * 热议中话题机关日统计表【热议中指的没有被关闭、屏蔽、转议题的话题】 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-05-17 + */ +@Service +public class FactTopicHotdiscussAgencyDailyServiceImpl extends BaseServiceImpl implements FactTopicHotdiscussAgencyDailyService { + + + @Override + public PageData page(Map params) { + IPage page = baseDao.selectPage( + getPage(params, FieldConstant.CREATED_TIME, false), + getWrapper(params) + ); + return getPageData(page, FactTopicHotdiscussAgencyDailyDTO.class); + } + + @Override + public List list(Map params) { + List entityList = baseDao.selectList(getWrapper(params)); + + return ConvertUtils.sourceToTarget(entityList, FactTopicHotdiscussAgencyDailyDTO.class); + } + + private QueryWrapper getWrapper(Map params){ + String id = (String)params.get(FieldConstant.ID_HUMP); + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); + + return wrapper; + } + + @Override + public FactTopicHotdiscussAgencyDailyDTO get(String id) { + FactTopicHotdiscussAgencyDailyEntity entity = baseDao.selectById(id); + return ConvertUtils.sourceToTarget(entity, FactTopicHotdiscussAgencyDailyDTO.class); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void save(FactTopicHotdiscussAgencyDailyDTO dto) { + FactTopicHotdiscussAgencyDailyEntity entity = ConvertUtils.sourceToTarget(dto, FactTopicHotdiscussAgencyDailyEntity.class); + insert(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(FactTopicHotdiscussAgencyDailyDTO dto) { + FactTopicHotdiscussAgencyDailyEntity entity = ConvertUtils.sourceToTarget(dto, FactTopicHotdiscussAgencyDailyEntity.class); + updateById(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(String[] ids) { + // 逻辑删除(@TableLogic 注解) + baseDao.deleteBatchIds(Arrays.asList(ids)); + } + + /** + * @Author sun + * @Description 根据客户Id、日维度Id批量物理删除一下可能存在的历史数据 + **/ + @Override + public void delTopicAgency(FactTopicHotdiscussAgencyDailyEntity delEntity) { + baseDao.delTopicAgency(delEntity); + } + +} \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/FactTopicHotdiscussGridDailyServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/FactTopicHotdiscussGridDailyServiceImpl.java new file mode 100644 index 0000000000..697143bfd2 --- /dev/null +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/FactTopicHotdiscussGridDailyServiceImpl.java @@ -0,0 +1,109 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.service.stats.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.constant.FieldConstant; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.dao.stats.FactTopicHotdiscussGridDailyDao; +import com.epmet.dto.stats.topic.FactTopicHotdiscussGridDailyDTO; +import com.epmet.entity.stats.FactTopicHotdiscussGridDailyEntity; +import com.epmet.service.stats.FactTopicHotdiscussGridDailyService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * 热议中话题网格日统计表【热议中指的没有被关闭、屏蔽、转议题的话题】 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-05-17 + */ +@Service +public class FactTopicHotdiscussGridDailyServiceImpl extends BaseServiceImpl implements FactTopicHotdiscussGridDailyService { + + + @Override + public PageData page(Map params) { + IPage page = baseDao.selectPage( + getPage(params, FieldConstant.CREATED_TIME, false), + getWrapper(params) + ); + return getPageData(page, FactTopicHotdiscussGridDailyDTO.class); + } + + @Override + public List list(Map params) { + List entityList = baseDao.selectList(getWrapper(params)); + + return ConvertUtils.sourceToTarget(entityList, FactTopicHotdiscussGridDailyDTO.class); + } + + private QueryWrapper getWrapper(Map params){ + String id = (String)params.get(FieldConstant.ID_HUMP); + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); + + return wrapper; + } + + @Override + public FactTopicHotdiscussGridDailyDTO get(String id) { + FactTopicHotdiscussGridDailyEntity entity = baseDao.selectById(id); + return ConvertUtils.sourceToTarget(entity, FactTopicHotdiscussGridDailyDTO.class); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void save(FactTopicHotdiscussGridDailyDTO dto) { + FactTopicHotdiscussGridDailyEntity entity = ConvertUtils.sourceToTarget(dto, FactTopicHotdiscussGridDailyEntity.class); + insert(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(FactTopicHotdiscussGridDailyDTO dto) { + FactTopicHotdiscussGridDailyEntity entity = ConvertUtils.sourceToTarget(dto, FactTopicHotdiscussGridDailyEntity.class); + updateById(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(String[] ids) { + // 逻辑删除(@TableLogic 注解) + baseDao.deleteBatchIds(Arrays.asList(ids)); + } + + /** + * @Author sun + * @Description 根据客户Id、日维度Id批量物理删除一下可能存在的历史数据 + **/ + @Override + public void delTopicGrid(FactTopicHotdiscussGridDailyEntity delEntity) { + baseDao.delTopicGrid(delEntity); + } + +} \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/TopicService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/TopicService.java index 475fb886c7..78a823b155 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/TopicService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/TopicService.java @@ -6,6 +6,7 @@ import com.epmet.dto.screen.ScreenProjectDataDTO; import com.epmet.dto.screen.ScreenProjectImgDataDTO; import com.epmet.dto.screen.form.ProjectSourceMapFormDTO; import com.epmet.dto.stats.DimTopicStatusDTO; +import com.epmet.dto.stats.topic.result.TopicListResultDTO; import com.epmet.dto.stats.topic.result.TopicStatisticalData; import com.epmet.dto.topic.ResiTopicDTO; import com.epmet.dto.topic.TopicOriginInfoDTO; @@ -116,4 +117,10 @@ public interface TopicService { * @date 2021/4/13 5:39 下午 */ ResiTopicAndImgResultDTO getTopicAndImgs(String topicId,String attachmentType); + + /** + * @Author sun + * @Description 根据客户Id和截止日期查询话题业务数据 + **/ + List getTopicList(String customerId, String dateId); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/impl/TopicServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/impl/TopicServiceImpl.java index 0b74adba49..a47baa85bd 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/impl/TopicServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/impl/TopicServiceImpl.java @@ -14,6 +14,7 @@ import com.epmet.dto.screen.form.ProjectSourceMapFormDTO; import com.epmet.dto.stats.DimTopicStatusDTO; import com.epmet.dto.stats.topic.*; import com.epmet.dto.stats.topic.result.GroupTopicData; +import com.epmet.dto.stats.topic.result.TopicListResultDTO; import com.epmet.dto.stats.topic.result.TopicStatisticalData; import com.epmet.dto.topic.ResiTopicDTO; import com.epmet.dto.topic.TopicOriginInfoDTO; @@ -1413,4 +1414,14 @@ public class TopicServiceImpl implements TopicService { public List queryTopicOriginInfoList(String customerId, String dateId) { return topicDao.selectListTopicOriginInfo(customerId, dateId); } + + /** + * @Author sun + * @Description 根据客户Id和截止日期查询话题业务数据 + **/ + @Override + public List getTopicList(String customerId, String dateId) { + return topicDao.selectTopicList(customerId, dateId); + } + } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactTopicHotdiscussAgencyDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactTopicHotdiscussAgencyDailyDao.xml new file mode 100644 index 0000000000..27d63b02e0 --- /dev/null +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactTopicHotdiscussAgencyDailyDao.xml @@ -0,0 +1,15 @@ + + + + + + + DELETE + FROM + fact_topic_hotdiscuss_agency_daily + WHERE + customer_id = #{customerId} + AND date_id = #{dateId} + + + \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactTopicHotdiscussGridDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactTopicHotdiscussGridDailyDao.xml new file mode 100644 index 0000000000..f82d421f42 --- /dev/null +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactTopicHotdiscussGridDailyDao.xml @@ -0,0 +1,15 @@ + + + + + + + DELETE + FROM + fact_topic_hotdiscuss_grid_daily + WHERE + customer_id = #{customerId} + AND date_id = #{dateId} + + + \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/topic/TopicDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/topic/TopicDao.xml index 8dfb2aae2e..ae18ea2b7c 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/topic/TopicDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/topic/TopicDao.xml @@ -307,4 +307,23 @@ AND ATTACHMENT_TYPE = 'image' and TOPIC_ID = #{topicId} + + + From 417f41056480f578ea013598c06e3aa8f4d602c1 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Tue, 18 May 2021 10:59:21 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E5=B0=8F=E7=BB=84=E6=80=BB=E6=95=B0?= =?UTF-8?q?=E3=80=81=E7=83=AD=E8=AE=AE=E8=AF=9D=E9=A2=98=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?sql=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../V0.0.13__group_and_topic_stats.sql | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.13__group_and_topic_stats.sql diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.13__group_and_topic_stats.sql b/epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.13__group_and_topic_stats.sql new file mode 100644 index 0000000000..5e2b260221 --- /dev/null +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.13__group_and_topic_stats.sql @@ -0,0 +1,87 @@ +CREATE TABLE `fact_group_total_agency_daily` ( + `ID` varchar(64) NOT NULL COMMENT '唯一标识', + `CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户ID', + `AGENCY_ID` varchar(64) NOT NULL COMMENT '机构ID 关联机关dim表', + `PID` varchar(64) DEFAULT NULL COMMENT '父级机关ID', + `DATE_ID` varchar(32) NOT NULL COMMENT '统计日期 关联日期dim表', + `WEEK_ID` varchar(32) NOT NULL COMMENT '周ID', + `MONTH_ID` varchar(32) NOT NULL COMMENT '月份ID', + `QUARTER_ID` varchar(32) NOT NULL COMMENT '季度ID', + `YEAR_ID` varchar(32) NOT NULL COMMENT '年ID', + `GROUP_TOTAL` int(11) DEFAULT '0' COMMENT '当前组织及下级小组总数', + `ORDINARY_TOTAL` int(11) DEFAULT NULL COMMENT '当前组织及下级楼院小组总数', + `BRANCH_TOTAL` int(11) DEFAULT NULL COMMENT '当前组织及下级支部小组总数', + `DEL_FLAG` char(1) NOT NULL DEFAULT '0' COMMENT '删除标识 未删除:0,已删除:1', + `REVISION` int(11) NOT NULL DEFAULT '0' COMMENT '乐观锁', + `CREATED_BY` varchar(32) NOT NULL COMMENT '创建人', + `CREATED_TIME` datetime NOT NULL COMMENT '创建时间', + `UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人', + `UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', + PRIMARY KEY (`ID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='小组总数-机关日统计表'; + +CREATE TABLE `fact_group_total_grid_daily` ( + `ID` varchar(64) NOT NULL COMMENT '唯一标识', + `CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户ID', + `AGENCY_ID` varchar(64) NOT NULL COMMENT '机构ID 关联机关dim表', + `GRID_ID` varchar(64) NOT NULL COMMENT '网格ID', + `DATE_ID` varchar(32) NOT NULL COMMENT '统计日期 关联日期dim表', + `WEEK_ID` varchar(32) NOT NULL COMMENT '周ID', + `MONTH_ID` varchar(32) NOT NULL COMMENT '月份ID', + `QUARTER_ID` varchar(32) NOT NULL COMMENT '季度ID', + `YEAR_ID` varchar(32) NOT NULL COMMENT '年ID', + `GROUP_TOTAL` int(11) DEFAULT '0' COMMENT '网格下小组总数', + `ORDINARY_TOTAL` int(11) DEFAULT NULL COMMENT '网格下楼院小组总数', + `BRANCH_TOTAL` int(11) DEFAULT NULL COMMENT '网格下支部小组总数', + `DEL_FLAG` char(1) NOT NULL DEFAULT '0' COMMENT '删除标识 未删除:0,已删除:1', + `REVISION` int(11) NOT NULL DEFAULT '0' COMMENT '乐观锁', + `CREATED_BY` varchar(32) NOT NULL COMMENT '创建人', + `CREATED_TIME` datetime NOT NULL COMMENT '创建时间', + `UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人', + `UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', + PRIMARY KEY (`ID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='小组总数-网格日统计表'; + +CREATE TABLE `fact_topic_hotdiscuss_agency_daily` ( + `ID` varchar(64) NOT NULL COMMENT '唯一标识', + `CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户ID', + `AGENCY_ID` varchar(64) NOT NULL COMMENT '机构ID 关联机关dm表', + `PID` varchar(64) NOT NULL COMMENT '父级机关ID', + `DATE_ID` varchar(32) NOT NULL COMMENT '统计日期 关联日期dm表', + `WEEK_ID` varchar(32) NOT NULL COMMENT '周ID', + `MONTH_ID` varchar(32) NOT NULL COMMENT '月ID', + `QUARTER_ID` varchar(32) NOT NULL COMMENT '季度ID', + `YEAR_ID` varchar(32) NOT NULL COMMENT '年ID', + `TOPIC_TOTAL` int(11) DEFAULT '0' COMMENT '话题总数', + `STATUS` varchar(32) DEFAULT NULL COMMENT '话题状态【热议中:hot_discuss】', + `TOPIC_COUNT` int(11) DEFAULT '0' COMMENT '状态话题数量', + `DEL_FLAG` char(1) NOT NULL DEFAULT '0' COMMENT '删除标识', + `REVISION` int(11) NOT NULL DEFAULT '0' COMMENT '乐观锁', + `CREATED_BY` varchar(32) NOT NULL COMMENT '创建人', + `CREATED_TIME` datetime NOT NULL COMMENT '创建时间', + `UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人', + `UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', + PRIMARY KEY (`ID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='热议中话题机关日统计表【热议中指的没有被关闭、屏蔽、转议题的话题】'; + +CREATE TABLE `fact_topic_hotdiscuss_grid_daily` ( + `ID` varchar(64) NOT NULL COMMENT '唯一标识', + `CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户ID', + `AGENCY_ID` varchar(64) NOT NULL COMMENT '机关ID', + `GRID_ID` varchar(64) NOT NULL COMMENT '网格ID 关联网格dm表', + `DATE_ID` varchar(32) NOT NULL COMMENT '日期ID', + `WEEK_ID` varchar(32) NOT NULL COMMENT '周ID', + `MONTH_ID` varchar(32) NOT NULL COMMENT '月ID', + `QUARTER_ID` varchar(32) NOT NULL COMMENT '季度ID', + `YEAR_ID` varchar(32) NOT NULL COMMENT '年ID', + `TOPIC_TOTAL` int(11) DEFAULT '0' COMMENT '话题总数', + `STATUS` varchar(32) DEFAULT NULL COMMENT '话题状态【热议中:hot_discuss】', + `TOPIC_COUNT` int(11) DEFAULT '0' COMMENT '状态话题数量', + `DEL_FLAG` varchar(32) NOT NULL DEFAULT '0' COMMENT '删除标识', + `REVISION` int(11) NOT NULL DEFAULT '0' COMMENT '乐观锁', + `CREATED_BY` varchar(32) NOT NULL COMMENT '创建人', + `CREATED_TIME` datetime NOT NULL COMMENT '创建时间', + `UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人', + `UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', + PRIMARY KEY (`ID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='热议中话题网格日统计表【热议中指的没有被关闭、屏蔽、转议题的话题】'; \ No newline at end of file From a54d1ce689e3750daee37e0090c111c969297324 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Tue, 18 May 2021 14:06:30 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E6=95=B0=E6=8D=AE-?= =?UTF-8?q?=E6=B6=89=E5=8F=8A=E8=AF=9D=E9=A2=98=E6=95=B0=E6=8D=AE=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E7=9A=84=E9=87=8D=E6=96=B0=E8=B0=83=E6=95=B4=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=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 + + + + + + + + + UPDATE issue_project_category_dict SET diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/MassesDiscontentFormDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/MassesDiscontentFormDTO.java new file mode 100644 index 0000000000..5a2e934a99 --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/MassesDiscontentFormDTO.java @@ -0,0 +1,43 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/5/13 5:16 下午 + * @DESC + */ +@Data +public class MassesDiscontentFormDTO implements Serializable { + + private static final long serialVersionUID = -9104774532905137856L; + + public interface MassesDiscontentForm{} + + /** + * 时间区间,三个月:threeMonth;半年:sixMonth;一年:twelveMonth + * 一个月按照30天,三个月90天,半年180天,一年365天 + */ + private String timeSection; + + /** + * asc:分数由低到高 + * desc:分数由高到低 + */ + private String sortType; + + /** + * 组织ID + */ + private String agencyId; + + @NotNull(message = "pageNo不能为空",groups = MassesDiscontentForm.class) + private Integer pageNo; + + @NotNull(message = "pageSize不能为空",groups = MassesDiscontentForm.class) + private Integer pageSize; + +} diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/MassesDiscontentResultDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/MassesDiscontentResultDTO.java new file mode 100644 index 0000000000..905dd0be8d --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/MassesDiscontentResultDTO.java @@ -0,0 +1,62 @@ +package com.epmet.dto.result; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +/** + * @Author zxc + * @DateTime 2021/5/14 9:04 上午 + * @DESC + */ +@Data +public class MassesDiscontentResultDTO implements Serializable { + + private static final long serialVersionUID = 8954504790464516198L; + + /** + * 项目ID + */ + private String projectId; + + /** + * 议题ID + */ + private String issueId; + + /** + * 话题所在网格 + */ + private String gridName; + + /** + * 话题图片 + */ + private List photos; + + /** + * 话题内容 + */ + private String topicContent; + + /** + * 项目分类标签 + */ + private String projectCategory; + + /** + * 项目评价分数 + */ + @JsonIgnore + private Integer score; + + public MassesDiscontentResultDTO() { + this.gridName = ""; + this.photos = new ArrayList<>(); + this.topicContent = ""; + this.projectCategory = ""; + } +} diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectScoreResultDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectScoreResultDTO.java new file mode 100644 index 0000000000..9b2127224b --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectScoreResultDTO.java @@ -0,0 +1,31 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/5/18 1:29 下午 + * @DESC + */ +@Data +public class ProjectScoreResultDTO implements Serializable { + + private static final long serialVersionUID = 8559486245200043097L; + + /** + * 项目ID + */ + private String projectId; + + /** + * 项目评价分数 + */ + private Integer score; + + /** + * 议题ID + */ + private String issueId; +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/ProjectConstant.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/ProjectConstant.java index 71402799e8..992871d265 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/ProjectConstant.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/ProjectConstant.java @@ -174,4 +174,18 @@ public interface ProjectConstant { String NOT_EXIST_PROJECT = "未查询带此项目信息......"; String EXTERNAL_SYSTEM = "third_platform_project_send"; + + /** + * 三个月,六个月,12个月 + */ + String THREE_MONTH = "threeMonth"; + String SIX_MONTH = "sixMonth"; + String TWELVE_MONTH = "twelveMonth"; + + /** + * 排序 + */ + String SORT_ASC = "asc"; + String SORT_DESC = "desc"; + } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectSatisfactionStatisticsController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectSatisfactionStatisticsController.java index 78fed6b459..62fbe24a59 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectSatisfactionStatisticsController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectSatisfactionStatisticsController.java @@ -26,7 +26,9 @@ import com.epmet.commons.tools.validator.group.AddGroup; import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.dto.ProjectSatisfactionStatisticsDTO; +import com.epmet.dto.form.MassesDiscontentFormDTO; import com.epmet.dto.form.ProjectEvaluateScoreFormDTO; +import com.epmet.dto.result.MassesDiscontentResultDTO; import com.epmet.dto.result.ProjectEvaluateScoreResultDTO; import com.epmet.excel.ProjectSatisfactionStatisticsExcel; import com.epmet.service.ProjectSatisfactionStatisticsService; @@ -105,4 +107,16 @@ public class ProjectSatisfactionStatisticsController { return new Result().ok(projectSatisfactionStatisticsService.projectEvaluateScore(formDTO)); } + /** + * @Description 群众不满 + * @Param formDTO + * @author zxc + * @date 2021/5/14 10:46 上午 + */ + @PostMapping("massesdiscontent") + public Result> massesDiscontent(@RequestBody MassesDiscontentFormDTO formDTO){ + ValidatorUtils.validateEntity(formDTO, MassesDiscontentFormDTO.MassesDiscontentForm.class); + return new Result>().ok(projectSatisfactionStatisticsService.massesDiscontent(formDTO)); + } + } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectCategoryDao.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectCategoryDao.java index 247f239261..cc2d336344 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectCategoryDao.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectCategoryDao.java @@ -20,6 +20,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.dto.ProjectCategoryDTO; import com.epmet.dto.form.DelCategoryFormDTO; +import com.epmet.dto.result.ProjectCategoryDisPoseResultDTO; import com.epmet.entity.ProjectCategoryEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -52,4 +53,12 @@ public interface ProjectCategoryDao extends BaseDao { * @Author sun **/ List selectProjectCategoryList(DelCategoryFormDTO formDTO); + + /** + * @Description 根据项目ID查询项目分类 + * @Param projectIds + * @author zxc + * @date 2021/5/17 10:47 上午 + */ + List selectCategoryByIds(@Param("projectIds")List projectIds); } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java index 5eccc08f67..ed73518a58 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java @@ -147,4 +147,14 @@ public interface ProjectDao extends BaseDao { @Param("customerId") String customerId); ProjectInfoDTO queryProjectInfoByProjectId(String projectId); + + /** + * @Description 查询时间段内的项目ID + * @Param agencyId + * @Param startDate + * @Param endDate + * @author zxc + * @date 2021/5/14 1:59 下午 + */ + List selectProjectIdByTime(@Param("agencyId")String agencyId,@Param("endDate")Integer endDate,@Param("startDate")Integer startDate); } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectSatisfactionStatisticsDao.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectSatisfactionStatisticsDao.java index 60a2852e8f..b174075bcd 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectSatisfactionStatisticsDao.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectSatisfactionStatisticsDao.java @@ -18,10 +18,14 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.result.MassesDiscontentResultDTO; +import com.epmet.dto.result.ProjectScoreResultDTO; import com.epmet.entity.ProjectSatisfactionStatisticsEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * 项目满意度调查统计表 * @@ -39,4 +43,12 @@ public interface ProjectSatisfactionStatisticsDao extends BaseDao selectProjectByScore(@Param("projectIds")List projectIds, @Param("setScore")Integer setScore, @Param("sortType")String sortType); + } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectSatisfactionStatisticsService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectSatisfactionStatisticsService.java index fa035d53f6..24b4f24b5b 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectSatisfactionStatisticsService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectSatisfactionStatisticsService.java @@ -20,7 +20,9 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; import com.epmet.dto.ProjectSatisfactionStatisticsDTO; +import com.epmet.dto.form.MassesDiscontentFormDTO; import com.epmet.dto.form.ProjectEvaluateScoreFormDTO; +import com.epmet.dto.result.MassesDiscontentResultDTO; import com.epmet.dto.result.ProjectEvaluateScoreResultDTO; import com.epmet.entity.ProjectSatisfactionStatisticsEntity; @@ -102,4 +104,12 @@ public interface ProjectSatisfactionStatisticsService extends BaseService massesDiscontent(MassesDiscontentFormDTO formDTO); } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectSatisfactionStatisticsServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectSatisfactionStatisticsServiceImpl.java index 222a96644a..ed20dfd167 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectSatisfactionStatisticsServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectSatisfactionStatisticsServiceImpl.java @@ -21,24 +21,42 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.constant.FieldConstant; +import com.epmet.commons.tools.utils.DateUtils; +import com.epmet.commons.tools.utils.Result; +import com.epmet.constant.ProjectConstant; +import com.epmet.dao.ProjectCategoryDao; +import com.epmet.dao.ProjectDao; import com.epmet.dao.ProjectSatisfactionStatisticsDao; import com.epmet.dto.ProjectSatisfactionStatisticsDTO; +import com.epmet.dto.form.MassesDiscontentFormDTO; import com.epmet.dto.form.ProjectEvaluateScoreFormDTO; +import com.epmet.dto.result.MassesDiscontentResultDTO; +import com.epmet.dto.result.ProjectCategoryDisPoseResultDTO; import com.epmet.dto.result.ProjectEvaluateScoreResultDTO; +import com.epmet.dto.result.ProjectScoreResultDTO; import com.epmet.entity.ProjectSatisfactionStatisticsEntity; +import com.epmet.feign.GovIssueOpenFeignClient; import com.epmet.redis.ProjectSatisfactionStatisticsRedis; +import com.epmet.resi.group.dto.topic.result.TopicInfoResultDTO; +import com.epmet.resi.group.feign.ResiGroupOpenFeignClient; import com.epmet.service.ProjectSatisfactionStatisticsService; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 项目满意度调查统计表 @@ -51,6 +69,14 @@ public class ProjectSatisfactionStatisticsServiceImpl extends BaseServiceImpl page(Map params) { @@ -125,4 +151,80 @@ public class ProjectSatisfactionStatisticsServiceImpl extends BaseServiceImpl massesDiscontent(MassesDiscontentFormDTO formDTO) { + List projectIds = projectDao.selectProjectIdByTime(formDTO.getAgencyId(), getDateId("yesterday"), getDateId(formDTO.getTimeSection())); + if (CollectionUtils.isEmpty(projectIds)){ + return new ArrayList<>(); + } + PageInfo pageInfo = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()).doSelectPageInfo(() -> baseDao.selectProjectByScore(projectIds.stream().map(m -> m.getProjectId()).collect(Collectors.toList()), NumConstant.SEVENTY_FIVE, formDTO.getSortType())); + List projects = pageInfo.getList(); + if (CollectionUtils.isEmpty(projects)){ + return new ArrayList<>(); + } + List projectCategoryDisPoseResultDTOS = projectCategoryDao.selectCategoryByIds(projects.stream().map(m -> m.getProjectId()).collect(Collectors.toList())); + List projectCategoryData = new ArrayList<>(); + if (!CollectionUtils.isEmpty(projectCategoryDisPoseResultDTOS)){ + Result> projectCategory = issueOpenFeignClient.getProjectCategory(projectCategoryDisPoseResultDTOS); + if (!projectCategory.success()){ + throw new RenException("查询项目分类标签失败".concat(projectCategory.getMsg())); + } + projectCategoryData = projectCategory.getData(); + } + Result> topicInfos = resiGroupOpenFeignClient.getTopicInfos(projects.stream().map(m -> m.getIssueId()).collect(Collectors.toList())); + if (!topicInfos.success()){ + throw new RenException("查询话题信息失败".concat(topicInfos.getMsg())); + } + List finalProjectCategoryData = projectCategoryData; + projects.forEach(p -> { + if (!CollectionUtils.isEmpty(finalProjectCategoryData)){ + finalProjectCategoryData.forEach(cate -> { + if (p.getProjectId().equals(cate.getProjectId())){ + p.setProjectCategory(cate.getProjectCategory()); + } + }); + } + if (!CollectionUtils.isEmpty(topicInfos.getData())){ + topicInfos.getData().forEach(t -> { + if (p.getIssueId().equals(t.getIssueId())){ + p.setGridName(t.getGridName()); + p.setTopicContent(t.getTopicContent()); + p.setPhotos(t.getPhotos()); + } + }); + } + }); + return projects; + } + + /** + * @Description 处理时间 + * @Param dateType + * @author zxc + * @date 2021/5/18 2:28 下午 + */ + public Integer getDateId(String dateType){ + String beforeNDay = DateUtils.getBeforeNDay(NumConstant.ONE); + Integer result = Integer.valueOf(beforeNDay); + switch (dateType) { + case ProjectConstant.THREE_MONTH: + result = Integer.valueOf(DateUtils.getBeforeNDay(NumConstant.NINETY)); + break; + case ProjectConstant.SIX_MONTH: + result = Integer.valueOf(DateUtils.getBeforeNDay(NumConstant.ONE_HUNDRED_AND_EIGHTY)); + break; + case ProjectConstant.TWELVE_MONTH: + result = Integer.valueOf(DateUtils.getBeforeNDay(NumConstant.THREE_HUNDRED_AND_SIXTY_FIVE)); + break; + default: + } + return result; + } + } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectCategoryDao.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectCategoryDao.xml index 30033c620e..3f9c27f6d2 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectCategoryDao.xml +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectCategoryDao.xml @@ -35,4 +35,19 @@ project_id = #{projectId} + + + \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml index 0a430eab87..4a8c18c125 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml @@ -269,4 +269,18 @@ where P.DEL_FLAG='0' AND p.id=#{projectId} + + + + \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectSatisfactionStatisticsDao.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectSatisfactionStatisticsDao.xml index 90be9c1c62..9a194a2db4 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectSatisfactionStatisticsDao.xml +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectSatisfactionStatisticsDao.xml @@ -8,5 +8,29 @@ select * from project_satisfaction_statistics where DEL_FLAG = '0' AND PROJECT_ID = #{projectId} + + + \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/TopicInfoResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/TopicInfoResultDTO.java new file mode 100644 index 0000000000..4a2d43ea8e --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/TopicInfoResultDTO.java @@ -0,0 +1,42 @@ +package com.epmet.resi.group.dto.topic.result; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @Author zxc + * @DateTime 2021/5/17 2:44 下午 + * @DESC + */ +@Data +public class TopicInfoResultDTO implements Serializable { + + private static final long serialVersionUID = 4068679301595597877L; + + /** + * 议题ID + */ + private String issueId; + + /** + * 话题所在网格 + */ + private String gridName; + + /** + * 网格ID + */ + private String gridId; + + /** + * 话题图片 + */ + private List photos; + + /** + * 话题内容 + */ + private String topicContent; +} diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java index 292972c45e..64879dc601 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java @@ -10,6 +10,7 @@ import com.epmet.resi.group.dto.topic.MyCreateTopicsFormDTO; import com.epmet.resi.group.dto.topic.ResiTopicDTO; import com.epmet.resi.group.dto.topic.form.*; import com.epmet.resi.group.dto.topic.result.*; +import com.epmet.resi.group.dto.topic.result.TopicInfoResultDTO; import com.epmet.resi.group.feign.fallback.ResiGroupOpenFeignClientFallback; import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO; import org.springframework.cloud.openfeign.FeignClient; @@ -253,4 +254,14 @@ public interface ResiGroupOpenFeignClient { */ @PostMapping("resi/group/group/groupPointDetail/{groupId}") Result groupPointDetail(@PathVariable String groupId); + + /** + * @Description 查询话题信息 + * @Param issueIds + * @author zxc + * @date 2021/5/17 4:19 下午 + */ + @PostMapping("resi/group/topic/gettopicinfos") + Result> getTopicInfos(@RequestBody List issueIds); + } diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java index 84dee1113d..84d0385b47 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java @@ -10,6 +10,7 @@ import com.epmet.resi.group.dto.topic.MyCreateTopicsFormDTO; import com.epmet.resi.group.dto.topic.ResiTopicDTO; import com.epmet.resi.group.dto.topic.form.*; import com.epmet.resi.group.dto.topic.result.*; +import com.epmet.resi.group.dto.topic.result.TopicInfoResultDTO; import com.epmet.resi.group.feign.ResiGroupOpenFeignClient; import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO; import org.springframework.stereotype.Component; @@ -198,4 +199,9 @@ public class ResiGroupOpenFeignClientFallback implements ResiGroupOpenFeignClien public Result groupPointDetail(String groupId) { return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "groupPointDetail", groupId); } + + @Override + public Result> getTopicInfos(List issueIds) { + return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "getTopicInfos", issueIds); + } } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java index ef4a773ccf..062662457a 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java @@ -485,4 +485,15 @@ public class ResiTopicController { ValidatorUtils.validateEntity(formDTO, GetPastTopicListV2FormDTO.GetPastTopicListV2Form.class); return new Result>().ok(topicService.allMessages(formDTO)); } + + /** + * @Description 查询话题信息 + * @Param issueIds + * @author zxc + * @date 2021/5/17 4:19 下午 + */ + @PostMapping("gettopicinfos") + public Result> getTopicInfos(@RequestBody List issueIds){ + return new Result>().ok(topicService.getTopicInfos(issueIds)); + } } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/ResiTopicDao.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/ResiTopicDao.java index abc817659d..88bc4abad0 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/ResiTopicDao.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/ResiTopicDao.java @@ -224,4 +224,12 @@ public interface ResiTopicDao extends BaseDao { * @author sun */ int upTopicList(@Param("delIdList") List delIdList, @Param("userId") String userId); + + /** + * @Description 查询话题信息 + * @Param issueIds + * @author zxc + * @date 2021/5/17 4:54 下午 + */ + List getTopicInfos(@Param("issueIds") List issueIds); } \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/ResiTopicService.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/ResiTopicService.java index 064255c04c..cf496a8c5b 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/ResiTopicService.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/ResiTopicService.java @@ -389,4 +389,12 @@ public interface ResiTopicService extends BaseService { * @date 2021/4/28 上午10:41 */ List allMessages(AllMessagesFormDTO formDTO); + + /** + * @Description 查询话题信息 + * @Param issueIds + * @author zxc + * @date 2021/5/17 4:19 下午 + */ + List getTopicInfos(List issueIds); } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java index 6c4ff65b4f..ec51f04815 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java @@ -103,6 +103,7 @@ import com.epmet.resi.group.dto.topic.form.*; import com.epmet.resi.group.dto.topic.result.CheckTopicPublisherResultDTO; import com.epmet.resi.group.dto.topic.result.GovTopicIssueInfoResultDTO; import com.epmet.resi.group.dto.topic.result.*; +import com.epmet.resi.group.dto.topic.result.TopicInfoResultDTO; import com.epmet.send.SendMqMsgUtil; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; @@ -2746,6 +2747,32 @@ public class ResiTopicServiceImpl extends BaseServiceImpl getTopicInfos(List issueIds) { + if (CollectionUtils.isEmpty(issueIds)){ + return new ArrayList<>(); + } + List topicInfos = baseDao.getTopicInfos(issueIds); + Result> gridNames = govOrgOpenFeignClient.getGridListByGridIds(topicInfos.stream().map(m -> m.getGridId()).collect(Collectors.toList())); + if (!gridNames.success()){ + throw new RenException("查询网格Name失败"); + } + topicInfos.forEach(t -> { + gridNames.getData().forEach(g -> { + if (t.getGridId().equals(g.getGridId())){ + t.setGridName(g.getGridName()); + } + }); + }); + return topicInfos; + } + } diff --git a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicDao.xml b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicDao.xml index b5f35a8a7a..d912ca952b 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicDao.xml +++ b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicDao.xml @@ -606,5 +606,30 @@ + + + + + + + + + + From d8847b1a6d770525cd77e68bd3df64671f633f37 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Tue, 18 May 2021 15:21:34 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=E7=BD=91=E6=A0=BC=E5=B1=82=E7=BA=A7?= =?UTF-8?q?=E4=BA=94=E9=A1=B9=E5=9F=BA=E7=A1=80=E6=95=B0=E6=8D=AE=E6=9F=A5?= =?UTF-8?q?=E7=9C=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datastats/form/GridBasicDataFormDTO.java | 28 ++++ .../result/GridBasicDataResultDTO.java | 96 ++++++++++++++ .../controller/DataStatsController.java | 12 ++ .../service/datastats/DataStatsService.java | 9 ++ .../datastats/impl/DataStatsServiceImpl.java | 120 ++++++++++++++++-- 5 files changed, 254 insertions(+), 11 deletions(-) create mode 100644 epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/GridBasicDataFormDTO.java create mode 100644 epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/GridBasicDataResultDTO.java diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/GridBasicDataFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/GridBasicDataFormDTO.java new file mode 100644 index 0000000000..eb1b981134 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/GridBasicDataFormDTO.java @@ -0,0 +1,28 @@ +package com.epmet.dataaggre.dto.datastats.form; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Description 基础数据-网格各种数据汇总-接口入参 + * @Auth sun + */ +@Data +public class GridBasicDataFormDTO implements Serializable { + + private static final long serialVersionUID = -3381286960911634231L; + /** + * 网格Id + */ + @NotBlank(message = "网格ID不能为空",groups = GridBasicDataFormDTO.Grid.class) + private String gridId; + /** + * 日维度Id + */ + private String dateId; + public interface Grid extends CustomerClientShowGroup{} + +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/GridBasicDataResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/GridBasicDataResultDTO.java new file mode 100644 index 0000000000..1ee5dc9b8a --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/GridBasicDataResultDTO.java @@ -0,0 +1,96 @@ +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 GridBasicDataResultDTO implements Serializable { + private static final long serialVersionUID = 466974582608407121L; + @JsonIgnore + BigDecimal bi = new BigDecimal(0); + /** + * 网格Id + */ + private String gridId; + //用户总数 + private Integer userTotal = 0; + //党员总数 + private Integer partyMemberTotal = 0; + //党员总数占比 + private BigDecimal partyMemberRatio = bi; + //居民总数 + private Integer resiTotal = 0; + //居民总数占比 + private BigDecimal resiRatio = bi; + //党群小组总数 + private Integer groupTotal = 0; + //楼院小组总数 + private Integer ordinaryTotal = 0; + //楼院小组总数占比 + private BigDecimal ordinaryRatio = bi; + //支部小组总数 + private Integer branchTotal = 0; + //支部小组总数占比 + private BigDecimal branchRatio = bi; + //话题总数 + 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; + //议题总数 + 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; + //项目总数 + private Integer projectTotal = 0; + //处理中总数 + private Integer pendingTotal = 0; + //处理中总数占比 + private BigDecimal pendingRatio = bi; + //已结案总数 + private Integer closedProjectTotal = 0; + //已结案总数占比 + private BigDecimal closedProjectRatio = bi; + + + @Data + public static class Topic implements Serializable { + //话题总量 + private Integer topicTotal; + //话题数量 + private Integer topicCount; + //话题状态 已关闭:closed、已屏蔽:hidden、 讨论中:discussing + private String topicStatus; + //话题已转议题数量 + private Integer shiftedIssueTotal; + //数据更新至 时间 + private String deadline; + } + +} 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 951696b919..162b7e5671 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 @@ -3,6 +3,7 @@ package com.epmet.dataaggre.controller; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dataaggre.dto.datastats.form.AgenctBasicDataFormDTO; +import com.epmet.dataaggre.dto.datastats.form.GridBasicDataFormDTO; import com.epmet.dataaggre.dto.datastats.form.SubAgencyFormDTO; import com.epmet.dataaggre.dto.datastats.form.SubGridFormDTO; import com.epmet.dataaggre.dto.datastats.result.*; @@ -37,6 +38,17 @@ public class DataStatsController { return new Result().ok(dataStatsService.agencyBasicData(formDTO)); } + /** + * @Param formDTO + * @Description 网格下五项基础数据汇总 + * @author sun + */ + @PostMapping("gridbasicdata") + public Result gridBasicData(@RequestBody GridBasicDataFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, GridBasicDataFormDTO.Grid.class); + return new Result().ok(dataStatsService.gridBasicData(formDTO)); + } + /** * @Param formDTO * @Description 查询当前组织的直属下级组织用户数据 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 6eb826dc8d..256aaeb15c 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 @@ -1,6 +1,7 @@ package com.epmet.dataaggre.service.datastats; import com.epmet.dataaggre.dto.datastats.form.AgenctBasicDataFormDTO; +import com.epmet.dataaggre.dto.datastats.form.GridBasicDataFormDTO; import com.epmet.dataaggre.dto.datastats.form.SubAgencyFormDTO; import com.epmet.dataaggre.dto.datastats.form.SubGridFormDTO; import com.epmet.dataaggre.dto.datastats.result.*; @@ -20,6 +21,13 @@ public interface DataStatsService { */ AgencyBasicDataResultDTO agencyBasicData(AgenctBasicDataFormDTO formDTO); + /** + * @Param formDTO + * @Description 网格下五项基础数据汇总 + * @author sun + */ + GridBasicDataResultDTO gridBasicData(GridBasicDataFormDTO formDTO); + /** * @Param formDTO * @Description 查询当前组织的直属下级组织用户数据 @@ -91,4 +99,5 @@ public interface DataStatsService { * @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 cf3eefefb7..f8ddfde557 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 @@ -6,6 +6,7 @@ import com.epmet.commons.tools.utils.DateUtils; import com.epmet.dataaggre.constant.DataSourceConstant; import com.epmet.dataaggre.dao.datastats.DataStatsDao; import com.epmet.dataaggre.dto.datastats.form.AgenctBasicDataFormDTO; +import com.epmet.dataaggre.dto.datastats.form.GridBasicDataFormDTO; import com.epmet.dataaggre.dto.datastats.form.SubAgencyFormDTO; import com.epmet.dataaggre.dto.datastats.form.SubGridFormDTO; import com.epmet.dataaggre.dto.datastats.result.*; @@ -47,7 +48,7 @@ public class DataStatsServiceImpl implements DataStatsService { AgencyBasicDataResultDTO resultDTO = new AgencyBasicDataResultDTO(); resultDTO.setAgencyId(formDTO.getAgencyId()); NumberFormat numberFormat = NumberFormat.getInstance(); - numberFormat.setMaximumFractionDigits(NumConstant.FOUR); + numberFormat.setMaximumFractionDigits(NumConstant.THREE); //入参有日期的则按具体时间执行,没有的则按当前时间前一天执行 if (StringUtils.isBlank(formDTO.getDateId())) { @@ -132,6 +133,103 @@ public class DataStatsServiceImpl implements DataStatsService { return resultDTO; } + /** + * @Param formDTO + * @Description 网格下五项基础数据汇总 + * @author sun + */ + @Override + public GridBasicDataResultDTO gridBasicData(GridBasicDataFormDTO formDTO) { + GridBasicDataResultDTO resultDTO = new GridBasicDataResultDTO(); + resultDTO.setGridId(formDTO.getGridId()); + NumberFormat numberFormat = NumberFormat.getInstance(); + numberFormat.setMaximumFractionDigits(NumConstant.THREE); + + //入参有日期的则按具体时间执行,没有的则按当前时间前一天执行 + 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 gridIds = new ArrayList<>(); + gridIds.add(formDTO.getGridId()); + List userList = dataStatsDao.getSubGridUser(gridIds, formDTO.getDateId()); + if (userList.size() > NumConstant.ZERO) { + resultDTO.setUserTotal(userList.get(0).getUserTotal()); + resultDTO.setResiTotal(userList.get(0).getResiTotal()); + resultDTO.setResiRatio(resultDTO.getResiTotal() == 0 || resultDTO.getUserTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) resultDTO.getResiTotal() / (float) resultDTO.getUserTotal()))); + resultDTO.setPartyMemberTotal(userList.get(0).getPartyMemberTotal()); + resultDTO.setPartyMemberRatio(resultDTO.getPartyMemberTotal() == 0 || resultDTO.getUserTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) resultDTO.getPartyMemberTotal() / (float) resultDTO.getUserTotal()))); + } + + //2.查询网格下最新群组日统计数据 + List groupList = dataStatsDao.getSubGridGroup(gridIds, formDTO.getDateId()); + if (groupList.size() > NumConstant.ZERO) { + resultDTO.setGroupTotal(groupList.get(0).getGroupTotal()); + resultDTO.setOrdinaryTotal(groupList.get(0).getOrdinaryTotal()); + resultDTO.setOrdinaryRatio(resultDTO.getOrdinaryTotal() == 0 || resultDTO.getGroupTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) resultDTO.getOrdinaryTotal() / (float) resultDTO.getGroupTotal()))); + resultDTO.setBranchTotal(groupList.get(0).getBranchTotal()); + resultDTO.setBranchRatio(resultDTO.getBranchTotal() == 0 || resultDTO.getGroupTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) resultDTO.getBranchTotal() / (float) resultDTO.getGroupTotal()))); + } + + //3.查询网格下最新话题日统计数据 + //状态话题-网格日统计数据表最新日期三种状态数据 + //网格日表里三种类型数据之和就是话题总量,讨论中数量与热议中不是一个概念 + List topicList = dataStatsDao.getSubGridTopic(gridIds, formDTO.getDateId()); + //转议题话题-网格日统计数据表 + List topicShiftIssueList = dataStatsDao.getSubGridTopicShiftIssue(gridIds, formDTO.getDateId()); + //热议中话题-网格日统计数据 + List hotdiscussList = dataStatsDao.getSubGridTopicHotDiscuss(gridIds, formDTO.getDateId()); + AtomicReference closedTotal = new AtomicReference<>(0); + if (topicList.size() > NumConstant.ZERO) { + resultDTO.setTopicTotal(topicList.stream().collect(Collectors.summingInt(SubGridFormDTO.Topic::getTopicCount))); + topicList.forEach(t -> { + if (t.getTopicStatus().equals("closed")) { + closedTotal.set(t.getTopicCount()); + } + }); + } + //转议题 + if (topicShiftIssueList.size() > NumConstant.ZERO) { + resultDTO.setShiftIssueTotal(topicShiftIssueList.get(0).getShiftedIssueTotal()); + resultDTO.setShiftIssueRatio(resultDTO.getShiftIssueTotal() == 0 || resultDTO.getTopicTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) resultDTO.getShiftIssueTotal() / (float) resultDTO.getTopicTotal()))); + } + //热议中 + if (hotdiscussList.size() > NumConstant.ZERO) { + resultDTO.setDiscussingTotal(hotdiscussList.get(0).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()))); + + //4.查询网格下最新议题日统计数据 + List issueList = dataStatsDao.getSubGridIssue(gridIds, formDTO.getDateId()); + if (issueList.size() > NumConstant.ZERO) { + resultDTO.setIssueTotal(issueList.get(0).getIssueTotal()); + resultDTO.setVotingTotal(issueList.get(0).getVotingTotal()); + resultDTO.setVotingRatio(resultDTO.getVotingTotal() == 0 || resultDTO.getIssueTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) resultDTO.getVotingTotal() / (float) resultDTO.getIssueTotal()))); + resultDTO.setClosedIssueTotal(issueList.get(0).getClosedIssueTotal()); + resultDTO.setClosedIssueRatio(resultDTO.getClosedIssueTotal() == 0 || resultDTO.getIssueTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) resultDTO.getClosedIssueTotal() / (float) resultDTO.getIssueTotal()))); + resultDTO.setShiftProjectTotal(issueList.get(0).getShiftProjectTotal()); + resultDTO.setShiftProjectRatio(resultDTO.getShiftProjectTotal() == 0 || resultDTO.getIssueTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) resultDTO.getShiftProjectTotal() / (float) resultDTO.getIssueTotal()))); + } + + //5.查询网格下最新项目日统计数据 + List projectList = dataStatsDao.getSubGridProject(gridIds, formDTO.getDateId()); + if (projectList.size() > NumConstant.ZERO) { + resultDTO.setProjectTotal(projectList.get(0).getProjectTotal()); + resultDTO.setPendingTotal(projectList.get(0).getPendingTotal()); + resultDTO.setPendingRatio(resultDTO.getPendingTotal() == 0 || resultDTO.getProjectTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) resultDTO.getPendingTotal() / (float) resultDTO.getProjectTotal()))); + resultDTO.setClosedProjectTotal(projectList.get(0).getClosedProjectTotal()); + resultDTO.setClosedProjectRatio(resultDTO.getClosedProjectTotal() == 0 || resultDTO.getProjectTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) resultDTO.getClosedProjectTotal() / (float) resultDTO.getProjectTotal()))); + } + + return resultDTO; + } + /** * @Param formDTO * @Description 查询当前组织的直属下级组织用户数据 @@ -141,7 +239,7 @@ public class DataStatsServiceImpl implements DataStatsService { public List subAgencyUser(SubAgencyFormDTO formDTO) { List resultList = new ArrayList<>(); NumberFormat numberFormat = NumberFormat.getInstance(); - numberFormat.setMaximumFractionDigits(NumConstant.FOUR); + numberFormat.setMaximumFractionDigits(NumConstant.THREE); //入参有日期的则按具体时间执行,没有的则按当前时间前一天执行 if (StringUtils.isBlank(formDTO.getDateId())) { @@ -204,7 +302,7 @@ public class DataStatsServiceImpl implements DataStatsService { public List subGridUser(SubGridFormDTO formDTO) { List resultList = new ArrayList<>(); NumberFormat numberFormat = NumberFormat.getInstance(); - numberFormat.setMaximumFractionDigits(NumConstant.FOUR); + numberFormat.setMaximumFractionDigits(NumConstant.THREE); //入参有日期的则按具体时间执行,没有的则按当前时间前一天执行 if (StringUtils.isBlank(formDTO.getDateId())) { @@ -265,7 +363,7 @@ public class DataStatsServiceImpl implements DataStatsService { public List subAgencyGroup(SubAgencyFormDTO formDTO) { List resultList = new ArrayList<>(); NumberFormat numberFormat = NumberFormat.getInstance(); - numberFormat.setMaximumFractionDigits(NumConstant.FOUR); + numberFormat.setMaximumFractionDigits(NumConstant.THREE); //入参有日期的则按具体时间执行,没有的则按当前时间前一天执行 if (StringUtils.isBlank(formDTO.getDateId())) { @@ -325,7 +423,7 @@ public class DataStatsServiceImpl implements DataStatsService { public List subGridGroup(SubGridFormDTO formDTO) { List resultList = new ArrayList<>(); NumberFormat numberFormat = NumberFormat.getInstance(); - numberFormat.setMaximumFractionDigits(NumConstant.FOUR); + numberFormat.setMaximumFractionDigits(NumConstant.THREE); //入参有日期的则按具体时间执行,没有的则按当前时间前一天执行 if (StringUtils.isBlank(formDTO.getDateId())) { @@ -386,7 +484,7 @@ public class DataStatsServiceImpl implements DataStatsService { public List subAgencyTopic(SubAgencyFormDTO formDTO) { List resultList = new ArrayList<>(); NumberFormat numberFormat = NumberFormat.getInstance(); - numberFormat.setMaximumFractionDigits(NumConstant.FOUR); + numberFormat.setMaximumFractionDigits(NumConstant.THREE); //入参有日期的则按具体时间执行,没有的则按当前时间前一天执行 if (StringUtils.isBlank(formDTO.getDateId())) { @@ -486,7 +584,7 @@ public class DataStatsServiceImpl implements DataStatsService { public List subGridTopic(SubGridFormDTO formDTO) { List resultList = new ArrayList<>(); NumberFormat numberFormat = NumberFormat.getInstance(); - numberFormat.setMaximumFractionDigits(NumConstant.FOUR); + numberFormat.setMaximumFractionDigits(NumConstant.THREE); //入参有日期的则按具体时间执行,没有的则按当前时间前一天执行 if (StringUtils.isBlank(formDTO.getDateId())) { @@ -585,7 +683,7 @@ public class DataStatsServiceImpl implements DataStatsService { public List subAgencyIssue(SubAgencyFormDTO formDTO) { List resultList = new ArrayList<>(); NumberFormat numberFormat = NumberFormat.getInstance(); - numberFormat.setMaximumFractionDigits(NumConstant.FOUR); + numberFormat.setMaximumFractionDigits(NumConstant.THREE); //入参有日期的则按具体时间执行,没有的则按当前时间前一天执行 if (StringUtils.isBlank(formDTO.getDateId())) { @@ -648,7 +746,7 @@ public class DataStatsServiceImpl implements DataStatsService { public List subGridIssue(SubGridFormDTO formDTO) { List resultList = new ArrayList<>(); NumberFormat numberFormat = NumberFormat.getInstance(); - numberFormat.setMaximumFractionDigits(NumConstant.FOUR); + numberFormat.setMaximumFractionDigits(NumConstant.THREE); //入参有日期的则按具体时间执行,没有的则按当前时间前一天执行 if (StringUtils.isBlank(formDTO.getDateId())) { @@ -711,7 +809,7 @@ public class DataStatsServiceImpl implements DataStatsService { public List subAgencyProject(SubAgencyFormDTO formDTO) { List resultList = new ArrayList<>(); NumberFormat numberFormat = NumberFormat.getInstance(); - numberFormat.setMaximumFractionDigits(NumConstant.FOUR); + numberFormat.setMaximumFractionDigits(NumConstant.THREE); //入参有日期的则按具体时间执行,没有的则按当前时间前一天执行 if (StringUtils.isBlank(formDTO.getDateId())) { @@ -771,7 +869,7 @@ public class DataStatsServiceImpl implements DataStatsService { public List subGridProject(SubGridFormDTO formDTO) { List resultList = new ArrayList<>(); NumberFormat numberFormat = NumberFormat.getInstance(); - numberFormat.setMaximumFractionDigits(NumConstant.FOUR); + numberFormat.setMaximumFractionDigits(NumConstant.THREE); //入参有日期的则按具体时间执行,没有的则按当前时间前一天执行 if (StringUtils.isBlank(formDTO.getDateId())) { From 58d051118469ff6aa3b7890888ad403c876676ae Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Tue, 18 May 2021 16:13:37 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=E8=BD=AC=E8=AE=AE=E9=A2=98=E8=AF=9D?= =?UTF-8?q?=E9=A2=98=E4=B8=8D=E5=85=81=E8=AE=B8=E5=B1=8F=E8=94=BD=E6=88=96?= =?UTF-8?q?=E5=85=B3=E9=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commons/tools/exception/EpmetErrorCode.java | 1 + .../topic/service/impl/ResiTopicServiceImpl.java | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java index b7b70c5159..a38c4cbb0e 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java @@ -150,6 +150,7 @@ public enum EpmetErrorCode { TOPIC_ALREADY_SHIFTED_TO_ISSUE(9005,"该话题已被转为议题,请勿重复操作"), TOPIC_IS_HIDDEN(9006,"该话题已被屏蔽,请先解除屏蔽"), TOPIC_IS_CLOSED(9008,"该话题已关闭,无法转为议题"), + TOPIC_SHIFT_ISSUE(9008,"该话题已转议题,不允许关闭或屏蔽"), CUSTOMER_CATEGORY(9101,"分类已使用,不允许删除"), CATEGORY_NAME(9102,"分类名称已存在,不允许重复"), diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java index ec51f04815..abf3c2a315 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java @@ -630,6 +630,12 @@ public class ResiTopicServiceImpl extends BaseServiceImpl Date: Tue, 18 May 2021 16:25:04 +0800 Subject: [PATCH 8/9] =?UTF-8?q?=E5=85=9A=E5=91=98=E5=85=88=E9=94=8B?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=B1=95=E7=A4=BA=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/dataaggre/constant/OrgConstant.java | 2 + .../form/PartyMemberVanguardFormDTO.java | 18 ++ .../PartyMemberVanguardDetailResultDTO.java | 74 ++++++++ .../PartyMemberVanguardRankResultDTO.java | 18 ++ .../PartyMemberVanguardController.java | 51 +++++ .../dataaggre/dao/datastats/DataStatsDao.java | 36 ++++ .../service/datastats/DataStatsService.java | 19 ++ .../datastats/impl/DataStatsServiceImpl.java | 68 +++++++ .../mapper/datastats/DatsStatsDao.xml | 174 ++++++++++++++++++ .../com/epmet/controller/DemoController.java | 2 +- .../StatsPartyMemberVanguardServiceImpl.java | 50 ++--- .../extract/FactOriginProjectMainDailyDao.xml | 4 + 12 files changed, 490 insertions(+), 26 deletions(-) create mode 100644 epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/PartyMemberVanguardFormDTO.java create mode 100644 epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/PartyMemberVanguardDetailResultDTO.java create mode 100644 epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/PartyMemberVanguardRankResultDTO.java create mode 100644 epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/PartyMemberVanguardController.java diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/OrgConstant.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/OrgConstant.java index 987c2a2697..a7da3d564b 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/OrgConstant.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/OrgConstant.java @@ -5,4 +5,6 @@ package com.epmet.dataaggre.constant; * @DateTime 2020/12/25 上午10:55 */ public interface OrgConstant { + String AGENCY = "agency"; + String GRID = "grid"; } diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/PartyMemberVanguardFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/PartyMemberVanguardFormDTO.java new file mode 100644 index 0000000000..2b70bbeaa0 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/PartyMemberVanguardFormDTO.java @@ -0,0 +1,18 @@ +package com.epmet.dataaggre.dto.datastats.form; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author zhaoqifeng + * @dscription + * @date 2021/5/18 14:25 + */ +@Data +public class PartyMemberVanguardFormDTO implements Serializable { + private static final long serialVersionUID = -4331281350678714877L; + private String agencyId; + private String orgId; + private String orgType; +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/PartyMemberVanguardDetailResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/PartyMemberVanguardDetailResultDTO.java new file mode 100644 index 0000000000..929178031d --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/PartyMemberVanguardDetailResultDTO.java @@ -0,0 +1,74 @@ +package com.epmet.dataaggre.dto.datastats.result; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @author zhaoqifeng + * @dscription + * @date 2021/5/18 14:27 + */ +@NoArgsConstructor +@Data +public class PartyMemberVanguardDetailResultDTO implements Serializable { + private static final long serialVersionUID = 8315392246739995430L; + /** + * 组织ID + */ + private String orgId; + /** + * 组织名 + */ + private String orgName; + /** + * 党员建组数 + */ + private Integer groupCount; + /** + * 党员建组数占比 + */ + private BigDecimal groupRatio; + /** + * 组内党员人数 + */ + private Integer groupMemberCount; + /** + * 组内党员人数占比 + */ + private BigDecimal groupMemberRatio; + /** + * 党员发布话题数 + */ + private Integer topicCount; + /** + * 党员发布话题数占比 + */ + private BigDecimal topicRatio; + /** + * 党员发布话题转议题数 + */ + private Integer issueCount; + /** + * 党员发布话题转议题数占比 + */ + private BigDecimal issueRatio; + /** + * 党员发布话题转项目数 + */ + private Integer projectCount; + /** + * 党员发布话题转项目数占比 + */ + private BigDecimal projectRatio; + /** + * 党员发布话题转项目结案数 + */ + private Integer projectClosedCount; + /** + * 党员发布话题转项目结案数占比 + */ + private BigDecimal projectClosedRatio; +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/PartyMemberVanguardRankResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/PartyMemberVanguardRankResultDTO.java new file mode 100644 index 0000000000..9d2f643229 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/PartyMemberVanguardRankResultDTO.java @@ -0,0 +1,18 @@ +package com.epmet.dataaggre.dto.datastats.result; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @author zhaoqifeng + * @dscription + * @date 2021/5/18 14:30 + */ +@Data +public class PartyMemberVanguardRankResultDTO implements Serializable { + private static final long serialVersionUID = -3103242333633668412L; + private List agencyRank; + private List gridRank; +} diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/PartyMemberVanguardController.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/PartyMemberVanguardController.java new file mode 100644 index 0000000000..6acf23d69e --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/PartyMemberVanguardController.java @@ -0,0 +1,51 @@ +package com.epmet.dataaggre.controller; + +import com.epmet.commons.tools.utils.Result; +import com.epmet.dataaggre.dto.datastats.form.PartyMemberVanguardFormDTO; +import com.epmet.dataaggre.dto.datastats.result.PartyMemberVanguardDetailResultDTO; +import com.epmet.dataaggre.dto.datastats.result.PartyMemberVanguardRankResultDTO; +import com.epmet.dataaggre.service.datastats.DataStatsService; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * @author zhaoqifeng + * @dscription + * @date 2021/5/18 14:19 + */ +@RestController +@RequestMapping("vanguard") +public class PartyMemberVanguardController { + @Resource + private DataStatsService dataStatsService; + + /** + * 党员先锋--组织/网格详情 + * @author zhaoqifeng + * @date 2021/5/18 15:16 + * @param formDTO + * @return com.epmet.commons.tools.utils.Result + */ + @PostMapping("detail") + public Result vanguardDetail(@RequestBody PartyMemberVanguardFormDTO formDTO) { + PartyMemberVanguardDetailResultDTO result = dataStatsService.vanguardDetail(formDTO); + return new Result().ok(result); + } + + /** + * 党员先锋--下级组织排行 + * @author zhaoqifeng + * @date 2021/5/18 15:16 + * @param formDTO + * @return com.epmet.commons.tools.utils.Result + */ + @PostMapping("orgrank") + public Result vanguardRank(@RequestBody PartyMemberVanguardFormDTO formDTO) { + PartyMemberVanguardRankResultDTO result = dataStatsService.vanguardRank(formDTO); + return new Result().ok(result); + } +} 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 d84e733e50..d6729152b5 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 @@ -172,4 +172,40 @@ public interface DataStatsDao { */ List getSubGridProject(@Param("gridIds") List gridIds, @Param("dateId") String dateId); + /** + * 查询组织党员先锋详情 + * @author zhaoqifeng + * @date 2021/5/18 14:40 + * @param agencyId + * @return com.epmet.dataaggre.dto.datastats.result.PartyMemberVanguardDetailResultDTO + */ + PartyMemberVanguardDetailResultDTO selectAgencyVanguardDetail(@Param("agencyId") String agencyId); + + /** + * 查询网格党员先锋详情 + * @author zhaoqifeng + * @date 2021/5/18 14:40 + * @param grid + * @return com.epmet.dataaggre.dto.datastats.result.PartyMemberVanguardDetailResultDTO + */ + PartyMemberVanguardDetailResultDTO selectGridVanguardDetail(@Param("grid") String grid); + + /** + * 查询组织党员先锋排行 + * @author zhaoqifeng + * @date 2021/5/18 15:02 + * @param agencyId + * @return java.util.List + */ + List selectAgencyVanguardRank(@Param("agencyId") String agencyId); + + /** + * 查询网格党员先锋排行 + * @author zhaoqifeng + * @date 2021/5/18 15:03 + * @param agencyId + * @return java.util.List + */ + List selectGridVanguardRank(@Param("agencyId") String agencyId); + } \ 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 256aaeb15c..282a2d8f8a 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 @@ -1,6 +1,7 @@ package com.epmet.dataaggre.service.datastats; import com.epmet.dataaggre.dto.datastats.form.AgenctBasicDataFormDTO; +import com.epmet.dataaggre.dto.datastats.form.PartyMemberVanguardFormDTO; import com.epmet.dataaggre.dto.datastats.form.GridBasicDataFormDTO; import com.epmet.dataaggre.dto.datastats.form.SubAgencyFormDTO; import com.epmet.dataaggre.dto.datastats.form.SubGridFormDTO; @@ -100,4 +101,22 @@ public interface DataStatsService { */ List subGridProject(SubGridFormDTO formDTO); + /** + * 党员先锋--组织/网格详情 + * @author zhaoqifeng + * @date 2021/5/18 14:35 + * @param formDTO + * @return com.epmet.dataaggre.dto.datastats.result.PartyMemberVanguardDetailResultDTO + */ + PartyMemberVanguardDetailResultDTO vanguardDetail(PartyMemberVanguardFormDTO formDTO); + + /** + * 党员先锋--下级组织排行 + * @author zhaoqifeng + * @date 2021/5/18 14:36 + * @param formDTO + * @return com.epmet.dataaggre.dto.datastats.result.PartyMemberVanguardDetailResultDTO + */ + PartyMemberVanguardRankResultDTO vanguardRank(PartyMemberVanguardFormDTO 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 f8ddfde557..2fdbdc353e 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 @@ -4,8 +4,10 @@ import com.epmet.commons.dynamic.datasource.annotation.DataSource; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.utils.DateUtils; import com.epmet.dataaggre.constant.DataSourceConstant; +import com.epmet.dataaggre.constant.OrgConstant; import com.epmet.dataaggre.dao.datastats.DataStatsDao; import com.epmet.dataaggre.dto.datastats.form.AgenctBasicDataFormDTO; +import com.epmet.dataaggre.dto.datastats.form.PartyMemberVanguardFormDTO; import com.epmet.dataaggre.dto.datastats.form.GridBasicDataFormDTO; import com.epmet.dataaggre.dto.datastats.form.SubAgencyFormDTO; import com.epmet.dataaggre.dto.datastats.form.SubGridFormDTO; @@ -14,11 +16,13 @@ import com.epmet.dataaggre.entity.datastats.DimAgencyEntity; import com.epmet.dataaggre.entity.datastats.DimGridEntity; import com.epmet.dataaggre.service.datastats.DataStatsService; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.NumberFormat; import java.text.SimpleDateFormat; import java.util.*; @@ -920,4 +924,68 @@ public class DataStatsServiceImpl implements DataStatsService { return resultList; } + /** + * 党员先锋--组织/网格详情 + * + * @param formDTO + * @return com.epmet.dataaggre.dto.datastats.result.PartyMemberVanguardDetailResultDTO + * @author zhaoqifeng + * @date 2021/5/18 14:35 + */ + @Override + public PartyMemberVanguardDetailResultDTO vanguardDetail(PartyMemberVanguardFormDTO formDTO) { + PartyMemberVanguardDetailResultDTO result; + if (OrgConstant.AGENCY.equals(formDTO.getOrgType())) { + result = dataStatsDao.selectAgencyVanguardDetail(formDTO.getOrgId()); + } else { + result = dataStatsDao.selectGridVanguardDetail(formDTO.getOrgId()); + } + result.setGroupRatio(transform(result.getGroupRatio())); + result.setGroupMemberRatio(transform(result.getGroupMemberRatio())); + result.setTopicRatio(transform(result.getTopicRatio())); + result.setIssueRatio(transform(result.getIssueRatio())); + result.setProjectRatio(transform(result.getProjectRatio())); + result.setProjectClosedRatio(transform(result.getProjectClosedRatio())); + return result; + } + + /** + * 党员先锋--下级组织排行 + * + * @param formDTO + * @return com.epmet.dataaggre.dto.datastats.result.PartyMemberVanguardDetailResultDTO + * @author zhaoqifeng + * @date 2021/5/18 14:36 + */ + @Override + public PartyMemberVanguardRankResultDTO vanguardRank(PartyMemberVanguardFormDTO formDTO) { + List agencyRank = dataStatsDao.selectAgencyVanguardRank(formDTO.getAgencyId()); + List gridRank = dataStatsDao.selectGridVanguardRank(formDTO.getAgencyId()); + PartyMemberVanguardRankResultDTO result = new PartyMemberVanguardRankResultDTO(); + result.setAgencyRank(CollectionUtils.isNotEmpty(agencyRank)?agencyRank:Collections.emptyList()); + result.setGridRank(CollectionUtils.isNotEmpty(gridRank)?gridRank:Collections.emptyList()); + result.getAgencyRank().forEach(item -> { + item.setGroupRatio(transform(item.getGroupRatio())); + item.setGroupMemberRatio(transform(item.getGroupMemberRatio())); + item.setTopicRatio(transform(item.getTopicRatio())); + item.setIssueRatio(transform(item.getIssueRatio())); + item.setProjectRatio(transform(item.getProjectRatio())); + item.setProjectClosedRatio(transform(item.getProjectClosedRatio())); + }); + result.getGridRank().forEach(item -> { + item.setGroupRatio(transform(item.getGroupRatio())); + item.setGroupMemberRatio(transform(item.getGroupMemberRatio())); + item.setTopicRatio(transform(item.getTopicRatio())); + item.setIssueRatio(transform(item.getIssueRatio())); + item.setProjectRatio(transform(item.getProjectRatio())); + item.setProjectClosedRatio(transform(item.getProjectClosedRatio())); + }); + return result; + } + + private BigDecimal transform(BigDecimal count) { + return count.multiply(new BigDecimal(NumConstant.ONE_HUNDRED) ).setScale(NumConstant.ONE, + RoundingMode.HALF_UP); + } + } 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 4096010837..ffaeff4e5d 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 @@ -356,5 +356,179 @@ ORDER BY project_total DESC + + + + \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java index 018dc35102..644830e3a2 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java @@ -878,7 +878,7 @@ public class DemoController { } @PostMapping("vanguard") - public Result partyMemberVanguard(StatsFormDTO formDTO) { + public Result partyMemberVanguard(@RequestBody StatsFormDTO formDTO) { statsPartyMemberVanguardService.agencyStats(formDTO); statsPartyMemberVanguardService.gridStats(formDTO); return new Result(); diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsPartyMemberVanguardServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsPartyMemberVanguardServiceImpl.java index 080a168591..7147774894 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsPartyMemberVanguardServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsPartyMemberVanguardServiceImpl.java @@ -146,9 +146,9 @@ public class StatsPartyMemberVanguardServiceImpl implements StatsPartyMemberVang vanguardList.forEach(item -> { OrgStatisticsResultDTO dto = topicStatic.get(item.getAgencyId()); if (null != dto) { - item.setGroupMemberCount(dto.getCount()); - item.setGroupMemberRatio(dto.getRatio()); - item.setGroupMemberTotal(dto.getSum()); + item.setTopicCount(dto.getCount()); + item.setTopicRatio(dto.getRatio()); + item.setTopicTotal(dto.getSum()); } }); } @@ -159,9 +159,9 @@ public class StatsPartyMemberVanguardServiceImpl implements StatsPartyMemberVang vanguardList.forEach(item -> { OrgStatisticsResultDTO dto = issueStatic.get(item.getAgencyId()); if (null != dto) { - item.setGroupMemberCount(dto.getCount()); - item.setGroupMemberRatio(dto.getRatio()); - item.setGroupMemberTotal(dto.getSum()); + item.setIssueCount(dto.getCount()); + item.setIssueRatio(dto.getRatio()); + item.setIssueTotal(dto.getSum()); } }); } @@ -172,9 +172,9 @@ public class StatsPartyMemberVanguardServiceImpl implements StatsPartyMemberVang vanguardList.forEach(item -> { OrgStatisticsResultDTO dto = projectStatic.get(item.getAgencyId()); if (null != dto) { - item.setGroupMemberCount(dto.getCount()); - item.setGroupMemberRatio(dto.getRatio()); - item.setGroupMemberTotal(dto.getSum()); + item.setProjectCount(dto.getCount()); + item.setProjectRatio(dto.getRatio()); + item.setProjectTotal(dto.getSum()); } }); } @@ -185,9 +185,9 @@ public class StatsPartyMemberVanguardServiceImpl implements StatsPartyMemberVang vanguardList.forEach(item -> { OrgStatisticsResultDTO dto = closedStatic.get(item.getAgencyId()); if (null != dto) { - item.setGroupMemberCount(dto.getCount()); - item.setGroupMemberRatio(dto.getRatio()); - item.setGroupMemberTotal(dto.getSum()); + item.setProjectClosedCount(dto.getCount()); + item.setProjectClosedRatio(dto.getRatio()); + item.setProjectClosedTotal(dto.getSum()); } }); } @@ -214,7 +214,7 @@ public class StatsPartyMemberVanguardServiceImpl implements StatsPartyMemberVang } //入参有客户Id的则按客户Id执行,没有的则全部客户都执行 if (null != formDTO && StringUtils.isNotBlank(formDTO.getCustomerId())) { - customerAgencyStats(formDTO.getCustomerId(), date); + customerGridStats(formDTO.getCustomerId(), date); } else { int pageNo = 1; int pageSize = 100; @@ -282,9 +282,9 @@ public class StatsPartyMemberVanguardServiceImpl implements StatsPartyMemberVang vanguardList.forEach(item -> { OrgStatisticsResultDTO dto = topicStatic.get(item.getGridId()); if (null != dto) { - item.setGroupMemberCount(dto.getCount()); - item.setGroupMemberRatio(dto.getRatio()); - item.setGroupMemberTotal(dto.getSum()); + item.setTopicCount(dto.getCount()); + item.setTopicRatio(dto.getRatio()); + item.setTopicTotal(dto.getSum()); } }); } @@ -295,9 +295,9 @@ public class StatsPartyMemberVanguardServiceImpl implements StatsPartyMemberVang vanguardList.forEach(item -> { OrgStatisticsResultDTO dto = issueStatic.get(item.getGridId()); if (null != dto) { - item.setGroupMemberCount(dto.getCount()); - item.setGroupMemberRatio(dto.getRatio()); - item.setGroupMemberTotal(dto.getSum()); + item.setIssueCount(dto.getCount()); + item.setIssueRatio(dto.getRatio()); + item.setIssueTotal(dto.getSum()); } }); } @@ -308,9 +308,9 @@ public class StatsPartyMemberVanguardServiceImpl implements StatsPartyMemberVang vanguardList.forEach(item -> { OrgStatisticsResultDTO dto = projectStatic.get(item.getGridId()); if (null != dto) { - item.setGroupMemberCount(dto.getCount()); - item.setGroupMemberRatio(dto.getRatio()); - item.setGroupMemberTotal(dto.getSum()); + item.setProjectCount(dto.getCount()); + item.setProjectRatio(dto.getRatio()); + item.setProjectTotal(dto.getSum()); } }); } @@ -321,9 +321,9 @@ public class StatsPartyMemberVanguardServiceImpl implements StatsPartyMemberVang vanguardList.forEach(item -> { OrgStatisticsResultDTO dto = closedStatic.get(item.getGridId()); if (null != dto) { - item.setGroupMemberCount(dto.getCount()); - item.setGroupMemberRatio(dto.getRatio()); - item.setGroupMemberTotal(dto.getSum()); + item.setProjectClosedCount(dto.getCount()); + item.setProjectClosedRatio(dto.getRatio()); + item.setProjectClosedTotal(dto.getSum()); } }); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml index 92fe50a99c..dc6b766fb7 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml @@ -769,6 +769,7 @@ FROM fact_origin_project_main_daily WHERE CUSTOMER_ID = #{customerId} AND DATE_ID <= #{dateId} + AND ORIGIN = 'issue' GROUP BY AGENCY_ID From e8cfbdfbd77b6ee72a07859750ec22490a3ebd8b Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Tue, 18 May 2021 16:27:32 +0800 Subject: [PATCH 9/9] =?UTF-8?q?=E5=85=9A=E5=91=98=E5=85=88=E9=94=8B?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=B1=95=E7=A4=BA=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/feign/DataStatisticalOpenFeignClient.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/feign/DataStatisticalOpenFeignClient.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/feign/DataStatisticalOpenFeignClient.java index e6a46879f4..dfafe94a1e 100644 --- a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/feign/DataStatisticalOpenFeignClient.java +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/feign/DataStatisticalOpenFeignClient.java @@ -244,7 +244,7 @@ public interface DataStatisticalOpenFeignClient { * @return com.epmet.commons.tools.utils.Result */ @PostMapping("/data/stats/vanguard/agencyvanguardstats") - Result agencyVanguardStats(StatsFormDTO formDTO); + Result agencyVanguardStats(@RequestBody StatsFormDTO formDTO); /** * 党员先锋统计-网格 @@ -254,6 +254,6 @@ public interface DataStatisticalOpenFeignClient { * @return com.epmet.commons.tools.utils.Result */ @PostMapping("/data/stats/vanguard/gridvanguardstats") - Result gridVanguardStats(StatsFormDTO formDTO); + Result gridVanguardStats(@RequestBody StatsFormDTO formDTO); }