Browse Source

Merge remote-tracking branch 'origin/dev_third_data' into dev_third_data

# Conflicts:
#	epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java
#	epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java
#	epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java
feature/evaluate
yinzuomei 4 years ago
parent
commit
3ada3d5f8f
  1. 4
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/NumConstant.java
  2. 1
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java
  3. 2
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/OrgConstant.java
  4. 28
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/GridBasicDataFormDTO.java
  5. 18
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/PartyMemberVanguardFormDTO.java
  6. 2
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/SubAgencyFormDTO.java
  7. 2
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/SubGridFormDTO.java
  8. 2
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/AgencyBasicDataResultDTO.java
  9. 96
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/GridBasicDataResultDTO.java
  10. 74
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/PartyMemberVanguardDetailResultDTO.java
  11. 18
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/PartyMemberVanguardRankResultDTO.java
  12. 12
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/DataStatsController.java
  13. 51
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/PartyMemberVanguardController.java
  14. 54
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java
  15. 28
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java
  16. 235
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java
  17. 217
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml
  18. 126
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/topic/FactTopicHotdiscussAgencyDailyDTO.java
  19. 126
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/topic/FactTopicHotdiscussGridDailyDTO.java
  20. 24
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/topic/form/TopicStatusFormDTO.java
  21. 39
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/topic/result/TopicListResultDTO.java
  22. 20
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/feign/DataStatisticalOpenFeignClient.java
  23. 26
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/feign/impl/DataStatisticalOpenFeignClientFallBack.java
  24. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java
  25. 49
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/StatsPartyMemberVanguardController.java
  26. 23
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/StatsTopicController.java
  27. 38
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/FactTopicHotdiscussAgencyDailyDao.java
  28. 38
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/FactTopicHotdiscussGridDailyDao.java
  29. 7
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/topic/TopicDao.java
  30. 96
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/stats/FactTopicHotdiscussAgencyDailyEntity.java
  31. 96
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/stats/FactTopicHotdiscussGridDailyEntity.java
  32. 13
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/StatsTopicService.java
  33. 34
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginExtractServiceImpl.java
  34. 6
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsGroupServiceImpl.java
  35. 50
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsPartyMemberVanguardServiceImpl.java
  36. 250
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsTopicServiceImpl.java
  37. 101
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/FactTopicHotdiscussAgencyDailyService.java
  38. 101
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/FactTopicHotdiscussGridDailyService.java
  39. 109
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/FactTopicHotdiscussAgencyDailyServiceImpl.java
  40. 109
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/FactTopicHotdiscussGridDailyServiceImpl.java
  41. 7
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/TopicService.java
  42. 11
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/impl/TopicServiceImpl.java
  43. 87
      epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.13__group_and_topic_stats.sql
  44. 4
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml
  45. 15
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactTopicHotdiscussAgencyDailyDao.xml
  46. 15
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactTopicHotdiscussGridDailyDao.xml
  47. 19
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/topic/TopicDao.xml
  48. 29
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/StatsPartyMemberVanguardService.java
  49. 47
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/StatsPartyMemberVanguardServiceImpl.java
  50. 46
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/StatsPartyMemberVanguardTask.java
  51. 41
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ProjectCategoryDisPoseResultDTO.java
  52. 9
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java
  53. 5
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java
  54. 17
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueProjectCategoryDictController.java
  55. 10
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueProjectCategoryDictDao.java
  56. 13
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueProjectCategoryDictService.java
  57. 39
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProjectCategoryDictServiceImpl.java
  58. 14
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectCategoryDictDao.xml
  59. 43
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/MassesDiscontentFormDTO.java
  60. 62
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/MassesDiscontentResultDTO.java
  61. 31
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectScoreResultDTO.java
  62. 14
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/ProjectConstant.java
  63. 14
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectSatisfactionStatisticsController.java
  64. 9
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectCategoryDao.java
  65. 10
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java
  66. 12
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectSatisfactionStatisticsDao.java
  67. 10
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectSatisfactionStatisticsService.java
  68. 102
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectSatisfactionStatisticsServiceImpl.java
  69. 15
      epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectCategoryDao.xml
  70. 14
      epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml
  71. 24
      epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectSatisfactionStatisticsDao.xml
  72. 42
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/TopicInfoResultDTO.java
  73. 11
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java
  74. 6
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java
  75. 11
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java
  76. 8
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/ResiTopicDao.java
  77. 8
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/ResiTopicService.java
  78. 39
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java
  79. 25
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicDao.xml

4
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/NumConstant.java

@ -48,6 +48,10 @@ public interface NumConstant {
int MAX = 99999999;
int EIGHTY_EIGHT = 88;
int EIGHTY = 80;
int NINETY = 90;
int ONE_HUNDRED_AND_EIGHTY = 180;
int THREE_HUNDRED_AND_SIXTY_FIVE = 365;
int SEVENTY_FIVE = 75;
double ZERO_DOT_ZERO = 0.0;

1
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,"分类名称已存在,不允许重复"),

2
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";
}

28
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{}
}

18
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;
}

2
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

2
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

2
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

96
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;
}
}

74
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;
}

18
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<PartyMemberVanguardDetailResultDTO> agencyRank;
private List<PartyMemberVanguardDetailResultDTO> gridRank;
}

12
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<AgencyBasicDataResultDTO>().ok(dataStatsService.agencyBasicData(formDTO));
}
/**
* @Param formDTO
* @Description 网格下五项基础数据汇总
* @author sun
*/
@PostMapping("gridbasicdata")
public Result<GridBasicDataResultDTO> gridBasicData(@RequestBody GridBasicDataFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, GridBasicDataFormDTO.Grid.class);
return new Result<GridBasicDataResultDTO>().ok(dataStatsService.gridBasicData(formDTO));
}
/**
* @Param formDTO
* @Description 查询当前组织的直属下级组织用户数据

51
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<com.epmet.dataaggre.dto.datastats.result.PartyMemberVanguardDetailResultDTO>
*/
@PostMapping("detail")
public Result<PartyMemberVanguardDetailResultDTO> vanguardDetail(@RequestBody PartyMemberVanguardFormDTO formDTO) {
PartyMemberVanguardDetailResultDTO result = dataStatsService.vanguardDetail(formDTO);
return new Result<PartyMemberVanguardDetailResultDTO>().ok(result);
}
/**
* 党员先锋--下级组织排行
* @author zhaoqifeng
* @date 2021/5/18 15:16
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<com.epmet.dataaggre.dto.datastats.result.PartyMemberVanguardRankResultDTO>
*/
@PostMapping("orgrank")
public Result<PartyMemberVanguardRankResultDTO> vanguardRank(@RequestBody PartyMemberVanguardFormDTO formDTO) {
PartyMemberVanguardRankResultDTO result = dataStatsService.vanguardRank(formDTO);
return new Result<PartyMemberVanguardRankResultDTO>().ok(result);
}
}

54
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java

