Browse Source

Merge remote-tracking branch 'remotes/origin/dev' into dev_bugfix_ljj

master
jianjun 4 years ago
parent
commit
867122b510
  1. 21
      epmet-admin/epmet-admin-server/src/main/java/com/epmet/healthcheck/HealthCheckController.java
  2. 21
      epmet-auth/src/main/java/com/epmet/healthcheck/HealthCheckController.java
  3. 15
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/Constant.java
  4. 70
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/KongCunCustomerEnvEnum.java
  5. 33
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/OrgLevelEnum.java
  6. 139
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java
  7. 38
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/TreeAreaCodeNode.java
  8. 28
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/TreeUtils.java
  9. 2
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/DataSourceConstant.java
  10. 27
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/app/form/AppFootBarFormDTO.java
  11. 39
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/app/result/AppFootBarResultDTO.java
  12. 49
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/app/result/CustomerFootBarDTO.java
  13. 34
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/BaseDataFormDTO.java
  14. 38
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/SubTopicAndGroupFormDTO.java
  15. 38
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/SubUserTotalFormDTO.java
  16. 32
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/BaseStatsDataResultDTO.java
  17. 23
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubTopicAndGroupResultDTO.java
  18. 23
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubUserTotalResultDTO.java
  19. 20
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/TotalAndIncrResultDTO.java
  20. 26
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/WorkFactResultDTO.java
  21. 21
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/PatrolDailySumResult.java
  22. 5
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/evaluationindex/ScreenCustomerAgencyDTO.java
  23. 23
      epmet-module/data-aggregator/data-aggregator-server/pom.xml
  24. 40
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/AppController.java
  25. 118
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/pub/PubController.java
  26. 70
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java
  27. 46
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StatsStaffPatrolRecordDailyDao.java
  28. 43
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/opercrm/CustomerParameterDao.java
  29. 59
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/opercustomize/CustomerFootBarDao.java
  30. 125
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmetuser/StatsStaffPatrolRecordDailyEntity.java
  31. 68
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/opercrm/CustomerParameterEntity.java
  32. 88
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/opercustomize/CustomerFootBarEntity.java
  33. 21
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/healthcheck/HealthCheckController.java
  34. 31
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java
  35. 376
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java
  36. 43
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/StatsStaffPatrolRecordDailyService.java
  37. 39
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/StatsStaffPatrolRecordDailyServiceImpl.java
  38. 12
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/evaluationindex/impl/EvaluationIndexServiceImpl.java
  39. 34
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/opercrm/CustomerParameterService.java
  40. 60
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/opercrm/impl/CustomerParameterServiceImpl.java
  41. 42
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/opercustomize/CustomerFootBarService.java
  42. 115
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/opercustomize/impl/CustomerFootBarServiceImpl.java
  43. 5
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/bootstrap.yml
  44. 57
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml
  45. 18
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StatsStaffPatrolRecordDailyDao.xml
  46. 5
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/evaluationindex/EvaluationIndexDao.xml
  47. 15
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/opercrm/CustomerParameterDao.xml
  48. 41
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/opercustomize/CustomerFootBarDao.xml
  49. 22
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/form/govOrg/OrgTreeFormDTO.java
  50. 18
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/result/govOrg/OrgTreeNode.java
  51. 15
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/AgencyController.java
  52. 37
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenCustomerAgencyDao.java
  53. 21
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/healthcheck/HealthCheckController.java
  54. 12
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/AgencyService.java
  55. 126
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/AgencyServiceImpl.java
  56. 2
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/project/impl/ProjectServiceImpl.java
  57. 2
      epmet-module/data-report/data-report-server/src/main/resources/logback-spring.xml
  58. 17
      epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenCustomerAgencyDao.xml
  59. 14
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/user/FactParticipationUserGridDailyDTO.java
  60. 14
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/user/FactParticipationUserGridMonthlyDTO.java
  61. 14
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/user/FactRegUserGridDailyDTO.java
  62. 14
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/user/FactRegUserGridMonthlyDTO.java
  63. 12
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/user/result/UserStatisticalData.java
  64. 26
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/IncrAndTotalUserIdsResultDTO.java
  65. 20
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/IncrWithinTimeRangeResultDTO.java
  66. 24
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/PartyTotalAndIncrResultDTO.java
  67. 31
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/TotalAndIncrResultDTO.java
  68. 21
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/TotalUserIdsResultDTO.java
  69. 37
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/WarmTotalAndIncrResultDTO.java
  70. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/FactGroupGridDailyDao.java
  71. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/user/FactParticipationUserAgencyDailyDao.java
  72. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/user/FactParticipationUserAgencyMonthlyDao.java
  73. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/user/FactParticipationUserGridDailyDao.java
  74. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/user/FactParticipationUserGridMonthlyDao.java
  75. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/user/FactRegUserAgencyDailyDao.java
  76. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/user/FactRegUserAgencyMonthlyDao.java
  77. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/user/FactRegUserGridDailyDao.java
  78. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/user/FactRegUserGridMonthlyDao.java
  79. 69
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/user/UserDao.java
  80. 21
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/healthcheck/HealthCheckController.java
  81. 1
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/IndexCalculateStreetServiceImpl.java
  82. 6
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/group/impl/GroupDataServiceImpl.java
  83. 14
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/FactGroupGridDailyServiceImpl.java
  84. 99
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/user/impl/UserStatisticalServiceImpl.java
  85. 250
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/UserServiceImpl.java
  86. 4
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/util/ModuleConstant.java
  87. 1
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactGroupGridDailyDao.xml
  88. 1
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/user/FactParticipationUserAgencyDailyDao.xml
  89. 1
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/user/FactParticipationUserAgencyMonthlyDao.xml
  90. 1
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/user/FactParticipationUserGridDailyDao.xml
  91. 1
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/user/FactParticipationUserGridMonthlyDao.xml
  92. 1
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/user/FactRegUserAgencyDailyDao.xml
  93. 1
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/user/FactRegUserAgencyMonthlyDao.xml
  94. 1
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/user/FactRegUserGridDailyDao.xml
  95. 1
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/user/FactRegUserGridMonthlyDao.xml
  96. 286
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/UserDao.xml
  97. 21
      epmet-module/epmet-activiti/epmet-activiti-server/src/main/java/com/epmet/healthcheck/HealthCheckController.java
  98. 21
      epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/healthcheck/HealthCheckController.java
  99. 21
      epmet-module/epmet-demo/epmet-demo-server/src/main/java/com/epmet/healthcheck/HealthCheckController.java
  100. 21
      epmet-module/epmet-ext/epmet-ext-server/src/main/java/com/epmet/healthcheck/HealthCheckController.java

21
epmet-admin/epmet-admin-server/src/main/java/com/epmet/healthcheck/HealthCheckController.java

@ -0,0 +1,21 @@
package com.epmet.healthcheck;
import com.epmet.commons.tools.utils.Result;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("healthcheck")
public class HealthCheckController {
/**
* http健康检查
* @return
*/
@PostMapping("http")
public Result httpHealthCheck() {
return new Result();
}
}

21
epmet-auth/src/main/java/com/epmet/healthcheck/HealthCheckController.java

@ -0,0 +1,21 @@
package com.epmet.healthcheck;
import com.epmet.commons.tools.utils.Result;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("healthcheck")
public class HealthCheckController {
/**
* http健康检查
* @return
*/
@PostMapping("http")
public Result httpHealthCheck() {
return new Result();
}
}

15
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/Constant.java

@ -145,4 +145,19 @@ public interface Constant {
String DISTRICT = "district";
String STREET = "street";
String COMMUNITY = "community";
//footbar参数值含义:flat:水平模式;float:浮起某个菜单
String FOOT_BAR_FLOAT="float";
//footbar参数值含义:flat:水平模式;float:浮起某个菜单
String FOOT_BAR_FLAT="flat";
/**
* resi_footbar_pattern
* gov_footbar_pattern
* 后缀
*/
String FOOTBAR_PATTERN_KEY_SUFFIX="_footbar_pattern";
// resi_footbar_highlight_num
// gov_footbar_highlight_num
String FOOTBAR_HIGHLIGHT_NUM="_footbar_highlight_num";
}

70
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/KongCunCustomerEnvEnum.java

@ -1,70 +0,0 @@
package com.epmet.commons.tools.enums;
import com.epmet.commons.tools.utils.SpringContextUtils;
import org.springframework.core.env.Environment;
/**
* 系统环境变量枚举类
* dev|test|prod
*
* @author jianjun liu
* @date 2020-07-03 11:14
**/
public enum KongCunCustomerEnvEnum {
/**
* 环境变量枚举
*/
DEV("dev", "开发环境", "613cc61a6b8ce4c70d21bd413dac72cc"),
TEST("test", "体验环境", "b272625617e53620b2b3cbc65d1ecbbb"),
PROD("prod", "生产环境", "6f203e30de1a65aab7e69c058826cd80"),
UN_KNOWN("prod", "生产环境", "6f203e30de1a65aab7e69c058826cd80")
;
private String code;
private String name;
private String customerId;
KongCunCustomerEnvEnum(String code, String name, String customerId) {
this.code = code;
this.name = name;
this.customerId = customerId;
}
public static KongCunCustomerEnvEnum getEnum(String code) {
KongCunCustomerEnvEnum[] values = KongCunCustomerEnvEnum.values();
for (KongCunCustomerEnvEnum value : values) {
if (value.getCode().equals(code)) {
return value;
}
}
return KongCunCustomerEnvEnum.UN_KNOWN;
}
public static KongCunCustomerEnvEnum getCurrentEnv(){
try {
Environment environment = SpringContextUtils.getBean(Environment.class);
String[] activeProfiles = environment.getActiveProfiles();
if (activeProfiles.length > 0) {
return getEnum(activeProfiles[0]);
}
} catch (Exception e) {
e.printStackTrace();
}
return KongCunCustomerEnvEnum.UN_KNOWN;
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
public String getCustomerId(){
return customerId;
}
}

33
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/OrgLevelEnum.java

@ -1,7 +1,9 @@
package com.epmet.commons.tools.enums;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
import org.apache.commons.lang3.StringUtils;
/**
* 组织级别枚举类
@ -42,6 +44,37 @@ public enum OrgLevelEnum {
throw new RenException(EpmetErrorCode.INTERNAL_VALIDATE_ERROR.getCode());
}
/**
* desc: 获取下一等级的组织级别
*
* @param parentAgencyLevel
* @return java.lang.String
* @author LiuJanJun
* @date 2021/8/5 1:57 下午
* todo 加上数字 根据数据返回
*/
public static String getSubOrgLevel(String parentAgencyLevel) {
String level = StrConstant.EPMETY_STR;
if (StringUtils.isBlank(parentAgencyLevel)) {
return level;
}
OrgLevelEnum anEnum = OrgLevelEnum.getEnum(parentAgencyLevel);
switch (anEnum){
case PROVINCE:
return OrgLevelEnum.CITY.getCode();
case CITY:
return OrgLevelEnum.DISTRICT.getCode();
case DISTRICT:
return OrgLevelEnum.STREET.getCode();
case STREET:
return OrgLevelEnum.COMMUNITY.getCode();
case COMMUNITY:
return OrgLevelEnum.GRID.getCode();
default:
return level;
}
}

139
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java

@ -425,6 +425,23 @@ public class DateUtils {
return DateUtils.format(date,DateUtils.DATE_PATTERN_YYYYMMDD);
}
/**
* @return java.lang.String
* @param beforDay
* @author yinzuomei
* @description 获取当前日期的前n天 返回yyyyMMdd
* @Date 2020/6/23 1:50
**/
public static String getBeforeNDay(String dateId,int beforDay){
Calendar c = Calendar.getInstance();
if (StringUtils.isNotBlank(dateId)){
c.setTime(DateUtils.parseDate(dateId,DateUtils.DATE_PATTERN_YYYYMMDD));
}
c.add(Calendar.DATE, - beforDay);
Date date = c.getTime();
return DateUtils.format(date,DateUtils.DATE_PATTERN_YYYYMMDD);
}
public static String getBeforeNDay(int beforDay,String format){
Calendar c = Calendar.getInstance();
c.add(Calendar.DATE, - beforDay);
@ -664,15 +681,6 @@ public class DateUtils {
return result;
}
public static void main(String[] args) {
Date today=new Date();
Date yesterDay=DateUtils.parse("2020-07-28 15:33:00","yyyy-MM-dd HH:mm:ss");
Date tomorrow=DateUtils.parse("2020-07-30 15:33:00","yyyy-MM-dd HH:mm:ss");
System.out.println(comparteDate(today,today));
System.out.println(comparteDate(yesterDay,today));
System.out.println(comparteDate(tomorrow,today));
}
public static String getYearId(String monthId) {
if (StringUtils.isNotBlank(monthId) && monthId.length() > 4) {
return monthId.substring(NumConstant.ZERO, NumConstant.FOUR);
@ -874,4 +882,117 @@ public class DateUtils {
return DateUtils.format(date,dateType);
}
/**
* 获取指定日期的 所在周的第一天和和最后一天
* @param dataStr
* @return
* @throws ParseException
*/
public static String getLastOfWeek(String dataStr) throws ParseException {
Calendar cal = Calendar.getInstance();
if (StringUtils.isNotBlank(dataStr)){
cal.setTime(new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD).parse(dataStr));
}
int d = 0;
if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
d = -6;
} else {
d = 2 - cal.get(Calendar.DAY_OF_WEEK);
}
cal.add(Calendar.DAY_OF_WEEK, d);
// 所在周开始日期
String data1 = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD).format(cal.getTime());
cal.add(Calendar.DAY_OF_WEEK, 6);
// 所在周结束日期
String data2 = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD).format(cal.getTime());
return data1 + "-" + data2;
}
/**
* 获取指定日期的 所在周的第一天和和最后一天
* @param dataStr
* @return
* @throws ParseException
*/
public static String getFirstOfWeek(String dataStr) throws ParseException {
Calendar cal = Calendar.getInstance();
if (StringUtils.isNotBlank(dataStr)){
cal.setTime(new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD).parse(dataStr));
}
int d = 0;
if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
d = -6;
} else {
d = 2 - cal.get(Calendar.DAY_OF_WEEK);
}
cal.add(Calendar.DAY_OF_WEEK, d);
// 所在周开始日期
String data1 = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD).format(cal.getTime());
cal.add(Calendar.DAY_OF_WEEK, 6);
// 所在周结束日期
String data2 = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD).format(cal.getTime());
return data1 + "-" + data2;
}
/**
* 获取本周的第一天
* @return String
* **/
public static String getWeekStart(String dateId){
Calendar cal=Calendar.getInstance();
if (StringUtils.isNotBlank(dateId)){
cal.setTime(DateUtils.parseDate(dateId,DateUtils.DATE_PATTERN_YYYYMMDD));
}
int d = 0;
if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
d = -6;
} else {
d = 2 - cal.get(Calendar.DAY_OF_WEEK);
}
cal.add(Calendar.DAY_OF_WEEK, d);
Date time=cal.getTime();
return new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD).format(time);
}
/**
* 获取本周的最后一天
* @return String
* **/
public static String getWeekEnd(String dateId){
Calendar cal=Calendar.getInstance();
if (StringUtils.isNotBlank(dateId)){
cal.setTime(DateUtils.parseDate(dateId,DateUtils.DATE_PATTERN_YYYYMMDD));
}
int d = 0;
if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
d = -6;
} else {
d = 2 - cal.get(Calendar.DAY_OF_WEEK);
}
cal.add(Calendar.DAY_OF_WEEK, d);
cal.add(Calendar.DAY_OF_WEEK, 6);
Date time=cal.getTime();
return new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD).format(time);
}
public static void main(String[] args) throws ParseException {
String first = DateUtils.getFirstOfWeek("20210801");
System.out.println(first);
String fLastOfWeek = DateUtils.getLastOfWeek("20210801");
System.out.println(fLastOfWeek);
System.out.println(DateUtils.getWeekStart("20210801"));
System.out.println(DateUtils.getWeekEnd("20210801"));
Date dateIdDate = DateUtils.parse("20210801", DateUtils.DATE_PATTERN_YYYYMMDD);
String format = DateUtils.format(DateUtils.getMonthStart(dateIdDate), DateUtils.DATE_PATTERN_YYYYMMDD);
System.out.println(format);
format = DateUtils.format(DateUtils.getMonthEnd(dateIdDate), DateUtils.DATE_PATTERN_YYYYMMDD);
System.out.println(format);
}
}

38
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/TreeAreaCodeNode.java

@ -0,0 +1,38 @@
/**
* Copyright (c) 2018 人人开源 All rights reserved.
*
* https://www.renren.io
*
* 版权所有侵权必究
*/
package com.epmet.commons.tools.utils;
import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* 树节点所有需要实现树节点的都需要继承该类
*
* @author Mark sunlightcs@gmail.com
* @since 1.0.0
*/
@Data
public class TreeAreaCodeNode<T> extends TreeStringNode<T> implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String areaCode;
/**
* 上级ID
*/
private String parentAreaCode;
/**
* 子节点列表
*/
private List<T> children = new ArrayList<>();
}

28
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/TreeUtils.java

@ -131,4 +131,32 @@ public class TreeUtils {
return result;
}
/**
* 构建树节点
*/
public static <T extends TreeAreaCodeNode> List<T> buildTreeByAreaCode(List<T> treeNodes) {
List<T> result = new ArrayList<>();
//list转map
Map<String, T> nodeMap = new LinkedHashMap<>(treeNodes.size());
for(T treeNode : treeNodes){
nodeMap.put(treeNode.getAreaCode(), treeNode);
}
for(T node : nodeMap.values()) {
T parent = nodeMap.get(node.getParentAreaCode());
if(parent != null && !(node.getAreaCode().equals(parent.getAreaCode()))){
if (parent.getChildren() == null){
parent.setChildren(new ArrayList());
}
parent.getChildren().add(node);
continue;
}
result.add(node);
}
return result;
}
}

2
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/DataSourceConstant.java

@ -30,4 +30,6 @@ public interface DataSourceConstant {
String DATA_STATISTICAL="datastatistical";
String EVALUATION_INDEX = "evaluationIndex";
String OPERCUSTOMIZE="opercustomize";
}

27
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/app/form/AppFootBarFormDTO.java

@ -0,0 +1,27 @@
package com.epmet.dataaggre.dto.app.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 查询底部footBar信息两端通用
*
* @author yinzuomei@elink-cn.com
* @date 2021/7/27 18:54
*/
@Data
public class AppFootBarFormDTO implements Serializable {
public interface AddUserInternalGroup {}
/**
* 产品配置default 客户定制化里面就传客户id
*/
@NotBlank(message = "customerId不能为空",groups = AddUserInternalGroup.class)
private String customerId;
/**
* 工作端gov居民端resi
*/
@NotBlank(message = "appType不能为空",groups = AddUserInternalGroup.class)
private String appType;
}

39
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/app/result/AppFootBarResultDTO.java

@ -0,0 +1,39 @@
package com.epmet.dataaggre.dto.app.result;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 查询底部footBar信息两端通用
*
* @author yinzuomei@elink-cn.com
* @date 2021/7/27 19:00
*/
@Data
public class AppFootBarResultDTO implements Serializable {
private static final long serialVersionUID = -2219461245919203814L;
/**
* 水平flat浮起float
*/
private String pattern;
/**
* 默认返回0如果是浮起模式且是奇数返回是footBarList的索引
*/
private Integer highLightNum;
private List<CustomerFootBarDTO> footBarList;
/**
* 是否是奇数true:是奇数
*/
private Boolean isOddNum;
/**
* 是否都上传了图标true:都上传了
*/
// private Boolean bothUploaded;
}

49
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/app/result/CustomerFootBarDTO.java

@ -0,0 +1,49 @@
package com.epmet.dataaggre.dto.app.result;
import lombok.Data;
import java.io.Serializable;
/**
* 查询底部footBar信息两端通用
*
* @author yinzuomei@elink-cn.com
* @date 2021/7/27 19:01
*/
@Data
public class CustomerFootBarDTO implements Serializable {
/**
* KEY
*/
private String barKey;
/**
* bar名称
*/
private String barName;
/**
* 页面标题
*/
private String pageTitle;
/**
* 图标路径
*/
private String iconPath;
/**
* 选中页面图标路径
*/
private String selectedIconPath;
/**
* 凸起时图标路径
*/
private String floatIconPath;
/**
* 客户id
*/
private String customerId;
}

34
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/BaseDataFormDTO.java

@ -0,0 +1,34 @@
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 BaseDataFormDTO implements Serializable {
private static final long serialVersionUID = 6766797386944333123L;
/**
* 组织Id
*/
@NotBlank(message = "组织ID不能为空",groups = {BaseDataFormDTO.BaseData.class, AgencyIdAndLevel.class})
private String agencyId;
@NotBlank(message = "组织级别不能为空",groups = AgencyIdAndLevel.class)
private String agencyLevel;
private String type;
/**
* 日维度Id
*/
private String dateId;
private String startDateId;
private String endDateId;
public interface BaseData extends CustomerClientShowGroup{}
public interface AgencyIdAndLevel extends CustomerClientShowGroup{}
}

38
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/SubTopicAndGroupFormDTO.java

@ -0,0 +1,38 @@
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 SubTopicAndGroupFormDTO implements Serializable {
private static final long serialVersionUID = -3381286960911634231L;
/**
* 当前组织id从组织树取
*/
@NotBlank(message = "组织ID不能为空", groups = SubTopicAndGroupFormDTO.Agency.class)
private String agencyId;
/**
* 当前组织级别从组织树取
* 机关级别社区级community
* 街道:street,
* 区县级: district,
* 市级: city
* 省级:province
*/
@NotBlank(message = "组织级别不能为空", groups = SubTopicAndGroupFormDTO.Agency.class)
private String agencyLevel;
/**
* 日维度IdyyyyMMdd eg20210808默认前一天
*/
private String dateId;
public interface Agency extends CustomerClientShowGroup{}
}

38
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/SubUserTotalFormDTO.java

@ -0,0 +1,38 @@
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 SubUserTotalFormDTO implements Serializable {
private static final long serialVersionUID = -3381286960911634231L;
/**
* 当前组织id从组织树取
*/
@NotBlank(message = "组织ID不能为空", groups = SubUserTotalFormDTO.Agency.class)
private String agencyId;
/**
* 当前组织级别从组织树取
* 机关级别社区级community
* 街道:street,
* 区县级: district,
* 市级: city
* 省级:province
*/
@NotBlank(message = "组织级别不能为空", groups = SubUserTotalFormDTO.Agency.class)
private String agencyLevel;
/**
* 日维度IdyyyyMMdd eg20210808默认前一天
*/
private String dateId;
public interface Agency extends CustomerClientShowGroup{}
}

32
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/BaseStatsDataResultDTO.java

@ -0,0 +1,32 @@
package com.epmet.dataaggre.dto.datastats.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 基础数据-组织各种数据汇总-接口返参
* @Auth sun
*/
@Data
public class BaseStatsDataResultDTO implements Serializable {
private static final long serialVersionUID = -771436069527114021L;
private Integer topicTotal;
private Integer topicIncr;
// private Integer topicToIssueTotal;
private Integer issueTotal;
private Integer issueIncr;
// private Integer issueToProjectTotal;
private Integer projectTotal;
private Integer projectIncr;
private Integer closedProjectTotal;
private Integer closedProjectIncr;
// private Integer patrolTotal;
// private Integer patrolTotalTime;
// private Integer orgId;
// private Integer orgName;
}

23
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubTopicAndGroupResultDTO.java

@ -0,0 +1,23 @@
package com.epmet.dataaggre.dto.datastats.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 对外接口-查询下级话题和小组数-接口返参
* @Auth sun
*/
@Data
public class SubTopicAndGroupResultDTO implements Serializable {
private static final long serialVersionUID = 466974582608407121L;
//组织或网格ID
private String orgId;
//组织或网格名称
private String orgName = "";
//话题总数
private Integer topicTotal = 0;
//小组总数
private Integer groupTotal = 0;
}

23
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubUserTotalResultDTO.java

@ -0,0 +1,23 @@
package com.epmet.dataaggre.dto.datastats.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 对外接口-查询下级用户党员数-接口返参
* @Auth sun
*/
@Data
public class SubUserTotalResultDTO implements Serializable {
private static final long serialVersionUID = 466974582608407121L;
//组织或网格ID
private String orgId;
//组织或网格名称
private String orgName = "";
//用户总数
private Integer userTotal = 0;
//党员总数
private Integer partyMemberTotal = 0;
}

20
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/TotalAndIncrResultDTO.java

@ -0,0 +1,20 @@
package com.epmet.dataaggre.dto.datastats.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 总数及增量 返回结果
* @Auth sun
*/
@Data
public class TotalAndIncrResultDTO implements Serializable {
private static final long serialVersionUID = -6624315950853255235L;
private Integer total;
private Integer incr;
private Integer total2;
private Integer incr2;
}

26
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/WorkFactResultDTO.java

@ -0,0 +1,26 @@
package com.epmet.dataaggre.dto.datastats.result;
import lombok.Data;
import java.io.Serializable;
/**
* desc:
*
* @author: LiuJanJun
* @date: 2021/8/5 4:51 下午
* @version: 1.0
*/
@Data
public class WorkFactResultDTO implements Serializable {
private static final long serialVersionUID = -8149310637601355664L;
private Integer topicToIssueTotal = 0;
private Integer issueToProjectTotal = 0;
private Integer closedProjectTotal = 0;
private Integer patrolTotal = 0;
private String patrolTotalTime = "0";
private String orgId;
private String orgName;
}

21
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/PatrolDailySumResult.java

@ -0,0 +1,21 @@
package com.epmet.dataaggre.dto.epmetuser.result;
import lombok.Data;
import java.io.Serializable;
/**
* desc:
*
* @author: LiuJanJun
* @date: 2021/8/8 11:01 上午
* @version: 1.0
*/
@Data
public class PatrolDailySumResult implements Serializable {
private static final long serialVersionUID = 310405655189243944L;
private String fullAgencyId;
private Integer patrolTotal;
private Integer totalTime;
}

5
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/evaluationindex/ScreenCustomerAgencyDTO.java