@ -59,6 +59,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
@ -119,6 +125,12 @@ public interface DataStatsDao {
*/
List<SubAgencyFormDTO.Topic> getSubAgencyTopicShiftIssue(@Param("agencyIds") List<String> agencyIds, @Param("dateId") String dateId);
/**
* @Description 查询直属下级组织热议中话题-机关日统计数据
* @author sun
*/
List<SubAgencyFormDTO.Topic> getSubAgencyTopicHotDiscuss(@Param("agencyIds") List<String> agencyIds, @Param("dateId") String dateId);
/**
* @Description 查询网格层级状态话题-日统计数据
* @author sun
@ -131,6 +143,12 @@ public interface DataStatsDao {
*/
List<SubGridFormDTO.Topic> getSubGridTopicShiftIssue(@Param("gridIds") List<String> gridIds, @Param("dateId") String dateId);
/**
* @Description 查询网格层级热议中话题-日统计数据
* @author sun
*/
List<SubGridFormDTO.Topic> getSubGridTopicHotDiscuss(@Param("gridIds") List<String> gridIds, @Param("dateId") String dateId);
/**
* @Description 查询直属下级组织议题日统计数据默认按议题总数降序
* @author sun
@ -155,6 +173,42 @@ public interface DataStatsDao {
*/
List<SubGridProjectResultDTO> getSubGridProject(@Param("gridIds") List<String> 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<com.epmet.dataaggre.dto.datastats.result.PartyMemberVanguardDetailResultDTO>
*/
List<PartyMemberVanguardDetailResultDTO> selectAgencyVanguardRank(@Param("agencyId") String agencyId);
/**
* 查询网格党员先锋排行
* @author zhaoqifeng
* @date 2021/5/18 15:03
* @param agencyId
* @return java.util.List<com.epmet.dataaggre.dto.datastats.result.PartyMemberVanguardDetailResultDTO>
*/
List<PartyMemberVanguardDetailResultDTO> selectGridVanguardRank(@Param("agencyId") String agencyId);
List<FactGroupActDailyDTO> branchConAnalysis(@Param("customerId")String customerId,
@Param("orgId")String orgId,
@Param("orgType")String orgType,

28
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java

@ -2,6 +2,8 @@ package com.epmet.dataaggre.service.datastats;
import com.epmet.dataaggre.dto.datastats.FactGroupActDailyDTO;
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;
import com.epmet.dataaggre.dto.datastats.result.*;
@ -21,6 +23,13 @@ public interface DataStatsService {
*/
AgencyBasicDataResultDTO agencyBasicData(AgenctBasicDataFormDTO formDTO);
/**
* @Param formDTO
* @Description 网格下五项基础数据汇总
* @author sun
*/
GridBasicDataResultDTO gridBasicData(GridBasicDataFormDTO formDTO);
/**
* @Param formDTO
* @Description 查询当前组织的直属下级组织用户数据
@ -93,6 +102,25 @@ public interface DataStatsService {
*/
List<SubGridProjectResultDTO> 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);
List<FactGroupActDailyDTO> branchConAnalysis(String customerId, String orgId, String orgType, String dateId, String parentCode);
List<FactGroupActDailyDTO> querySubAnalysisByCode(String customerId, String pid, String dateId, String categoryCode);

235
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java

@ -4,9 +4,12 @@ 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.FactGroupActDailyDTO;
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;
import com.epmet.dataaggre.dto.datastats.result.*;
@ -14,11 +17,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.*;
@ -48,7 +53,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())) {
@ -79,29 +84,32 @@ public class DataStatsServiceImpl implements DataStatsService {
//3.查询组织下最新话题日统计数据
//状态话题-机关日统计数据表最新日期三种状态数据
//机关日表里三种类型数据之和就是话题总量,讨论中数量与热议中不是一个概念,热议中=总量-关闭数-屏蔽数-转议题数
//机关日表里三种类型数据之和就是话题总量,讨论中数量与热议中不是一个概念
List<AgencyBasicDataResultDTO.Topic> 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<Integer> closedTotal = new AtomicReference<>(0);
AtomicReference<Integer> 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())));
@ -130,6 +138,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<String> gridIds = new ArrayList<>();
gridIds.add(formDTO.getGridId());
List<SubGridUserResultDTO> 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<SubGridGroupResultDTO> 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<SubGridFormDTO.Topic> topicList = dataStatsDao.getSubGridTopic(gridIds, formDTO.getDateId());
//转议题话题-网格日统计数据表
List<SubGridFormDTO.Topic> topicShiftIssueList = dataStatsDao.getSubGridTopicShiftIssue(gridIds, formDTO.getDateId());
//热议中话题-网格日统计数据
List<SubGridFormDTO.Topic> hotdiscussList = dataStatsDao.getSubGridTopicHotDiscuss(gridIds, formDTO.getDateId());
AtomicReference<Integer> 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<SubGridIssueResultDTO> 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<SubGridProjectResultDTO> 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 查询当前组织的直属下级组织用户数据
@ -139,7 +244,7 @@ public class DataStatsServiceImpl implements DataStatsService {
public List<SubAgencyUserResultDTO> subAgencyUser(SubAgencyFormDTO formDTO) {
List<SubAgencyUserResultDTO> resultList = new ArrayList<>();
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setMaximumFractionDigits(NumConstant.FOUR);
numberFormat.setMaximumFractionDigits(NumConstant.THREE);
//入参有日期的则按具体时间执行,没有的则按当前时间前一天执行
if (StringUtils.isBlank(formDTO.getDateId())) {
@ -202,7 +307,7 @@ public class DataStatsServiceImpl implements DataStatsService {
public List<SubGridUserResultDTO> subGridUser(SubGridFormDTO formDTO) {
List<SubGridUserResultDTO> resultList = new ArrayList<>();
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setMaximumFractionDigits(NumConstant.FOUR);
numberFormat.setMaximumFractionDigits(NumConstant.THREE);
//入参有日期的则按具体时间执行,没有的则按当前时间前一天执行
if (StringUtils.isBlank(formDTO.getDateId())) {
@ -263,7 +368,7 @@ public class DataStatsServiceImpl implements DataStatsService {
public List<SubAgencyGroupResultDTO> subAgencyGroup(SubAgencyFormDTO formDTO) {
List<SubAgencyGroupResultDTO> resultList = new ArrayList<>();
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setMaximumFractionDigits(NumConstant.FOUR);
numberFormat.setMaximumFractionDigits(NumConstant.THREE);
//入参有日期的则按具体时间执行,没有的则按当前时间前一天执行
if (StringUtils.isBlank(formDTO.getDateId())) {
@ -323,7 +428,7 @@ public class DataStatsServiceImpl implements DataStatsService {
public List<SubGridGroupResultDTO> subGridGroup(SubGridFormDTO formDTO) {
List<SubGridGroupResultDTO> resultList = new ArrayList<>();
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setMaximumFractionDigits(NumConstant.FOUR);
numberFormat.setMaximumFractionDigits(NumConstant.THREE);
//入参有日期的则按具体时间执行,没有的则按当前时间前一天执行
if (StringUtils.isBlank(formDTO.getDateId())) {
@ -384,7 +489,7 @@ public class DataStatsServiceImpl implements DataStatsService {
public List<SubAgencyTopicResultDTO> subAgencyTopic(SubAgencyFormDTO formDTO) {
List<SubAgencyTopicResultDTO> resultList = new ArrayList<>();
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setMaximumFractionDigits(NumConstant.FOUR);
numberFormat.setMaximumFractionDigits(NumConstant.THREE);
//入参有日期的则按具体时间执行,没有的则按当前时间前一天执行
if (StringUtils.isBlank(formDTO.getDateId())) {
@ -405,16 +510,18 @@ public class DataStatsServiceImpl implements DataStatsService {
List<String> agencyIds = subAgencyList.stream().map(DimAgencyEntity::getId).collect(Collectors.toList());
//2.查询直属下级组织状态话题-日统计数据
//机关日表里三种类型数据之和就是话题总量,讨论中数量与热议中不是一个概念,热议中=总量-关闭数-屏蔽数-转议题数
//机关日表里三种类型数据之和就是话题总量,讨论中数量与热议中不是一个概念
List<SubAgencyFormDTO.Topic> topic = dataStatsDao.getSubAgencyTopic(agencyIds, formDTO.getDateId());
//查询直属下级组织转议题话题-日统计数据表
List<SubAgencyFormDTO.Topic> topicShiftIssue = dataStatsDao.getSubAgencyTopicShiftIssue(agencyIds, formDTO.getDateId());
//查询直属下级组织热议中话题-机关日统计数据
List<SubAgencyFormDTO.Topic> 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<String> agencyName = new AtomicReference<>("");
topic.forEach(t -> {
if (t.getAgencyId().equals(agencyId)) {
@ -422,9 +529,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 -> {
@ -432,6 +536,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());
@ -441,7 +550,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())));
@ -480,7 +589,7 @@ public class DataStatsServiceImpl implements DataStatsService {
public List<SubGridTopicResultDTO> subGridTopic(SubGridFormDTO formDTO) {
List<SubGridTopicResultDTO> resultList = new ArrayList<>();
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setMaximumFractionDigits(NumConstant.FOUR);
numberFormat.setMaximumFractionDigits(NumConstant.THREE);
//入参有日期的则按具体时间执行,没有的则按当前时间前一天执行
if (StringUtils.isBlank(formDTO.getDateId())) {
@ -505,12 +614,14 @@ public class DataStatsServiceImpl implements DataStatsService {
List<SubGridFormDTO.Topic> topic = dataStatsDao.getSubGridTopic(gridIds, formDTO.getDateId());
//查询网格层级转议题话题-日统计数据表
List<SubGridFormDTO.Topic> topicShiftIssue = dataStatsDao.getSubGridTopicShiftIssue(gridIds, formDTO.getDateId());
//查询网格层级热议中话题-日统计数据
List<SubGridFormDTO.Topic> 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<String> gridName = new AtomicReference<>("");
topic.forEach(t -> {
if (t.getGridId().equals(gridId)) {
@ -518,9 +629,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 -> {
@ -528,6 +636,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());
@ -537,7 +650,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())));
@ -575,7 +688,7 @@ public class DataStatsServiceImpl implements DataStatsService {
public List<SubAgencyIssueResultDTO> subAgencyIssue(SubAgencyFormDTO formDTO) {
List<SubAgencyIssueResultDTO> resultList = new ArrayList<>();
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setMaximumFractionDigits(NumConstant.FOUR);
numberFormat.setMaximumFractionDigits(NumConstant.THREE);
//入参有日期的则按具体时间执行,没有的则按当前时间前一天执行
if (StringUtils.isBlank(formDTO.getDateId())) {
@ -638,7 +751,7 @@ public class DataStatsServiceImpl implements DataStatsService {
public List<SubGridIssueResultDTO> subGridIssue(SubGridFormDTO formDTO) {
List<SubGridIssueResultDTO> resultList = new ArrayList<>();
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setMaximumFractionDigits(NumConstant.FOUR);
numberFormat.setMaximumFractionDigits(NumConstant.THREE);
//入参有日期的则按具体时间执行,没有的则按当前时间前一天执行
if (StringUtils.isBlank(formDTO.getDateId())) {
@ -701,7 +814,7 @@ public class DataStatsServiceImpl implements DataStatsService {
public List<SubAgencyProjectResultDTO> subAgencyProject(SubAgencyFormDTO formDTO) {
List<SubAgencyProjectResultDTO> resultList = new ArrayList<>();
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setMaximumFractionDigits(NumConstant.FOUR);
numberFormat.setMaximumFractionDigits(NumConstant.THREE);
//入参有日期的则按具体时间执行,没有的则按当前时间前一天执行
if (StringUtils.isBlank(formDTO.getDateId())) {
@ -761,7 +874,7 @@ public class DataStatsServiceImpl implements DataStatsService {
public List<SubGridProjectResultDTO> subGridProject(SubGridFormDTO formDTO) {
List<SubGridProjectResultDTO> resultList = new ArrayList<>();
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setMaximumFractionDigits(NumConstant.FOUR);
numberFormat.setMaximumFractionDigits(NumConstant.THREE);
//入参有日期的则按具体时间执行,没有的则按当前时间前一天执行
if (StringUtils.isBlank(formDTO.getDateId())) {
@ -812,6 +925,70 @@ 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<PartyMemberVanguardDetailResultDTO> agencyRank = dataStatsDao.selectAgencyVanguardRank(formDTO.getAgencyId());
List<PartyMemberVanguardDetailResultDTO> 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);
}
@Override
public List<FactGroupActDailyDTO> branchConAnalysis(String customerId, String orgId, String orgType, String dateId, String parentCode) {
return dataStatsDao.branchConAnalysis(customerId,orgId,orgType,dateId,parentCode);

217
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml

@ -58,6 +58,19 @@
LIMIT 1
</select>
<select id="getAgencyTopicHotDiscuss" resultType="com.epmet.dataaggre.dto.datastats.result.AgencyBasicDataResultDTO$Topic">
SELECT
IFNULL(topic_total, 0) AS topicTotal,
IFNULL(topic_count, 0) AS topicCount
FROM
fact_topic_hotdiscuss_agency_daily
WHERE
del_flag = '0'
AND agency_id = #{agencyId}
AND date_id = #{dateId}
LIMIT 1
</select>
<select id="getAgencyIssue" resultType="com.epmet.dataaggre.dto.datastats.result.AgencyBasicDataResultDTO">
SELECT
issue_total AS issueTotal,
@ -210,6 +223,21 @@
</foreach>
</select>
<select id="getSubAgencyTopicHotDiscuss" resultType="com.epmet.dataaggre.dto.datastats.form.SubAgencyFormDTO$Topic">
SELECT
agency_id AS agencyId,
topic_total AS topicTotal,
topic_count AS topicCount
FROM
fact_topic_hotdiscuss_agency_daily
WHERE
del_flag = '0'
AND date_id = #{dateId}
<foreach item="agencyId" collection="agencyIds" open="AND (" separator="or" close=")" index="">
agency_id = #{agencyId}
</foreach>
</select>
<select id="getSubGridTopic" resultType="com.epmet.dataaggre.dto.datastats.form.SubGridFormDTO$Topic">
SELECT
grid_id AS gridId,
@ -240,6 +268,21 @@
</foreach>
</select>
<select id="getSubGridTopicHotDiscuss" resultType="com.epmet.dataaggre.dto.datastats.form.SubGridFormDTO$Topic">
SELECT
grid_id AS gridId,
topic_total AS topicTotal,
topic_count AS topicCount
FROM
fact_topic_hotdiscuss_grid_daily
WHERE
del_flag = '0'
AND date_id = #{dateId}
<foreach item="gridId" collection="gridIds" open="AND (" separator="or" close=")" index="">
grid_id = #{gridId}
</foreach>
</select>
<select id="getSubAgencyIssue" resultType="com.epmet.dataaggre.dto.datastats.result.SubAgencyIssueResultDTO">
SELECT
agency_id AS agencyId,
@ -313,6 +356,180 @@
ORDER BY
project_total DESC
</select>
<select id="selectAgencyVanguardDetail" resultType="com.epmet.dataaggre.dto.datastats.result.PartyMemberVanguardDetailResultDTO">
SELECT
orgId,
orgName,
GROUP_COUNT,
GROUP_RATIO,
GROUP_MEMBER_COUNT,
GROUP_MEMBER_RATIO,
TOPIC_COUNT,
TOPIC_RATIO,
ISSUE_COUNT,
ISSUE_RATIO,
PROJECT_COUNT,
PROJECT_RATIO,
PROJECT_CLOSED_COUNT,
PROJECT_CLOSED_RATIO
FROM
(
SELECT
AGENCY_ID AS "orgId",
AGENCY_NAME AS "orgName",
GROUP_COUNT,
GROUP_RATIO,
GROUP_MEMBER_COUNT,
GROUP_MEMBER_RATIO,
TOPIC_COUNT,
TOPIC_RATIO,
ISSUE_COUNT,
ISSUE_RATIO,
PROJECT_COUNT,
PROJECT_RATIO,
PROJECT_CLOSED_COUNT,
PROJECT_CLOSED_RATIO,
MAX( DATE_ID )
FROM
fact_party_member_vanguard_agency_daily a
INNER JOIN dim_agency b ON a.AGENCY_ID = b.ID
WHERE
a.AGENCY_ID = #{agencyId}
GROUP BY
AGENCY_ID
) a
</select>
<select id="selectGridVanguardDetail" resultType="com.epmet.dataaggre.dto.datastats.result.PartyMemberVanguardDetailResultDTO">
SELECT
orgId,
orgName,
GROUP_COUNT,
GROUP_RATIO,
GROUP_MEMBER_COUNT,
GROUP_MEMBER_RATIO,
TOPIC_COUNT,
TOPIC_RATIO,
ISSUE_COUNT,
ISSUE_RATIO,
PROJECT_COUNT,
PROJECT_RATIO,
PROJECT_CLOSED_COUNT,
PROJECT_CLOSED_RATIO
FROM
(
SELECT
GRID_ID AS "orgId",
GRID_NAME AS "orgName",
GROUP_COUNT,
GROUP_RATIO,
GROUP_MEMBER_COUNT,
GROUP_MEMBER_RATIO,
TOPIC_COUNT,
TOPIC_RATIO,
ISSUE_COUNT,
ISSUE_RATIO,
PROJECT_COUNT,
PROJECT_RATIO,
PROJECT_CLOSED_COUNT,
PROJECT_CLOSED_RATIO,
MAX( DATE_ID )
FROM
fact_party_member_vanguard_grid_daily a
INNER JOIN dim_grid b ON a.GRID_ID = b.ID
WHERE
a.GRID_ID = #{grid}
GROUP BY
GRID_ID
) a
</select>
<select id="selectAgencyVanguardRank" resultType="com.epmet.dataaggre.dto.datastats.result.PartyMemberVanguardDetailResultDTO">
SELECT
orgId,
orgName,
GROUP_COUNT,
GROUP_RATIO,
GROUP_MEMBER_COUNT,
GROUP_MEMBER_RATIO,
TOPIC_COUNT,
TOPIC_RATIO,
ISSUE_COUNT,
ISSUE_RATIO,
PROJECT_COUNT,
PROJECT_RATIO,
PROJECT_CLOSED_COUNT,
PROJECT_CLOSED_RATIO
FROM
(
SELECT
AGENCY_ID AS "orgId",
AGENCY_NAME AS "orgName",
GROUP_COUNT,
GROUP_RATIO,
GROUP_MEMBER_COUNT,
GROUP_MEMBER_RATIO,
TOPIC_COUNT,
TOPIC_RATIO,
ISSUE_COUNT,
ISSUE_RATIO,
PROJECT_COUNT,
PROJECT_RATIO,
PROJECT_CLOSED_COUNT,
PROJECT_CLOSED_RATIO,
MAX( DATE_ID )
FROM
fact_party_member_vanguard_agency_daily a
INNER JOIN dim_agency b ON a.AGENCY_ID = b.ID
WHERE
a.PID = #{agencyId}
GROUP BY
AGENCY_ID
) a
ORDER BY GROUP_COUNT DESC
</select>
<select id="selectGridVanguardRank" resultType="com.epmet.dataaggre.dto.datastats.result.PartyMemberVanguardDetailResultDTO">
SELECT
orgId,
orgName,
GROUP_COUNT,
GROUP_RATIO,
GROUP_MEMBER_COUNT,
GROUP_MEMBER_RATIO,
TOPIC_COUNT,
TOPIC_RATIO,
ISSUE_COUNT,
ISSUE_RATIO,
PROJECT_COUNT,
PROJECT_RATIO,
PROJECT_CLOSED_COUNT,
PROJECT_CLOSED_RATIO
FROM
(
SELECT
GRID_ID AS "orgId",
GRID_NAME AS "orgName",
GROUP_COUNT,
GROUP_RATIO,
GROUP_MEMBER_COUNT,
GROUP_MEMBER_RATIO,
TOPIC_COUNT,
TOPIC_RATIO,
ISSUE_COUNT,
ISSUE_RATIO,
PROJECT_COUNT,
PROJECT_RATIO,
PROJECT_CLOSED_COUNT,
PROJECT_CLOSED_RATIO,
MAX( DATE_ID )
FROM
fact_party_member_vanguard_grid_daily a
INNER JOIN dim_grid b ON a.GRID_ID = b.ID
WHERE
a.AGENCY_ID = #{agencyId}
GROUP BY
GRID_ID
) a
ORDER BY GROUP_COUNT DESC
</select>
<select id="branchConAnalysis" parameterType="map" resultType="com.epmet.dataaggre.dto.datastats.FactGroupActDailyDTO">
SELECT

126
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
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
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;
}

126
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
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
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;
}

24
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 = "";
}

39
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:false1:true
* */
private Boolean shiftIssue;
}

20
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<Boolean> 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(@RequestBody 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(@RequestBody StatsFormDTO formDTO);
}

26
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<Boolean> 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);
}
}

2
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();

49
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();
}
}

23
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();
}
}

38
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
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
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<FactTopicHotdiscussAgencyDailyEntity> {
/**
* @Author sun
* @Description 根据客户Id日维度Id批量物理删除一下可能存在的历史数据
**/
void delTopicAgency(FactTopicHotdiscussAgencyDailyEntity delEntity);
}

38
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
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
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<FactTopicHotdiscussGridDailyEntity> {
/**
* @Author sun
* @Description 根据客户Id日维度Id批量物理删除一下可能存在的历史数据
**/
void delTopicGrid(FactTopicHotdiscussGridDailyEntity delEntity);
}

7
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<ScreenProjectImgDataDTO> initNewScreenProjectImgData(@Param("customerId") String customerId, @Param("list") List<ScreenProjectDataDTO> list);
ResiTopicAndImgResultDTO getTopicAndImgs(@Param("topicId") String topicId);
/**
* @Author sun
* @Description 根据客户Id和截止日期查询话题业务数据
**/
List<TopicListResultDTO> selectTopicList(@Param("customerId") String customerId, @Param("dateId") String dateId);
}

96
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
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
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;
}

96
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
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
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;
}

13
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);
}

34
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);
}

6
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);
}

50
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());
}
});
}

250
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<String> 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<DimGridEntity> dimGridList = dimGridService.getGridListByCustomerId(customerId);
//3.根据客户Id查询客户下有效的话题数据,查询dateId之前的数据
List<TopicListResultDTO> list = topicService.getTopicList(customerId, dateId);
//4.遍历封装数据
List<FactTopicHotdiscussGridDailyEntity> 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<String> 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<DimAgencyDTO> agencyList = dimAgencyService.getDimAgencyList(dimAgencyDTO);
//3.根据客户Id查询网格维度表数据
List<DimGridEntity> gridList = dimGridService.getGridListByCustomerId(customerId);
//4..根据客户Id查询客户下有效的话题数据,查询dateId之前的数据
List<TopicListResultDTO> groupList = topicService.getTopicList(customerId, dateId);
List<FactTopicHotdiscussAgencyDailyEntity> list = new ArrayList<>();
//5.遍历组织维度数据分别计算每个组织下话题数据
DimIdGenerator.DimIdBean finalDimId = dimId;
agencyList.forEach(agency->{
FactTopicHotdiscussAgencyDailyEntity entity = new FactTopicHotdiscussAgencyDailyEntity();
//5-1.汇总组织及所有下级组织列表
Map<String, String> 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<String> 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);
}
}
}

101
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
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
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<FactTopicHotdiscussAgencyDailyEntity> {
/**
* 默认分页
*
* @param params
* @return PageData<FactTopicHotdiscussAgencyDailyDTO>
* @author generator
* @date 2021-05-17
*/
PageData<FactTopicHotdiscussAgencyDailyDTO> page(Map<String, Object> params);
/**
* 默认查询
*
* @param params
* @return java.util.List<FactTopicHotdiscussAgencyDailyDTO>
* @author generator
* @date 2021-05-17
*/
List<FactTopicHotdiscussAgencyDailyDTO> list(Map<String, Object> 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);
}

101
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
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
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<FactTopicHotdiscussGridDailyEntity> {
/**
* 默认分页
*
* @param params
* @return PageData<FactTopicHotdiscussGridDailyDTO>
* @author generator
* @date 2021-05-17
*/
PageData<FactTopicHotdiscussGridDailyDTO> page(Map<String, Object> params);
/**
* 默认查询
*
* @param params
* @return java.util.List<FactTopicHotdiscussGridDailyDTO>
* @author generator
* @date 2021-05-17
*/
List<FactTopicHotdiscussGridDailyDTO> list(Map<String, Object> 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);
}

109
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
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
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<FactTopicHotdiscussAgencyDailyDao, FactTopicHotdiscussAgencyDailyEntity> implements FactTopicHotdiscussAgencyDailyService {
@Override
public PageData<FactTopicHotdiscussAgencyDailyDTO> page(Map<String, Object> params) {
IPage<FactTopicHotdiscussAgencyDailyEntity> page = baseDao.selectPage(
getPage(params, FieldConstant.CREATED_TIME, false),
getWrapper(params)
);
return getPageData(page, FactTopicHotdiscussAgencyDailyDTO.class);
}
@Override
public List<FactTopicHotdiscussAgencyDailyDTO> list(Map<String, Object> params) {
List<FactTopicHotdiscussAgencyDailyEntity> entityList = baseDao.selectList(getWrapper(params));
return ConvertUtils.sourceToTarget(entityList, FactTopicHotdiscussAgencyDailyDTO.class);
}
private QueryWrapper<FactTopicHotdiscussAgencyDailyEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
QueryWrapper<FactTopicHotdiscussAgencyDailyEntity> 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);
}
}

109
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
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
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<FactTopicHotdiscussGridDailyDao, FactTopicHotdiscussGridDailyEntity> implements FactTopicHotdiscussGridDailyService {
@Override
public PageData<FactTopicHotdiscussGridDailyDTO> page(Map<String, Object> params) {
IPage<FactTopicHotdiscussGridDailyEntity> page = baseDao.selectPage(
getPage(params, FieldConstant.CREATED_TIME, false),
getWrapper(params)
);
return getPageData(page, FactTopicHotdiscussGridDailyDTO.class);
}
@Override
public List<FactTopicHotdiscussGridDailyDTO> list(Map<String, Object> params) {
List<FactTopicHotdiscussGridDailyEntity> entityList = baseDao.selectList(getWrapper(params));
return ConvertUtils.sourceToTarget(entityList, FactTopicHotdiscussGridDailyDTO.class);
}
private QueryWrapper<FactTopicHotdiscussGridDailyEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
QueryWrapper<FactTopicHotdiscussGridDailyEntity> 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);
}
}

7
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<TopicListResultDTO> getTopicList(String customerId, String dateId);
}

11
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<TopicOriginInfoDTO> queryTopicOriginInfoList(String customerId, String dateId) {
return topicDao.selectListTopicOriginInfo(customerId, dateId);
}
/**
* @Author sun
* @Description 根据客户Id和截止日期查询话题业务数据
**/
@Override
public List<TopicListResultDTO> getTopicList(String customerId, String dateId) {
return topicDao.selectTopicList(customerId, dateId);
}
}

87
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='热议中话题网格日统计表【热议中指的没有被关闭、屏蔽、转议题的话题】';

4
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 &lt;= #{dateId}
AND ORIGIN = 'issue'
GROUP BY AGENCY_ID
</select>
<select id="selectPartyMemberProjectStaticByGrid" resultType="com.epmet.dto.extract.result.OrgStatisticsResultDTO">
@ -779,6 +780,7 @@
FROM fact_origin_project_main_daily
WHERE CUSTOMER_ID = #{customerId}
AND DATE_ID &lt;= #{dateId}
AND ORIGIN = 'issue'
GROUP BY GRID_ID
</select>
<select id="selectPartyMemberClosedProjectStaticByAgency" resultType="com.epmet.dto.extract.result.OrgStatisticsResultDTO">
@ -790,6 +792,7 @@
WHERE CUSTOMER_ID = #{customerId}
AND DATE_ID &lt;= #{dateId}
AND PROJECT_STATUS = 'closed'
AND ORIGIN = 'issue'
GROUP BY AGENCY_ID
</select>
<select id="selectPartyMemberClosedProjectStaticByGrid" resultType="com.epmet.dto.extract.result.OrgStatisticsResultDTO">
@ -801,6 +804,7 @@
WHERE CUSTOMER_ID = #{customerId}
AND DATE_ID &lt;= #{dateId}
AND PROJECT_STATUS = 'closed'
AND ORIGIN = 'issue'
GROUP BY GRID_ID
</select>