@ -23,6 +23,11 @@ public class ScreenCustomerAgencyDTO implements Serializable {
*/
private String agencyId;
/**
* pids
*/
private String pids;
/**
* 组织名称
*/

23
epmet-module/data-aggregator/data-aggregator-server/pom.xml

@ -171,6 +171,11 @@
<datasource.druid.evaluationIndex.username>epmet_evaluation_index_user</datasource.druid.evaluationIndex.username>
<datasource.druid.evaluationIndex.password>EpmEt-db-UsEr</datasource.druid.evaluationIndex.password>
<datasource.druid.opercustomize.url>
<![CDATA[jdbc:mysql://192.168.1.140:3306/epmet_oper_customize?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]>
</datasource.druid.opercustomize.url>
<datasource.druid.opercustomize.username>epmet_oper_customize_user</datasource.druid.opercustomize.username>
<datasource.druid.opercustomize.password>EpmEt-db-UsEr</datasource.druid.opercustomize.password>
<!-- redis配置 -->
<spring.redis.index>0</spring.redis.index>
<spring.redis.host>192.168.1.140</spring.redis.host>
@ -266,6 +271,12 @@
<datasource.druid.evaluationIndex.username>epmet_evaluation_index_user</datasource.druid.evaluationIndex.username>
<datasource.druid.evaluationIndex.password>EpmEt-db-UsEr</datasource.druid.evaluationIndex.password>
<datasource.druid.opercustomize.url>
<![CDATA[jdbc:mysql://192.168.1.140:3306/epmet_oper_customize?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]>
</datasource.druid.opercustomize.url>
<datasource.druid.opercustomize.username>epmet_oper_customize_user</datasource.druid.opercustomize.username>
<datasource.druid.opercustomize.password>EpmEt-db-UsEr</datasource.druid.opercustomize.password>
<!-- redis配置 -->
<spring.redis.index>0</spring.redis.index>
<spring.redis.host>192.168.1.140</spring.redis.host>
@ -361,6 +372,12 @@
<datasource.druid.evaluationIndex.username>epmet</datasource.druid.evaluationIndex.username>
<datasource.druid.evaluationIndex.password>elink@833066</datasource.druid.evaluationIndex.password>
<datasource.druid.opercustomize.url>
<![CDATA[jdbc:mysql://rm-m5ef9t617j6o5eup7.mysql.rds.aliyuncs.com:3306/epmet_oper_customize?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]>
</datasource.druid.opercustomize.url>
<datasource.druid.opercustomize.username>epmet</datasource.druid.opercustomize.username>
<datasource.druid.opercustomize.password>elink@833066</datasource.druid.opercustomize.password>
<!-- redis配置 -->
<spring.redis.index>0</spring.redis.index>
<spring.redis.host>r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com</spring.redis.host>
@ -456,6 +473,12 @@
<datasource.druid.evaluationIndex.username>epmet_evaluation_index_user</datasource.druid.evaluationIndex.username>
<datasource.druid.evaluationIndex.password>EpmEt-db-UsEr</datasource.druid.evaluationIndex.password>
<datasource.druid.opercustomize.url>
<![CDATA[jdbc:mysql://rm-m5e3vzs2637224wj9.mysql.rds.aliyuncs.com:3306/epmet_oper_customize?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]>
</datasource.druid.opercustomize.url>
<datasource.druid.opercustomize.username>epmet_oper_customize_user</datasource.druid.opercustomize.username>
<datasource.druid.opercustomize.password>EpmEt-db-UsEr</datasource.druid.opercustomize.password>
<!-- redis配置 -->
<spring.redis.index>0</spring.redis.index>
<spring.redis.host>r-m5ez3n1j0qc3ykq2ut.redis.rds.aliyuncs.com</spring.redis.host>

40
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/AppController.java

@ -0,0 +1,40 @@
package com.epmet.dataaggre.controller;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dataaggre.dto.app.form.AppFootBarFormDTO;
import com.epmet.dataaggre.dto.app.result.AppFootBarResultDTO;
import com.epmet.dataaggre.service.opercustomize.CustomerFootBarService;
import org.springframework.beans.factory.annotation.Autowired;
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;
/**
* 小程序相关配置可以放在这目前只放了footbar
*
* @author yinzuomei@elink-cn.com
* @date 2021/7/27 18:36
*/
@RestController
@RequestMapping("app")
public class AppController {
@Autowired
private CustomerFootBarService customerFootBarService;
/**
* 查询底部footBar信息两端通用
*
* @param footBarFormDTO
* @return com.epmet.dataaggre.dto.app.result.AppFootBarResultDTO
* @author yinzuomei
* @date 2021/7/27 18:59
*/
@PostMapping("footbars")
public Result<AppFootBarResultDTO> queryAppFootBars(@RequestBody AppFootBarFormDTO footBarFormDTO){
ValidatorUtils.validateEntity(footBarFormDTO,AppFootBarFormDTO.AddUserInternalGroup.class);
AppFootBarResultDTO resultDTO=customerFootBarService.queryAppFootBars(footBarFormDTO);
return new Result<AppFootBarResultDTO>().ok(resultDTO);
}
}

118
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/pub/PubController.java

@ -0,0 +1,118 @@
package com.epmet.dataaggre.controller.pub;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dataaggre.dto.datastats.form.BaseDataFormDTO;
import com.epmet.dataaggre.dto.datastats.result.BaseStatsDataResultDTO;
import com.epmet.dataaggre.dto.datastats.result.SubTopicAndGroupResultDTO;
import com.epmet.dataaggre.dto.datastats.result.SubUserTotalResultDTO;
import com.epmet.dataaggre.dto.datastats.result.WorkFactResultDTO;
import com.epmet.dataaggre.service.datastats.DataStatsService;
import lombok.extern.log4j.Log4j;
import org.springframework.beans.factory.annotation.Autowired;
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.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
/**
* 小程序相关配置可以放在这目前只放了footbar
*
* @author yinzuomei@elink-cn.com
* @date 2021/7/27 18:36
*/
@Log4j
@RestController
@RequestMapping("pub")
public class PubController {
@Autowired
private DataStatsService dataStatsService;
/**
* 查询 话题 议题 项目数
*
* @param formDTO
* @return com.epmet.dataaggre.dto.app.result.AppFootBarResultDTO
* @author yinzuomei
* @date 2021/7/27 18:59
*/
@PostMapping("baseDataAgg")
public Result<BaseStatsDataResultDTO> getBaseStatsData(@RequestBody BaseDataFormDTO formDTO){
ValidatorUtils.validateEntity(formDTO,BaseDataFormDTO.BaseData.class);
BaseStatsDataResultDTO baseStatsData = dataStatsService.getBaseStatsData(formDTO);
return new Result<BaseStatsDataResultDTO>().ok(baseStatsData);
}
/**
* 查询下级工作实况
*
* @param formDTO
* @return com.epmet.dataaggre.dto.app.result.AppFootBarResultDTO
* @author yinzuomei
* @date 2021/7/27 18:59
*/
@PostMapping("subWorkFact")
public Result<List<WorkFactResultDTO>> getSubWorkFact(@RequestBody BaseDataFormDTO formDTO){
ValidatorUtils.validateEntity(formDTO, BaseDataFormDTO.AgencyIdAndLevel.class);
List<WorkFactResultDTO> subWorkFact = dataStatsService.getSubWorkFact(formDTO);
return new Result<List<WorkFactResultDTO>>().ok(subWorkFact);
}
/**
* @Param formDTO
* @Description 对外接口--查询下级用户党员数
* @author sun
*/
@PostMapping("subUserTotal")
public Result<List<SubUserTotalResultDTO>> subUserTotal(@RequestBody BaseDataFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, BaseDataFormDTO.AgencyIdAndLevel.class);
List<SubUserTotalResultDTO> data = dataStatsService.subUserTotal(formDTO);
return new Result<List<SubUserTotalResultDTO>>().ok(data);
}
/**
* @Param formDTO
* @Description 对外接口--查询下级话题和小组数
* @author sun
*/
@PostMapping("subTopicAndGroup")
public Result<List<SubTopicAndGroupResultDTO>> subTopicAndGroup(@RequestBody BaseDataFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, BaseDataFormDTO.AgencyIdAndLevel.class);
List<SubTopicAndGroupResultDTO> data = dataStatsService.subTopicAndGroup(formDTO);
return new Result<List<SubTopicAndGroupResultDTO>>().ok(data);
}
/**
* 导出数据使用map接收
*
* @param map
* @param response
* @throws IOException
*/
@PostMapping("/exportExcel")
public void exportExcel(@RequestBody BaseDataFormDTO formDTO, HttpServletResponse response) throws IOException {
/* try {
Map<String, Object> mapData = new HashMap<>();
BaseStatsDataResultDTO baseStatsData = dataStatsService.getBaseStatsData(formDTO);
String templatePath = "excel/trace_temp.xlsx";
log.info("exportExcel templatePath:{}",templatePath);
mapData.put("dataType", baseStatsData);
start = System.currentTimeMillis();
Workbook workbook = ExcelExportUtil.exportExcel(new TemplateExportParams(templatePath, "数据汇总"), baseStatsData);
//header
response.setHeader("content-Type", "application/vnd.ms-excel");
response.addHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode("继续追踪导出详情-".concat(DateUtils.formatDate()) + ".xlsx", "UTF-8"));
//加密
log.error("excelExport build wb cost:{}",System.currentTimeMillis()-start);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}*/
}
}

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

@ -33,7 +33,7 @@ import java.util.List;
/**
* @Author sun
* @Description 数据统计服务
* @Description 数据统计服务
*/
@Mapper
public interface DataStatsDao {
@ -178,50 +178,54 @@ public interface DataStatsDao {
/**
* 查询组织党员先锋详情
* @author zhaoqifeng
* @date 2021/5/18 14:40
*
* @param agencyId
* @return com.epmet.dataaggre.dto.datastats.result.PartyMemberVanguardDetailResultDTO
* @author zhaoqifeng
* @date 2021/5/18 14:40
*/
PartyMemberVanguardDetailResultDTO selectAgencyVanguardDetail(@Param("agencyId") String agencyId);
/**
* 查询网格党员先锋详情
* @author zhaoqifeng
* @date 2021/5/18 14:40
*
* @param grid
* @return com.epmet.dataaggre.dto.datastats.result.PartyMemberVanguardDetailResultDTO
* @author zhaoqifeng
* @date 2021/5/18 14:40
*/
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>
* @author zhaoqifeng
* @date 2021/5/18 15:02
*/
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>
* @author zhaoqifeng
* @date 2021/5/18 15:03
*/
List<PartyMemberVanguardDetailResultDTO> selectGridVanguardRank(@Param("agencyId") String agencyId);
List<FactGroupActDailyDTO> branchConAnalysis(@Param("customerId")String customerId,
@Param("orgId")String orgId,
@Param("orgType")String orgType,
@Param("dateId")String dateId,
@Param("parentCode")String parentCode);
List<FactGroupActDailyDTO> branchConAnalysis(@Param("customerId") String customerId,
@Param("orgId") String orgId,
@Param("orgType") String orgType,
@Param("dateId") String dateId,
@Param("parentCode") String parentCode);
List<FactGroupActDailyDTO> querySubAnalysisByCode(@Param("customerId")String customerId,
@Param("pid")String pid,
@Param("dateId")String dateId,
@Param("categoryCode")String categoryCode);
List<FactGroupActDailyDTO> querySubAnalysisByCode(@Param("customerId") String customerId,
@Param("pid") String pid,
@Param("dateId") String dateId,
@Param("categoryCode") String categoryCode);
List<GroupActRankDetailDTO> selectGroupActRankDetail(@Param("customerId") String customerId,
@Param("dateId") String dateId,
@ -246,11 +250,35 @@ public interface DataStatsDao {
/**
* 根据组织Id查询事件治理指数
* @author zhaoqifeng
* @date 2021/6/25 15:08
*
* @param agencyIds
* @param dateId
* @return com.epmet.dataaggre.entity.datastats.FactAgencyGovernDailyEntity
* @author zhaoqifeng
* @date 2021/6/25 15:08
*/
List<FactAgencyGovernDailyEntity> getAgencyGovernDaily(@Param("agencyIds") List<String> agencyIds, @Param("dateId") String dateId);
}
/**
* desc: 根据组织Id和时间获取 话题总数及增量
*
* @param agencyList
* @param dateId
* @return com.epmet.dataaggre.dto.datastats.result.TotalAndIncrResultDTO
* @author LiuJanJun
* @date 2021/8/5 3:59 下午
*/
TotalAndIncrResultDTO getAgencySumTopic(@Param("agencyList") List<String> agencyList, @Param("dateId") String dateId);
TotalAndIncrResultDTO getAgencySumIssue(@Param("agencyList") List<String> agencyList, @Param("dateId") String dateId);
TotalAndIncrResultDTO getAgencySumProject(@Param("agencyList") List<String> agencyList, @Param("dateId") String dateId);
/**
* 获取话题相关总数
* @param agencyList
* @param dateId
* @return
*/
List<BaseStatsDataResultDTO> getSubSumAgencyTopic(@Param("agencyList") List<String> agencyList, @Param("dateId") String dateId);
}

46
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StatsStaffPatrolRecordDailyDao.java

@ -0,0 +1,46 @@
/**
* 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.dataaggre.dao.epmetuser;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult;
import com.epmet.dataaggre.entity.epmetuser.StatsStaffPatrolRecordDailyEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 工作人员巡查统计
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-06-07
*/
@Mapper
public interface StatsStaffPatrolRecordDailyDao extends BaseDao<StatsStaffPatrolRecordDailyEntity> {
/**
* desc:获取巡查次数和时间
* @param agencyFullIdList
* @param startDateId
* @param endDateId
* @return
*/
List<PatrolDailySumResult> getPatrolSumList(@Param("agencyFullIdList") List<String> agencyFullIdList, @Param("startDateId") String startDateId, @Param("endDateId") String endDateId);
}

43
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/opercrm/CustomerParameterDao.java

@ -0,0 +1,43 @@
/**
* 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.dataaggre.dao.opercrm;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dataaggre.entity.opercrm.CustomerParameterEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 客户配置表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-07-27
*/
@Mapper
public interface CustomerParameterDao extends BaseDao<CustomerParameterEntity> {
/**
* 根据参数key查询
*
* @param parameterKey
* @param customerId
* @return java.lang.String
* @author yinzuomei
* @date 2021/7/27 17:07
*/
CustomerParameterEntity selectByParameterKey(@Param("parameterKey")String parameterKey, @Param("customerId")String customerId);
}

59
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/opercustomize/CustomerFootBarDao.java

@ -0,0 +1,59 @@
/**
* 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.dataaggre.dao.opercustomize;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dataaggre.dto.app.result.CustomerFootBarDTO;
import com.epmet.dataaggre.entity.opercustomize.CustomerFootBarEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* APP底部菜单栏信息
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-07-27
*/
@Mapper
public interface CustomerFootBarDao extends BaseDao<CustomerFootBarEntity> {
/**
* 查询客户工作端或者居民端footbar列表
*
* @param customerId
* @param appType
* @return java.util.List<com.epmet.dataaggre.dto.app.result.CustomerFootBarDTO>
* @author yinzuomei
* @date 2021/7/28 10:56
*/
List<CustomerFootBarDTO> selectAppFootBars(@Param("customerId") String customerId, @Param("appType") String appType);
/**
* 查询某个footbar信息
*
* @param customerId
* @param appType
* @param barKey
* @return com.epmet.dataaggre.entity.opercustomize.CustomerFootBarEntity
* @author yinzuomei
* @date 2021/7/28 10:56
*/
CustomerFootBarEntity selectDefaultIcon(@Param("customerId") String customerId, @Param("appType")String appType, @Param("barKey")String barKey);
}

125
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmetuser/StatsStaffPatrolRecordDailyEntity.java

@ -0,0 +1,125 @@
/**
* 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.dataaggre.entity.epmetuser;
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-06-29
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("stats_staff_patrol_record_daily")
public class StatsStaffPatrolRecordDailyEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 来源类型 external:外部internal:内部
*/
private String sourceType;
/**
* 客户Id
*/
private String customerId;
/**
* 数据来源客户Id
*/
private String sourceCustomerId;
/**
* 统计日期 关联日期dim表
*/
private String dateId;
/**
* 周ID
*/
private String weekId;
/**
* 月ID
*/
private String monthId;
/**
* 季ID
*/
private String quarterId;
/**
* 年ID
*/
private String yearId;
/**
* 网格id
*/
private String gridId;
/**
* 工作人员所属组织id=网格所属的组织id
*/
private String agencyId;
/**
* 网格所有上级id
*/
private String gridPids;
/**
* 工作人员用户id
*/
private String staffId;
/**
* 巡查次数
*/
private Integer patrolTotal;
/**
* 巡查时长 单位
*/
private Integer totalTime;
/**
* 巡查期间直接立项项目数
*/
private Integer reportProjectCount;
/**
* 最新的巡查开始时间
*/
private Date latestPatrolTime;
/**
* 最新的巡查状态 正在巡查中patrolling结束end
*/
private String latestPatrolStatus;
}

68
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/opercrm/CustomerParameterEntity.java

@ -0,0 +1,68 @@
/**
* 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.dataaggre.entity.opercrm;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 客户配置表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-07-27
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("customer_parameter")
public class CustomerParameterEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 客户ID
*/
private String customerId;
/**
* 参数KEY值(发短信:send_msg;)
*/
private String parameterKey;
/**
* 参数名称(短信)
*/
private String parameterName;
/**
* 参数开关开启on关闭off
*/
private String parameterSwitch;
/**
* 参数VALUE值
*/
private String parameterValue;
/**
* 说明
*/
private String description;
}

88
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/opercustomize/CustomerFootBarEntity.java

@ -0,0 +1,88 @@
/**
* 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.dataaggre.entity.opercustomize;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* APP底部菜单栏信息
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-07-27
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("customer_foot_bar")
public class CustomerFootBarEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 客户ID
*/
private String customerId;
/**
* 工作端gov居民端resi
*/
private String appType;
/**
* KEY
*/
private String barKey;
/**
* bar名称
*/
private String barName;
/**
* 页面标题
*/
private String pageTitle;
/**
* 图标路径
*/
private String iconPath;
/**
* 选中页面图标路径
*/
private String selectedIconPath;
/**
* 凸起时图标路径
*/
private String floatIconPath;
/**
* 是否显示1显示0隐藏
*/
private Integer display;
/**
* 排序
*/
private Integer orderIndex;
}

21
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/healthcheck/HealthCheckController.java

@ -0,0 +1,21 @@
package com.epmet.dataaggre.healthcheck;
import com.epmet.commons.tools.utils.Result;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("healthcheck")
public class HealthCheckController {
/**
* http健康检查
* @return
*/
@PostMapping("http")
public Result httpHealthCheck() {
return new Result();
}
}

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

@ -7,7 +7,6 @@ import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO;
import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO;
import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO;
import java.security.PrivateKey;
import java.util.List;
/**
@ -182,4 +181,34 @@ public interface DataStatsService {
* @date 2021.07.05 16:05
*/
GridMemberDataAnalysisResultDTO getGridMemberIssueProjectStats(String staffId);
/**
* desc:获取话题 议题 项目 关闭项目数
* @param formDTO
* @return
*/
BaseStatsDataResultDTO getBaseStatsData(BaseDataFormDTO formDTO);
/**
* 获取工作实况中的数
* @param formDTO
* @return
*/
List<WorkFactResultDTO> getSubWorkFact(BaseDataFormDTO formDTO);
/**
* @Param formDTO
* @Description 对外接口--查询下级用户党员数
* @author sun
* @param formDTO
*/
List<SubUserTotalResultDTO> subUserTotal(BaseDataFormDTO formDTO);
/**
* @Param formDTO
* @Description 对外接口--查询下级话题和小组数
* @author sun
* @param formDTO
*/
List<SubTopicAndGroupResultDTO> subTopicAndGroup(BaseDataFormDTO formDTO);
}

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

@ -1,8 +1,9 @@
package com.epmet.dataaggre.service.datastats.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.enums.OrgLevelEnum;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.dataaggre.constant.DataSourceConstant;
import com.epmet.dataaggre.constant.OrgConstant;
@ -11,20 +12,20 @@ import com.epmet.dataaggre.dao.datastats.FactGridMemberStatisticsDailyDao;
import com.epmet.dataaggre.dto.datastats.FactGroupActDailyDTO;
import com.epmet.dataaggre.dto.datastats.form.*;
import com.epmet.dataaggre.dto.datastats.result.*;
import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult;
import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerAgencyDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerGridDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenGovernRankDataDailyDTO;
import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO;
import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO;
import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO;
import com.epmet.dataaggre.entity.datastats.DimAgencyEntity;
import com.epmet.dataaggre.entity.datastats.DimGridEntity;
import com.epmet.dataaggre.entity.datastats.FactGridMemberStatisticsDailyEntity;
import com.epmet.dataaggre.entity.datastats.FactAgencyGovernDailyEntity;
import com.epmet.dataaggre.service.datastats.DataStatsService;
import com.epmet.dataaggre.service.epmetuser.StatsStaffPatrolRecordDailyService;
import com.epmet.dataaggre.service.evaluationindex.EvaluationIndexService;
import com.github.pagehelper.PageHelper;
import com.epmet.dataaggre.service.opercrm.CustomerRelation;
import com.github.pagehelper.PageHelper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
@ -57,6 +58,8 @@ public class DataStatsServiceImpl implements DataStatsService {
@Autowired
private FactGridMemberStatisticsDailyDao factGridMemberStatisticsDailyDao;
@Autowired
private StatsStaffPatrolRecordDailyService statsStaffPatrolRecordDailyService;
/**
@ -1428,6 +1431,199 @@ public class DataStatsServiceImpl implements DataStatsService {
public GridMemberDataAnalysisResultDTO getGridMemberIssueProjectStats(String staffId) {
return factGridMemberStatisticsDailyDao.getGridMemberIssueProjectStats( staffId);
}
@Override
public BaseStatsDataResultDTO getBaseStatsData(BaseDataFormDTO 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));
}
BaseStatsDataResultDTO result = new BaseStatsDataResultDTO();
result.setTopicTotal(0);
result.setTopicIncr(0);
result.setIssueTotal(0);
result.setIssueIncr(0);
result.setProjectTotal(0);
result.setProjectIncr(0);
result.setClosedProjectTotal(0);
result.setClosedProjectIncr(0);
//0.根据组织Id查询是否存在子客户,存在的按areaCode查询当前客户之外的客户组织列表
List<String> agencyList = indexService.getAgencyIdsByAgencyId(formDTO.getAgencyId());
agencyList.add(formDTO.getAgencyId());
TotalAndIncrResultDTO sum = dataStatsDao.getAgencySumTopic(agencyList, formDTO.getDateId());
if (sum == null){
return result;
}
result.setTopicIncr(sum.getIncr());
result.setTopicTotal(sum.getTotal());
sum = dataStatsDao.getAgencySumIssue(agencyList,formDTO.getDateId());
result.setIssueIncr(sum.getIncr());
result.setIssueTotal(sum.getTotal());
sum = dataStatsDao.getAgencySumProject(agencyList,formDTO.getDateId());
result.setProjectIncr(sum.getIncr());
result.setProjectTotal(sum.getTotal());
result.setClosedProjectIncr(sum.getIncr2());
result.setClosedProjectTotal(sum.getTotal2());
return result;
}
@Override
public List<WorkFactResultDTO> getSubWorkFact(BaseDataFormDTO formDTO) {
//入参有日期的则按具体时间执行,没有的则按当前时间前一天执行
if (StringUtils.isBlank(formDTO.getType())){
formDTO.setType("yesterday");
}
Date yesterday = DateUtils.addDateDays(new Date(), -1);
if (StringUtils.isBlank(formDTO.getDateId())) {
SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD);
formDTO.setDateId(format.format(yesterday));
}
String startDate = null;
String actulStartDate = null;
String endDate = null;
Date dateIdDate = DateUtils.parse(formDTO.getDateId(), DateUtils.DATE_PATTERN_YYYYMMDD);
boolean isYesterday = DateUtils.getBeforeNDay(1,DateUtils.DATE_PATTERN_YYYYMMDD).equals(formDTO.getDateId());
switch (formDTO.getType()){
case "yesterday":
startDate = DateUtils.getBeforeNDay(formDTO.getDateId(),1);
endDate = formDTO.getDateId();
actulStartDate = formDTO.getDateId();
break;
case "thisWeek":
actulStartDate = DateUtils.getWeekStart(formDTO.getDateId());
startDate = DateUtils.getBeforeNDay(actulStartDate,1);
DateUtils.format(DateUtils.addDateDays(yesterday, -1),DateUtils.DATE_PATTERN_YYYYMMDD);
if (!isYesterday){
endDate = DateUtils.getWeekEnd(formDTO.getDateId());
}
break;
case "thisMonth":
actulStartDate = DateUtils.format(DateUtils.getMonthStart(dateIdDate),DateUtils.DATE_PATTERN_YYYYMMDD);
startDate = DateUtils.getBeforeNDay(actulStartDate,1);
if (!isYesterday) {
endDate = DateUtils.format(DateUtils.getMonthEnd(dateIdDate), DateUtils.DATE_PATTERN_YYYYMMDD);
}
break;
default:
log.warn("===========");
}
formDTO.setStartDateId(startDate);
formDTO.setEndDateId(endDate);
List<WorkFactResultDTO> result = new ArrayList<>();
//如果是社区 则下级是网格 查询网格的数据
if (OrgLevelEnum.COMMUNITY.getCode().equals(formDTO.getAgencyLevel())){
//0.根据组织Id查询是否存在子客户,存在的按areaCode查询当前客户之外的客户组织列表
List<ScreenCustomerGridDTO> subAgencyList = indexService.getSubGridList(formDTO.getAgencyId());
if (subAgencyList.size() < NumConstant.ONE) {
return null;
}
List<String> gridIdList = subAgencyList.stream().map(ScreenCustomerGridDTO::getGridId).collect(Collectors.toList());
//查询组织的话题转议题数据
List<SubGridFormDTO.Topic> toIssueStart = dataStatsDao.getSubGridTopicShiftIssue(gridIdList, formDTO.getStartDateId());
List<SubGridFormDTO.Topic> toIssueEnd = dataStatsDao.getSubGridTopicShiftIssue(gridIdList, formDTO.getEndDateId());
Map<String, Integer> toIssueStartMap = toIssueStart.stream().collect(Collectors.toMap(SubGridFormDTO.Topic::getGridId, SubGridFormDTO.Topic::getShiftedIssueTotal, (o1, o2) -> o1));
Map<String, Integer> toIssueEndMap = toIssueEnd.stream().collect(Collectors.toMap(SubGridFormDTO.Topic::getGridId, SubGridFormDTO.Topic::getShiftedIssueTotal, (o1, o2) -> o1));
//查询组织的议题转项目数据
List<SubGridIssueResultDTO> toProjectStart = dataStatsDao.getSubGridIssue(gridIdList, formDTO.getStartDateId());
List<SubGridIssueResultDTO> toProjectEnd = dataStatsDao.getSubGridIssue(gridIdList, formDTO.getEndDateId());
Map<String, Integer> toProjectStartMap = toProjectStart.stream().collect(Collectors.toMap(SubGridIssueResultDTO::getGridId, SubGridIssueResultDTO::getShiftProjectTotal, (o1, o2) -> o1));
Map<String, Integer> toProjectEndMap = toProjectEnd.stream().collect(Collectors.toMap(SubGridIssueResultDTO::getGridId, SubGridIssueResultDTO::getShiftProjectTotal, (o1, o2) -> o1));
//查询组织已关闭的项目数据
List<SubGridProjectResultDTO> closeProjectStart = dataStatsDao.getSubGridProject(gridIdList, formDTO.getStartDateId());
List<SubGridProjectResultDTO> closeProjectEnd = dataStatsDao.getSubGridProject(gridIdList, formDTO.getEndDateId());
Map<String, Integer> closeProjectStartMap = closeProjectStart.stream().collect(Collectors.toMap(SubGridProjectResultDTO::getGridId, SubGridProjectResultDTO::getClosedProjectTotal, (o1, o2) -> o1));
Map<String, Integer> closeProjectEndMap = closeProjectEnd.stream().collect(Collectors.toMap(SubGridProjectResultDTO::getGridId, SubGridProjectResultDTO::getClosedProjectTotal, (o1, o2) -> o1));
//巡查次数和时间
List<PatrolDailySumResult> patrolList = statsStaffPatrolRecordDailyService.getPatrolSumList(gridIdList,actulStartDate,formDTO.getEndDateId());
Map<String, PatrolDailySumResult> patrolListMap = patrolList.stream().collect(Collectors.toMap(PatrolDailySumResult::getFullAgencyId, o -> o, (o1, o2) -> o1));
subAgencyList.forEach(agency->{
String gridId = agency.getGridId();
WorkFactResultDTO resultDTO = new WorkFactResultDTO();
resultDTO.setOrgId(gridId);
resultDTO.setOrgName(agency.getGridName());
resultDTO.setTopicToIssueTotal(getTotal(toIssueStartMap,toIssueEndMap,gridId));
resultDTO.setIssueToProjectTotal(getTotal(toProjectStartMap,toProjectEndMap,gridId));
resultDTO.setClosedProjectTotal(getTotal(closeProjectStartMap,closeProjectEndMap,gridId));
PatrolDailySumResult patrolRecordDTO = patrolListMap.get(agency.getAllParentIds());
setPatrolAttr(resultDTO, patrolRecordDTO);
result.add(resultDTO);
});
}else {
//0.根据组织Id查询是否存在子客户,存在的按areaCode查询当前客户之外的客户组织列表
List<ScreenCustomerAgencyDTO> subAgencyList = indexService.getSubAgencyListByAgency(formDTO.getAgencyId());
if (subAgencyList.size() < NumConstant.ONE) {
return null;
}
List<String> agencyList = subAgencyList.stream().map(ScreenCustomerAgencyDTO::getAgencyId).collect(Collectors.toList());
//查询组织的话题转议题数据
List<SubAgencyFormDTO.Topic> toIssueStart = dataStatsDao.getSubAgencyTopicShiftIssue(agencyList, formDTO.getStartDateId());
List<SubAgencyFormDTO.Topic> toIssueEnd = dataStatsDao.getSubAgencyTopicShiftIssue(agencyList, formDTO.getEndDateId());
Map<String, Integer> toIssueStartMap = toIssueStart.stream().collect(Collectors.toMap(SubAgencyFormDTO.Topic::getAgencyId, SubAgencyFormDTO.Topic::getShiftedIssueTotal, (o1, o2) -> o1));
Map<String, Integer> toIssueEndMap = toIssueEnd.stream().collect(Collectors.toMap(SubAgencyFormDTO.Topic::getAgencyId, SubAgencyFormDTO.Topic::getShiftedIssueTotal, (o1, o2) -> o1));
//查询组织的议题转项目数据
List<SubAgencyIssueResultDTO> toProjectStart = dataStatsDao.getSubAgencyIssue(agencyList, formDTO.getStartDateId());
List<SubAgencyIssueResultDTO> toProjectEnd = dataStatsDao.getSubAgencyIssue(agencyList, formDTO.getEndDateId());
Map<String, Integer> toProjectStartMap = toProjectStart.stream().collect(Collectors.toMap(SubAgencyIssueResultDTO::getAgencyId, SubAgencyIssueResultDTO::getShiftProjectTotal, (o1, o2) -> o1));
Map<String, Integer> toProjectEndMap = toProjectEnd.stream().collect(Collectors.toMap(SubAgencyIssueResultDTO::getAgencyId, SubAgencyIssueResultDTO::getShiftProjectTotal, (o1, o2) -> o1));
//查询组织已关闭的项目数据
List<SubAgencyProjectResultDTO> closeProjectStart = dataStatsDao.getSubAgencyProject(agencyList, formDTO.getStartDateId());
List<SubAgencyProjectResultDTO> closeProjectEnd = dataStatsDao.getSubAgencyProject(agencyList, formDTO.getEndDateId());
Map<String, Integer> closeProjectStartMap = closeProjectStart.stream().collect(Collectors.toMap(SubAgencyProjectResultDTO::getAgencyId, SubAgencyProjectResultDTO::getClosedProjectTotal, (o1, o2) -> o1));
Map<String, Integer> closeProjectEndMap = closeProjectEnd.stream().collect(Collectors.toMap(SubAgencyProjectResultDTO::getAgencyId, SubAgencyProjectResultDTO::getClosedProjectTotal, (o1, o2) -> o1));
//巡查次数和时间
List<String> agencyFullIds = subAgencyList.stream().map(o -> o.getPids().concat(StrConstant.COLON).concat(o.getAgencyId())).collect(Collectors.toList());
List<PatrolDailySumResult> patrolList = statsStaffPatrolRecordDailyService.getPatrolSumList(agencyFullIds,actulStartDate,formDTO.getEndDateId());
Map<String, PatrolDailySumResult> patrolListMap = patrolList.stream().collect(Collectors.toMap(PatrolDailySumResult::getFullAgencyId, o -> o, (o1, o2) -> o1));
subAgencyList.forEach(agency->{
String agencyId = agency.getAgencyId();
WorkFactResultDTO resultDTO = new WorkFactResultDTO();
resultDTO.setOrgId(agencyId);
resultDTO.setOrgName(agency.getAgencyName());
resultDTO.setTopicToIssueTotal(getTotal(toIssueStartMap,toIssueEndMap,agencyId));
resultDTO.setIssueToProjectTotal(getTotal(toProjectStartMap,toProjectEndMap,agencyId));
resultDTO.setClosedProjectTotal(getTotal(closeProjectStartMap,closeProjectEndMap,agencyId));
String fullAgencyId = agency.getPids().concat(StrConstant.COLON).concat(agencyId);
PatrolDailySumResult patrolRecordDTO = patrolListMap.get(fullAgencyId);
setPatrolAttr(resultDTO,patrolRecordDTO);
result.add(resultDTO);
});
}
List<WorkFactResultDTO> newResult = result.stream().sorted(Comparator.comparing(o -> o.getTopicToIssueTotal() + o.getIssueToProjectTotal() + o.getClosedProjectTotal() + o.getPatrolTotal())).collect(Collectors.toList());
return newResult;
}
private void setPatrolAttr(WorkFactResultDTO resultDTO, PatrolDailySumResult patrolRecordDTO) {
if (patrolRecordDTO != null){
resultDTO.setPatrolTotal(patrolRecordDTO.getPatrolTotal());
Integer totalTime = patrolRecordDTO.getTotalTime();
if (totalTime != null || totalTime > 0){
int minutes = totalTime / 60;
if (minutes >0){
String totalTimeDesc = minutes / 60 + "小时"+ minutes % 60 + "分";
resultDTO.setPatrolTotalTime(totalTimeDesc);
}
}
}
}
private Integer getTotal(Map<String,Integer> startMap, Map<String,Integer> endMap,String agencyId){
Integer total1 = startMap.getOrDefault(agencyId,NumConstant.ZERO);
Integer total2 = endMap.getOrDefault(agencyId,NumConstant.ZERO);
return Math.max(total2-total1,0);
}
private String getPercentage(Integer countInt, Integer totalInt) {
if (NumConstant.ZERO == totalInt) {
return "0%";
@ -1439,4 +1635,172 @@ public class DataStatsServiceImpl implements DataStatsService {
return ratio.toString().concat("%");
}
/**
* @Param formDTO
* @Description 对外接口--查询下级用户党员数
* @author sun
* @param formDTO
*/
@Override
public List<SubUserTotalResultDTO> subUserTotal(BaseDataFormDTO formDTO) {
List<SubUserTotalResultDTO> resultList = new ArrayList<>();
//1.入参有日期的则按具体时间执行,没有的则按当前时间前一天执行
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));
}
//根据组织级别判断查询直属下级组织或网格数据
//2.直属网格
if ("community".equals(formDTO.getAgencyLevel())) {
//2-1.查询组织直属网格列表【网格维度】
List<ScreenCustomerGridDTO> gridList = indexService.getSubGridList(formDTO.getAgencyId());
if (gridList.size() < NumConstant.ONE) {
return resultList;
}
List<String> gridIds = gridList.stream().map(ScreenCustomerGridDTO::getGridId).collect(Collectors.toList());
//2-2.查询网格下用户、党员日统计数据,按用户总数降序
List<SubGridUserResultDTO> list = dataStatsDao.getSubGridUser(gridIds, formDTO.getDateId());
//2-3.封装数据
gridList.forEach(gr -> {
SubUserTotalResultDTO dto = new SubUserTotalResultDTO();
dto.setOrgId(gr.getGridId());
dto.setOrgName(gr.getGridName());
list.forEach(re -> {
if (gr.getGridId().equals(re.getGridId())) {
dto.setUserTotal(re.getUserTotal());
dto.setPartyMemberTotal(re.getPartyMemberTotal());
}
});
resultList.add(dto);
});
} else {
//3.直属组织
//3-1.查询直属下级组织列表,有子客户的按areaCode查没有的按agencyId查
List<ScreenCustomerAgencyDTO> subAgencyList = indexService.getSubAgencyListByAgency(formDTO.getAgencyId());
if (subAgencyList.size() < NumConstant.ONE) {
return resultList;
}
List<String> agencyIds = subAgencyList.stream().map(ScreenCustomerAgencyDTO::getAgencyId).collect(Collectors.toList());
//3-2.查询组织下用户、党员日统计数据,按用户总数降序
List<SubAgencyUserResultDTO> list = dataStatsDao.getSubAgencyUser(agencyIds, formDTO.getDateId());
//3-3.封装数据
subAgencyList.forEach(sub -> {
SubUserTotalResultDTO dto = new SubUserTotalResultDTO();
dto.setOrgId(sub.getAgencyId());
dto.setOrgName(sub.getAgencyName());
list.forEach(u -> {
if (sub.getAgencyId().equals(u.getAgencyId())) {
dto.setUserTotal(u.getUserTotal());
dto.setPartyMemberTotal(u.getPartyMemberTotal());
}
});
resultList.add(dto);
});
}
//4.按用户数降序排序并返回
Collections.sort(resultList, new Comparator<SubUserTotalResultDTO>() {
@Override
public int compare(SubUserTotalResultDTO o1, SubUserTotalResultDTO o2) {
//降序
return o2.getUserTotal().compareTo(o1.getUserTotal());
}
});
return resultList;
}
/**
* @Param formDTO
* @Description 对外接口--查询下级话题和小组数
* @author sun
* @param formDTO
*/
@Override
public List<SubTopicAndGroupResultDTO> subTopicAndGroup(BaseDataFormDTO formDTO) {
List<SubTopicAndGroupResultDTO> resultList = new ArrayList<>();
//1.入参有日期的则按具体时间执行,没有的则按当前时间前一天执行
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));
}
//根据组织级别判断查询直属下级组织或网格数据
//2.直属网格
if ("community".equals(formDTO.getAgencyLevel())) {
//2-1.查询组织直属网格列表【网格维度】
List<ScreenCustomerGridDTO> gridList = indexService.getSubGridList(formDTO.getAgencyId());
if (gridList.size() < NumConstant.ONE) {
return resultList;
}
List<String> gridIds = gridList.stream().map(ScreenCustomerGridDTO::getGridId).collect(Collectors.toList());
//2-2.查询网格下热议中话题日统计数据
List<SubGridFormDTO.Topic> hotdiscuss = dataStatsDao.getSubGridTopicHotDiscuss(gridIds, formDTO.getDateId());
//2-2.查询网格层级小组日统计数据
List<SubGridGroupResultDTO> list = dataStatsDao.getSubGridGroup(gridIds, formDTO.getDateId());
//2-3.封装数据
gridList.forEach(gr -> {
SubTopicAndGroupResultDTO resultDTO = new SubTopicAndGroupResultDTO();
resultDTO.setOrgId(gr.getGridId());
resultDTO.setOrgName(gr.getGridName());
hotdiscuss.forEach(t -> {
if (t.getGridId().equals(gr.getGridId())) {
resultDTO.setTopicTotal(t.getTopicTotal());
}
});
list.forEach(l -> {
if (l.getGridId().equals(gr.getGridId())) {
resultDTO.setGroupTotal(l.getGroupTotal());
}
});
resultList.add(resultDTO);
});
} else {
//3.直属组织
//3-1.查询直属下级组织列表,有子客户的按areaCode查没有的按agencyId查
List<ScreenCustomerAgencyDTO> subAgencyList = indexService.getSubAgencyListByAgency(formDTO.getAgencyId());
if (subAgencyList.size() < NumConstant.ONE) {
return resultList;
}
List<String> agencyIds = subAgencyList.stream().map(ScreenCustomerAgencyDTO::getAgencyId).collect(Collectors.toList());
//3-2.查询组织下热议中话题日统计数据
List<SubAgencyFormDTO.Topic> hotdiscuss = dataStatsDao.getSubAgencyTopicHotDiscuss(agencyIds, formDTO.getDateId());
//3-3.查询直属下级组织小组日统计数据
List<SubAgencyGroupResultDTO> list = dataStatsDao.getSubAgencyGroup(agencyIds, formDTO.getDateId());
//3-4.封装数据
subAgencyList.forEach(sub -> {
SubTopicAndGroupResultDTO resultDTO = new SubTopicAndGroupResultDTO();
resultDTO.setOrgId(sub.getAgencyId());
resultDTO.setOrgName(sub.getAgencyName());
hotdiscuss.forEach(t -> {
if (t.getAgencyId().equals(sub.getAgencyId())) {
resultDTO.setTopicTotal(t.getTopicTotal());
}
});
list.forEach(u -> {
if (sub.getAgencyId().equals(u.getAgencyId())) {
resultDTO.setGroupTotal(u.getGroupTotal());
}
});
resultList.add(resultDTO);
});
}
//4.按用户数降序排序并返回
Collections.sort(resultList, new Comparator<SubTopicAndGroupResultDTO>() {
@Override
public int compare(SubTopicAndGroupResultDTO o1, SubTopicAndGroupResultDTO o2) {
//降序
return o2.getTopicTotal().compareTo(o1.getTopicTotal());
}
});
return resultList;
}
}