15
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactTopicHotdiscussAgencyDailyDao.xml

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.stats.FactTopicHotdiscussAgencyDailyDao">
<delete id="delTopicAgency">
DELETE
FROM
fact_topic_hotdiscuss_agency_daily
WHERE
customer_id = #{customerId}
AND date_id = #{dateId}
</delete>
</mapper>

15
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactTopicHotdiscussGridDailyDao.xml

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.stats.FactTopicHotdiscussGridDailyDao">
<delete id="delTopicGrid">
DELETE
FROM
fact_topic_hotdiscuss_grid_daily
WHERE
customer_id = #{customerId}
AND date_id = #{dateId}
</delete>
</mapper>

19
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}
</select>
<select id="selectTopicList" resultType="com.epmet.dto.stats.topic.result.TopicListResultDTO">
SELECT
rt.id AS topicId,
rt.group_id AS groupId,
rt.`status` AS STATUS,
rt.shift_issue AS shiftIssue,
rg.grid_id AS gridId,
rg.customer_id AS customerId
FROM
resi_topic rt
INNER JOIN resi_group rg ON rt.group_id = rg.id
WHERE
rt.del_flag = '0'
AND rg.del_flag = '0'
AND rg.customer_id = #{customerId}
AND DATE_FORMAT(rt.created_time ,'%Y%m%d') <![CDATA[ <= ]]> #{dateId}
</select>
</mapper>

29
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);
}

47
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);
}
}

46
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());
}
}
}

41
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ProjectCategoryDisPoseResultDTO.java

@ -0,0 +1,41 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2021/5/17 10:36 上午
* @DESC
*/
@Data
public class ProjectCategoryDisPoseResultDTO implements Serializable {
private static final long serialVersionUID = -2434579745274187160L;
/**
* 项目ID
*/
private String projectId;
/**
* 查询传参
*/
private String categoryCode;
/**
* mysql查询接收结果
*/
private String categoryName;
/**
* 反参
*/
private String projectCategory;
/**
* 客户ID
*/
private String customerId;
}

9
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java

@ -309,4 +309,13 @@ public interface GovIssueOpenFeignClient {
**/
@PostMapping(value = "/gov/issue/issue/getissuelist")
Result<List<IssueDTO>> getIssueList(@RequestParam String customerId);
/**
* @Description 查询项目分类标签
* @Param list
* @author zxc
* @date 2021/5/17 1:51 下午
*/
@PostMapping(value = "/gov/issue/issueprojectcategorydict/getprojectcategory")
Result<List<ProjectCategoryDisPoseResultDTO>> getProjectCategory(@RequestBody List<ProjectCategoryDisPoseResultDTO> list);
}

5
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java

@ -261,4 +261,9 @@ public class GovIssueOpenFeignClientFallBack implements GovIssueOpenFeignClient
public Result<List<IssueDTO>> getIssueList(String customerId) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "getIssueList", customerId);
}
@Override
public Result<List<ProjectCategoryDisPoseResultDTO>> getProjectCategory(List<ProjectCategoryDisPoseResultDTO> list) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "getProjectCategory", list);
}
}