43
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/StatsStaffPatrolRecordDailyService.java

@ -0,0 +1,43 @@
/**
* 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.dataaggre.service.epmetuser;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult;
import com.epmet.dataaggre.entity.epmetuser.StatsStaffPatrolRecordDailyEntity;
import java.util.List;
/**
* 工作人员巡查主记录
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-06-07
*/
public interface StatsStaffPatrolRecordDailyService extends BaseService<StatsStaffPatrolRecordDailyEntity> {
/**
* desc:获取组织或网格的 时间段内的总次数等
* @param agencyList
* @param startDateId
* @param endDateId
* @return
*/
List<PatrolDailySumResult> getPatrolSumList(List<String> agencyList, String startDateId, String endDateId);
}

39
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/StatsStaffPatrolRecordDailyServiceImpl.java

@ -0,0 +1,39 @@
package com.epmet.dataaggre.service.epmetuser.impl;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.dataaggre.constant.DataSourceConstant;
import com.epmet.dataaggre.dao.epmetuser.StatsStaffPatrolRecordDailyDao;
import com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult;
import com.epmet.dataaggre.entity.epmetuser.StatsStaffPatrolRecordDailyEntity;
import com.epmet.dataaggre.service.epmetuser.StatsStaffPatrolRecordDailyService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* desc:
*
* @author: LiuJanJun
* @date: 2021/8/6 11:06 上午
* @version: 1.0
*/
@DataSource(DataSourceConstant.EPMET_USER)
@Slf4j
@Service
public class StatsStaffPatrolRecordDailyServiceImpl extends BaseServiceImpl<StatsStaffPatrolRecordDailyDao, StatsStaffPatrolRecordDailyEntity> implements StatsStaffPatrolRecordDailyService {
/**
* desc:获取组织或网格的 时间段内的总次数等
*
* @param agencyFullIdList
* @param startDateId
* @param endDateId
* @return
*/
@Override
public List<PatrolDailySumResult> getPatrolSumList(List<String> agencyFullIdList, String startDateId, String endDateId) {
return baseDao.getPatrolSumList(agencyFullIdList,startDateId,endDateId);
}
}

12
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/evaluationindex/impl/EvaluationIndexServiceImpl.java