17
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueProjectCategoryDictController.java

@ -32,10 +32,7 @@ import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.dto.IssueProjectCategoryDictDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.CategoryTagResultDTO;
import com.epmet.dto.result.CustomerCategoryListResultDTO;
import com.epmet.dto.result.CustomerCategoryResultDTO;
import com.epmet.dto.result.ProjectIssueCategoryResultDTO;
import com.epmet.dto.result.*;
import com.epmet.entity.IssueProjectCategoryDictEntity;
import com.epmet.excel.IssueProjectCategoryDictExcel;
import com.epmet.project.dto.CustomerCategoryDTO;
@ -268,5 +265,17 @@ public class IssueProjectCategoryDictController {
return new Result<CategoryTagResultDTO>().ok(issueProjectCategoryDictService.getCategoryTagList(formDTO));
}
/**
* @Description 查询项目分类标签
* @Param list
* @author zxc
* @date 2021/5/17 1:51 下午
*/
@PostMapping("getprojectcategory")
public Result<List<ProjectCategoryDisPoseResultDTO>> getProjectCategory(@RequestBody List<ProjectCategoryDisPoseResultDTO> list){
return new Result<List<ProjectCategoryDisPoseResultDTO>>().ok(issueProjectCategoryDictService.getProjectCategory(list));
}
}

10
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueProjectCategoryDictDao.java

@ -24,6 +24,7 @@ import com.epmet.dto.form.IsDisableCategoryFormDTO;
import com.epmet.dto.form.IssueProjectCategoryDictListFormDTO;
import com.epmet.dto.result.CustomerCategoryListResultDTO;
import com.epmet.dto.result.CustomerCategoryResultDTO;
import com.epmet.dto.result.ProjectCategoryDisPoseResultDTO;
import com.epmet.entity.IssueProjectCategoryDictEntity;
import com.epmet.project.dto.result.ProjectCategoryDictResultDTO;
import org.apache.ibatis.annotations.Mapper;
@ -173,4 +174,13 @@ public interface IssueProjectCategoryDictDao extends BaseDao<IssueProjectCategor
* @Author sun
**/
List<IssueProjectCategoryDictDTO> getCategoryList(@Param("customerId") String customerId, @Param("categoryIdList") List<String> categoryIdList);
/**
* @Description 查询项目分类标签
* @Param list
* @author zxc
* @date 2021/5/17 1:51 下午
*/
List<ProjectCategoryDisPoseResultDTO> getProjectCategory(@Param("list") List<ProjectCategoryDisPoseResultDTO> list,@Param("customerId") String customerId);
}

13
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueProjectCategoryDictService.java

@ -22,10 +22,7 @@ import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.IssueProjectCategoryDictDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.CategoryTagResultDTO;
import com.epmet.dto.result.CustomerCategoryListResultDTO;
import com.epmet.dto.result.CustomerCategoryResultDTO;
import com.epmet.dto.result.ProjectIssueCategoryResultDTO;
import com.epmet.dto.result.*;
import com.epmet.entity.IssueProjectCategoryDictEntity;
import com.epmet.project.dto.result.ProjectCategoryDictResultDTO;
import org.springframework.web.bind.annotation.RequestBody;
@ -216,4 +213,12 @@ public interface IssueProjectCategoryDictService extends BaseService<IssueProjec
* @Author sun
**/
CategoryTagResultDTO getCategoryTagList(CategoryTagListFormDTO formDTO);
/**
* @Description 查询项目分类标签
* @Param list
* @author zxc
* @date 2021/5/17 1:51 下午
*/
List<ProjectCategoryDisPoseResultDTO> getProjectCategory(List<ProjectCategoryDisPoseResultDTO> list);
}

39
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProjectCategoryDictServiceImpl.java

@ -472,4 +472,43 @@ public class IssueProjectCategoryDictServiceImpl extends BaseServiceImpl<IssuePr
return resultDTO;
}
/**
* @Description 查询项目分类标签
* @Param list
* @author zxc
* @date 2021/5/17 1:51 下午
*/
@Override
public List<ProjectCategoryDisPoseResultDTO> getProjectCategory(List<ProjectCategoryDisPoseResultDTO> list) {
String customerId = list.get(NumConstant.ZERO).getCustomerId();
List<ProjectCategoryDisPoseResultDTO> projectCategory = baseDao.getProjectCategory(list, customerId);
if (CollectionUtils.isEmpty(projectCategory)){
return new ArrayList<>();
}
List<ProjectCategoryDisPoseResultDTO> result = new ArrayList<>();
Map<String, List<ProjectCategoryDisPoseResultDTO>> groupByProject = projectCategory.stream().collect(Collectors.groupingBy(ProjectCategoryDisPoseResultDTO::getProjectId));
groupByProject.forEach((projectId,categoryList) -> {
ProjectCategoryDisPoseResultDTO p = new ProjectCategoryDisPoseResultDTO();
p.setProjectId(projectId);
p.setProjectCategory(disposeCategory(categoryList));
result.add(p);
});
return result;
}
/**
* @Description 项目分类处理
* @Param list
* @author zxc
* @date 2021/5/17 2:16 下午
*/
public String disposeCategory(List<ProjectCategoryDisPoseResultDTO> list){
String result = "";
if (!CollectionUtils.isEmpty(list)){
list.forEach(l -> {
result.concat(l.getCategoryName()).concat(",");
});
}
return result.substring(NumConstant.ZERO,result.length()-NumConstant.ONE);
}
}

14
epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectCategoryDictDao.xml

@ -230,6 +230,20 @@
sort ASC
</select>
<!-- 查询项目分类标签 -->
<select id="getProjectCategory" resultType="com.epmet.dto.result.ProjectCategoryDisPoseResultDTO">
<foreach collection="list" item="l" separator=" UNION ALL ">
SELECT
#{l.projectId} AS projectId,
CATEGORY_NAME
FROM issue_project_category_dict
WHERE DEL_FLAG = '0'
AND IS_DISABLE = 'enable'
AND CUSTOMER_ID = #{customerId}
AND CATEGORY_CODE = #{l.categoryCode}
</foreach>
</select>
<update id="updateIssueProjectCategoryDict">
UPDATE issue_project_category_dict
SET

43
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;
}

62
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<String> photos;
/**
* 话题内容
*/
private String topicContent;
/**
* 项目分类标签
*/
private String projectCategory;
/**
* 项目评价分数
*/
@JsonIgnore
private Integer score;
public MassesDiscontentResultDTO() {
this.gridName = "";
this.photos = new ArrayList<>();
this.topicContent = "";
this.projectCategory = "";
}
}

31
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;
}

14
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";
}

14
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<ProjectEvaluateScoreResultDTO>().ok(projectSatisfactionStatisticsService.projectEvaluateScore(formDTO));
}
/**
* @Description 群众不满
* @Param formDTO
* @author zxc
* @date 2021/5/14 10:46 上午
*/
@PostMapping("massesdiscontent")
public Result<List<MassesDiscontentResultDTO>> massesDiscontent(@RequestBody MassesDiscontentFormDTO formDTO){
ValidatorUtils.validateEntity(formDTO, MassesDiscontentFormDTO.MassesDiscontentForm.class);
return new Result<List<MassesDiscontentResultDTO>>().ok(projectSatisfactionStatisticsService.massesDiscontent(formDTO));
}
}

9
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<ProjectCategoryEntity> {
* @Author sun
**/
List<ProjectCategoryDTO> selectProjectCategoryList(DelCategoryFormDTO formDTO);
/**
* @Description 根据项目ID查询项目分类
* @Param projectIds
* @author zxc
* @date 2021/5/17 10:47 上午
*/
List<ProjectCategoryDisPoseResultDTO> selectCategoryByIds(@Param("projectIds")List<String> projectIds);
}

10
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java

@ -147,4 +147,14 @@ public interface ProjectDao extends BaseDao<ProjectEntity> {
@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<MassesDiscontentResultDTO> selectProjectIdByTime(@Param("agencyId")String agencyId,@Param("endDate")Integer endDate,@Param("startDate")Integer startDate);
}

12
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<ProjectSatisfa
*/
ProjectSatisfactionStatisticsEntity selectInfoByProjectId(@Param("projectId")String projectId);
/**
* @Description 查询评价分数小于xx分的项目
* @Param projectIds
* @author zxc
* @date 2021/5/17 9:59 上午
*/
List<MassesDiscontentResultDTO> selectProjectByScore(@Param("projectIds")List<String> projectIds, @Param("setScore")Integer setScore, @Param("sortType")String sortType);
}

10
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<Projec
* @date 2021/5/13 11:18 上午
*/
ProjectEvaluateScoreResultDTO projectEvaluateScore(ProjectEvaluateScoreFormDTO formDTO);
/**
* @Description 群众不满
* @Param formDTO
* @author zxc
* @date 2021/5/14 10:46 上午
*/
List<MassesDiscontentResultDTO> massesDiscontent(MassesDiscontentFormDTO formDTO);
}

102
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<Pr
@Autowired
private ProjectSatisfactionStatisticsRedis projectSatisfactionStatisticsRedis;
@Autowired
private ProjectDao projectDao;
@Autowired
private ProjectCategoryDao projectCategoryDao;
@Autowired
private GovIssueOpenFeignClient issueOpenFeignClient;
@Autowired
private ResiGroupOpenFeignClient resiGroupOpenFeignClient;
@Override
public PageData<ProjectSatisfactionStatisticsDTO> page(Map<String, Object> params) {
@ -125,4 +151,80 @@ public class ProjectSatisfactionStatisticsServiceImpl extends BaseServiceImpl<Pr
return new ProjectEvaluateScoreResultDTO((noEvalScore + realEvalScore) / shouldEvaluateCount);
}
/**
* @Description 群众不满
* @Param formDTO
* @author zxc
* @date 2021/5/14 10:46 上午
*/
@Override
public List<MassesDiscontentResultDTO> massesDiscontent(MassesDiscontentFormDTO formDTO) {
List<MassesDiscontentResultDTO> projectIds = projectDao.selectProjectIdByTime(formDTO.getAgencyId(), getDateId("yesterday"), getDateId(formDTO.getTimeSection()));
if (CollectionUtils.isEmpty(projectIds)){
return new ArrayList<>();
}
PageInfo<MassesDiscontentResultDTO> 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<MassesDiscontentResultDTO> projects = pageInfo.getList();
if (CollectionUtils.isEmpty(projects)){
return new ArrayList<>();
}
List<ProjectCategoryDisPoseResultDTO> projectCategoryDisPoseResultDTOS = projectCategoryDao.selectCategoryByIds(projects.stream().map(m -> m.getProjectId()).collect(Collectors.toList()));
List<ProjectCategoryDisPoseResultDTO> projectCategoryData = new ArrayList<>();
if (!CollectionUtils.isEmpty(projectCategoryDisPoseResultDTOS)){
Result<List<ProjectCategoryDisPoseResultDTO>> projectCategory = issueOpenFeignClient.getProjectCategory(projectCategoryDisPoseResultDTOS);
if (!projectCategory.success()){
throw new RenException("查询项目分类标签失败".concat(projectCategory.getMsg()));
}
projectCategoryData = projectCategory.getData();
}
Result<List<TopicInfoResultDTO>> topicInfos = resiGroupOpenFeignClient.getTopicInfos(projects.stream().map(m -> m.getIssueId()).collect(Collectors.toList()));
if (!topicInfos.success()){
throw new RenException("查询话题信息失败".concat(topicInfos.getMsg()));
}
List<ProjectCategoryDisPoseResultDTO> 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;
}
}

15
epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectCategoryDao.xml