@ -1,9 +1,8 @@
package com.epmet.dataaggre.service.evaluationindex.impl;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.dataaggre.constant.DataSourceConstant;
import com.epmet.dataaggre.dao.datastats.DataStatsDao;
import com.epmet.dataaggre.dao.evaluationindex.EvaluationIndexDao;
import com.epmet.dataaggre.dto.datastats.form.GovrnRatioFormDTO;
import com.epmet.dataaggre.dto.datastats.result.GovrnRatioResultDTO;
@ -14,13 +13,10 @@ import com.epmet.dataaggre.service.evaluationindex.EvaluationIndexService;
import com.epmet.dataaggre.service.opercrm.CustomerRelation;
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.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
@ -114,6 +110,9 @@ public class EvaluationIndexServiceImpl implements EvaluationIndexService {
public List<String> getAgencyIdsByAgencyId(String agencyId) {
//1.查询agencyId对应组织信息
ScreenCustomerAgencyDTO dto = evaluationIndexDao.getByAgencyId(agencyId);
if (dto == null){
return new ArrayList<>();
}
//2.判断客户是否存在子客户
List<String> list = customerRelation.haveSubCustomer(dto.getCustomerId());
if (!CollectionUtils.isNotEmpty(list)) {
@ -131,6 +130,9 @@ public class EvaluationIndexServiceImpl implements EvaluationIndexService {
public List<ScreenCustomerAgencyDTO> getSubAgencyListByAgency(String agencyId) {
//1.查询agencyId对应组织信息
ScreenCustomerAgencyDTO dto = evaluationIndexDao.getByAgencyId(agencyId);
if (dto == null){
throw new RenException("组织信息不存在!");
}
//2.判断客户是否存在子客户
List<String> list = customerRelation.haveSubCustomer(dto.getCustomerId());
if (!CollectionUtils.isNotEmpty(list)) {

34
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/opercrm/CustomerParameterService.java

@ -0,0 +1,34 @@
/**
* 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.dataaggre.service.opercrm;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.dataaggre.entity.opercrm.CustomerParameterEntity;
/**
* 客户配置表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-07-27
*/
public interface CustomerParameterService extends BaseService<CustomerParameterEntity> {
CustomerParameterEntity queryFootBarPattern(String customerId, String appType);
CustomerParameterEntity queryFootBarHighLightNum(String customerId, String appType);
}

60
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/opercrm/impl/CustomerParameterServiceImpl.java

@ -0,0 +1,60 @@
/**
* 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.dataaggre.service.opercrm.impl;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.Constant;
import com.epmet.dataaggre.constant.DataSourceConstant;
import com.epmet.dataaggre.dao.opercrm.CustomerParameterDao;
import com.epmet.dataaggre.entity.opercrm.CustomerParameterEntity;
import com.epmet.dataaggre.service.opercrm.CustomerParameterService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* 客户配置表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-07-27
*/
@DataSource(DataSourceConstant.OPER_CRM)
@Slf4j
@Service
public class CustomerParameterServiceImpl extends BaseServiceImpl<CustomerParameterDao, CustomerParameterEntity> implements CustomerParameterService {
@Override
public CustomerParameterEntity queryFootBarPattern(String customerId, String appType) {
String parameterKey=appType.concat(Constant.FOOTBAR_PATTERN_KEY_SUFFIX);
CustomerParameterEntity pattern=baseDao.selectByParameterKey(parameterKey,customerId);
if(null ==pattern){
pattern=baseDao.selectByParameterKey(parameterKey, Constant.DEFAULT_CUSTOMER);
}
return pattern;
}
@Override
public CustomerParameterEntity queryFootBarHighLightNum(String customerId, String appType) {
String parameterKey=appType.concat(Constant.FOOTBAR_HIGHLIGHT_NUM);
CustomerParameterEntity entity=baseDao.selectByParameterKey(parameterKey,customerId);
if(null ==entity){
entity=baseDao.selectByParameterKey(parameterKey, Constant.DEFAULT_CUSTOMER);
}
return entity;
}
}

42
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/opercustomize/CustomerFootBarService.java

@ -0,0 +1,42 @@
/**
* 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.dataaggre.service.opercustomize;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.dataaggre.dto.app.form.AppFootBarFormDTO;
import com.epmet.dataaggre.dto.app.result.AppFootBarResultDTO;
import com.epmet.dataaggre.entity.opercustomize.CustomerFootBarEntity;
/**
* APP底部菜单栏信息
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-07-27
*/
public interface CustomerFootBarService extends BaseService<CustomerFootBarEntity> {
/**
* 查询底部footBar信息两端通用
*
* @param footBarFormDTO
* @return com.epmet.dataaggre.dto.app.result.AppFootBarResultDTO
* @author yinzuomei
* @date 2021/7/27 18:59
*/
AppFootBarResultDTO queryAppFootBars(AppFootBarFormDTO footBarFormDTO);
}

115
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/opercustomize/impl/CustomerFootBarServiceImpl.java

@ -0,0 +1,115 @@
/**
* 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.dataaggre.service.opercustomize.impl;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.Constant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.dataaggre.constant.DataSourceConstant;
import com.epmet.dataaggre.dao.opercustomize.CustomerFootBarDao;
import com.epmet.dataaggre.dto.app.form.AppFootBarFormDTO;
import com.epmet.dataaggre.dto.app.result.AppFootBarResultDTO;
import com.epmet.dataaggre.dto.app.result.CustomerFootBarDTO;
import com.epmet.dataaggre.entity.opercrm.CustomerParameterEntity;
import com.epmet.dataaggre.entity.opercustomize.CustomerFootBarEntity;
import com.epmet.dataaggre.service.opercrm.CustomerParameterService;
import com.epmet.dataaggre.service.opercustomize.CustomerFootBarService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
/**
* APP底部菜单栏信息
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-07-27
*/
@DataSource(DataSourceConstant.OPERCUSTOMIZE)
@Slf4j
@Service
public class CustomerFootBarServiceImpl extends BaseServiceImpl<CustomerFootBarDao, CustomerFootBarEntity> implements CustomerFootBarService {
@Autowired
private CustomerParameterService customerParameterService;
/**
* 查询底部footBar信息两端通用
*
* @param footBarFormDTO
* @return com.epmet.dataaggre.dto.app.result.AppFootBarResultDTO
* @author yinzuomei
* @date 2021/7/27 18:59
*/
@Override
public AppFootBarResultDTO queryAppFootBars(AppFootBarFormDTO footBarFormDTO) {
AppFootBarResultDTO resultDTO = new AppFootBarResultDTO();
resultDTO.setPattern(Constant.FOOT_BAR_FLAT);
resultDTO.setHighLightNum(NumConstant.ZERO);
// 1、查询客户的模式,没有返回产品默认的;*水平:flat;浮起:float
CustomerParameterEntity patternEntity = customerParameterService.queryFootBarPattern(footBarFormDTO.getCustomerId(), footBarFormDTO.getAppType());
// 2、查询客户设置的第几个,没有默认返回0,
CustomerParameterEntity highLightNumEntity = customerParameterService.queryFootBarHighLightNum(footBarFormDTO.getCustomerId(), footBarFormDTO.getAppType());
List<CustomerFootBarDTO> footBarList = baseDao.selectAppFootBars(footBarFormDTO.getCustomerId(), footBarFormDTO.getAppType());
if (CollectionUtils.isEmpty(footBarList)) {
footBarList = baseDao.selectAppFootBars(Constant.DEFAULT_CUSTOMER, footBarFormDTO.getAppType());
}else{
//如果客户没有上传图标,返回产品默认的图标
for (CustomerFootBarDTO dto : footBarList) {
if (StringUtils.isBlank(dto.getIconPath())
|| StringUtils.isBlank(dto.getSelectedIconPath())
|| StringUtils.isBlank(dto.getFloatIconPath())) {
CustomerFootBarEntity defaultEntity = baseDao.selectDefaultIcon(Constant.DEFAULT_CUSTOMER, footBarFormDTO.getAppType(), dto.getBarKey());
if (StringUtils.isBlank(dto.getIconPath())) {
dto.setIconPath(null == defaultEntity ? StrConstant.EPMETY_STR : defaultEntity.getIconPath());
}
if (StringUtils.isBlank(dto.getSelectedIconPath())) {
dto.setSelectedIconPath(null == defaultEntity ? StrConstant.EPMETY_STR : defaultEntity.getSelectedIconPath());
}
if (StringUtils.isBlank(dto.getFloatIconPath())) {
dto.setFloatIconPath(null == defaultEntity ? StrConstant.EPMETY_STR : defaultEntity.getFloatIconPath());
}
}
}
}
if (footBarList.size() % NumConstant.TWO == 0) {
resultDTO.setIsOddNum(false);
} else {
resultDTO.setIsOddNum(true);
}
//只有客户选择的浮起+奇数+全部上传了图标才返回pattern=flat
if (resultDTO.getIsOddNum() && Constant.FOOT_BAR_FLOAT.equals(patternEntity.getParameterValue())) {
resultDTO.setPattern(Constant.FOOT_BAR_FLOAT);
//返回
resultDTO.setHighLightNum(footBarList.size() / NumConstant.TWO);
} else {
resultDTO.setPattern(Constant.FOOT_BAR_FLAT);
resultDTO.setHighLightNum(Integer.valueOf(highLightNumEntity.getParameterValue()));
}
//如果是浮起模式且是奇数,返回是footBarList的索引
resultDTO.setFootBarList(footBarList);
return resultDTO;
}
}

5
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/bootstrap.yml

@ -139,6 +139,11 @@ dynamic:
url: @datasource.druid.evaluationIndex.url@
username: @datasource.druid.evaluationIndex.username@
password: @datasource.druid.evaluationIndex.password@
opercustomize:
driver-class-name: com.mysql.cj.jdbc.Driver
url: @datasource.druid.opercustomize.url@
username: @datasource.druid.opercustomize.username@
password: @datasource.druid.opercustomize.password@
feign:
hystrix:
enabled: true

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

@ -685,5 +685,62 @@
AGENCY_ID = #{agencyId}
</foreach>
</select>
<select id="getAgencySumTopic" resultType="com.epmet.dataaggre.dto.datastats.result.TotalAndIncrResultDTO">
SELECT
sum(topic_count) AS total,
sum(TOPIC_INCREMENT) AS incr
FROM
fact_topic_status_agency_daily
WHERE
del_flag = '0'
AND topic_status_id in('discussing','closed','hidden')<!-- 讨论中(热议中!=讨论中)、已处理、已屏蔽 -->
AND date_id = #{dateId}
<foreach item="agencyId" collection="agencyList" open="AND (" separator="or" close=")" index="">
agency_id = #{agencyId}
</foreach>
</select>
<select id="getAgencySumIssue" resultType="com.epmet.dataaggre.dto.datastats.result.TotalAndIncrResultDTO">
SELECT
sum(ISSUE_TOTAL) AS total,
sum(ISSUE_INCR) AS incr
FROM
fact_issue_agency_daily
WHERE
del_flag = '0'
AND date_id = #{dateId}
<foreach item="agencyId" collection="agencyList" open="AND (" separator="or" close=")" index="">
agency_id = #{agencyId}
</foreach>
</select>
<select id="getAgencySumProject" resultType="com.epmet.dataaggre.dto.datastats.result.TotalAndIncrResultDTO">
SELECT
SUM(project_total) AS total,
SUM(PROJECT_INCR) AS incr,
SUM(CLOSED_TOTAL) AS total2,
SUM(CLOSED_INCR) AS incr2
FROM
fact_agency_project_daily
WHERE
del_flag = '0'
AND date_id = #{dateId}
<foreach item="agencyId" collection="agencyList" open="AND (" separator="or" close=")" index="">
agency_id = #{agencyId}
</foreach>
</select>
<select id="getSubSumAgencyTopic" resultType="com.epmet.dataaggre.dto.datastats.result.BaseStatsDataResultDTO">
SELECT
agency_id AS agencyId,
topic_count AS topicCount,
topic_status_id AS topicStatus
FROM
fact_topic_status_agency_daily
WHERE
del_flag = '0'
AND topic_status_id in('discussing','closed','hidden')<!-- 讨论中(热议中!=讨论中)、已处理、已屏蔽 -->
AND date_id = #{dateId}
<foreach item="agencyId" collection="agencyList" open="AND (" separator="or" close=")" index="">
agency_id = #{agencyId}
</foreach>
</select>
</mapper>

18
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StatsStaffPatrolRecordDailyDao.xml

@ -0,0 +1,18 @@
<?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.dataaggre.dao.epmetuser.StatsStaffPatrolRecordDailyDao">
<select id="getPatrolSumList" resultType="com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult">
<foreach collection="agencyFullIdList" item="fullAgencyId" separator="UNION ALL">
SELECT
LEFT (GRID_PIDS,LENGTH( #{fullAgencyId} )) fullAgencyId,
sum(patrol_total) patrolTotal,
sum(TOTAL_TIME) totalTime
FROM stats_staff_patrol_record_daily
WHERE del_flag = '0'
AND date_id BETWEEN #{startDateId} and #{endDateId}
AND GRID_PIDS like CONCAT( #{fullAgencyId},'%')
GROUP BY fullAgencyId
</foreach>
</select>
</mapper>

5
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/evaluationindex/EvaluationIndexDao.xml

@ -154,7 +154,8 @@
agency_name AS agencyName,
level AS level,
area_code AS areaCode,
parent_area_code AS parentAreaCode
parent_area_code AS parentAreaCode,
PIDS
FROM
screen_customer_agency
WHERE
@ -174,4 +175,4 @@
</if>
</select>
</mapper>
</mapper>

15
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/opercrm/CustomerParameterDao.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.dataaggre.dao.opercrm.CustomerParameterDao">
<select id="selectByParameterKey" parameterType="map" resultType="com.epmet.dataaggre.entity.opercrm.CustomerParameterEntity">
select
cp.*
from customer_parameter cp
where cp.DEL_FLAG='0'
and cp.CUSTOMER_ID=#{customerId}
and cp.PARAMETER_KEY=#{parameterKey}
</select>
</mapper>

41
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/opercustomize/CustomerFootBarDao.xml

@ -0,0 +1,41 @@
<?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.dataaggre.dao.opercustomize.CustomerFootBarDao">
<!-- 查询客户工作端或者居民端,footbar列表 -->
<select id="selectAppFootBars" parameterType="map" resultType="com.epmet.dataaggre.dto.app.result.CustomerFootBarDTO">
SELECT
c.BAR_KEY as barKey,
c.BAR_NAME as barName,
IFNULL(c.PAGE_TITLE,'') as pageTitle,
IFNULL(c.ICON_PATH,'') as iconPath,
IFNULL(c.SELECTED_ICON_PATH,'') as selectedIconPath,
IFNULL(c.FLOAT_ICON_PATH,'') AS floatIconPath,
c.CUSTOMER_ID as customerId
FROM
customer_foot_bar c
WHERE
c.del_flag = '0'
AND c.customer_id = #{customerId}
AND c.app_type = #{appType}
AND C.DISPLAY='1'
order by c.ORDER_INDEX asc
</select>
<!-- 查询某个footbar信息 -->
<select id="selectDefaultIcon" parameterType="map" resultType="com.epmet.dataaggre.entity.opercustomize.CustomerFootBarEntity">
SELECT
IFNULL(c.ICON_PATH,'') as iconPath,
IFNULL(c.SELECTED_ICON_PATH,'') as selectedIconPath,
IFNULL(c.FLOAT_ICON_PATH,'') as floatIconPath
FROM
customer_foot_bar c
WHERE
c.del_flag = '0'
AND c.customer_id = #{customerId}
AND c.app_type = #{appType}
and c.BAR_KEY=#{barKey}
AND C.DISPLAY='1'
</select>
</mapper>

22
epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/form/govOrg/OrgTreeFormDTO.java

@ -0,0 +1,22 @@
package com.epmet.dto.form.govOrg;
import lombok.Data;
import java.io.Serializable;
/**
* 各机关注册用户数入参DTO
*
* @author yinzuomei@elink-cn.com
* @date 2020/6/22 12:47
*/
@Data
public class OrgTreeFormDTO implements Serializable {
private static final long serialVersionUID = 6649155066499141632L;
private String mobile;
private String customerId;
}

18
epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/result/govOrg/OrgTreeNode.java

@ -0,0 +1,18 @@
package com.epmet.dto.result.govOrg;
import com.epmet.commons.tools.utils.TreeAreaCodeNode;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
public class OrgTreeNode extends TreeAreaCodeNode<OrgTreeNode> {
private String id;
private String pid;
private String orgId;
private String orgName;
private String level;
private List<OrgTreeNode> children=new ArrayList<>();
}

15
epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/AgencyController.java

@ -8,9 +8,11 @@ import com.epmet.datareport.service.evaluationindex.screen.AgencyService;
import com.epmet.dto.form.AddAreaCodeDictFormDTO;
import com.epmet.dto.form.AgencyDetailMulticFormDTO;
import com.epmet.dto.form.AreaCodeDictFormDTO;
import com.epmet.dto.form.govOrg.OrgTreeFormDTO;
import com.epmet.dto.result.AgencyDetailMulticResultDTO;
import com.epmet.dto.result.AreaCodeDictResultDTO;
import com.epmet.dto.result.commonservice.AddAreaCodeDictResultDTO;
import com.epmet.dto.result.govOrg.OrgTreeNode;
import com.epmet.dto.result.plugins.AgencyNodeDTO;
import com.epmet.evaluationindex.screen.dto.form.CompartmentByBizTypeFormDTO;
import com.epmet.evaluationindex.screen.dto.form.CompartmentFormDTO;
@ -129,4 +131,17 @@ public class AgencyController {
ValidatorUtils.validateEntity(formDTO, AgencyDetailMulticFormDTO.AddUserInternalGroup.class);
return new Result<AgencyDetailMulticResultDTO>().ok(agencyService.queryAgencyDetailMultiC(formDTO));
}
/**
* desc: 获取组织树 含所有直线上级 但不含部门和网格 目前
*
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.result.plugins.AgencyNodeDTO>
* @author LiuJanJun
* @date 2021/8/3 5:17 下午
*/
@PostMapping("getStaffAgencyTree")
public Result<OrgTreeNode> getStaffAgencyTree(@RequestBody OrgTreeFormDTO formDTO) {
return new Result<OrgTreeNode>().ok(agencyService.getStaffAgencyTree(formDTO));
}
}

37
epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenCustomerAgencyDao.java

@ -114,7 +114,7 @@ public interface ScreenCustomerAgencyDao {
CompartmentResultDTO getAgencyInfoByAegncyId(@Param("agencyId") String agencyId);
/**
* @Description 查询组织的下级组织ID
* @Description 查询组织的下级组织ID
* @Param agencyId
* @author zxc
* @date 2020/10/28 10:33 上午
@ -134,7 +134,7 @@ public interface ScreenCustomerAgencyDao {
* @description 根据areaCode查询组织机构
* @Date 2021/2/4 21:51
**/
List<AgencyNodeDTO> queryStaffAgencyTree(@Param("areaCode")String areaCode);
List<AgencyNodeDTO> queryStaffAgencyTree(@Param("areaCode") String areaCode);
/**
* @param areaCode
@ -143,7 +143,7 @@ public interface ScreenCustomerAgencyDao {
* @description 查找组织下的部门
* @Date 2021/2/4 21:51
**/
List<DeptNodeDTO> selectDeptList(@Param("areaCode") String areaCode,@Param("agencyId") String agencyId);
List<DeptNodeDTO> selectDeptList(@Param("areaCode") String areaCode, @Param("agencyId") String agencyId);
/**
* @param areaCode
@ -152,27 +152,27 @@ public interface ScreenCustomerAgencyDao {
* @description 查找组织下的网格
* @Date 2021/2/4 21:52
**/
List<GridNodeDTO> selectGridList(@Param("areaCode") String areaCode,@Param("agencyId") String agencyId);
List<GridNodeDTO> selectGridList(@Param("areaCode") String areaCode, @Param("agencyId") String agencyId);
/**
* @return java.util.List<java.lang.String>
* @param areaCode
* @param agencyId
* @return java.util.List<java.lang.String>
* @author yinzuomei
* @description 下一级组织+直属网格
* @Date 2021/5/10 14:02
**/
List<String> getNextAgencyIds(@Param("areaCode")String areaCode,@Param("agencyId")String agencyId);
List<String> getNextAgencyIds(@Param("areaCode") String areaCode, @Param("agencyId") String agencyId);
List<ScreenCustomerAgencyCommonDTO> selectSubAgencyIds(@Param("areaCode")String areaCode, @Param("agencyId")String agencyId);
List<ScreenCustomerAgencyCommonDTO> selectSubAgencyIds(@Param("areaCode") String areaCode, @Param("agencyId") String agencyId);
/**
* @Description 根据agencyId查询网格
* @Description 根据agencyId查询网格
* @Param agencyId
* @author zxc
* @date 2021/6/8 1:27 下午
*/
List<GridManagerListResultDTO> selectGrid(@Param("agencyId")String agencyId,@Param("areaCode")String areaCode);
List<GridManagerListResultDTO> selectGrid(@Param("agencyId") String agencyId, @Param("areaCode") String areaCode);
/**
* 查询当前组织的下一级组织可根据areaCode查询也可根据pid查询
@ -190,13 +190,13 @@ public interface ScreenCustomerAgencyDao {
* @param parentAgencyId
* @return java.util.List<com.epmet.dto.result.ScreenCustomerAgencyDTO>
*/
List<ScreenCustomerGridDTO> selectGridDTOList(@Param("areaCode") String areaCode, @Param("parentAgencyId") String parentAgencyId,@Param("allCustomerIds") List<String> allCustomerIds);
List<ScreenCustomerGridDTO> selectGridDTOList(@Param("areaCode") String areaCode, @Param("parentAgencyId") String parentAgencyId, @Param("allCustomerIds") List<String> allCustomerIds);
List<ParentListResultDTO> selectPAgencyById(@Param("listStr")List<String> pidList);
List<ParentListResultDTO> selectPAgencyById(@Param("listStr") List<String> pidList);
/**
* @return com.epmet.dto.result.ScreenCustomerAgencyDTO
* @param customerId
* @return com.epmet.dto.result.ScreenCustomerAgencyDTO
* @author yinzuomei
* @description 根据客户id返回当前客户下的跟组织信息
* @Date 2021/6/24 17:43
@ -204,4 +204,15 @@ public interface ScreenCustomerAgencyDao {
ScreenCustomerAgencyDTO selectCustomerRootAgency(String customerId);
ScreenCustomerAgencyDTO selectByAreaCode(String areaCode);
}
/**
* desc: 根据pids 或者 areaCode 获取所有下级组织
*
* @param pids
* @param areaCode
* @return java.util.List<com.epmet.dto.result.ScreenCustomerAgencyDTO>
* @author LiuJanJun
* @date 2021/8/5 11:01 上午
*/
List<ScreenCustomerAgencyDTO> selectAllSubAgencyList(@Param("pids") String pids, @Param("areaCode") String areaCode);
}

21
epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/healthcheck/HealthCheckController.java

@ -0,0 +1,21 @@
package com.epmet.datareport.healthcheck;
import com.epmet.commons.tools.utils.Result;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("healthcheck")
public class HealthCheckController {
/**
* http健康检查
* @return
*/
@PostMapping("http")
public Result httpHealthCheck() {
return new Result();
}
}

12
epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/AgencyService.java

@ -5,10 +5,12 @@ import com.epmet.dto.ScreenCustomerGridDTO;
import com.epmet.dto.form.AddAreaCodeDictFormDTO;
import com.epmet.dto.form.AgencyDetailMulticFormDTO;
import com.epmet.dto.form.AreaCodeDictFormDTO;
import com.epmet.dto.form.govOrg.OrgTreeFormDTO;
import com.epmet.dto.result.AgencyDetailMulticResultDTO;
import com.epmet.dto.result.AreaCodeDictResultDTO;
import com.epmet.dto.result.ScreenCustomerAgencyDTO;
import com.epmet.dto.result.commonservice.AddAreaCodeDictResultDTO;
import com.epmet.dto.result.govOrg.OrgTreeNode;
import com.epmet.dto.result.plugins.AgencyNodeDTO;
import com.epmet.evaluationindex.screen.dto.form.CompartmentByBizTypeFormDTO;
import com.epmet.evaluationindex.screen.dto.form.CompartmentFormDTO;
@ -104,4 +106,14 @@ public interface AgencyService {
* @return com.epmet.dto.result.AgencyDetailMulticResultDTO
*/
AgencyDetailMulticResultDTO queryAgencyDetailMultiC(AgencyDetailMulticFormDTO formDTO);
/**
* desc: 获取工作人员组织树 含所有直线上级组织 不含网格及部门
*
* @param mobile
* @return com.epmet.dto.result.plugins.AgencyNodeDTO
* @author LiuJanJun
* @date 2021/8/3 5:03 下午
*/
OrgTreeNode getStaffAgencyTree(OrgTreeFormDTO mobile);
}

126
epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/AgencyServiceImpl.java

@ -2,28 +2,35 @@ package com.epmet.datareport.service.evaluationindex.screen.impl;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.tools.constant.Constant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.enums.OrgLevelEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.utils.AgencyTreeUtils;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.TreeUtils;
import com.epmet.constant.DataSourceConstant;
import com.epmet.datareport.dao.evaluationindex.screen.ScreenCustomerAgencyDao;
import com.epmet.datareport.dao.evaluationindex.screen.ScreenCustomerGridDao;
import com.epmet.datareport.redis.DataReportRedis;
import com.epmet.datareport.service.evaluationindex.screen.AgencyService;
import com.epmet.dto.AgencyInfoDTO;
import com.epmet.dto.CustomerAgencyDTO;
import com.epmet.dto.CustomerStaffDTO;
import com.epmet.dto.ScreenCustomerGridDTO;
import com.epmet.dto.form.AddAreaCodeDictFormDTO;
import com.epmet.dto.form.AgencyDetailMulticFormDTO;
import com.epmet.dto.form.AreaCodeDictFormDTO;
import com.epmet.dto.form.CustomerStaffFormDTO;
import com.epmet.dto.form.govOrg.OrgTreeFormDTO;
import com.epmet.dto.result.AgencyDetailMulticResultDTO;
import com.epmet.dto.result.AreaCodeDictResultDTO;
import com.epmet.dto.result.ParentListResultDTO;
import com.epmet.dto.result.ScreenCustomerAgencyDTO;
import com.epmet.dto.result.commonservice.AddAreaCodeDictResultDTO;
import com.epmet.dto.result.govOrg.OrgTreeNode;
import com.epmet.dto.result.plugins.AgencyNodeDTO;
import com.epmet.evaluationindex.screen.constant.ScreenConstant;
import com.epmet.evaluationindex.screen.dto.form.CompartmentByBizTypeFormDTO;
@ -33,6 +40,7 @@ import com.epmet.evaluationindex.screen.dto.result.AgencyDistributionResultDTO;
import com.epmet.evaluationindex.screen.dto.result.CompartmentResultDTO;
import com.epmet.evaluationindex.screen.dto.result.TreeResultDTO;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.feign.OperCrmOpenFeignClient;
import lombok.extern.slf4j.Slf4j;
@ -42,10 +50,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.*;
/**
* 组织相关api
@ -70,6 +75,8 @@ public class AgencyServiceImpl implements AgencyService {
private OperCrmOpenFeignClient operCrmOpenFeignClient;
@Autowired
private DataReportRedis dataReportRedis;
@Autowired
private EpmetUserOpenFeignClient userOpenFeignClient;
/**
* @Description 1组织机构树
@ -438,7 +445,7 @@ public class AgencyServiceImpl implements AgencyService {
log.info("多客户版本parentList、level要重新赋值;agencysResultDTO.getParentAreaCode()="+agencysResultDTO.getParentAreaCode());
ScreenCustomerAgencyDTO parentAgency=screenCustomerAgencyDao.selectByAreaCode(agencysResultDTO.getParentAreaCode());
if (null != parentAgency) {
agencysResultDTO.setLevel(getAgencyLevelMultiC(parentAgency));
agencysResultDTO.setLevel(OrgLevelEnum.getSubOrgLevel(parentAgency.getLevel()));
List<ParentListResultDTO> temp = getParentListMultic(parentList, parentAgency, formDTO.getCustomerId(), agencysResultDTO.getRootAgencyId());
agencysResultDTO.setParentList(temp);
}
@ -468,6 +475,97 @@ public class AgencyServiceImpl implements AgencyService {
return agencysResultDTO;
}
@Override
public OrgTreeNode getStaffAgencyTree(OrgTreeFormDTO formDTO) {
//获取工作人员信息
CustomerStaffFormDTO staffParam = new CustomerStaffFormDTO();
staffParam.setMobile(formDTO.getMobile());
staffParam.setCustomerId(formDTO.getCustomerId());
Result<CustomerStaffDTO> staffInfoResult = userOpenFeignClient.getCustomerStaffInfo(staffParam);
if (!staffInfoResult.success()){
throw new RenException(staffInfoResult.getCode(),staffInfoResult.getInternalMsg());
}
//获取工作人员组织信息
Result<CustomerAgencyDTO> agencyByStaff = govOrgOpenFeignClient.getAgencyByStaff(staffInfoResult.getData().getUserId());
if (!agencyByStaff.success() || agencyByStaff.getData()== null || StringUtils.isBlank(agencyByStaff.getData().getId()) ){
throw new RenException(staffInfoResult.getCode(),staffInfoResult.getMsg());
}
CustomerAgencyDTO staffAgencyDTO = agencyByStaff.getData();
log.debug("getStaffAgencyTree查询当前工作人员组织信息为:{}",JSON.toJSONString(staffAgencyDTO));
//4、如果当前客户不存在子客户则areaCode置为空
Result<List<String>> crmRes=operCrmOpenFeignClient.getAllSubCustomerIds(formDTO.getCustomerId());
if (!crmRes.success()){
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode());
}
List<OrgTreeNode> nodes = new ArrayList<>();
ScreenCustomerAgencyDTO parentAgencyDTO = null;
List<OrgTreeNode> nodeList = new ArrayList<>();
//单客户
if (CollectionUtils.isEmpty(crmRes.getData())){
String parentId = staffAgencyDTO.getPid();
do {
parentAgencyDTO = screenCustomerAgencyDao.selectByAgencyId(parentId);
if (parentAgencyDTO == null){
break;
}
convertOrgTreeNode(nodeList, parentAgencyDTO);
if (parentAgencyDTO.getPid() == null || NumConstant.ZERO_STR.equals(parentAgencyDTO.getPid())){
break;
}
parentId = parentAgencyDTO.getAreaCode();
} while (true);
//多客户 获取所有下级
List<ScreenCustomerAgencyDTO> agencyNodeDTOS = screenCustomerAgencyDao.selectAllSubAgencyList(staffAgencyDTO.getPids(),null);
agencyNodeDTOS.forEach(agency->convertOrgTreeNode(nodeList, agency));
nodes = TreeUtils.buildTreeByAreaCode(nodeList);
}else {
String parentAreaCode = staffAgencyDTO.getParentAreaCode();
//多客户 获取所有直线上级
do {
parentAgencyDTO = screenCustomerAgencyDao.selectByAreaCode(parentAreaCode);
if (parentAgencyDTO == null){
break;
}
convertOrgTreeNode(nodeList, parentAgencyDTO);
if (parentAgencyDTO.getPid() == null || NumConstant.ZERO_STR.equals(parentAgencyDTO.getPid())){
break;
}
parentAreaCode = parentAgencyDTO.getAreaCode();
} while (true);
log.debug("getStaffAgencyTree查询所有上级为:{}",JSON.toJSONString(nodeList));
//多客户 获取所有下级
List<ScreenCustomerAgencyDTO> agencyNodeDTOS = screenCustomerAgencyDao.selectAllSubAgencyList(null,staffAgencyDTO.getAreaCode());
//孔村降级处理 且移除掉 党总支级别
String KONG_CUN_AGENCY_ID = "1234085031077498881";
Iterator<ScreenCustomerAgencyDTO> iterator = agencyNodeDTOS.iterator();
while (iterator.hasNext()){
ScreenCustomerAgencyDTO e = iterator.next();
if (e.getPids().contains(KONG_CUN_AGENCY_ID)){
if (OrgLevelEnum.STREET.getCode().equals(e.getLevel())){
iterator.remove();
}
if (KONG_CUN_AGENCY_ID.equals(e.getAgencyId())){
e.setLevel(OrgLevelEnum.getSubOrgLevel(e.getLevel()));
}
}
convertOrgTreeNode(nodeList, e);
}
nodes = TreeUtils.buildTreeByAreaCode(nodeList);
}
log.debug("getStaffAgencyTree查询所有上级树结构为:{}",JSON.toJSONString(nodes));
//只有一个根节点的树 所以返回一个
return nodes.get(0);
}
private void convertOrgTreeNode(List<OrgTreeNode> nodeList, ScreenCustomerAgencyDTO currentAgency) {
OrgTreeNode orgTreeNode = ConvertUtils.sourceToTarget(currentAgency, OrgTreeNode.class);
orgTreeNode.setOrgId(currentAgency.getAgencyId());
orgTreeNode.setOrgName(currentAgency.getAgencyName());
nodeList.add(orgTreeNode);
}
private List<ParentListResultDTO> getParentListMultic(List<ParentListResultDTO> resList, ScreenCustomerAgencyDTO firstParent, String currentUserCustomerId, String rootAgencyId) {
ParentListResultDTO resultDTO = new ParentListResultDTO();
resultDTO.setId(firstParent.getAgencyId());
@ -491,20 +589,4 @@ public class AgencyServiceImpl implements AgencyService {
}
}
}
private String getAgencyLevelMultiC(ScreenCustomerAgencyDTO parentAgency) {
String level=StrConstant.EPMETY_STR;
if(null!=parentAgency){
if(Constant.PROVINCE.equals(parentAgency.getLevel())){
return Constant.CITY;
}else if(Constant.CITY.equals(parentAgency.getLevel())){
return Constant.DISTRICT;
}else if(Constant.DISTRICT.equals(parentAgency.getLevel())){
return Constant.STREET;
}else if(Constant.STREET.equals(parentAgency.getLevel())){
return Constant.COMMUNITY;
}
}
return level;
}
}

2
epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/project/impl/ProjectServiceImpl.java

@ -530,11 +530,11 @@ public class ProjectServiceImpl implements ProjectService {
@DataSource(value = DataSourceConstant.EVALUATION_INDEX,datasourceNameFromArg = true)
@Override
public List<MassesDiscontentResultV2DTO> queryMassesDiscontentMultic(MassesDiscontentFormV2DTO formDTO) {
PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize());
formDTO.setEndDate(getDateId(ProjectConstant.YESTERDAY));
formDTO.setStartDate(getDateId(formDTO.getTimeSection()));
log.info(JSON.toJSONString(formDTO,true));
//已结案、并且来源于议题、在当前时间范围内的、
PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize());
List<MassesDiscontentResultV2DTO> list = projectDao.selectMassesDiscontentMultic(formDTO.getAgencyId(),
formDTO.getAreaCode(),
formDTO.getStartDate(),

2
epmet-module/data-report/data-report-server/src/main/resources/logback-spring.xml

@ -142,7 +142,7 @@
<springProfile name="dev,test,local">
<logger name="org.springframework.web" level="INFO"/>
<logger name="org.springboot.sample" level="INFO"/>
<logger name="com.epmet.datareport.dao" level="DEBUG"/>
<logger name="com.epmet.datareport" level="DEBUG"/>
<root level="INFO">
<appender-ref ref="DEBUG_FILE"/>
<appender-ref ref="INFO_FILE"/>

17
epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenCustomerAgencyDao.xml

@ -433,4 +433,21 @@
AND sca.AREA_CODE = #{areaCode}
limit 1
</select>
<select id="selectAllSubAgencyList" resultType="com.epmet.dto.result.ScreenCustomerAgencyDTO">
SELECT
sca.*
FROM
screen_customer_agency sca
WHERE
sca.DEL_FLAG = '0'
<if test="pids != null and pids != ''">
AND sca.pids like CONCAT(#{pids},'%')
</if>
<if test="areaCode != null and areaCode != ''">
AND sca.AREA_CODE like CONCAT(#{areaCode},'%')
AND sca.PARENT_AREA_CODE != ''
AND sca.PARENT_AREA_CODE IS NOT NULL
</if>
</select>
</mapper>

14
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/user/FactParticipationUserGridDailyDTO.java

@ -19,6 +19,8 @@ package com.epmet.dto.stats.user;
import java.io.Serializable;
import java.util.Date;
import com.epmet.commons.tools.constant.NumConstant;
import lombok.Data;
import java.math.BigDecimal;
@ -150,4 +152,16 @@ public class FactParticipationUserGridDailyDTO implements Serializable {
*/
private String delFlag;
public FactParticipationUserGridDailyDTO() {
this.regTotal = NumConstant.ZERO;
this.resiTotal = NumConstant.ZERO;
this.warmHeartedTotal = NumConstant.ZERO;
this.partymemberTotal = NumConstant.ZERO;
this.regIncr = NumConstant.ZERO;
this.warmIncr = NumConstant.ZERO;
this.partymemberIncr = NumConstant.ZERO;
this.resiProportion = NumConstant.ZERO_DECIMAL;
this.partymemberProportion = NumConstant.ZERO_DECIMAL;
this.warmHeartedProportion = NumConstant.ZERO_DECIMAL;
}
}

14
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/user/FactParticipationUserGridMonthlyDTO.java

@ -19,6 +19,8 @@ package com.epmet.dto.stats.user;
import java.io.Serializable;
import java.util.Date;
import com.epmet.commons.tools.constant.NumConstant;
import lombok.Data;
import java.math.BigDecimal;
@ -149,4 +151,16 @@ public class FactParticipationUserGridMonthlyDTO implements Serializable {
*/
private String delFlag;
public FactParticipationUserGridMonthlyDTO() {
this.regTotal = NumConstant.ZERO;
this.resiTotal = NumConstant.ZERO;
this.warmHeartedTotal = NumConstant.ZERO;
this.partymemberTotal = NumConstant.ZERO;
this.regIncr = NumConstant.ZERO;
this.warmIncr = NumConstant.ZERO;
this.partymemberIncr = NumConstant.ZERO;
this.partymemberProportion = NumConstant.ZERO_DECIMAL;
this.resiProportion = NumConstant.ZERO_DECIMAL;
this.warmHeartedProportion = NumConstant.ZERO_DECIMAL;
}
}

14
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/user/FactRegUserGridDailyDTO.java

@ -19,6 +19,8 @@ package com.epmet.dto.stats.user;
import java.io.Serializable;
import java.util.Date;
import com.epmet.commons.tools.constant.NumConstant;
import lombok.Data;
import java.math.BigDecimal;
@ -149,4 +151,16 @@ public class FactRegUserGridDailyDTO implements Serializable {
*/
private String delFlag;
public FactRegUserGridDailyDTO() {
this.regTotal = NumConstant.ZERO;
this.resiTotal = NumConstant.ZERO;
this.warmHeartedTotal = NumConstant.ZERO;
this.partymemberTotal = NumConstant.ZERO;
this.regIncr = NumConstant.ZERO;
this.warmIncr = NumConstant.ZERO;
this.partymemberIncr = NumConstant.ZERO;
this.resiProportion = NumConstant.ZERO_DECIMAL;
this.partymemberProportion = NumConstant.ZERO_DECIMAL;
this.warmHeartedProportion = NumConstant.ZERO_DECIMAL;
}
}

14
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/user/FactRegUserGridMonthlyDTO.java

@ -19,6 +19,8 @@ package com.epmet.dto.stats.user;
import java.io.Serializable;
import java.util.Date;
import com.epmet.commons.tools.constant.NumConstant;
import lombok.Data;
import java.math.BigDecimal;
@ -149,4 +151,16 @@ public class FactRegUserGridMonthlyDTO implements Serializable {
*/
private String delFlag;
public FactRegUserGridMonthlyDTO() {
this.regTotal = NumConstant.ZERO;
this.resiTotal = NumConstant.ZERO;
this.warmHeartedTotal = NumConstant.ZERO;
this.partymemberTotal = NumConstant.ZERO;
this.regIncr = NumConstant.ZERO;
this.warmIncr = NumConstant.ZERO;
this.partymemberIncr = NumConstant.ZERO;
this.warmHeartedProportion = NumConstant.ZERO_DECIMAL;
this.resiProportion = NumConstant.ZERO_DECIMAL;
this.partymemberProportion = NumConstant.ZERO_DECIMAL;
}
}

12
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/user/result/UserStatisticalData.java

@ -5,6 +5,7 @@ import com.epmet.dto.stats.user.*;
import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
@ -71,4 +72,15 @@ public class UserStatisticalData implements Serializable {
* yyyyMM
*/
private String monthId;
public UserStatisticalData() {
this.partiAgencyDailyList = new ArrayList<>();
this.partiGridDailyList = new ArrayList<>();
this.partiAgencyMonthlyList = new ArrayList<>();
this.partiGridMonthlyList = new ArrayList<>();
this.regAgencyDailyList = new ArrayList<>();
this.regGridDailyList = new ArrayList<>();
this.regAgencyMonthlyList = new ArrayList<>();
this.regGridMonthlyList = new ArrayList<>();
}
}

26
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/IncrAndTotalUserIdsResultDTO.java

@ -0,0 +1,26 @@
package com.epmet.dto.user.result;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Author zxc
* @DateTime 2021/7/27 10:41 上午
* @DESC
*/
@Data
public class IncrAndTotalUserIdsResultDTO implements Serializable {
private static final long serialVersionUID = 9116867002773352209L;
private String gridId;
private List<String> userIds;
/**
* userId类型dailymonthly
*/
private String type;
}

20
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/IncrWithinTimeRangeResultDTO.java

@ -0,0 +1,20 @@
package com.epmet.dto.user.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2021/7/28 10:58 上午
* @DESC 查询指定时间范围内注册/参与用户增量
*/
@Data
public class IncrWithinTimeRangeResultDTO implements Serializable {
private static final long serialVersionUID = 6199087464367184830L;
private String gridId;
private Integer userCount;
}

24
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/PartyTotalAndIncrResultDTO.java

@ -0,0 +1,24 @@
package com.epmet.dto.user.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2021/7/27 4:53 下午
* @DESC
*/
@Data
public class PartyTotalAndIncrResultDTO implements Serializable {
private static final long serialVersionUID = 6546408164027047797L;
private String gridId;
private Integer dailyIncr;
private Integer monthlyIncr;
private Integer total;
}

31
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/TotalAndIncrResultDTO.java

@ -0,0 +1,31 @@
package com.epmet.dto.user.result;
import com.epmet.commons.tools.constant.NumConstant;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2021/7/27 10:14 上午
* @DESC
*/
@Data
public class TotalAndIncrResultDTO implements Serializable {
private static final long serialVersionUID = -3184476610188193106L;
private Integer total;
private Integer dailyIncr;
private Integer monthlyIncr;
private String gridId;
public TotalAndIncrResultDTO() {
this.total = NumConstant.ZERO;
this.dailyIncr = NumConstant.ZERO;
this.monthlyIncr = NumConstant.ZERO;
}
}

21
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/TotalUserIdsResultDTO.java

@ -0,0 +1,21 @@
package com.epmet.dto.user.result;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Author zxc
* @DateTime 2021/7/27 10:57 上午
* @DESC
*/
@Data
public class TotalUserIdsResultDTO implements Serializable {
private static final long serialVersionUID = 8236061658552220549L;
private String gridId;
private List<String> userIds;
}

37
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/WarmTotalAndIncrResultDTO.java

@ -0,0 +1,37 @@
package com.epmet.dto.user.result;
import com.epmet.commons.tools.constant.NumConstant;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2021/7/27 1:30 下午
* @DESC
*/
@Data
public class WarmTotalAndIncrResultDTO implements Serializable {
private static final long serialVersionUID = -4864864583111279861L;
private String gridId;
private Integer total;
/**
* 日增
*/
private Integer dailyIncr;
/**
* 月增
*/
private Integer monthlyIncr;
public WarmTotalAndIncrResultDTO() {
this.total = NumConstant.ZERO;
this.dailyIncr = NumConstant.ZERO;
this.monthlyIncr = NumConstant.ZERO;
}
}

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/FactGroupGridDailyDao.java

@ -48,7 +48,7 @@ public interface FactGroupGridDailyDao extends BaseDao<FactGroupGridDailyEntity>
* @param dateId
* @author zxc
*/
void deleteInsertDateId(@Param("dateId")String dateId,@Param("customerId")String customerId);
Integer deleteInsertDateId(@Param("dateId")String dateId,@Param("customerId")String customerId);
/**
* @Description 根据机关级别查询小组数据

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/user/FactParticipationUserAgencyDailyDao.java

@ -37,7 +37,7 @@ public interface FactParticipationUserAgencyDailyDao extends BaseDao<FactPartici
void insertBatch(@Param("list") List<FactParticipationUserAgencyDailyDTO> list);
void deleteByParams(@Param("dateId")String dateId,@Param("customerId")String customerId);
Integer deleteByParams(@Param("dateId")String dateId,@Param("customerId")String customerId);
/**
* @Description 查询机关下用户信息

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/user/FactParticipationUserAgencyMonthlyDao.java

@ -36,6 +36,6 @@ public interface FactParticipationUserAgencyMonthlyDao extends BaseDao<FactParti
void insertBatch(@Param("list") List<FactParticipationUserAgencyMonthlyDTO> list);
void deleteByParams(@Param("monthId")String monthId,@Param("customerId")String customerId);
Integer deleteByParams(@Param("monthId")String monthId,@Param("customerId")String customerId);
}

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/user/FactParticipationUserGridDailyDao.java

@ -38,7 +38,7 @@ public interface FactParticipationUserGridDailyDao extends BaseDao<FactParticipa
void insertBatch(@Param("list") List<FactParticipationUserGridDailyDTO> list);
void deleteByParams(@Param("dateId")String dateId,@Param("customerId")String customerId);
Integer deleteByParams(@Param("dateId")String dateId,@Param("customerId")String customerId);
/**
* @Description 查询网格下用户信息

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/user/FactParticipationUserGridMonthlyDao.java

@ -36,5 +36,5 @@ public interface FactParticipationUserGridMonthlyDao extends BaseDao<FactPartici
void insertBatch(@Param("list") List<FactParticipationUserGridMonthlyDTO> list);
void deleteByParams(@Param("monthId")String monthId,@Param("customerId")String customerId);
Integer deleteByParams(@Param("monthId")String monthId,@Param("customerId")String customerId);
}

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/user/FactRegUserAgencyDailyDao.java

@ -36,6 +36,6 @@ public interface FactRegUserAgencyDailyDao extends BaseDao<FactRegUserAgencyDail
void insertBatch(@Param("list") List<FactRegUserAgencyDailyDTO> list);
void deleteByParams(@Param("dateId")String dateId,@Param("customerId")String customerId);
Integer deleteByParams(@Param("dateId")String dateId,@Param("customerId")String customerId);
}

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/user/FactRegUserAgencyMonthlyDao.java

@ -37,7 +37,7 @@ public interface FactRegUserAgencyMonthlyDao extends BaseDao<FactRegUserAgencyMo
void insertBatch(@Param("list") List<FactRegUserAgencyMonthlyDTO> list);
void deleteByParams(@Param("monthId") String monthId, @Param("customerId") String customerId);
Integer deleteByParams(@Param("monthId") String monthId, @Param("customerId") String customerId);
List<GridUserCountResultDTO> selectAgencyUserCount(@Param("customerId") String customerId, @Param("monthId") String monthId);

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/user/FactRegUserGridDailyDao.java

@ -37,7 +37,7 @@ public interface FactRegUserGridDailyDao extends BaseDao<FactRegUserGridDailyEnt
void insertBatch(@Param("list") List<FactRegUserGridDailyDTO> list);
void deleteByParams(@Param("dateId")String dateId,@Param("customerId")String customerId);
Integer deleteByParams(@Param("dateId")String dateId,@Param("customerId")String customerId);
/**
* @Description 根据机构级别查询用户数与党员数

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/user/FactRegUserGridMonthlyDao.java

@ -37,7 +37,7 @@ public interface FactRegUserGridMonthlyDao extends BaseDao<FactRegUserGridMonthl
void insertBatch(@Param("list") List<FactRegUserGridMonthlyDTO> list);
void deleteByParams(@Param("monthId")String monthId,@Param("customerId")String customerId);
Integer deleteByParams(@Param("monthId")String monthId,@Param("customerId")String customerId);
/**
* @Description 查询网格下的客户

69
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/user/UserDao.java

@ -5,11 +5,7 @@ import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO;
import com.epmet.dto.extract.result.UserPartyResultDTO;
import com.epmet.dto.screen.ScreenProjectDataDTO;
import com.epmet.dto.stats.form.GmUploadEventFormDTO;
import com.epmet.dto.user.result.CommonTotalAndIncCountResultDTO;
import com.epmet.dto.user.result.StaffRoleInfoDTO;
import com.epmet.dto.user.result.CustomerStaffDTO;
import com.epmet.dto.user.result.StaffPatrolRecordResult;
import com.epmet.dto.user.result.StatsStaffPatrolRecordDailyDTO;
import com.epmet.dto.user.result.*;
import com.epmet.entity.evaluationindex.screen.ScreenPartyUserRankDataEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -36,6 +32,16 @@ public interface UserDao {
**/
CommonTotalAndIncCountResultDTO selectResiTotalAndIncrByLevel(@Param("regOrPartiFlag") String regOrPartiFlag, @Param("gridIds") Set<String> gridIds, @Param("targetDate") Date targetDate);
/**
* @Description 查询注册用户的总量与增量新方法
* @Param regOrPartiFlag
* @Param gridIds
* @Param targetDate
* @author zxc
* @date 2021/7/27 10:20 上午
*/
List<TotalAndIncrResultDTO> selectResiTotalAndIncrByGridIds(@Param("regOrPartiFlag") String regOrPartiFlag, @Param("gridIds") Set<String> gridIds, @Param("targetDate") Date targetDate,@Param("startDate")Date startDate);
/**
* @param
* @return
@ -45,6 +51,15 @@ public interface UserDao {
**/
CommonTotalAndIncCountResultDTO selectPartyTotalAndIncr(@Param("userIds") List<String> userIds, @Param("incrUserIds") List<String> incrUserIds, @Param("targetDate") Date targetDate);
/**
* @Description 查询党员的总量与增量新方法
* @Param targetDate
* @Param regOrPartiFlag
* @author zxc
* @date 2021/7/27 5:08 下午
*/
List<PartyTotalAndIncrResultDTO> selectPartyTotalAndIncrNew(@Param("targetDate") Date targetDate,@Param("regOrPartiFlag") String regOrPartiFlag,@Param("startDate") Date startDate);
/**
* @param
* @return
@ -54,6 +69,18 @@ public interface UserDao {
**/
CommonTotalAndIncCountResultDTO selectWarmTotalAndIncr(@Param("userIds") List<String> userIds, @Param("incrUserIds") List<String> incrUserIds, @Param("gridIds") Set<String> gridIds, @Param("targetDate") Date targetDate);
/**
* @Description 查询热心居民的总量与增量新方法
* @Param userIds 总注册用户
* @Param incrUserIds 增长注册用户
* @Param gridIds 网格IDS
* @Param targetDate dateId eg2021-07-27
* @author zxc
* @date 2021/7/27 1:31 下午
*/
List<WarmTotalAndIncrResultDTO> selectWarmTotalAndIncrByGrids(@Param("userIds") List<String> userIds, @Param("incrDailyUserIds") List<String> incrDailyUserIds, @Param("gridIds") Set<String> gridIds,
@Param("targetDate") Date targetDate,@Param("startDate") Date startDate,@Param("incrMonthlyUserIds") List<String> incrMonthlyUserIds);
/**
* @param
* @return
@ -72,6 +99,27 @@ public interface UserDao {
**/
List<String> selectTotalUserIds(@Param("regOrPartiFlag") String regOrPartiFlag, @Param("gridIds") Set<String> gridIds, @Param("targetDate") Date targetDate);
/**
* @Description 查询指定网格范围下单位时间内新增的注册用户Id新方法
* @Param regOrPartiFlag
* @Param gridIds
* @Param targetDate
* @author zxc
* @date 2021/7/27 10:41 上午
*/
List<IncrAndTotalUserIdsResultDTO> selectIncrUserIdsByGrids(@Param("regOrPartiFlag") String regOrPartiFlag, @Param("gridIds") Set<String> gridIds, @Param("targetDate") Date targetDate,
@Param("startDate")Date startDate);
/**
* @Description 查询指定网格范围下单位时间内全部的注册用户Id新方法
* @Param regOrPartiFlag
* @Param gridIds
* @Param targetDate
* @author zxc
* @date 2021/7/29 10:08 上午
*/
List<IncrAndTotalUserIdsResultDTO> selectTotalUserIdsByGrids(@Param("regOrPartiFlag") String regOrPartiFlag, @Param("gridIds") Set<String> gridIds, @Param("targetDate") Date targetDate);
/**
* @param
* @return
@ -90,6 +138,17 @@ public interface UserDao {
**/
Integer selectResiIncrWithinTimeRange(@Param("regOrPartiFlag") String regOrPartiFlag, @Param("gridIds") Set<String> gridIds, @Param("startDate") Date startDate, @Param("endDate") Date endDate);
/**
* @Description 查询指定时间范围内注册/参与用户增量新方法
* @Param regOrPartiFlag
* @Param gridIds
* @Param startDate
* @Param endDate
* @author zxc
* @date 2021/7/28 11:00 上午
*/
List<IncrWithinTimeRangeResultDTO> selectIncrWithinTimeRangeByGrids(@Param("regOrPartiFlag") String regOrPartiFlag, @Param("gridIds") Set<String> gridIds, @Param("startDate") Date startDate, @Param("endDate") Date endDate);
/**
* @param
* @return

21
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/healthcheck/HealthCheckController.java

@ -0,0 +1,21 @@
package com.epmet.healthcheck;
import com.epmet.commons.tools.utils.Result;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("healthcheck")
public class HealthCheckController {
/**
* http健康检查
* @return
*/
@PostMapping("http")
public Result httpHealthCheck() {
return new Result();
}
}

1
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/IndexCalculateStreetServiceImpl.java

@ -5,7 +5,6 @@ import com.alibaba.fastjson.JSON;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.enums.KongCunCustomerEnvEnum;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;

6
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/group/impl/GroupDataServiceImpl.java

@ -64,11 +64,7 @@ public class GroupDataServiceImpl implements GroupDataService {
formDTO.setCustomerId(customerId);
formDTO.setDateId(dateId);
List<GridGroupTotalResultDTO> gridGroupTotalResultDTOS = groupDataDao.selectGridGroupTotal(formDTO);
if (gridGroupTotalResultDTOS.size() == NumConstant.ZERO){
result.forEach(grid -> {
grid.setGroupTotal(NumConstant.ZERO);
});
}else {
if (!CollectionUtils.isEmpty(gridGroupTotalResultDTOS)){
result.forEach(grid -> {
gridGroupTotalResultDTOS.forEach(groupTotal -> {
if (grid.getGridId().equals(groupTotal.getGridId())) {

14
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/FactGroupGridDailyServiceImpl.java

@ -32,10 +32,12 @@ import com.epmet.dto.stats.FactGroupGridDailyDTO;
import com.epmet.entity.stats.FactGroupGridDailyEntity;
import com.epmet.service.StatsGroupService;
import com.epmet.service.stats.FactGroupGridDailyService;
import org.apache.commons.collections4.ListUtils;
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.Arrays;
import java.util.List;
@ -114,12 +116,18 @@ public class FactGroupGridDailyServiceImpl extends BaseServiceImpl<FactGroupGrid
@Override
@Transactional(rollbackFor = Exception.class)
public void statisticsGroupGridDaily(List<GroupGridDailyResultDTO> formDto,String customerId) {
if (formDto.size() == NumConstant.ZERO){
if (CollectionUtils.isEmpty(formDto)){
return;
}
String dateId = formDto.get(NumConstant.ZERO).getDateId();
baseDao.deleteInsertDateId(dateId,customerId);
baseDao.insertGroupGridDaily(formDto);
Integer delNum;
do {
delNum = baseDao.deleteInsertDateId(dateId,customerId);
}while (delNum > NumConstant.ZERO && delNum == NumConstant.ONE_THOUSAND);
List<List<GroupGridDailyResultDTO>> partition = ListUtils.partition(formDto, NumConstant.ONE_HUNDRED);
partition.forEach(p -> {
baseDao.insertGroupGridDaily(p);
});
}
}

99
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/user/impl/UserStatisticalServiceImpl.java

@ -3,8 +3,10 @@ package com.epmet.service.stats.user.impl;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.dao.stats.user.*;
import com.epmet.dto.stats.user.*;
import com.epmet.dto.stats.user.result.UserStatisticalData;
import com.epmet.service.stats.user.UserStatisticalService;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -12,6 +14,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* @Description
* @ClassName UserStatisticalServiceImpl
@ -59,58 +63,91 @@ public class UserStatisticalServiceImpl implements UserStatisticalService {
}
if(null != data.getPartiAgencyDailyList() && data.getPartiAgencyDailyList().size() > NumConstant.ZERO){
participationUserAgencyDailyDao.deleteByParams(data.getDateId(),data.getCustomerId());
participationUserAgencyDailyDao.insertBatch(data.getPartiAgencyDailyList());
Integer delNum;
do {
delNum = participationUserAgencyDailyDao.deleteByParams(data.getDateId(),data.getCustomerId());
}while (delNum > NumConstant.ZERO && delNum == NumConstant.ONE_THOUSAND);
List<List<FactParticipationUserAgencyDailyDTO>> partition = ListUtils.partition(data.getPartiAgencyDailyList(), NumConstant.ONE_HUNDRED);
partition.forEach(p -> {
participationUserAgencyDailyDao.insertBatch(p);
});
}
if(null != data.getPartiAgencyMonthlyList() && data.getPartiAgencyMonthlyList().size() > NumConstant.ZERO){
participationUserAgencyMonthlyDao.deleteByParams(data.getMonthId(),data.getCustomerId());
participationUserAgencyMonthlyDao.insertBatch(data.getPartiAgencyMonthlyList());
Integer delNum;
do {
delNum = participationUserAgencyMonthlyDao.deleteByParams(data.getMonthId(),data.getCustomerId());
}while (delNum > NumConstant.ZERO && delNum == NumConstant.ONE_THOUSAND);
List<List<FactParticipationUserAgencyMonthlyDTO>> partition = ListUtils.partition(data.getPartiAgencyMonthlyList(), NumConstant.ONE_HUNDRED);
partition.forEach(p -> {
participationUserAgencyMonthlyDao.insertBatch(p);
});
}
if(null != data.getPartiGridMonthlyList() && data.getPartiGridMonthlyList().size() > NumConstant.ZERO){
participationUserGridMonthlyDao.deleteByParams(data.getMonthId(),data.getCustomerId());
participationUserGridMonthlyDao.insertBatch(data.getPartiGridMonthlyList());
Integer delNum;
do {
delNum = participationUserGridMonthlyDao.deleteByParams(data.getMonthId(),data.getCustomerId());
}while (delNum > NumConstant.ZERO && delNum == NumConstant.ONE_THOUSAND);
List<List<FactParticipationUserGridMonthlyDTO>> partition = ListUtils.partition(data.getPartiGridMonthlyList(), NumConstant.ONE_HUNDRED);
partition.forEach(p -> {
participationUserGridMonthlyDao.insertBatch(p);
});
}
if(null != data.getPartiGridDailyList() && data.getPartiGridDailyList().size() > NumConstant.ZERO){
participationUserGridDailyDao.deleteByParams(data.getDateId(),data.getCustomerId());
participationUserGridDailyDao.insertBatch(data.getPartiGridDailyList());
Integer delNum;
do {
delNum = participationUserGridDailyDao.deleteByParams(data.getDateId(),data.getCustomerId());
}while (delNum > NumConstant.ZERO && delNum == NumConstant.ONE_THOUSAND);
List<List<FactParticipationUserGridDailyDTO>> partition = ListUtils.partition(data.getPartiGridDailyList(), NumConstant.ONE_HUNDRED);
partition.forEach(p -> {
participationUserGridDailyDao.insertBatch(p);
});
}
if(null != data.getRegAgencyDailyList() && data.getRegAgencyDailyList().size() > NumConstant.ZERO){
regUserAgencyDailyDao.deleteByParams(data.getDateId(),data.getCustomerId());
regUserAgencyDailyDao.insertBatch(data.getRegAgencyDailyList());
Integer delNum;
do {
delNum = regUserAgencyDailyDao.deleteByParams(data.getDateId(),data.getCustomerId());
}while (delNum > NumConstant.ZERO && delNum == NumConstant.ONE_THOUSAND);
List<List<FactRegUserAgencyDailyDTO>> partition = ListUtils.partition(data.getRegAgencyDailyList(), NumConstant.ONE_HUNDRED);
partition.forEach(p -> {
regUserAgencyDailyDao.insertBatch(p);
});
}
if(null != data.getRegAgencyMonthlyList() && data.getRegAgencyMonthlyList().size() > NumConstant.ZERO){
regUserAgencyMonthlyDao.deleteByParams(data.getMonthId(),data.getCustomerId());
regUserAgencyMonthlyDao.insertBatch(data.getRegAgencyMonthlyList());
Integer delNum;
do {
delNum = regUserAgencyMonthlyDao.deleteByParams(data.getMonthId(),data.getCustomerId());
}while (delNum > NumConstant.ZERO && delNum == NumConstant.ONE_THOUSAND);
List<List<FactRegUserAgencyMonthlyDTO>> partition = ListUtils.partition(data.getRegAgencyMonthlyList(), NumConstant.ONE_HUNDRED);
partition.forEach(p -> {
regUserAgencyMonthlyDao.insertBatch(p);
});
}
if(null != data.getRegGridDailyList() && data.getRegGridDailyList().size() > NumConstant.ZERO){
regUserGridDailyDao.deleteByParams(data.getDateId(),data.getCustomerId());
regUserGridDailyDao.insertBatch(data.getRegGridDailyList());
Integer delNum;
do {
delNum = regUserGridDailyDao.deleteByParams(data.getDateId(),data.getCustomerId());
}while (delNum > NumConstant.ZERO && delNum == NumConstant.ONE_THOUSAND);
List<List<FactRegUserGridDailyDTO>> partition = ListUtils.partition(data.getRegGridDailyList(), NumConstant.ONE_HUNDRED);
partition.forEach(p -> {
regUserGridDailyDao.insertBatch(p);
});
}
if(null != data.getRegGridMonthlyList() && data.getRegGridMonthlyList().size() > NumConstant.ZERO){
regUserGridMonthlyDao.deleteByParams(data.getMonthId(),data.getCustomerId());
regUserGridMonthlyDao.insertBatch(data.getRegGridMonthlyList());
Integer delNum;
do {
delNum = regUserGridMonthlyDao.deleteByParams(data.getMonthId(),data.getCustomerId());
}while (delNum > NumConstant.ZERO && delNum == NumConstant.ONE_THOUSAND);
List<List<FactRegUserGridMonthlyDTO>> partition = ListUtils.partition(data.getRegGridMonthlyList(), NumConstant.ONE_HUNDRED);
partition.forEach(p -> {
regUserGridMonthlyDao.insertBatch(p);
});
}
}

250
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/UserServiceImpl.java

@ -17,11 +17,7 @@ import com.epmet.dto.screen.ScreenProjectDataDTO;
import com.epmet.dto.stats.form.GmUploadEventFormDTO;
import com.epmet.dto.stats.user.*;
import com.epmet.dto.stats.user.result.UserStatisticalData;
import com.epmet.dto.user.result.CommonTotalAndIncCountResultDTO;
import com.epmet.dto.user.result.StaffRoleInfoDTO;
import com.epmet.dto.user.result.CustomerStaffDTO;
import com.epmet.dto.user.result.StaffPatrolRecordResult;
import com.epmet.dto.user.result.StatsStaffPatrolRecordDailyDTO;
import com.epmet.dto.user.result.*;
import com.epmet.entity.evaluationindex.screen.ScreenPartyUserRankDataEntity;
import com.epmet.service.user.UserService;
import com.epmet.util.DimIdGenerator;
@ -120,14 +116,16 @@ public class UserServiceImpl implements UserService {
if(null != agencyMap && agencyMap.size() > NumConstant.ZERO){
agencyMap.forEach((agencyId,v) -> {
if(null != v && v.size() > NumConstant.ZERO){
queryUserData(ModuleConstant.DIM_BELONGING_GRID,
/*queryUserData(ModuleConstant.DIM_BELONGING_GRID,
agencyId,
// v.get(NumConstant.ZERO).getPid(),
v.get(NumConstant.ZERO).getCustomerId(),
new HashSet<>(v.get(NumConstant.ZERO).getGridIds()),
targetDate,
dataPacket,
timeDimension);
timeDimension);*/
traverseGridUserDispose(agencyId,v.get(NumConstant.ZERO).getCustomerId(),new HashSet<>(v.get(NumConstant.ZERO).getGridIds())
,targetDate,dataPacket,timeDimension);
}
});
}
@ -709,6 +707,244 @@ public class UserServiceImpl implements UserService {
}
/**
* @Description
* @Param agencyId 组织ID
* @Param customerId 客户ID
* @Param gridIds 网格IDS
* @Param targetDate dateId 日期 eg2021-07-27
* @Param dataPacket 数据包
* @Param timeDimension 日期维度
* @author zxc
* @date 2021/7/27 9:53 上午
*/
void traverseGridUserDispose(String agencyId,String customerId, Set<String> gridIds, Date targetDate, UserStatisticalData dataPacket, DimIdGenerator.DimIdBean timeDimension){
if (CollectionUtils.isEmpty(gridIds)){
return;
}
dataPacket.setCustomerId(customerId);
//计算百分比使用,保留小数点后两位
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setMaximumFractionDigits(NumConstant.SIX);
Calendar calendar = Calendar.getInstance();
//求出这个月的第一天
calendar.set(Calendar.DAY_OF_MONTH, NumConstant.ONE);
calendar.set(Calendar.HOUR_OF_DAY, NumConstant.ZERO);
calendar.set(Calendar.MINUTE, NumConstant.ZERO);
calendar.set(Calendar.SECOND, NumConstant.ZERO);
//1.计算机关下注册用户一个时间单位内的累计与 [月增长,日增长]
List<TotalAndIncrResultDTO> regData = userDao.selectResiTotalAndIncrByGridIds(ModuleConstant.REG_OR_PARTI_FLAG_REG, gridIds, targetDate,calendar.getTime());
//2.查询注册用户的Id列表
// 增长
List<IncrAndTotalUserIdsResultDTO> incrRegUsers = userDao.selectIncrUserIdsByGrids(ModuleConstant.REG_OR_PARTI_FLAG_REG, gridIds, targetDate,calendar.getTime());
List<String> incrDailyUserIds = new ArrayList<>();
List<String> incrMonthlyUserIds = new ArrayList<>();
if (!CollectionUtils.isEmpty(incrRegUsers)){
// 月增长 和 日增长 分开
Map<String, List<IncrAndTotalUserIdsResultDTO>> groupByType = incrRegUsers.stream().collect(Collectors.groupingBy(IncrAndTotalUserIdsResultDTO::getType));
if (!CollectionUtils.isEmpty(groupByType.get(ModuleConstant.DAILY))){
groupByType.get(ModuleConstant.DAILY).forEach(d -> {
if (!CollectionUtils.isEmpty(d.getUserIds())){
// 日增长
incrDailyUserIds.addAll(d.getUserIds());
}
});
}
if (!CollectionUtils.isEmpty(groupByType.get(ModuleConstant.MONTHLY))){
groupByType.get(ModuleConstant.MONTHLY).forEach(m -> {
if (!CollectionUtils.isEmpty(m.getUserIds())){
// 月增长
incrMonthlyUserIds.addAll(m.getUserIds());
}
});
}
}
// 全部
List<IncrAndTotalUserIdsResultDTO> totalRegUsers = userDao.selectTotalUserIdsByGrids(ModuleConstant.REG_OR_PARTI_FLAG_REG, gridIds, targetDate);
List<String> totalUserIds = new ArrayList<>();
if (!CollectionUtils.isEmpty(totalRegUsers)){
totalRegUsers.forEach(t -> {
if (!CollectionUtils.isEmpty(t.getUserIds())){
totalUserIds.addAll(t.getUserIds());
}
});
}
//3.查询机关下一个时间单位内热心居民的累计与增量(注册用户)
List<WarmTotalAndIncrResultDTO> warmRegData = userDao.selectWarmTotalAndIncrByGrids(totalUserIds, incrDailyUserIds, gridIds, targetDate,calendar.getTime(),incrMonthlyUserIds);
//4.查询机关下一个时间单位内党员的累计与增量(注册用户)
List<PartyTotalAndIncrResultDTO> partyRegData = userDao.selectPartyTotalAndIncrNew(targetDate, ModuleConstant.REG_OR_PARTI_FLAG_REG,calendar.getTime());
//参与用户
//1.计算机关下参与用户一个时间单位内的累计与 [月增长,日增长]
List<TotalAndIncrResultDTO> partiData = userDao.selectResiTotalAndIncrByGridIds(ModuleConstant.REG_OR_PARTI_FLAG_PARTI, gridIds, targetDate,calendar.getTime());
//2.查询参与用户的Id列表[增长]
List<IncrAndTotalUserIdsResultDTO> incrPartiUsers = userDao.selectIncrUserIdsByGrids(ModuleConstant.REG_OR_PARTI_FLAG_PARTI, gridIds, targetDate, calendar.getTime());
List<String> incrDailyPartiUserIds = new ArrayList<>();
List<String> incrMonthlyPartiUserIds = new ArrayList<>();
if (!CollectionUtils.isEmpty(incrPartiUsers)){
// 月增长 和 天增长 分开
Map<String, List<IncrAndTotalUserIdsResultDTO>> groupByType = incrRegUsers.stream().collect(Collectors.groupingBy(IncrAndTotalUserIdsResultDTO::getType));
if (!CollectionUtils.isEmpty(groupByType.get(ModuleConstant.DAILY))){
groupByType.get(ModuleConstant.DAILY).forEach(d -> {
if (!CollectionUtils.isEmpty(d.getUserIds())){
// 日增长
incrDailyPartiUserIds.addAll(d.getUserIds());
}
});
}
if (!CollectionUtils.isEmpty(groupByType.get(ModuleConstant.MONTHLY))){
groupByType.get(ModuleConstant.MONTHLY).forEach(m -> {
if (!CollectionUtils.isEmpty(m.getUserIds())){
// 月增长
incrMonthlyPartiUserIds.addAll(m.getUserIds());
}
});
}
}
// 查询参与用户的Id列表[全部]
List<IncrAndTotalUserIdsResultDTO> totalPartiUsers = userDao.selectTotalUserIdsByGrids(ModuleConstant.REG_OR_PARTI_FLAG_PARTI, gridIds, targetDate);
List<String> totalPartiUserIds = new ArrayList<>();
if (!CollectionUtils.isEmpty(totalPartiUsers)){
totalPartiUsers.forEach(t -> {
if (!CollectionUtils.isEmpty(t.getUserIds())){
totalPartiUserIds.addAll(t.getUserIds());
}
});
}
//3.查询机关下一个时间单位内热心居民的累计与增量(参与用户)
List<WarmTotalAndIncrResultDTO> warmPartiData = userDao.selectWarmTotalAndIncrByGrids(totalPartiUserIds, incrDailyPartiUserIds, gridIds, targetDate,calendar.getTime(),incrMonthlyPartiUserIds);
//4.查询机关下一个时间单位内党员的累计与增量(参与用户)
List<PartyTotalAndIncrResultDTO> partyPartiData = userDao.selectPartyTotalAndIncrNew(targetDate, ModuleConstant.REG_OR_PARTI_FLAG_PARTI,calendar.getTime());
/** ==================== *开始组装数据* ==================== **/
gridIds.forEach(gridId -> {
//注册用户网格级别
FactRegUserGridDailyDTO regGridD = new FactRegUserGridDailyDTO();
regGridD.setCustomerId(customerId);
regGridD.setGridId(gridId);
regGridD.setAgencyId(agencyId);
regGridD.setDateId(timeDimension.getDateId());
regGridD.setWeekId(timeDimension.getWeekId());
regGridD.setYearId(timeDimension.getYearId());
regGridD.setCreatedBy(ModuleConstant.CREATED_BY_STATISTICAL_ROBOT);
regGridD.setResiProportion(new BigDecimal(NumConstant.ONE));
//参与用户网格级别
FactParticipationUserGridDailyDTO partiGridD = new FactParticipationUserGridDailyDTO();
partiGridD.setCustomerId(customerId);
partiGridD.setGridId(gridId);
partiGridD.setAgencyId(agencyId);
partiGridD.setDateId(timeDimension.getDateId());
partiGridD.setWeekId(timeDimension.getWeekId());
partiGridD.setYearId(timeDimension.getYearId());
partiGridD.setCreatedBy(ModuleConstant.CREATED_BY_STATISTICAL_ROBOT);
partiGridD.setResiProportion(new BigDecimal(NumConstant.ONE));
FactRegUserGridMonthlyDTO regGridM = new FactRegUserGridMonthlyDTO();
regGridM.setCustomerId(customerId);
regGridM.setGridId(gridId);
regGridM.setAgencyId(agencyId);
regGridM.setMonthId(timeDimension.getMonthId());
regGridM.setQuarterId(timeDimension.getQuarterId());
regGridM.setYearId(timeDimension.getYearId());
regGridM.setPartymemberProportion(regGridD.getPartymemberProportion());
regGridM.setWarmHeartedProportion(regGridD.getWarmHeartedProportion());
regGridM.setCreatedBy(ModuleConstant.CREATED_BY_STATISTICAL_ROBOT);
regGridM.setResiProportion(new BigDecimal(NumConstant.ONE));
FactParticipationUserGridMonthlyDTO partiGridM = new FactParticipationUserGridMonthlyDTO();
partiGridM.setCustomerId(customerId);
partiGridM.setGridId(gridId);
partiGridM.setAgencyId(agencyId);
partiGridM.setMonthId(timeDimension.getMonthId());
partiGridM.setQuarterId(timeDimension.getQuarterId());
partiGridM.setYearId(timeDimension.getYearId());
partiGridM.setCreatedBy(ModuleConstant.CREATED_BY_STATISTICAL_ROBOT);
partiGridM.setResiProportion(new BigDecimal(NumConstant.ONE));
if (!CollectionUtils.isEmpty(regData)){
for (TotalAndIncrResultDTO r : regData) {
if (gridId.equals(r.getGridId())){
regGridD.setResiTotal(r.getTotal());
regGridD.setRegTotal(r.getTotal());
regGridD.setRegIncr(r.getDailyIncr());
regGridM.setRegTotal(r.getTotal());
regGridM.setResiTotal(r.getTotal());
regGridM.setRegIncr(r.getMonthlyIncr());
break;
}
}
}
if (!CollectionUtils.isEmpty(warmRegData)){
for (WarmTotalAndIncrResultDTO w : warmRegData) {
if (gridId.equals(w.getGridId())){
regGridD.setWarmHeartedTotal(w.getTotal());
regGridD.setWarmIncr(w.getDailyIncr());
regGridM.setWarmHeartedTotal(w.getTotal());
regGridM.setWarmIncr(w.getMonthlyIncr());
break;
}
}
}
if (!CollectionUtils.isEmpty(partiData)){
for (TotalAndIncrResultDTO p : partiData) {
if (gridId.equals(p.getGridId())){
partiGridD.setResiTotal(p.getTotal());
partiGridD.setRegTotal(p.getTotal());
partiGridD.setRegIncr(p.getDailyIncr());
partiGridM.setRegTotal(p.getTotal());
partiGridM.setResiTotal(p.getTotal());
partiGridM.setRegIncr(p.getMonthlyIncr());
break;
}
}
}
if (!CollectionUtils.isEmpty(partyRegData)){
for (PartyTotalAndIncrResultDTO p : partyRegData) {
if (gridId.equals(p.getGridId())){
regGridD.setPartymemberTotal(p.getTotal());
regGridD.setPartymemberIncr(p.getDailyIncr());
regGridM.setPartymemberTotal(p.getTotal());
regGridM.setPartymemberIncr(p.getMonthlyIncr());
regGridM.setPartymemberTotal(p.getTotal());
regGridM.setPartymemberIncr(p.getMonthlyIncr());
break;
}
}
}
if (!CollectionUtils.isEmpty(warmPartiData)){
for (WarmTotalAndIncrResultDTO w : warmPartiData) {
if (gridId.equals(w.getGridId())){
partiGridD.setWarmHeartedTotal(w.getTotal());
partiGridD.setWarmIncr(w.getDailyIncr());
partiGridM.setWarmHeartedTotal(w.getTotal());
partiGridM.setWarmIncr(w.getMonthlyIncr());
break;
}
}
}
if (!CollectionUtils.isEmpty(partyPartiData)){
for (PartyTotalAndIncrResultDTO p : partyPartiData) {
if (gridId.equals(p.getGridId())){
partiGridD.setPartymemberTotal(p.getTotal());
partiGridD.setPartymemberIncr(p.getDailyIncr());
partiGridM.setPartymemberTotal(p.getTotal());
partiGridM.setPartymemberIncr(p.getMonthlyIncr());
break;
}
}
}
regGridD.setPartymemberProportion(regGridD.getRegTotal() == NumConstant.ZERO ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float)regGridD.getPartymemberTotal()/(float)regGridD.getRegTotal())));
regGridD.setWarmHeartedProportion(regGridD.getRegTotal() == NumConstant.ZERO ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float)regGridD.getWarmHeartedTotal()/(float)regGridD.getRegTotal())));
partiGridD.setPartymemberProportion(partiGridD.getPartymemberTotal() == NumConstant.ZERO ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float)partiGridD.getPartymemberTotal()/(float)partiGridD.getRegTotal() )));
partiGridD.setWarmHeartedProportion(partiGridD.getPartymemberTotal() == NumConstant.ZERO ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float)partiGridD.getWarmHeartedTotal()/(float)partiGridD.getRegTotal() )));
regGridM.setPartymemberProportion(regGridD.getPartymemberProportion());
regGridM.setWarmHeartedProportion(regGridD.getWarmHeartedProportion());
partiGridM.setPartymemberProportion(partiGridD.getPartymemberProportion());
partiGridM.setWarmHeartedProportion(partiGridD.getWarmHeartedProportion());
dataPacket.getRegGridDailyList().add(regGridD);
dataPacket.getPartiGridDailyList().add(partiGridD);
dataPacket.getRegGridMonthlyList().add(regGridM);
dataPacket.getPartiGridMonthlyList().add(partiGridM);
});
}
/**
* @return java.util.List<java.lang.String>

4
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/util/ModuleConstant.java

@ -43,4 +43,8 @@ public interface ModuleConstant {
String TOPIC_STATUS_SHIFT_ISSUE = "shift_issue";
String NEED_UPDATE_STATUS_TOPIC = "needUpdateStatusTopic";
String MONTHLY = "monthly";
String DAILY = "daily";
}

1
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactGroupGridDailyDao.xml

@ -74,6 +74,7 @@
WHERE
date_id = #{dateId}
AND customer_id = #{customerId}
limit 1000
</delete>
<!-- 根据机关级别查询小组数据 -->

1
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/user/FactParticipationUserAgencyDailyDao.xml

@ -100,6 +100,7 @@
<if test='null != customerId and "" != customerId'>
AND CUSTOMER_ID = #{customerId}
</if>
LIMIT 1000
</delete>
<!-- 查询机关下用户信息 -->

1
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/user/FactParticipationUserAgencyMonthlyDao.xml

@ -100,6 +100,7 @@
<if test='null != customerId and "" != customerId'>
AND CUSTOMER_ID = #{customerId}
</if>
LIMIT 1000
</delete>
</mapper>

1
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/user/FactParticipationUserGridDailyDao.xml

@ -105,6 +105,7 @@
<if test='null != customerId and "" != customerId'>
AND CUSTOMER_ID = #{customerId}
</if>
LIMIT 1000
</delete>
<!-- 查询网格下用户信息 -->

1
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/user/FactParticipationUserGridMonthlyDao.xml

@ -104,6 +104,7 @@
<if test='null != customerId and "" != customerId'>
AND CUSTOMER_ID = #{customerId}
</if>
LIMIT 1000
</delete>
</mapper>

1
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/user/FactRegUserAgencyDailyDao.xml

@ -100,6 +100,7 @@
<if test='null != customerId and "" != customerId'>
AND CUSTOMER_ID = #{customerId}
</if>
LIMIT 1000
</delete>

1
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/user/FactRegUserAgencyMonthlyDao.xml

@ -100,6 +100,7 @@
<if test='null != customerId and "" != customerId'>
AND CUSTOMER_ID = #{customerId}
</if>
LIMIT 1000
</delete>
<select id="selectOrgUserCountByCustomer" resultType="com.epmet.dto.stats.user.FactRegUserAgencyMonthlyDTO">
SELECT

1
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/user/FactRegUserGridDailyDao.xml

@ -104,6 +104,7 @@
<if test='null != customerId and "" != customerId'>
AND CUSTOMER_ID = #{customerId}
</if>
LIMIT 1000
</delete>

1
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/user/FactRegUserGridMonthlyDao.xml

@ -104,6 +104,7 @@
<if test='null != customerId and "" != customerId'>
AND CUSTOMER_ID = #{customerId}
</if>
LIMIT 1000
</delete>
<!-- 查询网格下的客户 -->

286
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/UserDao.xml

@ -627,6 +627,292 @@
AND DATE_FORMAT( r.ACTRUAL_END_TIME, '%Y%m%d' ) = #{dateId}
</select>
<!-- 查询注册用户的总量与增量【新方法】 -->
<select id="selectResiTotalAndIncrByGridIds" resultType="com.epmet.dto.user.result.TotalAndIncrResultDTO">
SELECT
IFNULL(count( DISTINCT rr.USER_ID ),0) AS total,
rr.GRID_ID,
IFNULL(t.userCount,0) AS monthlyIncr,
IFNULL(d.userCount,0) AS dailyIncr
FROM REGISTER_RELATION rr
LEFT JOIN (
SELECT
IFNULL(count(DISTINCT USER_ID),0) AS userCount,
GRID_ID
FROM
REGISTER_RELATION
WHERE
DEL_FLAG = '0'
<if test='regOrPartiFlag == "parti" '>
AND ((FIRST_REGISTER = '1' AND REGISTER = '1' AND PARTICIPATION = '1') OR (FIRST_REGISTER = '0' AND REGISTER = '0' AND PARTICIPATION = '1'))
</if>
<if test='regOrPartiFlag == "reg" '>
AND FIRST_REGISTER = '1'
</if>
<foreach collection="gridIds" item="gridId" index="index" open="AND ( " separator=" OR " close=")">
GRID_ID = #{gridId}
</foreach>
AND DATE_FORMAT(CREATED_TIME,"%Y-%m-%d") BETWEEN DATE_FORMAT(#{startDate},"%Y-%m-%d") AND DATE_FORMAT(
IF(null != #{targetDate} OR '' !=#{targetDate},#{targetDate},DATE_SUB(CURDATE(), INTERVAL 1 DAY ))
,"%Y-%m-%d")
GROUP BY GRID_ID
) t ON ( t.grid_id = rr.GRID_ID )
LEFT JOIN (
SELECT
IFNULL(count(DISTINCT USER_ID),0) AS userCount,
GRID_ID
FROM REGISTER_RELATION
WHERE DEL_FLAG = '0'
<if test='regOrPartiFlag == "parti" '>
AND ((FIRST_REGISTER = '1' AND REGISTER = '1' AND PARTICIPATION = '1') OR (FIRST_REGISTER = '0' AND REGISTER = '0' AND PARTICIPATION = '1'))
</if>
<if test='regOrPartiFlag == "reg" '>
AND FIRST_REGISTER = '1'
</if>
<foreach collection="gridIds" item="gridId" index="index" open="AND ( " separator=" OR " close=")">
GRID_ID = #{gridId}
</foreach>
AND DATE_FORMAT(CREATED_TIME,"%Y-%m-%d") = DATE_FORMAT(IF(null != #{targetDate} OR '' !=#{targetDate},#{targetDate},DATE_SUB(CURDATE(), INTERVAL 1 DAY )),"%Y-%m-%d")
GROUP BY GRID_ID
) d ON ( d.grid_id = rr.GRID_ID )
WHERE
rr.DEL_FLAG = '0'
<if test='regOrPartiFlag == "parti" '>
AND ((rr.FIRST_REGISTER = '1' AND rr.REGISTER = '1' AND rr.PARTICIPATION = '1') OR (rr.FIRST_REGISTER = '0' AND rr.REGISTER = '0' AND rr.PARTICIPATION = '1'))
</if>
<if test='regOrPartiFlag == "reg" '>
AND rr.FIRST_REGISTER = '1'
</if>
<foreach collection="gridIds" item="gridId" index="index" open="AND ( " separator=" OR " close=")">
rr.GRID_ID = #{gridId}
</foreach>
AND DATE_FORMAT(rr.CREATED_TIME,"%Y-%m-%d") <![CDATA[<=]]> IF(null != #{targetDate} OR '' !=#{targetDate},DATE_FORMAT(#{targetDate},"%Y-%m-%d"),DATE_FORMAT( DATE_SUB( CURDATE( ), INTERVAL 1 DAY ),"%Y-%m-%d"))
GROUP BY GRID_ID
</select>
<resultMap id="selectIncrUserIdsByGridsMap" type="com.epmet.dto.user.result.IncrAndTotalUserIdsResultDTO">
<result property="gridId" column="gridId"/>
<result property="type" column="type"/>
<collection property="userIds" ofType="java.lang.String">
<result column="userId"/>
</collection>
</resultMap>
<!-- 查询指定网格范围下单位时间内新增的注册用户Id【新方法】 -->
<select id="selectIncrUserIdsByGrids" resultMap="selectIncrUserIdsByGridsMap">
(SELECT
DISTINCT(rr.USER_ID) AS userId,
r2.GRID_ID AS gridId,
'monthly' AS type
FROM REGISTER_RELATION rr
LEFT JOIN register_relation r2 ON (r2.GRID_ID = rr.GRID_ID AND r2.DEL_FLAG = 0)
WHERE
rr.DEL_FLAG = '0'
<if test='regOrPartiFlag == "parti" '>
AND ((rr.FIRST_REGISTER = '1' AND rr.REGISTER = '1' AND rr.PARTICIPATION = '1') OR (rr.FIRST_REGISTER = '0' AND rr.REGISTER = '0' AND rr.PARTICIPATION = '1'))
</if>
<if test='regOrPartiFlag == "reg" '>
AND rr.FIRST_REGISTER = '1'
</if>
<foreach collection="gridIds" item="gridId" index="index" open="AND ( " separator=" OR " close=")">
rr.GRID_ID = #{gridId}
</foreach>
AND DATE_FORMAT(rr.CREATED_TIME,"%Y-%m-%d") BETWEEN DATE_FORMAT(#{startDate},"%Y-%m-%d") AND
DATE_FORMAT(IF(null != #{targetDate} OR '' !=#{targetDate},#{targetDate},DATE_SUB(CURDATE(),INTERVAL 1 DAY)),"%Y-%m-%d")
) UNION ALL
(SELECT
DISTINCT(rr.USER_ID) AS userId,
r2.GRID_ID AS gridId,
'daily' AS type
FROM REGISTER_RELATION rr
LEFT JOIN register_relation r2 ON (r2.GRID_ID = rr.GRID_ID AND r2.DEL_FLAG = 0)
WHERE
rr.DEL_FLAG = '0'
<if test='regOrPartiFlag == "parti" '>
AND ((rr.FIRST_REGISTER = '1' AND rr.REGISTER = '1' AND rr.PARTICIPATION = '1') OR (rr.FIRST_REGISTER = '0' AND rr.REGISTER = '0' AND rr.PARTICIPATION = '1'))
</if>
<if test='regOrPartiFlag == "reg" '>
AND rr.FIRST_REGISTER = '1'
</if>
<foreach collection="gridIds" item="gridId" index="index" open="AND ( " separator=" OR " close=")">
rr.GRID_ID = #{gridId}
</foreach>
AND DATE_FORMAT(rr.CREATED_TIME,"%Y-%m-%d") = DATE_FORMAT(IF(null != #{targetDate} OR '' !=#{targetDate},#{targetDate},DATE_SUB(CURDATE(),INTERVAL 1 DAY)),"%Y-%m-%d")
)
</select>
<!-- 查询热心居民的总量与增量【新方法】 -->
<select id="selectWarmTotalAndIncrByGrids" resultType="com.epmet.dto.user.result.WarmTotalAndIncrResultDTO">
SELECT
IFNULL(COUNT(DISTINCT ur.USER_ID),0) AS total,
ur.GRID_ID,
IFNULL(t.userCount,0) AS monthlyIncr,
IFNULL(d.userCount,0) AS dailyIncr
FROM USER_ROLE ur
LEFT JOIN EPMET_ROLE erole ON ( ur.ROLE_ID = erole.ID AND erole.DEL_FLAG = '0' )
LEFT JOIN (
SELECT
COUNT( DISTINCT ur.USER_ID ) AS userCount,
ur.GRID_ID
FROM USER_ROLE ur
LEFT JOIN EPMET_ROLE erole ON (ur.ROLE_ID = erole.ID AND erole.DEL_FLAG = '0')
WHERE ur.DEL_FLAG = '0'
<if test="null != incrMonthlyUserIds and incrMonthlyUserIds.size() > 0 ">
<foreach collection="incrMonthlyUserIds" item="incrUserId" index="index" open="AND ( " separator=" OR " close=")">
ur.USER_ID = #{incrUserId}
</foreach>
</if>
<foreach collection="gridIds" item="gridId" index="index" open="AND ( " separator=" OR " close=")">
ur.GRID_ID = #{gridId}
</foreach>
AND DATE_FORMAT(ur.CREATED_TIME,"%Y-%m-%d") BETWEEN DATE_FORMAT(#{startDate},"%Y-%m-%d") AND
DATE_FORMAT(IF(null != #{targetDate} OR '' !=#{targetDate},#{targetDate},DATE_SUB(CURDATE(),INTERVAL 1 DAY)),"%Y-%m-%d")
AND erole.ROLE_NAME = '热心居民'
GROUP BY ur.GRID_ID
) t ON ( t.GRID_ID = ur.GRID_ID )
LEFT JOIN (
SELECT
COUNT( DISTINCT ur.USER_ID ) AS userCount,
ur.GRID_ID
FROM USER_ROLE ur
LEFT JOIN EPMET_ROLE erole ON (ur.ROLE_ID = erole.ID AND erole.DEL_FLAG = '0')
WHERE ur.DEL_FLAG = '0'
<if test="null != incrDailyUserIds and incrDailyUserIds.size() > 0 ">
<foreach collection="incrDailyUserIds" item="incrUserId" index="index" open="AND ( " separator=" OR " close=")">
ur.USER_ID = #{incrUserId}
</foreach>
</if>
<foreach collection="gridIds" item="gridId" index="index" open="AND ( " separator=" OR " close=")">
ur.GRID_ID = #{gridId}
</foreach>
AND DATE_FORMAT(ur.CREATED_TIME,"%Y-%m-%d") = DATE_FORMAT(IF(null != #{targetDate} OR '' !=#{targetDate},#{targetDate},DATE_SUB(CURDATE(),INTERVAL 1 DAY)),"%Y-%m-%d")
AND erole.ROLE_NAME = '热心居民'
GROUP BY ur.GRID_ID
) d ON ( d.GRID_ID = ur.GRID_ID )
WHERE ur.DEL_FLAG = '0'
<if test="userIds.size() > 0 and null != userIds ">
<foreach collection="userIds" item="incrUserId" index="index" open="AND ( " separator=" OR " close=")">
ur.USER_ID = #{incrUserId}
</foreach>
</if>
<foreach collection="gridIds" item="gridId" index="index" open="AND ( " separator=" OR " close=")">
ur.GRID_ID = #{gridId}
</foreach>
AND DATE_FORMAT(ur.CREATED_TIME,"%Y-%m-%d") <![CDATA[<=]]> IF(null != #{targetDate} OR '' !=#{targetDate},DATE_FORMAT(#{targetDate},"%Y-%m-%d"),DATE_FORMAT( DATE_SUB( CURDATE( ), INTERVAL 1 DAY ),"%Y-%m-%d"))
AND erole.ROLE_NAME = '热心居民'
GROUP BY ur.GRID_ID
</select>
<!-- 查询党员的总量与增量【新方法】 -->
<select id="selectPartyTotalAndIncrNew" resultType="com.epmet.dto.user.result.PartyTotalAndIncrResultDTO">
SELECT
IFNULL(count(DISTINCT urole.USER_ID),0) AS total,
rr.GRID_ID,
IFNULL(t.userCount,0) AS monthlyIncr,
IFNULL(d.userCount,0) AS dailyIncr
FROM USER_ROLE urole
LEFT JOIN EPMET_ROLE erole ON (urole.ROLE_ID = erole.ID AND erole.DEL_FLAG = '0')
LEFT JOIN register_relation rr ON (rr.USER_ID = urole.USER_ID)
LEFT JOIN (
SELECT
count(distinct urole.USER_ID) AS userCount,
rr.GRID_ID
FROM USER_ROLE urole
LEFT JOIN EPMET_ROLE erole ON (urole.ROLE_ID = erole.ID AND erole.DEL_FLAG = '0')
LEFT JOIN register_relation rr ON (rr.USER_ID = urole.USER_ID)
WHERE
urole.DEL_FLAG = '0'
AND erole.ROLE_NAME = '党员'
AND DATE_FORMAT(rr.CREATED_TIME,"%Y-%m-%d") BETWEEN DATE_FORMAT(#{startDate},"%Y-%m-%d") AND
DATE_FORMAT(IF(null != #{targetDate} OR '' !=#{targetDate},#{targetDate},DATE_SUB(CURDATE(),INTERVAL 1 DAY)),"%Y-%m-%d")
<if test='regOrPartiFlag == "parti" '>
AND ((rr.FIRST_REGISTER = '1' AND rr.REGISTER = '1' AND rr.PARTICIPATION = '1') OR (rr.FIRST_REGISTER = '0' AND rr.REGISTER = '0' AND rr.PARTICIPATION = '1'))
</if>
<if test='regOrPartiFlag == "reg" '>
AND rr.FIRST_REGISTER = '1'
</if>
GROUP BY rr.GRID_ID
) t ON (t.GRID_ID = rr.GRID_ID)
LEFT JOIN (
SELECT
count(distinct urole.USER_ID) AS userCount,
rr.GRID_ID
FROM USER_ROLE urole
LEFT JOIN EPMET_ROLE erole ON (urole.ROLE_ID = erole.ID AND erole.DEL_FLAG = '0')
LEFT JOIN register_relation rr ON (rr.USER_ID = urole.USER_ID)
WHERE
urole.DEL_FLAG = '0'
AND erole.ROLE_NAME = '党员'
AND DATE_FORMAT(rr.CREATED_TIME,"%Y-%m-%d") = DATE_FORMAT(IF(null != #{targetDate} OR '' !=#{targetDate},#{targetDate},DATE_SUB(CURDATE(),INTERVAL 1 DAY)),"%Y-%m-%d")
<if test='regOrPartiFlag == "parti" '>
AND ((rr.FIRST_REGISTER = '1' AND rr.REGISTER = '1' AND rr.PARTICIPATION = '1') OR (rr.FIRST_REGISTER = '0' AND rr.REGISTER = '0' AND rr.PARTICIPATION = '1'))
</if>
<if test='regOrPartiFlag == "reg" '>
AND rr.FIRST_REGISTER = '1'
</if>
GROUP BY rr.GRID_ID
) d ON (d.GRID_ID = rr.GRID_ID)
WHERE
urole.DEL_FLAG = '0'
AND DATE_FORMAT(rr.CREATED_TIME,"%Y-%m-%d") <![CDATA[<=]]> DATE_FORMAT( IF(null != #{targetDate} OR '' != #{targetDate},#{targetDate}, DATE_SUB(CURDATE(),INTERVAL 1 DAY)),'%Y-%m-%d')
<if test='regOrPartiFlag == "parti" '>
AND ((rr.FIRST_REGISTER = '1' AND rr.REGISTER = '1' AND rr.PARTICIPATION = '1') OR (rr.FIRST_REGISTER = '0' AND rr.REGISTER = '0' AND rr.PARTICIPATION = '1'))
</if>
<if test='regOrPartiFlag == "reg" '>
AND rr.FIRST_REGISTER = '1'
</if>
AND erole.ROLE_NAME = '党员'
GROUP BY rr.GRID_ID
</select>
<!-- 查询指定时间范围内注册/参与用户增量【新方法】 -->
<select id="selectIncrWithinTimeRangeByGrids" resultType="com.epmet.dto.user.result.IncrWithinTimeRangeResultDTO">
SELECT
IFNULL(COUNT( distinct USER_ID),0) AS userCount,
GRID_ID
FROM register_relation
WHERE
DEL_FLAG = '0'
<if test='regOrPartiFlag == "parti" '>
AND ((FIRST_REGISTER = '1' AND REGISTER = '1' AND PARTICIPATION = '1') OR (FIRST_REGISTER = '0' AND REGISTER = '0' AND PARTICIPATION = '1'))
</if>
<if test='regOrPartiFlag == "reg" '>
AND FIRST_REGISTER = '1'
</if>
<foreach collection="gridIds" item="gridId" index="index" open="AND ( " separator=" OR " close=")">
GRID_ID = #{gridId}
</foreach>
AND CREATED_TIME <![CDATA[>=]]> DATE_FORMAT(#{startDate},"%Y-%m-%d")
AND CREATED_TIME <![CDATA[<=]]> DATE_FORMAT(#{endDate},"%Y-%m-%d")
GROUP BY GRID_ID
</select>
<!-- 查询指定网格范围下单位时间内全部的注册用户Id【新方法】 -->
<resultMap id="selectTotalUserIdsByGridsMap" type="com.epmet.dto.user.result.IncrAndTotalUserIdsResultDTO">
<result property="gridId" column="gridId"/>
<collection property="userIds" ofType="java.lang.String">
<result column="userId"/>
</collection>
</resultMap>
<select id="selectTotalUserIdsByGrids" resultMap="selectTotalUserIdsByGridsMap">
SELECT
DISTINCT(rr.USER_ID) AS userId,
r2.GRID_ID AS gridId
FROM REGISTER_RELATION rr
LEFT JOIN register_relation r2 ON (r2.GRID_ID = rr.GRID_ID AND r2.DEL_FLAG = 0)
WHERE
rr.DEL_FLAG = '0'
<if test='regOrPartiFlag == "parti" '>
AND ((rr.FIRST_REGISTER = '1' AND rr.REGISTER = '1' AND rr.PARTICIPATION = '1') OR (rr.FIRST_REGISTER = '0' AND rr.REGISTER = '0' AND rr.PARTICIPATION = '1'))
</if>
<if test='regOrPartiFlag == "reg" '>
AND rr.FIRST_REGISTER = '1'
</if>
<foreach collection="gridIds" item="gridId" index="index" open="AND ( " separator=" OR " close=")">
rr.GRID_ID = #{gridId}
</foreach>
AND DATE_FORMAT(rr.CREATED_TIME,"%Y-%m-%d") <![CDATA[<=]]> IF(null != #{targetDate} OR '' !=#{targetDate},DATE_FORMAT(#{targetDate},"%Y-%m-%d"),DATE_FORMAT( DATE_SUB( CURDATE( ), INTERVAL 1 DAY ),"%Y-%m-%d"))
</select>
<delete id="delGmUploadEvent">
DELETE
FROM

21
epmet-module/epmet-activiti/epmet-activiti-server/src/main/java/com/epmet/healthcheck/HealthCheckController.java

@ -0,0 +1,21 @@
package com.epmet.healthcheck;
import com.epmet.commons.tools.utils.Result;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("healthcheck")
public class HealthCheckController {
/**
* http健康检查
* @return
*/
@PostMapping("http")
public Result httpHealthCheck() {
return new Result();
}
}

21
epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/healthcheck/HealthCheckController.java

@ -0,0 +1,21 @@
package com.epmet.healthcheck;
import com.epmet.commons.tools.utils.Result;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("healthcheck")
public class HealthCheckController {
/**
* http健康检查
* @return
*/
@PostMapping("http")
public Result httpHealthCheck() {
return new Result();
}
}

21
epmet-module/epmet-demo/epmet-demo-server/src/main/java/com/epmet/healthcheck/HealthCheckController.java

@ -0,0 +1,21 @@
package com.epmet.healthcheck;
import com.epmet.commons.tools.utils.Result;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("healthcheck")
public class HealthCheckController {
/**
* http健康检查
* @return
*/
@PostMapping("http")
public Result httpHealthCheck() {
return new Result();
}
}

21
epmet-module/epmet-ext/epmet-ext-server/src/main/java/com/epmet/healthcheck/HealthCheckController.java

@ -0,0 +1,21 @@
package com.epmet.healthcheck;
import com.epmet.commons.tools.utils.Result;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("healthcheck")
public class HealthCheckController {
/**
* http健康检查
* @return
*/
@PostMapping("http")
public Result httpHealthCheck() {
return new Result();
}
}

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save