@ -35,4 +35,19 @@
project_id = #{projectId}
</delete>
<!-- 根据项目ID查询项目分类 -->
<select id="selectCategoryByIds" resultType="com.epmet.dto.result.ProjectCategoryDisPoseResultDTO">
SELECT
PROJECT_ID,
CATEGORY_CODE,
CUSTOMER_ID
FROM project_category
WHERE DEL_FLAG = '0'
AND (
<foreach collection="projectIds" item="projectId" separator=" OR ">
PROJECT_ID = #{projectId}
</foreach>
)
</select>
</mapper>

14
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}
</select>
<!-- 查询时间段内的项目ID -->
<select id="selectProjectIdByTime" resultType="com.epmet.dto.result.MassesDiscontentResultDTO">
SELECT
ID AS projectId,
ORIGIN_ID AS issueId
FROM project
WHERE
DEL_FLAG = '0'
AND DATE_FORMAT(CREATED_TIME,'%Y%m%d') >= #{startDate}
AND DATE_FORMAT(CREATED_TIME,'%Y%m%d') <![CDATA[ <= ]]> #{endDate}
AND ORG_ID_PATH LIKE CONCAT('%',#{agencyId},'%')
</select>
</mapper>

24
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}
</select>
<!-- 查询评价分数小于xx分的项目 -->
<select id="selectProjectByScore" resultType="com.epmet.dto.result.MassesDiscontentResultDTO">
select a.* from
(SELECT
s.PROJECT_ID,
p.ORIGIN_ID AS issueId,
IFNULL((((s.SHOULD_EVALUATE_COUNT - s.GOOD_COUNT - s.BAD_COUNT - s.PERFECT_COUNT) * 80 + s.BAD_COUNT * 60 + s.GOOD_COUNT * 80 + s.PERFECT_COUNT * 100 )/ s.SHOULD_EVALUATE_COUNT),0) AS score
FROM project_satisfaction_statistics s
LEFT JOIN project p on p.id = s.PROJECT_ID AND p.DEL_FLAG = '0'
WHERE s.DEL_FLAG = '0'
AND (
<foreach collection="projectIds" item="projectId" separator=" OR ">
s.PROJECT_ID = #{projectId}
</foreach>
)) a
where score <![CDATA[ < ]]> #{setScore}
<if test="sortType == 'desc' ">
ORDER BY score DESC
</if>
<if test="sortType == 'asc' ">
ORDER BY score ASC
</if>
</select>
</mapper>

42
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<String> photos;
/**
* 话题内容
*/
private String topicContent;
}

11
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<GroupPointDetailResultDTO> groupPointDetail(@PathVariable String groupId);
/**
* @Description 查询话题信息
* @Param issueIds
* @author zxc
* @date 2021/5/17 4:19 下午
*/
@PostMapping("resi/group/topic/gettopicinfos")
Result<List<TopicInfoResultDTO>> getTopicInfos(@RequestBody List<String> issueIds);
}

6
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<GroupPointDetailResultDTO> groupPointDetail(String groupId) {
return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "groupPointDetail", groupId);
}
@Override
public Result<List<TopicInfoResultDTO>> getTopicInfos(List<String> issueIds) {
return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "getTopicInfos", issueIds);
}
}

11
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<List<AllMessagesResultDTO>>().ok(topicService.allMessages(formDTO));
}
/**
* @Description 查询话题信息
* @Param issueIds
* @author zxc
* @date 2021/5/17 4:19 下午
*/
@PostMapping("gettopicinfos")
public Result<List<TopicInfoResultDTO>> getTopicInfos(@RequestBody List<String> issueIds){
return new Result<List<TopicInfoResultDTO>>().ok(topicService.getTopicInfos(issueIds));
}
}

8
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<ResiTopicEntity> {
* @author sun
*/
int upTopicList(@Param("delIdList") List<String> delIdList, @Param("userId") String userId);
/**
* @Description 查询话题信息
* @Param issueIds
* @author zxc
* @date 2021/5/17 4:54 下午
*/
List<TopicInfoResultDTO> getTopicInfos(@Param("issueIds") List<String> issueIds);
}

8
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<ResiTopicEntity> {
* @date 2021/4/28 上午10:41
*/
List<AllMessagesResultDTO> allMessages(AllMessagesFormDTO formDTO);
/**
* @Description 查询话题信息
* @Param issueIds
* @author zxc
* @date 2021/5/17 4:19 下午
*/
List<TopicInfoResultDTO> getTopicInfos(List<String> issueIds);
}

39
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;
@ -629,6 +630,12 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
throw new RenException(EpmetErrorCode.TOPIC_SHIFTED_TO_ISSUE_UNDER_AUDITING.getCode());
}
//1.4已转议题的话题不允许关闭 2021.5.18 sun start
if (topic.getShiftIssue()) {
throw new RenException(EpmetErrorCode.TOPIC_SHIFT_ISSUE.getCode());
}
//2021.5.18 sun end
//2.屏蔽话题
ResiTopicEntity topicForUpdate = new ResiTopicEntity();
topicForUpdate.setId(hiddenFormDTO.getTopicId());
@ -766,6 +773,12 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
throw new RenException(EpmetErrorCode.TOPIC_SHIFTED_TO_ISSUE_UNDER_AUDITING.getCode());
}
//1.4已转议题的话题不允许关闭 2021.5.18 sun start
if (topic.getShiftIssue()) {
throw new RenException(EpmetErrorCode.TOPIC_SHIFT_ISSUE.getCode());
}
//2021.5.18 sun end
//2.关闭操作
topic.setClosedStatus(closeFormDTO.getClosedStatus());
baseDao.updateById(topic);
@ -2746,6 +2759,32 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
return allMessages;
}
/**
* @Description 查询话题信息
* @Param issueIds
* @author zxc
* @date 2021/5/17 4:19 下午
*/
@Override
public List<TopicInfoResultDTO> getTopicInfos(List<String> issueIds) {
if (CollectionUtils.isEmpty(issueIds)){
return new ArrayList<>();
}
List<TopicInfoResultDTO> topicInfos = baseDao.getTopicInfos(issueIds);
Result<List<AllGridsByUserIdResultDTO>> 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;
}
}

25
epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicDao.xml

@ -606,5 +606,30 @@
</foreach>
</update>
<resultMap id="getTopicInfosMap" type="com.epmet.resi.group.dto.topic.result.TopicInfoResultDTO">
<result property="issueId" column="issueId"/>
<result property="gridId" column="gridId"/>
<result property="topicContent" column="topicContent"/>
<collection property="photos" ofType="java.lang.String">
<result column="imgUrl"/>
</collection>
</resultMap>
<select id="getTopicInfos" resultMap="getTopicInfosMap">
SELECT
t.TOPIC_CONTENT AS topicContent,
g.GRID_ID AS gridId,
ta.ATTACHMENT_URL AS imgUrl,
t.ISSUE_ID AS issueId
FROM resi_topic t
LEFT JOIN resi_group g ON g.ID = t.GROUP_ID AND g.DEL_FLAG = '0'
LEFT JOIN resi_topic_attachment ta ON t.ID = ta.TOPIC_ID AND ta.DEL_FLAG = '0' AND ta.ATTACHMENT_TYPE = 'image' AND (ta.SORT = 0 OR ta.SORT = 1 OR ta.SORT = 2)
WHERE t.DEL_FLAG = '0'
AND (
<foreach collection="issueIds" item="issueId" separator=" OR ">
t.ISSUE_ID = #{issueId}
</foreach>
)
</select>
</mapper>

Loading…
Cancel
Save