Browse Source

Merge branch 'dev_bugfix_ljj' of http://git.elinkit.com.cn:7070/r/epmet-cloud into dev_bugfix_ljj

 Conflicts:
	epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/feign/GovProjectOpenFeignClient.java
	epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/feign/fallback/GovProjectOpenFeignClientFallback.java
	epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java
	epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java
master
sunyuchao 4 years ago
parent
commit
3943cf716e
  1. 29
      .gitignore
  2. 2
      epmet-admin/epmet-admin-server/deploy/docker-compose-prod.yml
  3. 2
      epmet-admin/epmet-admin-server/pom.xml
  4. 10
      epmet-admin/epmet-admin-server/src/main/resources/db/migration/V0.0.9__add_data_type.sql
  5. 2
      epmet-auth/deploy/docker-compose-prod.yml
  6. 2
      epmet-auth/pom.xml
  7. 12
      epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/handler/FieldMetaObjectHandler.java
  8. 18
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/ConsomerGroupConstants.java
  9. 20
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/TopicConstants.java
  10. 19
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/CalPartyUnitSatisfactionFormDTO.java
  11. 28
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/ServerSatisfactionCalFormDTO.java
  12. 2
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/MqConstant.java
  13. 2
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/eventmsg/BasePointEventMsg.java
  14. 1
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/DictTypeEnum.java
  15. 1
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/EventEnum.java
  16. 10
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java
  17. 12
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisUtils.java
  18. 3
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/CustomerOrgRedis.java
  19. 2
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/security/password/PasswordUtils.java
  20. 123
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java
  21. 3
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java
  22. 5
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/IpUtils.java
  23. 23
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/Md5Util.java
  24. 2
      epmet-gateway/deploy/docker-compose-prod.yml
  25. 2
      epmet-gateway/pom.xml
  26. 1
      epmet-gateway/src/main/resources/bootstrap.yml
  27. 1
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/WorkFactResultDTO.java
  28. 1
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/PatrolDailySumResult.java
  29. 21
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/StaffPatrolRecordDailyResultDTO.java
  30. 15
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/CustomerAgencyDTO.java
  31. 15
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/CustomerDepartmentDTO.java
  32. 20
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/CustomerGridDTO.java
  33. 18
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/GridMemberDataAnalysisFromDTO.java
  34. 8
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/GridMemberDataAnalysisResultDTO.java
  35. 2
      epmet-module/data-aggregator/data-aggregator-server/deploy/docker-compose-prod.yml
  36. 30
      epmet-module/data-aggregator/data-aggregator-server/pom.xml
  37. 55
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/beans/GridMemberDataAnalysisExcelExportBean.java
  38. 162
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java
  39. 22
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/FactGridMemberStatisticsDailyDao.java
  40. 14
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StatsStaffPatrolRecordDailyDao.java
  41. 5
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmetuser/StatsStaffPatrolRecordDailyEntity.java
  42. 15
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govorg/CustomerAgencyEntity.java
  43. 15
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govorg/CustomerDepartmentEntity.java
  44. 20
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govorg/CustomerGridEntity.java
  45. 29
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/AggreGridService.java
  46. 19
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java
  47. 40
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java
  48. 8
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java
  49. 11
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/StatsStaffPatrolRecordDailyService.java
  50. 8
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java
  51. 5
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/StatsStaffPatrolRecordDailyServiceImpl.java
  52. 8
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java
  53. 151
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/AggreGridServiceImpl.java
  54. BIN
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/excel/data_template.xlsx
  55. 66
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/FactGridMemberStatisticsDailyDao.xml
  56. 32
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StatsStaffPatrolRecordDailyDao.xml
  57. 19
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerStaffAgencyDao.xml
  58. 19
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/form/heart/VolunteerDemandServiceFormDTO.java
  59. 2
      epmet-module/data-report/data-report-server/deploy/docker-compose-prod.yml
  60. 2
      epmet-module/data-report/data-report-server/pom.xml
  61. 12
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/heart/DataReportHeartDemandController.java
  62. 5
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/fact/FactVolunteerServiceDailyDao.java
  63. 12
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/GrassRootsGovernServiceImpl.java
  64. 8
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/GrassrootsPartyDevServiceImpl.java
  65. 4
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/IndexServiceImpl.java
  66. 20
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/PartyMemberLeadServiceImpl.java
  67. 5
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/ScreenProjectServiceImpl.java
  68. 2
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/heart/DemandService.java
  69. 44
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/heart/impl/DemandServiceImpl.java
  70. 8
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/project/impl/ProjectServiceImpl.java
  71. 13
      epmet-module/data-report/data-report-server/src/main/resources/mapper/fact/FactVolunteerServiceDailyDao.xml
  72. 5
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/StatsStaffPatrolRecordDailyDTO.java
  73. 6
      epmet-module/data-statistical/data-statistical-server/deploy/docker-compose-prod.yml
  74. 2
      epmet-module/data-statistical/data-statistical-server/pom.xml
  75. 1
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/constant/ProjectConstant.java
  76. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/heart/IcUserDemandServiceDao.java
  77. 23
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/user/UserDao.java
  78. 9
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/stats/FactVolunteerServiceDailyEntity.java
  79. 5
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/user/StatsStaffPatrolRecordDailyEntity.java
  80. 8
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/model/ParseIndexExcelResult.java
  81. 47
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/impl/BizDataStatsServiceImpl.java
  82. 4
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/GroupExtractServiceImpl.java
  83. 4
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/ProjectExtractServiceImpl.java
  84. 8
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/IndexCalculateServiceImpl.java
  85. 4
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenDifficultyDataServiceImpl.java
  86. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/heart/HeartDemandService.java
  87. 4
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/heart/impl/HeartDemandServiceImpl.java
  88. 83
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DemandServiceImpl.java
  89. 20
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/impl/ProjectProcessServiceImpl.java
  90. 12
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/impl/ProjectServiceImpl.java
  91. 6
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/DimTopicStatusServiceImpl.java
  92. 4
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/ScreenCentralZoneDataExtractServiceImpl.java
  93. 4
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/topic/impl/TopicStatisticalServiceImpl.java
  94. 20
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/impl/TopicServiceImpl.java
  95. 11
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/UserService.java
  96. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/StatsStaffPatrolServiceImpl.java
  97. 13
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/UserServiceImpl.java
  98. 4
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/support/normalizing/ScoreCalculator.java
  99. 14
      epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.27__volunteer_service_daily_add_gridid.sql
  100. 2
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/heart/IcUserDemandServiceDao.xml

29
.gitignore

@ -1,29 +0,0 @@
# Created by .ignore support plugin (hsz.mobi)
### Java template
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
.idea/
*.iml
target/

2
epmet-admin/epmet-admin-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
epmet-admin-server:
container_name: epmet-admin-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-admin-server:0.3.28
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-admin-server:0.3.32
ports:
- "8082:8082"
network_mode: host # 使用现有网络

2
epmet-admin/epmet-admin-server/pom.xml

@ -2,7 +2,7 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<version>0.3.28</version>
<version>0.3.32</version>
<parent>
<groupId>com.epmet</groupId>
<artifactId>epmet-admin</artifactId>

10
epmet-admin/epmet-admin-server/src/main/resources/db/migration/V0.0.9__add_data_type.sql

@ -0,0 +1,10 @@
INSERT INTO `epmet_admin`.`sys_dict_type` (`id`, `dict_type`, `dict_name`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1000000000000000012', 'grid_type', '网格类型', '', 12, 0, 0, '', '2021-12-23 18:23:27', '', '2021-12-23 18:23:27');
INSERT INTO `epmet_admin`.`sys_dict_data` (`id`, `dict_type_id`, `dict_label`, `dict_value`, `dict_p_value`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1000000000000000300', 1000000000000000012, '党政机关', '0', '0', '', 0, 0, 0, '', '2021-12-23 18:39:18', '', '2021-12-23 18:39:18');
INSERT INTO `epmet_admin`.`sys_dict_data` (`id`, `dict_type_id`, `dict_label`, `dict_value`, `dict_p_value`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1000000000000000301', 1000000000000000012, '企业', '1', '0', '', 0, 0, 0, '', '2021-12-23 18:39:18', '', '2021-12-23 18:39:18');
INSERT INTO `epmet_admin`.`sys_dict_data` (`id`, `dict_type_id`, `dict_label`, `dict_value`, `dict_p_value`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1000000000000000302', 1000000000000000012, '园区', '2', '0', '', 4, 0, 0, '', '2021-12-23 18:39:18', '', '2021-12-23 18:39:18');
INSERT INTO `epmet_admin`.`sys_dict_data` (`id`, `dict_type_id`, `dict_label`, `dict_value`, `dict_p_value`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1000000000000000303', 1000000000000000012, '商圈', '3', '0', '', 4, 0, 0, '', '2021-12-23 18:39:18', '', '2021-12-23 18:39:18');
INSERT INTO `epmet_admin`.`sys_dict_data` (`id`, `dict_type_id`, `dict_label`, `dict_value`, `dict_p_value`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1000000000000000304', 1000000000000000012, '市场', '4', '0', '', 4, 0, 0, '', '2021-12-23 18:39:18', '', '2021-12-23 18:39:18');
INSERT INTO `epmet_admin`.`sys_dict_data` (`id`, `dict_type_id`, `dict_label`, `dict_value`, `dict_p_value`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1000000000000000305', 1000000000000000012, '景区', '5', '0', '', 4, 0, 0, '', '2021-12-23 18:39:18', '', '2021-12-23 18:39:18');
INSERT INTO `epmet_admin`.`sys_dict_data` (`id`, `dict_type_id`, `dict_label`, `dict_value`, `dict_p_value`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1000000000000000306', 1000000000000000012, '医院', '6', '0', '', 4, 0, 0, '', '2021-12-23 18:39:18', '', '2021-12-23 18:39:18');
INSERT INTO `epmet_admin`.`sys_dict_data` (`id`, `dict_type_id`, `dict_label`, `dict_value`, `dict_p_value`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1000000000000000307', 1000000000000000012, '学校', '7', '0', '', 4, 0, 0, '', '2021-12-23 18:39:18', '', '2021-12-23 18:39:18');

2
epmet-auth/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
epmet-auth-server:
container_name: epmet-auth-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-auth:0.3.96
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-auth:0.3.98
ports:
- "8081:8081"
network_mode: host # 使用现有网络

2
epmet-auth/pom.xml

@ -2,7 +2,7 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<version>0.3.96</version>
<version>0.3.98</version>
<parent>
<groupId>com.epmet</groupId>
<artifactId>epmet-cloud</artifactId>

12
epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/handler/FieldMetaObjectHandler.java

@ -147,10 +147,12 @@ public class FieldMetaObjectHandler implements MetaObjectHandler {
updatedTime = metaObject.getValue(FieldConstant.UPDATED_TIME_HUMP);
}
if (updatedTime == null) {
if(metaObject.hasGetter(FieldConstant.CREATED_TIME_HUMP))
if(metaObject.hasGetter(FieldConstant.CREATED_TIME_HUMP)) {
updatedTime = metaObject.getValue(FieldConstant.CREATED_TIME_HUMP);
if(updatedTime == null)
}
if(updatedTime == null) {
updatedTime = new Date();
}
}
return updatedTime;
}
@ -163,11 +165,13 @@ public class FieldMetaObjectHandler implements MetaObjectHandler {
}
if (value == null) {
if(metaObject.hasGetter(FieldConstant.CREATED_BY_HUMP))
if(metaObject.hasGetter(FieldConstant.CREATED_BY_HUMP)) {
value = metaObject.getValue(FieldConstant.CREATED_BY_HUMP);
}
if(null == value)
if(null == value) {
value = Optional.ofNullable(loginUserUtil.getLoginUserId()).orElse(Constant.APP_USER_FLAG);
}
}
return value;

18
epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/ConsomerGroupConstants.java

@ -41,10 +41,24 @@ public interface ConsomerGroupConstants {
*/
String PROJECT_OPERATION_LOG_GROUP = "project_operation_log_group";
/**
* 积分操作消费组
* 积分操作日志消费组
*/
String POINT_OPERATION_LOG_GROUP = "point_operation_log_group";
/**
* 爱心互助积分操作消费组
*/
String EPMET_HEART_POINT_OPERATION_GROUP = "epmet_heart_point_operation_group";
/**
* 楼院小组积分操作消费组
*/
String RESI_GROUP_POINT_OPERATION_GROUP = "resi_group_point_operation_group";
/**
* 社区服务(原居民需求)积分操作消费组
*/
String COMMUNITY_SERVICE_POINT_OPERATION_GROUP = "community_service_point_operation_group";
/**
* 开放的对接数据(中间库) 组织变更事件监听器分组
*/
@ -73,5 +87,5 @@ public interface ConsomerGroupConstants {
/**
* 需求完成如果服务方是区域化党建单位重新计算这个单位的满意度
*/
String CAL_PARTY_UNIT_SATISFACTION = "cal_party_unit_satisfaction";
String USER_DEMAND_FINISH_GROUP = "user_demand_finish_group";
}

20
epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/TopicConstants.java

@ -55,7 +55,23 @@ public interface TopicConstants {
String IC_RESI_USER = "ic_resi_user";
/**
* 需求完成如果服务方是区域化党建单位重新计算这个单位的满意度
* 需求完成
* 1如果服务方是区域化党建单位重新计算这个单位的满意度
*/
String CAL_PARTY_UNIT_SATISFACTION = "cal_party_unit_satisfaction";
String USER_DEMAND = "user_demand";
/**
* 爱心互助
*/
String EPMET_HEART = "epmet_heart";
/**
* 楼院小组
*/
String RESI_GROUP = "resi_group";
/**
* 社区服务原居民需求
*/
String COMMUNITY_SERVICE="community_service";
}

19
epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/CalPartyUnitSatisfactionFormDTO.java

@ -1,19 +0,0 @@
package com.epmet.commons.rocketmq.messages;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 需求完成如果服务方是区域化党建单位重新计算这个单位的满意度,或者直接计算整个客户
*/
@Data
public class CalPartyUnitSatisfactionFormDTO implements Serializable {
public interface AddUserInternalGroup {
}
@NotBlank(message = "客户id不能为空",groups = AddUserInternalGroup.class)
private String customerId;
private String partyUnitId;
}

28
epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/ServerSatisfactionCalFormDTO.java

@ -0,0 +1,28 @@
package com.epmet.commons.rocketmq.messages;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 需求完成如果服务方是区域化党建单位重新计算这个单位的满意度,或者直接计算整个客户
*/
@Data
public class ServerSatisfactionCalFormDTO implements Serializable {
public interface AddUserInternalGroup {
}
@NotBlank(message = "客户id不能为空",groups = AddUserInternalGroup.class)
private String customerId;
/**
* 服务方id可以值区域化党建单位id
* 后面也可以是社会组织社区自组织id...
*/
private String serverId;
/**
* 服务方类型志愿者volunteer社会组织social_org社区自组织community_org区域党建单位party_unit
*/
@NotBlank(message = "serviceType不能为空",groups = AddUserInternalGroup.class)
private String serviceType;
}

2
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/MqConstant.java

@ -17,4 +17,6 @@ public interface MqConstant {
* 减分标识 minus
*/
String MINUS="minus";
String SOURCE_TYPE_DEMAND="demand";
}

2
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/eventmsg/BasePointEventMsg.java

@ -92,4 +92,6 @@ public class BasePointEventMsg implements Serializable {
private String eventTag;
private String eventClass;
private String objectId;
private String eventName;
}

1
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/DictTypeEnum.java

@ -21,6 +21,7 @@ public enum DictTypeEnum {
USER_DEMAND_SERVICE_TYPE("user_demand_service_type","居民需求服务方类型",10),
AGE_GROUP("age_group", "年龄范围", 11),
PATROL_WORK_TYPE("patrol_work_type", "例行工作分类", 13),
GRID_TYPE("grid_type", "网格类型", 12),
;
private final String code;

1
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/EventEnum.java

@ -18,6 +18,7 @@ public enum EventEnum {
SHIFT_TOPIC_TO_ISSUE("shift_topic_to_issue","resi_group","转话题为议题(将自建小组中话题转为议题)"),
TOPIC_SHIFTED_TO_PROJECT("topic_to_project","resi_group","话题被转为项目"),
LEADER_RESOLVE_TOPIC("leader_resolve_topic","resi_group","组长解决组内话题"),
FINISH_USER_DEMAND("finish_user_demand","community_service","服务完成"),
;
private String eventClass;

10
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java

@ -85,14 +85,6 @@ public enum EpmetErrorCode {
BUILDING_NAME_EXITED(8215,"楼栋名称已存在"),
DOOR_NAME_EXITED(8216,"门牌号已存在"),
NEIGHBOOR_NAME_EXITED(8217,"小区名称已存在"),
DEMAND_NAME_EXITED(8218, "分类名称已存在"),
DEMAND_CAN_NOT_CANCEL(8219, "需求已完成,不可取消"),
DEMAND_CAN_NOT_ASSIGN(8220, "当前状态,不可指派"),
DEMAND_CAN_NOT_FINISH(8221, "当前状态,不能评价"),
DEMAND_FINISHED(8222,"需求已完成"),
DEMAND_CAN_NOT_UPDATE(8223,"当前状态,不可更新需求"),
DEMAND_NOT_EXITS(8224,"需求不存在"),
DEMAND_SERVICE_NOT_EXITS(8225,"服务记录不存在"),
REQUIRE_PERMISSION(8301, "您没有足够的操作权限"),
THIRD_PLAT_REQUEST_ERROR(8302, "请求第三方平台错误"),
@ -121,6 +113,7 @@ public enum EpmetErrorCode {
CAN_NOT_REPLY_RESI_EVENT_SELF(8606,"当前事件待处理,不可回复"),
RESI_EVENT_CAN_NOT_CLOSE_CASE(8607,"事件尚未处理,请处理完成后进行办结"),
RESI_EVENT_SHIFT_PROJECT(8608,"事件已立项,请勿重复操作"),
RESI_EVENT_SUBMIT(8616,"事件内容和语音不能同时为空"),
PLEASE_CHOOSE_RECEIVER(8609,"请选择接收人"),
REPLY_INFO_CONTENT_NOT_NULL(8610,"回复内容不能为空"),
@ -164,6 +157,7 @@ public enum EpmetErrorCode {
COMMUNITY_SELF_ORGANIZATION_LIST_REPART_ERROR(8530, "%s社区自组织名称已存在"),
MATTER_NAME_EXISTS_APPOINTMENT_ERROR(8532, "存在重复预约事项"),
ERROR_DATE(8533, "不合理日期"),
CHECK_PHONE_ERROR(8534, "号码不合法"),

12
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisUtils.java

@ -193,7 +193,9 @@ public class RedisUtils {
public <T> List<T> lrange(String key,long start,long end,Class<T> clazz){
List<Object> content = redisTemplate.opsForList().range(key,start,end);
if(CollectionUtils.isEmpty(content)) return null;
if(CollectionUtils.isEmpty(content)) {
return null;
}
return content.stream().map( o -> {
try {
T target = clazz.newInstance();
@ -314,7 +316,9 @@ public class RedisUtils {
**/
public Map<String, Object> hincrby(String key,String field,Long delta){
Map<String,Object> existed = hGetAll(key);
if(null == existed || existed.size() < NumConstant.ONE) return null;
if(null == existed || existed.size() < NumConstant.ONE) {
return null;
}
//hincrby
redisTemplate.opsForHash().increment(key,field,delta);
@ -367,7 +371,9 @@ public class RedisUtils {
public <T> Set<T> zReverseRange(String key, long start, long end, Class<T> clazz) {
Set<Object> objects = redisTemplate.opsForZSet().reverseRange(key, start, end);
if(CollectionUtils.isEmpty(objects)) return null;
if(CollectionUtils.isEmpty(objects)) {
return null;
}
return objects.stream().map(o->{
try {
T target = clazz.newInstance();

3
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/CustomerOrgRedis.java

@ -59,7 +59,8 @@ public class CustomerOrgRedis {
throw new RenException("查询网格信息失败...");
}
if (null == gridInfoResult.getData()){
throw new RenException("没有此网格信息...");
//throw new RenException("没有此网格信息...");
return null;
}
Map<String, Object> map = BeanUtil.beanToMap(gridInfoResult.getData(), false, true);
customerOrgRedis.redisUtils.hMSet(key, map);

2
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/security/password/PasswordUtils.java

@ -39,7 +39,7 @@ public class PasswordUtils {
public static void main(String[] args) {
String str = "admin";
String str = "wangqing";
String password = encode(str);
System.out.println(password);

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

@ -945,4 +945,127 @@ public class DateUtils {
return result;
}
/**
* @Description 获取工作日时间没有排除节假日
* @param startDate
* @param num
* @author zxc
* @date 2022/1/7 10:51 上午
*/
public static Date getWorkDay(Date startDate, int num) {
Date tomorrow = null;
int delay = 1;
while (delay <= num) {
tomorrow = getTomorrow(startDate);
if (!isWeekend(tomorrow)) {
delay++;
}
startDate = tomorrow;
}
return startDate;
}
/**
* @Description 根据开始时间计算出 当前日期后n个工作日没有排除节假日包括今天
* @param startDate
* @param num
* @author zxc
* @date 2022/1/7 10:20 上午
*/
public static List<String> getWorkDayList(Date startDate, int num) {
List<String> result = new ArrayList<>();
Calendar rightNow = Calendar.getInstance();
rightNow.setTime(startDate);
rightNow.add(Calendar.DATE,-1);
startDate = rightNow.getTime();
Date tomorrow;
Integer tag = 1;
while (tag <= num){
tomorrow = getTomorrow(startDate);
// 返回工作日
if (!isWeekend(tomorrow)) {
result.add(new SimpleDateFormat(DATE_PATTERN).format(tomorrow));
tag++;
}
startDate = tomorrow;
}
return result;
}
/**
* @Description 根据开始时间计算出 当前日期后n个周末没有排除节假日包括今天
* @param startDate
* @param num
* @author zxc
* @date 2022/1/7 10:20 上午
*/
public static List<String> getWeekendDayList(Date startDate, int num) {
List<String> result = new ArrayList<>();
Calendar rightNow = Calendar.getInstance();
rightNow.setTime(startDate);
rightNow.add(Calendar.DATE,-1);
startDate = rightNow.getTime();
Date tomorrow;
Integer tag = 1;
while (tag <= num){
tomorrow = getTomorrow(startDate);
// 返回周末
if (isWeekend(tomorrow)) {
result.add(new SimpleDateFormat(DATE_PATTERN).format(tomorrow));
tag++;
}
startDate = tomorrow;
}
return result;
}
/**
* @Description 根据开始时间计算出 当前日期后n天没有排除节假日包括今天
* @param startDate
* @param num
* @author zxc
* @date 2022/1/7 10:20 上午
*/
public static List<String> getEveryDayList(Date startDate, int num) {
List<String> result = new ArrayList<>();
Calendar rightNow = Calendar.getInstance();
rightNow.setTime(startDate);
rightNow.add(Calendar.DATE,-1);
startDate = rightNow.getTime();
Date tomorrow;
Integer tag = 1;
while (tag <= num){
tomorrow = getTomorrow(startDate);
result.add(new SimpleDateFormat(DATE_PATTERN).format(tomorrow));
tag++;
startDate = tomorrow;
}
return result;
}
/**
* @Description 判断日期字符串是否为周末
* @param date eg:yyyy-MM-dd
* @author zxc
* @date 2022/1/7 10:50 上午
*/
private static boolean isWeekend(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY;
}
/**
* @Description 获取tomorrow的日期
* @param startDate
* @author zxc
* @date 2022/1/7 10:50 上午
*/
private static Date getTomorrow(Date startDate) {
Calendar cal = Calendar.getInstance();
cal.setTime(startDate);
cal.add(Calendar.DAY_OF_MONTH, +1);
return cal.getTime();
}
}

3
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java

@ -200,8 +200,9 @@ public class HttpClientManager {
httppost.addHeader(HEADER_CONTENT_TYPE, HEADER_APPLICATION_JSON);
if (null != headerMap) {
headerMap.forEach((k, v) -> {
if (v != null)
if (v != null) {
httppost.addHeader(k, v.toString());
}
});
}
if (StringUtils.isNotEmpty(jsonStrParam)) {

5
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/IpUtils.java

@ -141,8 +141,9 @@ public class IpUtils {
}
private static boolean isValidAddress(InetAddress address) {
if (address == null || address.isLoopbackAddress())
return false;
if (address == null || address.isLoopbackAddress()) {
return false;
}
String name = address.getHostAddress();
return (name != null
&& !ANYHOST.equals(name)

23
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/Md5Util.java

@ -55,16 +55,18 @@ public class Md5Util {
private static String byteArrayToHexString(byte[] b) {
StringBuffer resultSb = new StringBuffer();
for (int i = 0; i < b.length; i++)
resultSb.append(byteToHexString(b[i]));
for (int i = 0; i < b.length; i++) {
resultSb.append(byteToHexString(b[i]));
}
return resultSb.toString();
}
private static String byteToHexString(byte b) {
int n = b;
if (n < 0)
n += 256;
if (n < 0) {
n += 256;
}
int d1 = n / 16;
int d2 = n % 16;
return hexDigits[d1] + "" + hexDigits[d2];
@ -75,12 +77,13 @@ public class Md5Util {
try {
resultString = origin;
MessageDigest md = MessageDigest.getInstance("MD5");
if (charsetname == null || "".equals(charsetname))
resultString = byteArrayToHexString(md.digest(resultString
.getBytes()));
else
resultString = byteArrayToHexString(md.digest(resultString
.getBytes(charsetname)));
if (charsetname == null || "".equals(charsetname)) {
resultString = byteArrayToHexString(md.digest(resultString
.getBytes()));
} else {
resultString = byteArrayToHexString(md.digest(resultString
.getBytes(charsetname)));
}
} catch (Exception e) {
log.error("MD5Encode is error,msg={0}", e);
}

2
epmet-gateway/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
epmet-gateway-server:
container_name: epmet-gateway-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-gateway:0.3.69
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-gateway:0.3.71
ports:
- "8080:8080"
network_mode: host # 使用现有网络

2
epmet-gateway/pom.xml

@ -2,7 +2,7 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<version>0.3.69</version>
<version>0.3.71</version>
<parent>
<groupId>com.epmet</groupId>
<artifactId>epmet-cloud</artifactId>

1
epmet-gateway/src/main/resources/bootstrap.yml

@ -496,6 +496,7 @@ epmet:
- /gov/project/project/platformcallback
- /oper/customize/customerstartpage/homestartpage
- /epmet/point/mqCallback/**
- /tduck-api/**
# 外部应用认证,使用AccessToken等头进行认证
externalOpenUrls:

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

@ -19,6 +19,7 @@ public class WorkFactResultDTO implements Serializable {
private Integer closedProjectTotal = 0;
private Integer patrolTotal = 0;
private String patrolTotalTime = "0";
private Integer routineWorkCount = 0;
private String orgId;
private String orgName;

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

@ -18,4 +18,5 @@ public class PatrolDailySumResult implements Serializable {
private String orgId;
private Integer patrolTotal;
private Integer totalTime;
private Integer routineWorkCount;
}

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

@ -0,0 +1,21 @@
package com.epmet.dataaggre.dto.epmetuser.result;
import lombok.Data;
/**
* @ClassName StaffPatrolRecordDailyResultDTO
* @Description 工作人员巡查记录按日统计查询结果
* @Author wangxianzhang
* @Date 2022/1/4 4:08 下午
*/
@Data
public class StaffPatrolRecordDailyResultDTO {
private String staffId;
private String gridId;
private int patrolTimes;
private int totalTime;
private int patrolRoutineWorkTimes;
}

15
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/CustomerAgencyDTO.java

@ -157,4 +157,19 @@ public class CustomerAgencyDTO implements Serializable {
* 中心位置纬度
*/
private String latitude;
/**
* 组织编码
*/
private String code;
/**
* 负责人姓名
*/
private String contacts;
/**
* 联系电话
*/
private String mobile;
}

15
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/CustomerDepartmentDTO.java

@ -94,4 +94,19 @@ public class CustomerDepartmentDTO implements Serializable {
*/
private Date updatedTime;
/**
* 组织编码
*/
private String code;
/**
* 负责人姓名
*/
private String contacts;
/**
* 联系电话
*/
private String mobile;
}

20
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/CustomerGridDTO.java

@ -133,4 +133,24 @@ public class CustomerGridDTO implements Serializable {
* 组织-网格
*/
private String gridNamePath;
/**
* 网格编码
*/
private String code;
/**
* 组织编码
*/
private String gridType;
/**
* 负责人姓名
*/
private String contacts;
/**
* 联系电话
*/
private String mobile;
}

18
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/GridMemberDataAnalysisFromDTO.java

@ -1,14 +1,18 @@
package com.epmet.dataaggre.dto.govorg.form;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
import java.util.Date;
import java.util.List;
@Data
public class GridMemberDataAnalysisFromDTO {
public interface listGridMemberDatas {}
public interface listGridMemberDatas4PcWork {}
private List<String> gridIds;
@ -19,4 +23,18 @@ public class GridMemberDataAnalysisFromDTO {
private String sort;
private Integer pageNo = 1;
private Integer pageSize = 10;
@NotBlank(message = "请选择组织", groups = { listGridMemberDatas4PcWork.class })
private String orgId;
@NotBlank(message = "请选择组织类型", groups = { listGridMemberDatas4PcWork.class })
private String orgType;
@DateTimeFormat(pattern = "yyyyMMdd")
@JsonFormat(pattern = "yyyyMMdd")
private Date startTime;
@DateTimeFormat(pattern = "yyyyMMdd")
@JsonFormat(pattern = "yyyyMMdd")
private Date endTime;
}

8
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/GridMemberDataAnalysisResultDTO.java

@ -7,9 +7,12 @@ public class GridMemberDataAnalysisResultDTO {
private String gridId;
private String staffId;
private String mobile;
private String staffName;
private String orgName;
//private String gridName;
// 项目议题等
private Integer projectCount;
private Integer issueToProjectCount;
private Integer closedIssueCount;
@ -17,4 +20,9 @@ public class GridMemberDataAnalysisResultDTO {
private Integer projectTransferCount;
private Integer projectClosedCount;
// 巡查
private int patrolTimes;
private String totalTime;
private int patrolRoutineWorkTimes;
}

2
epmet-module/data-aggregator/data-aggregator-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
data-aggregator-server:
container_name: data-aggregator-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/data-aggregator-server:0.3.78
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/data-aggregator-server:0.3.92
ports:
- "8114:8114"
network_mode: host # 使用现有网络

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

@ -2,7 +2,7 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<version>0.3.78</version>
<version>0.3.92</version>
<parent>
<artifactId>data-aggregator</artifactId>
<groupId>com.epmet</groupId>
@ -82,6 +82,34 @@
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.0.3</version>
<exclusions>
<exclusion>
<artifactId>poi</artifactId>
<groupId>org.apache.poi</groupId>
</exclusion>
<exclusion>
<artifactId>poi-ooxml</artifactId>
<groupId>org.apache.poi</groupId>
</exclusion>
<exclusion>
<artifactId>poi-ooxml-schemas</artifactId>
<groupId>org.apache.poi</groupId>
</exclusion>
<!--<exclusion>
<artifactId>cglib</artifactId>
<groupId>cglib</groupId>
</exclusion>-->
</exclusions>
</dependency>
</dependencies>
<build>

55
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/beans/GridMemberDataAnalysisExcelExportBean.java

@ -0,0 +1,55 @@
package com.epmet.dataaggre.beans;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
/**
* 网格员数据分析excel导出bean
*/
@Getter
@Setter
@EqualsAndHashCode
@ColumnWidth(20)
public class GridMemberDataAnalysisExcelExportBean {
@ExcelProperty(value = {"姓名"})
private String staffName;
@ExcelProperty(value = {"手机号"})
private String mobile;
@ExcelProperty(value = {"所属网格"})
private String orgName;
// 项目议题等
@ExcelProperty(value = {"项目数"})
private Integer projectCount;
@ExcelProperty(value = {"议题转项目数"})
private Integer issueToProjectCount;
@ExcelProperty(value = {"议题关闭数"})
private Integer closedIssueCount;
@ExcelProperty(value = {"项目事件响应数"})
private Integer projectResponseCount;
@ExcelProperty(value = {"项目事件吹哨数"})
private Integer projectTransferCount;
@ExcelProperty(value = {"项目事件结案数"})
private Integer projectClosedCount;
// 巡查
@ExcelProperty(value = {"巡查次数"})
private int patrolTimes;
@ExcelProperty(value = {"巡查时长"})
private String totalTime;
@ExcelProperty(value = {"例行工作次数"})
private int patrolRoutineWorkTimes;
}

162
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java

@ -1,30 +1,47 @@
package com.epmet.dataaggre.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.annotation.RequirePermission;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.enums.RequirePermissionEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dataaggre.dto.govorg.CustomerAgencyDTO;
import com.epmet.dataaggre.beans.GridMemberDataAnalysisExcelExportBean;
import com.epmet.dataaggre.dto.govorg.CustomerGridDTO;
import com.epmet.dataaggre.dto.govorg.form.*;
import com.epmet.dataaggre.dto.govorg.result.*;
import com.epmet.dataaggre.entity.govorg.CustomerAgencyEntity;
import com.epmet.dataaggre.entity.govorg.CustomerGridEntity;
import com.epmet.dataaggre.enums.GridMemberDataAnalysisEnums;
import com.epmet.dataaggre.service.AggreGridService;
import com.epmet.dataaggre.service.govorg.GovOrgService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.*;
import java.util.concurrent.atomic.AtomicReference;
/**
* @Author zxc
@ -32,6 +49,7 @@ import java.util.List;
*/
@RestController
@RequestMapping("org")
@Slf4j
public class GovOrgController {
@Autowired
@ -43,6 +61,24 @@ public class GovOrgController {
@Autowired
private AggreGridService aggreGridService;
/**
* 导出路径
*/
private Path gridMemberStatsExcelExportDir;
{
// 初始化目录
String home = System.getProperty("user.home");
Path importDir = Paths.get(home, "epmet_files", "grid_member_stats_excel_export");
if (Files.notExists(importDir)) {
try {
Files.createDirectories(importDir);
} catch (IOException e) {
log.error("创建导出暂存目录失败");
}
}
gridMemberStatsExcelExportDir = importDir;
}
/**
* @param tokenDTO
@ -201,4 +237,122 @@ public class GovOrgController {
return new Result<CustomerGridDTO>().ok(govOrgService.getGridInfo(gridId));
}
/**
* pc 工作端网格员巡查统计
* @param input
* @return
*/
@PostMapping("pcwork/gridmember-analysis")
public Result getGridMemberAnalysis4PcWork(@RequestBody GridMemberDataAnalysisFromDTO input) {
ValidatorUtils.validateEntity(input, GridMemberDataAnalysisFromDTO.listGridMemberDatas4PcWork.class);
String orgId = input.getOrgId();
Date startTime = input.getStartTime();
Date endTime = input.getEndTime();
Integer pageNo = input.getPageNo();
Integer pageSize = input.getPageSize();
String orgType = input.getOrgType();
PageData<GridMemberDataAnalysisResultDTO> page = aggreGridService.getGridMemberDataAnalysis4PcWork(orgId, orgType, pageNo, pageSize, startTime, endTime, true);
return new Result().ok(page);
}
/**
* pc 工作端网格员巡查统计导出excel
* @param input
* @return
*/
@PostMapping("pcwork/gridmember-analysis/export")
public void exportGridMemberAnalysis4PcWork(@RequestBody GridMemberDataAnalysisFromDTO input, HttpServletResponse response) {
ValidatorUtils.validateEntity(input, GridMemberDataAnalysisFromDTO.listGridMemberDatas4PcWork.class);
String orgId = input.getOrgId();
Date startTime = input.getStartTime();
Date endTime = input.getEndTime();
String orgType = input.getOrgType();
// 缓存路径
String tempFileName = UUID.randomUUID().toString().concat(".xlsx");
Path tempFilePath = gridMemberStatsExcelExportDir.resolve(tempFileName);
log.info("工作统计excel文件下载路径:{}", tempFilePath.toString());
ExcelWriter excelWriter = null;
// 组织名称
AtomicReference<String> orgName = new AtomicReference<>("");
if ("grid".equals(orgType)) {
CustomerGridDTO gridInfo = govOrgService.getGridInfo(orgId);
Optional.ofNullable(gridInfo).ifPresent((g) -> orgName.set(g.getGridName()));
} else if ("agency".equals(orgType)) {
CustomerAgencyEntity agencyInfo = govOrgService.getAgencyInfo(orgId);
Optional.ofNullable(agencyInfo).ifPresent((a) -> orgName.set(a.getOrganizationName()));
}
// sheet名
String sheetName = getSheetName(orgName.get(), startTime, endTime);
// 分页导出到缓存excel
try {
excelWriter = EasyExcel.write(tempFilePath.toString(), GridMemberDataAnalysisExcelExportBean.class).build();
// 这里注意 如果同一个sheet只要创建一次
WriteSheet writeSheet = EasyExcel.writerSheet(sheetName).build();
PageData<GridMemberDataAnalysisResultDTO> page;
int pageNo = NumConstant.ONE;
int pageSize = NumConstant.ONE_THOUSAND;
do {
page = aggreGridService.getGridMemberDataAnalysis4PcWork(orgId, orgType, pageNo++, pageSize, startTime, endTime, false);
List<GridMemberDataAnalysisResultDTO> pageList = page.getList();
List<GridMemberDataAnalysisExcelExportBean> exportBeans = ConvertUtils.sourceToTarget(pageList, GridMemberDataAnalysisExcelExportBean.class);
excelWriter.write(exportBeans, writeSheet);
} while (page.getList().size() == pageSize);
} catch (Exception e) {
e.printStackTrace();
log.error("【PC工作端网格员数据统计导出】生成excel失败:{}", ExceptionUtils.getErrorStackTrace(e));
} finally {
// 关闭流
Optional.ofNullable(excelWriter).ifPresent((i) -> i.finish());
}
// 开始下载缓存excel到客户端,然后删除缓存文件
try {
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
response.setHeader("Content-Type", "application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(sheetName.concat(".xlsx"), "UTF-8"));
IOUtils.copy(new FileInputStream(tempFilePath.toString()), response.getOutputStream());
} catch (Exception e) {
log.error(ExceptionUtils.getErrorStackTrace(e));
throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "【下载工作统计信息】下载失败");
} finally {
try {
Files.delete(tempFilePath);
} catch (IOException e) {
log.error(ExceptionUtils.getErrorStackTrace(e));
throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "【下载工作统计信息】删除缓存文件失败");
}
}
}
private String getSheetName(String orgName, Date startTime, Date endTime) {
StringBuilder sb = new StringBuilder(orgName);
String s = orgName;
if (startTime == null && endTime != null) {
sb.append("截止").append(DateUtils.format(endTime, DateUtils.DATE_PATTERN));
} else if (startTime != null && endTime != null) {
sb.append(DateUtils.format(startTime, DateUtils.DATE_PATTERN))
.append("至")
.append(DateUtils.format(endTime, DateUtils.DATE_PATTERN))
.append("区间新增值");
}
sb.append("的工作统计");
return sb.toString();
}
}

22
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/FactGridMemberStatisticsDailyDao.java

@ -52,4 +52,26 @@ public interface FactGridMemberStatisticsDailyDao extends BaseDao<FactGridMember
* @date 2021.07.05 16:17
*/
GridMemberDataAnalysisResultDTO getGridMemberIssueProjectStats(@Param("staffId") String staffId);
/**
* 查询截止日期的网格员数据统计累计值
* @param pids
* @param endDateID
* @return
*/
List<GridMemberDataAnalysisResultDTO> listGridMemberDataStatsAccumulate(@Param("pids") String pids,
@Param("gridId") String gridId,
@Param("endDateID") String endDateID);
/**
* 按照时间段查询网格员数据统计增量值
* @param pids
* @param startDateID
* @param endDateID
* @return
*/
List<GridMemberDataAnalysisResultDTO> listGridMemberDataStatsIncr(@Param("pids") String pids,
@Param("gridId") String gridId,
@Param("startDateID") String startDateID,
@Param("endDateID") String endDateID);
}

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

@ -22,6 +22,7 @@ import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dataaggre.dto.datastats.form.CustomerDataManageFormDTO;
import com.epmet.dataaggre.dto.datastats.result.CustomerDataManageResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult;
import com.epmet.dataaggre.dto.epmetuser.result.StaffPatrolRecordDailyResultDTO;
import com.epmet.dataaggre.entity.epmetuser.StatsStaffPatrolRecordDailyEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -51,4 +52,17 @@ public interface StatsStaffPatrolRecordDailyDao extends BaseDao<StatsStaffPatrol
* @author sun
*/
List<CustomerDataManageResultDTO.CustomerDataManage> patrolList(CustomerDataManageFormDTO formDTO);
/**
* 工作人员巡查记录按日统计查询
* @param userIds
* @param startDateID
* @param endDateID
* @return
*/
List<StaffPatrolRecordDailyResultDTO> listStaffPatrolRecordDailyAnalysis(@Param("gridPids") String gridPids,
@Param("gridId") String gridId,
@Param("userIds") List<String> userIds,
@Param("startDateId") String startDateID,
@Param("endDateID") String endDateID);
}

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

@ -122,4 +122,9 @@ public class StatsStaffPatrolRecordDailyEntity extends BaseEpmetEntity {
*/
private String latestPatrolStatus;
/**
* 例行工作次数
*/
private Integer routineWorkCount;
}

15
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govorg/CustomerAgencyEntity.java

@ -108,4 +108,19 @@ public class CustomerAgencyEntity extends BaseEpmetEntity {
* 社区
*/
private String community;
/**
* 组织编码
*/
private String code;
/**
* 负责人姓名
*/
private String contacts;
/**
* 联系电话
*/
private String mobile;
}

15
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govorg/CustomerDepartmentEntity.java

@ -64,4 +64,19 @@ public class CustomerDepartmentEntity extends BaseEpmetEntity {
* 部门所属的行政地区编码:实际就是所属组织的地区编码
*/
private String areaCode;
/**
* 组织编码
*/
private String code;
/**
* 负责人姓名
*/
private String contacts;
/**
* 联系电话
*/
private String mobile;
}

20
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govorg/CustomerGridEntity.java

@ -79,4 +79,24 @@ public class CustomerGridEntity extends BaseEpmetEntity {
* 所有上级组织ID
*/
private String pids;
/**
* 网格编码
*/
private String code;
/**
* 组织编码
*/
private String gridType;
/**
* 负责人姓名
*/
private String contacts;
/**
* 联系电话
*/
private String mobile;
}

29
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/AggreGridService.java

@ -1,7 +1,10 @@
package com.epmet.dataaggre.service;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO;
import com.sun.org.apache.xpath.internal.operations.Bool;
import java.util.Date;
import java.util.List;
/**
@ -16,5 +19,29 @@ public interface AggreGridService {
* @author wxz
* @date 2021.07.05 11:17
*/
List<GridMemberDataAnalysisResultDTO> getGridMemberDataAnalysis(List<String> gridIds, String searchedStaffName, String currStaffId, String month, String sort, Integer pageNo, Integer pageSize);
List<GridMemberDataAnalysisResultDTO> getGridMemberDataAnalysis(List<String> gridIds,
String searchedStaffName,
String currStaffId,
String month,
String sort,
Integer pageNo,
Integer pageSize);
/**
* 网格员巡查统计查询 pcwork端
* @param orgId 组织id
* @param orgType 组织类型agency,grid
* @param pageNo
* @param pageSize
* @param startTime
* @param endTime
* @return
*/
PageData<GridMemberDataAnalysisResultDTO> getGridMemberDataAnalysis4PcWork(String orgId,
String orgType,
Integer pageNo,
Integer pageSize,
Date startTime,
Date endTime,
Boolean needCount);
}

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

@ -13,6 +13,7 @@ import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO;
import javax.servlet.http.HttpServletResponse;
import java.text.ParseException;
import java.util.Date;
import java.util.List;
/**
@ -260,4 +261,22 @@ public interface DataStatsService {
* @author sun
*/
List<FactAgencyProjectMonthResultDTO> getProjectMonthIncr(ProjectTotalFormDTO formDTO);
/**
* 查询网格员项目统计数据4 pcwork
* @param pids 组织PIDS
* @param pageNo
* @param pageSize
* @param startDateID 查询起始时间匹配统计表的dateId列
* @param endDateID 查询结束时间匹配统计表的dateId列
* @param needCount 是否需要查询Count分页查询需要导出excel不需要
* @return
*/
List<GridMemberDataAnalysisResultDTO> getGridMemberIssueProjectStats4PcWork(String pids,
String gridId,
Integer pageNo,
Integer pageSize,
String startDateID,
String endDateID,
Boolean needCount);
}

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

@ -5,6 +5,7 @@ import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.enums.OrgLevelEnum;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.ExcelUtils;
@ -23,9 +24,8 @@ 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.govproject.form.ProjectTotalFormDTO;
import com.epmet.dataaggre.dto.govproject.result.ProjectMonthIncrResultDTO;
import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO;
import com.epmet.dataaggre.dto.govproject.form.ProjectTotalFormDTO;
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.FactAgencyGovernDailyEntity;
@ -33,6 +33,7 @@ import com.epmet.dataaggre.excel.CustomerDataManageExcel;
import com.epmet.dataaggre.service.datastats.DataStatsService;
import com.epmet.dataaggre.service.epmetuser.StatsStaffPatrolRecordDailyService;
import com.epmet.dataaggre.service.evaluationindex.EvaluationIndexService;
import com.epmet.dataaggre.service.govorg.GovOrgService;
import com.epmet.dataaggre.service.opercrm.CustomerRelation;
import com.github.pagehelper.PageHelper;
import lombok.extern.slf4j.Slf4j;
@ -59,7 +60,7 @@ import java.util.stream.Collectors;
@Service
@DataSource(DataSourceConstant.DATA_STATISTICAL)
@Slf4j
public class DataStatsServiceImpl implements DataStatsService {
public class DataStatsServiceImpl implements DataStatsService, ResultDataResolver {
@Autowired
private DataStatsDao dataStatsDao;
@Autowired
@ -71,7 +72,8 @@ public class DataStatsServiceImpl implements DataStatsService {
private FactGridMemberStatisticsDailyDao factGridMemberStatisticsDailyDao;
@Autowired
private StatsStaffPatrolRecordDailyService statsStaffPatrolRecordDailyService;
@Autowired
private GovOrgService govOrgService;
/**
* @Param formDTO
@ -1628,6 +1630,7 @@ public class DataStatsServiceImpl implements DataStatsService {
private void setPatrolAttr(WorkFactResultDTO resultDTO, PatrolDailySumResult patrolRecordDTO) {
if (patrolRecordDTO != null){
resultDTO.setRoutineWorkCount(patrolRecordDTO.getRoutineWorkCount());
resultDTO.setPatrolTotal(patrolRecordDTO.getPatrolTotal());
Integer totalTime = patrolRecordDTO.getTotalTime();
if (totalTime != null || totalTime > 0){
@ -2141,5 +2144,30 @@ public class DataStatsServiceImpl implements DataStatsService {
return dataStatsDao.getProjectMonthIncr(formDTO);
}
@Override
public List<GridMemberDataAnalysisResultDTO> getGridMemberIssueProjectStats4PcWork(String pids,
String gridId,
Integer pageNo,
Integer pageSize,
String startDateID,
String endDateID,
Boolean needCount) {
//boolean isStartDateIdBlank = StringUtils.isBlank(startDateID);
//boolean isEndDateIdBlank = StringUtils.isBlank(endDateID);
//
//if (isStartDateIdBlank && !isEndDateIdBlank) {
// // 查询截止时间的累计值,直接查询表里的total即可
// PageHelper.startPage(pageNo, pageSize, needCount);
// return factGridMemberStatisticsDailyDao.listGridMemberDataStatsAccumulate(pids, gridId, endDateID);
//} else if (!isStartDateIdBlank && !isEndDateIdBlank) {
// // 查询时间段内的增量,需要使用表中的增量列计算
// return factGridMemberStatisticsDailyDao.listGridMemberDataStatsIncr(pids, gridId, startDateID, endDateID);
//} else {
// throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "【pcwork查询网格员数据统计列表】传入时间条件有误");
//}
PageHelper.startPage(pageNo, pageSize, needCount);
return factGridMemberStatisticsDailyDao.listGridMemberDataStatsIncr(pids, gridId, startDateID, endDateID);
}
}

8
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java

@ -6,6 +6,7 @@ import com.epmet.dataaggre.dto.govorg.form.OrgStaffListFormDTO;
import com.epmet.dataaggre.dto.govorg.form.StaffDetailV2FormDTO;
import com.epmet.dataaggre.dto.govorg.result.GridStaffResultDTO;
import com.epmet.dataaggre.dto.govproject.result.ProjectAnalysisResultDTO;
import com.epmet.dataaggre.entity.epmetuser.CustomerStaffEntity;
import com.epmet.dto.IcResiUserDTO;
import com.epmet.dto.UserBaseInfoDTO;
@ -167,4 +168,11 @@ public interface EpmetUserService {
* @author sun
*/
List<ProjectAnalysisResultDTO.Home> getHomeUserList(String homeId, String icUserId);
/**
* 使用staffId批量查询staff信息
* @param userIdsPart
* @return
*/
List<CustomerStaffEntity> listStaffsByIds(List<String> userIdsPart);
}

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

@ -21,6 +21,7 @@ import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.dataaggre.dto.datastats.form.CustomerDataManageFormDTO;
import com.epmet.dataaggre.dto.datastats.result.CustomerDataManageResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult;
import com.epmet.dataaggre.dto.epmetuser.result.StaffPatrolRecordDailyResultDTO;
import com.epmet.dataaggre.entity.epmetuser.StatsStaffPatrolRecordDailyEntity;
import java.util.List;
@ -47,4 +48,14 @@ public interface StatsStaffPatrolRecordDailyService extends BaseService<StatsSta
* @author sun
*/
List<CustomerDataManageResultDTO.CustomerDataManage> patrolList(CustomerDataManageFormDTO formDTO);
/**
* 查询工作人员巡查记录按日统计
* @param gridPids 记录所属的网格的pids
* @param userIds
* @param startDateID
* @param endDateID
* @return
*/
List<StaffPatrolRecordDailyResultDTO> listStaffPatrolRecordDailyAnalysis(String gridPids, String gridId, List<String> userIds, String startDateID, String endDateID);
}

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

@ -342,7 +342,7 @@ public class EpmetUserServiceImpl implements EpmetUserService {
re.setTotalTime(totalTime == "" ? "0分钟" : totalTime);
//re.setTotalTime(re.getTimeNum() < 1 ? BigDecimal.ZERO + "h" : new BigDecimal(numberFormat.format((float) re.getTimeNum() / (float) 3600)) + "h");
//re.setTotalTime(re.getTimeNum() / 60 + "分钟");
list.stream().filter(l -> re.getGridId().equals(l.getId())).forEach(s -> re.setGridName(s.getGridName()));
//list.stream().filter(l -> re.getGridId().equals(l.getId())).forEach(s -> re.setGridName(s.getGridName()));
});
return resultList;
@ -735,5 +735,11 @@ public class EpmetUserServiceImpl implements EpmetUserService {
return icResiUserDao.getHomeUserList(homeId, icUserId);
}
@Override
public List<CustomerStaffEntity> listStaffsByIds(List<String> userIds) {
LambdaQueryWrapper<CustomerStaffEntity> query = new LambdaQueryWrapper<>();
query.in(CustomerStaffEntity::getUserId, userIds);
return customerStaffDao.selectList(query);
}
}

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

@ -7,6 +7,7 @@ import com.epmet.dataaggre.dao.epmetuser.StatsStaffPatrolRecordDailyDao;
import com.epmet.dataaggre.dto.datastats.form.CustomerDataManageFormDTO;
import com.epmet.dataaggre.dto.datastats.result.CustomerDataManageResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult;
import com.epmet.dataaggre.dto.epmetuser.result.StaffPatrolRecordDailyResultDTO;
import com.epmet.dataaggre.entity.epmetuser.StatsStaffPatrolRecordDailyEntity;
import com.epmet.dataaggre.service.epmetuser.StatsStaffPatrolRecordDailyService;
import lombok.extern.slf4j.Slf4j;
@ -47,4 +48,8 @@ public class StatsStaffPatrolRecordDailyServiceImpl extends BaseServiceImpl<Stat
return baseDao.patrolList(formDTO);
}
@Override
public List<StaffPatrolRecordDailyResultDTO> listStaffPatrolRecordDailyAnalysis(String gridPids, String gridId, List<String> userIds, String startDateID, String endDateID) {
return baseDao.listStaffPatrolRecordDailyAnalysis(gridPids, gridId, userIds, startDateID, endDateID);
}
}

8
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java

@ -20,7 +20,6 @@ import com.epmet.dataaggre.dto.govorg.form.SubOrgFormDTO;
import com.epmet.dataaggre.dto.govorg.result.*;
import com.epmet.dataaggre.dto.resigroup.result.OrgInfoCommonDTO;
import com.epmet.dataaggre.entity.govorg.CustomerAgencyEntity;
import com.epmet.dataaggre.entity.govorg.CustomerGridEntity;
import com.epmet.dataaggre.service.commonservice.AreaCodeService;
import com.epmet.dataaggre.service.epmetuser.EpmetUserService;
import com.epmet.dataaggre.service.govorg.GovOrgService;
@ -151,13 +150,14 @@ public class GovOrgServiceImpl implements GovOrgService {
List<NextAreaCodeResultDTO> allList = areaCodeService.queryNextLevelAreaCodeList(formDTO);
if (CollectionUtils.isNotEmpty(allList)) {
//内部客户: 已经被使用过的areaCode
List<String> usedAreaCodeList1 = customerAgencyDao.selectUsedAreaCodeList(formDTO.getAreaCode());
// 组织编辑可以修改区域编码,所以不排除了,注释掉
// List<String> usedAreaCodeList1 = customerAgencyDao.selectUsedAreaCodeList(formDTO.getAreaCode());
//外部子客户:
List<String> usedAreaCodeList2 = customerRelation.selectUsedAreaCodeList(formDTO.getAreaCode());
List<String> list=new ArrayList<>();
if(CollectionUtils.isNotEmpty(usedAreaCodeList1)){
/*if(CollectionUtils.isNotEmpty(usedAreaCodeList1)){
list.addAll(usedAreaCodeList1);
}
}*/
if(CollectionUtils.isNotEmpty(usedAreaCodeList2)){
list.addAll(usedAreaCodeList2);
}

151
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/AggreGridServiceImpl.java

@ -1,20 +1,32 @@
package com.epmet.dataaggre.service.impl;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerOrgRedis;
import com.epmet.commons.tools.redis.common.bean.GridInfoCache;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.dataaggre.dto.epmetuser.result.StaffPatrolRecordDailyResultDTO;
import com.epmet.dataaggre.dto.govorg.CustomerGridDTO;
import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO;
import com.epmet.dataaggre.entity.epmetuser.CustomerStaffEntity;
import com.epmet.dataaggre.entity.govorg.CustomerAgencyEntity;
import com.epmet.dataaggre.service.AggreGridService;
import com.epmet.dataaggre.service.datastats.DataStatsService;
import com.epmet.dataaggre.service.epmetuser.EpmetUserService;
import com.epmet.dataaggre.service.epmetuser.StatsStaffPatrolRecordDailyService;
import com.epmet.dataaggre.service.govorg.GovOrgService;
import org.apache.commons.collections4.CollectionUtils;
import com.github.pagehelper.PageInfo;
import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import sun.rmi.runtime.Log;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.*;
@Slf4j
@Service
public class AggreGridServiceImpl implements AggreGridService {
@ -24,6 +36,12 @@ public class AggreGridServiceImpl implements AggreGridService {
@Autowired
private DataStatsService dataStatsService;
@Autowired
private StatsStaffPatrolRecordDailyService statsStaffPatrolRecordDailyService;
@Autowired
private EpmetUserService epmetUserService;
@Override
public List<GridMemberDataAnalysisResultDTO> getGridMemberDataAnalysis(
List<String> gridIds,
@ -48,4 +66,125 @@ public class AggreGridServiceImpl implements AggreGridService {
return records;
}
@Override
public PageData<GridMemberDataAnalysisResultDTO> getGridMemberDataAnalysis4PcWork(String orgId,
String orgType,
Integer pageNo,
Integer pageSize,
Date startTime,
Date endTime,
Boolean needCount) {
// 计算出开始dateId和结束endId
String startDateID = DateUtils.format(startTime, DateUtils.DATE_PATTERN_YYYYMMDD);
String endDateID = DateUtils.format(endTime, DateUtils.DATE_PATTERN_YYYYMMDD);
// 根据orgType判断是使用agency的pids还是直接使用gridId作为条件
String pids = null;
String gridId = null;
if ("grid".equals(orgType)) {
gridId = orgId;
} else if ("agency".equals(orgType)) {
pids = getPidsByAgencyId(orgId);
} else {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "组织类型不支持");
}
// 一.查询网格员数据统计相关信息
List<GridMemberDataAnalysisResultDTO> datas = dataStatsService.getGridMemberIssueProjectStats4PcWork(pids, gridId, pageNo, pageSize, startDateID, endDateID, needCount);
long total = new PageInfo<>(datas).getTotal();
// 二.匹配用户巡查,例行工作数据
int partSize = 100;
// 将数据列表结构化 <staffId:<gridId:data>>
HashMap<String, Map<String, GridMemberDataAnalysisResultDTO>> structedData = new HashMap<>();
for (GridMemberDataAnalysisResultDTO data : datas) {
// 填充gridName
GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(data.getGridId());
if (gridInfo == null) {
log.warn("未找到网格信息:{}", data.getGridId());
continue;
}
Optional.ofNullable(gridInfo).ifPresent((d) -> data.setOrgName(d.getGridName()));
// 生成结构化map
Map<String, GridMemberDataAnalysisResultDTO> gridAndData = structedData.get(data.getStaffId());
if (gridAndData == null) {
HashMap<String, GridMemberDataAnalysisResultDTO> gat = new HashMap<>();
gat.put(data.getGridId(), data);
structedData.put(data.getStaffId(), gat);
} else {
Map<String, GridMemberDataAnalysisResultDTO> gat = structedData.get(data.getStaffId());
gat.put(data.getGridId(), data);
}
}
ArrayList<String> userIds = new ArrayList<>(structedData.keySet());
// 分片
List<List<String>> userIdsParts = Lists.partition(userIds, partSize);
for (List<String> userIdsPart : userIdsParts) {
// 批量查询出用户信息
List<CustomerStaffEntity> staffInfos = epmetUserService.listStaffsByIds(userIdsPart);
//Map<String, CustomerStaffEntity> staffIdAndStaffInfo = staffInfos.stream().collect(Collectors.toMap((s) -> s.getUserId(), Function.identity()));
for (CustomerStaffEntity staffInfo : staffInfos) {
Map<String, GridMemberDataAnalysisResultDTO> gridAndData = structedData.get(staffInfo.getUserId());
if (gridAndData != null) {
gridAndData.forEach((k, v) -> v.setMobile(staffInfo.getMobile()));
}
}
// 批量查询出巡查信息
List<StaffPatrolRecordDailyResultDTO> patrolDatas = statsStaffPatrolRecordDailyService.listStaffPatrolRecordDailyAnalysis(pids, gridId, userIdsPart, startDateID, endDateID);
for (StaffPatrolRecordDailyResultDTO d : patrolDatas) {
Map<String, GridMemberDataAnalysisResultDTO> gridAndData = structedData.get(d.getStaffId());
if (gridAndData != null) {
GridMemberDataAnalysisResultDTO data = gridAndData.get(d.getGridId());
if (data != null) {
data.setPatrolRoutineWorkTimes(d.getPatrolRoutineWorkTimes());
data.setPatrolTimes(d.getPatrolTimes());
data.setTotalTime(NumConstant.ZERO_STR);
int totalTime = d.getTotalTime();
if (totalTime > NumConstant.ZERO){
int minutes = totalTime / NumConstant.SIXTY;
if (minutes > NumConstant.ZERO){
String totalTimeDesc = minutes / NumConstant.SIXTY + "小时"+ minutes % NumConstant.SIXTY + "分钟";
data.setTotalTime(totalTimeDesc);
}
}
}
}
}
}
return new PageData<>(datas, total);
}
/**
* 使用agencyId,获取pidsagencyPids:agencyId
* @param agencyId
* @return
*/
private String getPidsByAgencyId(String agencyId) {
CustomerAgencyEntity agencyInfo = govOrgService.getAgencyInfo(agencyId);
if (agencyInfo == null) {
String errorMsg = "【网格员数据统计查询pcwork】查询组织信息返回为null";
throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), errorMsg, errorMsg);
}
String pidsAndAgencyIdPath = agencyInfo.getPids().concat(":").concat(agencyId);
if (pidsAndAgencyIdPath.startsWith(":")) {
pidsAndAgencyIdPath = pidsAndAgencyIdPath.replaceFirst(":", "");
}
return pidsAndAgencyIdPath;
}
}

BIN
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/excel/data_template.xlsx

Binary file not shown.

66
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/FactGridMemberStatisticsDailyDao.xml

@ -131,5 +131,71 @@
and member.DEL_FLAG = 0
</select>
<select id="listGridMemberDataStatsAccumulate"
resultType="com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO">
select member.id,
member.date_id,
member.month_id,
member.year_id,
member.customer_id,
member.agency_id,
member.grid_id,
member.pid,
member.pids,
member.staff_id,
member.staff_name,
member.PROJECT_COUNT project_count,
member.ISSUE_TO_PROJECT_COUNT issue_to_project_count,
member.CLOSED_ISSUE_COUNT closed_issue_count,
member.PROJECT_RESPONSE_COUNT project_response_count,
member.PROJECT_TRANSFER_COUNT project_transfer_count,
member.CLOSED_ISSUE_COUNT project_closed_count
from fact_grid_member_statistics_daily member
inner join (
select max(gms.DATE_ID) dateId from fact_grid_member_statistics_daily gms where gms.DATE_ID <![CDATA[<]]> #{endDateID} and gms.DEL_FLAG = '0'
) dim on (member.DATE_ID = dim.dateId)
where
member.DEL_FLAG = '0'
<if test="pids != null and pids != ''">
AND member.PIDS like CONCAT(#{pids}, '%')
</if>
<if test="gridId != null and gridId != ''">
AND member.GRID_ID = #{gridId}
</if>
order by convert(member.staff_name using gbk) asc, member.GRID_ID asc
</select>
<select id="listGridMemberDataStatsIncr"
resultType="com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO">
select member.grid_id,
member.staff_id,
member.STAFF_NAME,
sum(member.project_incr) project_count,
sum(member.issue_to_project_incr) issue_to_project_count,
sum(member.closed_issue_incr) closed_issue_count,
sum(member.project_response_incr) project_response_count,
sum(member.project_transfer_incr) project_transfer_count,
sum(member.project_closed_incr) project_closed_count
from fact_grid_member_statistics_daily member
where
member.DEL_FLAG = '0'
<if test="pids != null and pids != ''">
AND member.PIDS like CONCAT(#{pids}, '%')
</if>
<if test="gridId != null and gridId != ''">
AND member.GRID_ID = #{gridId}
</if>
<if test="startDateID != null and startDateID!=''">
and member.DATE_ID >= #{startDateID}
</if>
<if test="endDateID != null and endDateID != ''">
and member.DATE_ID <![CDATA[<=]]> #{endDateID}
</if>
group by member.grid_id,
member.staff_id,
member.STAFF_NAME
order by convert(member.staff_name using gbk) asc, member.GRID_ID asc
</select>
</mapper>

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

@ -6,7 +6,8 @@
SELECT
#{orgId} orgId,
sum(patrol_total) patrolTotal,
sum(TOTAL_TIME) totalTime
sum(TOTAL_TIME) totalTime,
sum(ROUTINE_WORK_COUNT) routineWorkCount
FROM stats_staff_patrol_record_daily
WHERE del_flag = '0'
AND date_id <![CDATA[>=]]> #{startDateId}
@ -57,4 +58,33 @@
GROUP BY t.grid_id, t.staffId
</select>
<select id="listStaffPatrolRecordDailyAnalysis"
resultType="com.epmet.dataaggre.dto.epmetuser.result.StaffPatrolRecordDailyResultDTO">
select sprd.STAFF_ID,
sprd.GRID_ID,
sum(PATROL_TOTAL) as patrol_times,
sum(TOTAL_TIME) as total_time,
sum(ROUTINE_WORK_COUNT) as patrol_routine_work_times
from stats_staff_patrol_record_daily sprd
where
sprd.DEL_FLAG = '0'
<if test="gridId != null and gridId != ''">
and sprd.GRID_ID=#{gridId}
</if>
<if test="gridPids != null and gridPids != ''">
and sprd.GRID_PIDS like CONCAT(#{gridPids}, '%')
</if>
and sprd.STAFF_ID in
<foreach collection="userIds" open="(" item="userId" separator="," close=")">
#{userId}
</foreach>
<if test="startDateId != null and startDateId != ''">
and sprd.DATE_ID >= #{startDateId}
</if>
and sprd.DATE_ID <![CDATA[<=]]> #{endDateID}
group by
sprd.STAFF_ID,
sprd.GRID_ID
</select>
</mapper>

19
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerStaffAgencyDao.xml

@ -27,25 +27,12 @@
ca.level,
ca.area_code,
ca.parent_area_code,
( CASE WHEN ca.longitude is null THEN
( SELECT longitude FROM customer_agency
WHERE del_flag = '0' AND customer_id = (SELECT customer_id FROM customer_agency WHERE id = ca.id)
ORDER BY pid ASC LIMIT 1
)
ELSE ca.longitude
END
) longitude,
( CASE WHEN ca.latitude is null THEN
( SELECT latitude FROM customer_agency
WHERE del_flag = '0' AND customer_id = (SELECT customer_id FROM customer_agency WHERE id = ca.id)
ORDER BY pid ASC LIMIT 1
)
ELSE ca.latitude
END
) latitude
IFNULL(ca.longitude, cc.longitude) longitude,
IFNULL(ca.latitude, cc.latitude) latitude
FROM
customer_staff_agency csa
INNER JOIN customer_agency ca ON csa.agency_id = ca.id
INNER JOIN customer_agency cc ON cc.pid = '0' AND ca.customer_id = cc.customer_id
WHERE
csa.del_flag = '0'
AND ca.del_flag = '0'

19
epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/form/heart/VolunteerDemandServiceFormDTO.java

@ -0,0 +1,19 @@
package com.epmet.dto.form.heart;
import lombok.Data;
/**
* @Description
* @Author wangxianzhang
* @Date 2021/12/22 3:12 下午
* @Version 1.0
*/
@Data
public class VolunteerDemandServiceFormDTO {
/**
* 组织ID
*/
private String agencyId;
}

2
epmet-module/data-report/data-report-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
data-report-server:
container_name: data-report-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/data-report-server:0.3.196
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/data-report-server:0.3.210
ports:
- "8108:8108"
network_mode: host # 使用现有网络

2
epmet-module/data-report/data-report-server/pom.xml

@ -3,7 +3,7 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<version>0.3.196</version>
<version>0.3.210</version>
<artifactId>data-report-server</artifactId>
<parent>

12
epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/heart/DataReportHeartDemandController.java

@ -3,10 +3,13 @@ package com.epmet.datareport.controller.heart;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.datareport.service.heart.DemandService;
import com.epmet.dto.form.heart.VolunteerDemandServiceFormDTO;
import com.epmet.dto.result.heart.VolunteerDemandServiceStatsResultDTO;
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;
@ -29,9 +32,14 @@ public class DataReportHeartDemandController {
* @return
*/
@PostMapping("volunteer/service")
public Result<VolunteerDemandServiceStatsResultDTO> getVolunteerServiceStats(@LoginUser TokenDto loginUser) {
public Result<VolunteerDemandServiceStatsResultDTO> getVolunteerServiceStats(@LoginUser TokenDto loginUser, @RequestBody VolunteerDemandServiceFormDTO input) {
ValidatorUtils.validateEntity(input);
String agencyId = input.getAgencyId();
String customerId = loginUser.getCustomerId();
VolunteerDemandServiceStatsResultDTO r = demandService.getVolunteerServiceStats(customerId);
VolunteerDemandServiceStatsResultDTO r = demandService.getVolunteerServiceStats(customerId, agencyId);
return new Result<VolunteerDemandServiceStatsResultDTO>().ok(r);
}

5
epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/fact/FactVolunteerServiceDailyDao.java

@ -36,8 +36,9 @@ public interface FactVolunteerServiceDailyDao extends BaseDao<FactVolunteerServi
/**
* 查询最新一条"志愿者需求服务统计信息"
* @param customerId
* @param customerId 客户ID
* @param agencyPids 查询条件的组织的PIDS
* @return
*/
VolunteerDemandServiceStatsResultDTO getLatestVolunteerDemandServiceStats(@Param("customerId") String customerId);
VolunteerDemandServiceStatsResultDTO getLatestVolunteerDemandServiceStats(@Param("customerId") String customerId, @Param("agencyPids") String agencyPids);
}

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

@ -121,7 +121,9 @@ public class GrassRootsGovernServiceImpl implements GrassRootsGovernService {
resultDTO.setImgUrl(StrConstant.EPMETY_STR);
}
}
if(null == result) return new ArrayList<>();
if(null == result) {
return new ArrayList<>();
}
return result;
}
@ -404,7 +406,9 @@ public class GrassRootsGovernServiceImpl implements GrassRootsGovernService {
private String convertPercentStr(BigDecimal percent,Integer digits){
if(null == percent) percent = BigDecimal.ZERO;
if(null == percent) {
percent = BigDecimal.ZERO;
}
String percentStr = percent.setScale(digits, BigDecimal.ROUND_HALF_UP).stripTrailingZeros().toPlainString();
return percentStr.concat(ModuleConstant.SYMBOL_PERCENT);
}
@ -418,7 +422,9 @@ public class GrassRootsGovernServiceImpl implements GrassRootsGovernService {
*/
private ScreenCustomerAgencyDTO agencyInfo(String agencyId){
ScreenCustomerAgencyDTO agencyInfo = agencyDao.selectByAgencyId(agencyId);
if(null == agencyInfo) throw new RenException("获取Agency信息失败");
if(null == agencyInfo) {
throw new RenException("获取Agency信息失败");
}
return agencyInfo;
}

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

@ -249,7 +249,9 @@ public class GrassrootsPartyDevServiceImpl implements GrassrootsPartyDevService
if(StringUtils.isBlank(param.getMonthId())){
param.setMonthId(dateUtils.getCurrentMonthId());
}
if(NumConstant.ZERO == param.getTopNum()) param.setTopNum(NumConstant.MAX);
if(NumConstant.ZERO == param.getTopNum()) {
param.setTopNum(NumConstant.MAX);
}
PageHelper.startPage(NumConstant.ONE,param.getTopNum());
List<BranchBuildOrderByCountResultDTO> orderList =
screenPartyBranchDataDao.selectBranchDataByTypeOrder(param.getAgencyId(),param.getCategory(),param.getMonthId(),param.getBottomMonthId());
@ -278,7 +280,9 @@ public class GrassrootsPartyDevServiceImpl implements GrassrootsPartyDevService
private String convertPercentStr(BigDecimal percent){
if (null == percent || BigDecimal.ZERO.equals(percent)) return "0.00%";
if (null == percent || BigDecimal.ZERO.equals(percent)) {
return "0.00%";
}
String percentStr = percent.setScale(NumConstant.TWO, BigDecimal.ROUND_HALF_UP).stripTrailingZeros().toPlainString();
return percentStr.concat(ModuleConstant.SYMBOL_PERCENT);
}

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

@ -171,7 +171,9 @@ public class IndexServiceImpl implements IndexService {
//针对X轴,数据集合不全则进行数据填充
a:for(int i = NumConstant.ZERO; i < _ymList.size(); i++){
//这里的collect必须是有序且升序的
if(cursor >= collect.size()) break a;
if(cursor >= collect.size()) {
break a;
}
//如果存在过期数据,即从数据库中查询出超出横坐标左边界的月份值
if(Integer.parseInt(collect.get(cursor).getMonthId()) < Integer.parseInt(_ymList.get(NumConstant.ZERO))) {
//控制当前循环重复进行

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

@ -276,7 +276,9 @@ public class PartyMemberLeadServiceImpl implements PartyMemberLeadService {
PageHelper.startPage(NumConstant.ONE,param.getTopNum());
gridData = screenOrgRankDataDao.selectGridDataMonthlyAreaCode(monthId,param.getAreaCode());
}
if(null == gridData || gridData.isEmpty()) return result;
if(null == gridData || gridData.isEmpty()) {
return result;
}
int num=1;
for(OrgRankDataResultDTO data:gridData){
AdvanceBranchRankResultDTO o = ConvertUtils.sourceToTarget(data,AdvanceBranchRankResultDTO.class);
@ -297,7 +299,9 @@ public class PartyMemberLeadServiceImpl implements PartyMemberLeadService {
PageHelper.startPage(NumConstant.ONE,param.getTopNum());
gridData = screenOrgRankDataDao.selectGridDataMonthly(param.getAgencyId(),monthId);
}
if(null == gridData || gridData.isEmpty()) return result;
if(null == gridData || gridData.isEmpty()) {
return result;
}
int num=1;
for(OrgRankDataResultDTO data:gridData){
AdvanceBranchRankResultDTO o = ConvertUtils.sourceToTarget(data,AdvanceBranchRankResultDTO.class);
@ -323,7 +327,9 @@ public class PartyMemberLeadServiceImpl implements PartyMemberLeadService {
@DataSource(value = DataSourceConstant.EVALUATION_INDEX,datasourceNameFromArg = true)
@Override
public List<PartyUserPointResultDTO> advancedPartymemberRank(AgencyAndNumFormDTO param) {
if(null == param.getTopNum()) param.setTopNum(NumConstant.TEN);
if(null == param.getTopNum()) {
param.setTopNum(NumConstant.TEN);
}
PageHelper.startPage(NumConstant.ONE,param.getTopNum());
List<PartyUserPointResultDTO> result=new ArrayList<>();
if(StringUtils.isNotBlank(param.getAreaCode())){
@ -332,13 +338,17 @@ public class PartyMemberLeadServiceImpl implements PartyMemberLeadService {
}else{
result=screenPartyUserRankDataDao.selectPartymemberPointOrder(param.getAgencyId());
}
if(null == result) return new ArrayList<>();
if(null == result) {
return new ArrayList<>();
}
return result;
}
private String convertPercentStr(BigDecimal percent){
if (null == percent || BigDecimal.ZERO.equals(percent)) return "0.0%";
if (null == percent || BigDecimal.ZERO.equals(percent)) {
return "0.0%";
}
String percentStr = percent.setScale(NumConstant.ONE, BigDecimal.ROUND_HALF_UP).stripTrailingZeros().toPlainString();
return percentStr.concat(ModuleConstant.SYMBOL_PERCENT);
}

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

@ -42,6 +42,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import sun.jvm.hotspot.memory.ContiguousSpace;
import java.math.BigDecimal;
import java.util.ArrayList;
@ -397,6 +398,10 @@ public class ScreenProjectServiceImpl implements ScreenProjectService {
l.setGridName(agencyInfo.getOrganizationName());
}else {
GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(l.getOrgId());
if (gridInfo == null) {
log.warn("未找到网格信息:{}", l.getOrgId());
return;
}
l.setGridName(gridInfo.getGridNamePath());
}
});

2
epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/heart/DemandService.java

@ -9,5 +9,5 @@ import com.epmet.dto.result.heart.VolunteerDemandServiceStatsResultDTO;
* @Version 1.0
*/
public interface DemandService {
VolunteerDemandServiceStatsResultDTO getVolunteerServiceStats(String customerId);
VolunteerDemandServiceStatsResultDTO getVolunteerServiceStats(String customerId, String agencyId);
}

44
epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/heart/impl/DemandServiceImpl.java

@ -1,12 +1,14 @@
package com.epmet.datareport.service.heart.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.constant.DataSourceConstant;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.datareport.dao.fact.FactVolunteerServiceDailyDao;
import com.epmet.datareport.entity.heart.FactVolunteerServiceDailyEntity;
import com.epmet.datareport.service.heart.DemandService;
import com.epmet.dto.CustomerAgencyDTO;
import com.epmet.dto.result.heart.VolunteerDemandServiceStatsResultDTO;
import com.epmet.feign.GovOrgOpenFeignClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -17,13 +19,41 @@ import org.springframework.stereotype.Service;
* @Version 1.0
*/
@Service
public class DemandServiceImpl implements DemandService {
public class DemandServiceImpl implements DemandService, ResultDataResolver {
@Autowired
private FactVolunteerServiceDailyDao factVolunteerServiceDailyDao;
@Autowired
private GovOrgOpenFeignClient govOrgOpenFeignClient;
@Override
public VolunteerDemandServiceStatsResultDTO getVolunteerServiceStats(String customerId) {
return factVolunteerServiceDailyDao.getLatestVolunteerDemandServiceStats(customerId);
public VolunteerDemandServiceStatsResultDTO getVolunteerServiceStats(String customerId, String agencyId) {
String errorMsg = "【查询志愿者需求服务信息】查询选中组织信息失败";
CustomerAgencyDTO agencyInfo = getResultDataOrThrowsException(govOrgOpenFeignClient.getAgencyById(agencyId),
ServiceConstant.GOV_ORG_SERVER,
EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),
errorMsg, errorMsg);
if (agencyInfo == null) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), errorMsg, errorMsg);
}
String agencyIdPath = agencyInfo.getPids().concat(":").concat(agencyId);
agencyIdPath = agencyIdPath.startsWith(":") ? agencyIdPath.replaceFirst(":", "") : agencyIdPath;
VolunteerDemandServiceStatsResultDTO r = factVolunteerServiceDailyDao.getLatestVolunteerDemandServiceStats(customerId, agencyIdPath);
if (r == null) {
r = new VolunteerDemandServiceStatsResultDTO();
r.setCustomerId(customerId);
r.setDateId(null);
r.setPartyServiceTotal(0);
r.setServiceTotal(0);
r.setResiServiceTotal(0);
r.setVolunteerTotal(0);
r.setPartyTotal(0);
r.setResiTotal(0);
}
return r;
}
}

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

@ -337,7 +337,9 @@ public class ProjectServiceImpl implements ProjectService {
}
}
if (null == resultList) return new ArrayList<>();
if (null == resultList) {
return new ArrayList<>();
}
return resultList;
}
@ -360,7 +362,9 @@ public class ProjectServiceImpl implements ProjectService {
result.get(i).setImgUrlList(imgUrlList);
}
if (null == result) return new ArrayList<>();
if (null == result) {
return new ArrayList<>();
}
return result;
}

13
epmet-module/data-report/data-report-server/src/main/resources/mapper/fact/FactVolunteerServiceDailyDao.xml

@ -24,12 +24,21 @@
<select id="getLatestVolunteerDemandServiceStats"
resultType="com.epmet.dto.result.heart.VolunteerDemandServiceStatsResultDTO">
select *
select CUSTOMER_ID CUSTOMER_ID,
DATE_ID DATE_ID,
sum(VOLUNTEER_TOTAL) VOLUNTEER_TOTAL,
sum(PARTY_TOTAL) PARTY_TOTAL,
sum(RESI_TOTAL) RESI_TOTAL,
sum(SERVICE_TOTAL) SERVICE_TOTAL,
sum(PARTY_SERVICE_TOTAL) PARTY_SERVICE_TOTAL,
sum(RESI_SERVICE_TOTAL) RESI_SERVICE_TOTAL
from fact_volunteer_service_daily
where DEL_FLAG = 0
and CUSTOMER_ID = #{customerId}
and PIDS like CONCAT(#{agencyPids}, "%")
group by CUSTOMER_ID, DATE_ID
order by DATE_ID desc
limit 1
limit 1
</select>

5
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/StatsStaffPatrolRecordDailyDTO.java

@ -124,6 +124,11 @@ public class StatsStaffPatrolRecordDailyDTO implements Serializable {
*/
private String latestPatrolStatus;
/**
* 例行工作次数
*/
private Integer routineWorkCount;
/**
* 删除标识 0.未删除 1.已删除
*/

6
epmet-module/data-statistical/data-statistical-server/deploy/docker-compose-prod.yml

@ -2,17 +2,17 @@ version: "3.7"
services:
data-statistical-server:
container_name: data-statistical-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/data-statistical-server:0.3.300
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/data-statistical-server:0.3.345
ports:
- "8108:8108"
network_mode: host # 使用现有网络
volumes:
- "/opt/epmet-cloud-logs/prod:/logs"
environment:
RUN_INSTRUCT: "java -Xms256m -Xmx1524m -jar ./data-stats.jar"
RUN_INSTRUCT: "java -Xms256m -Xmx3000m -jar ./data-stats.jar"
restart: "unless-stopped"
deploy:
resources:
limits:
cpus: '0.1'
memory: 1600M
memory: 3200M

2
epmet-module/data-statistical/data-statistical-server/pom.xml

@ -2,7 +2,7 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<version>0.3.300</version>
<version>0.3.345</version>
<parent>
<artifactId>data-statistical</artifactId>
<groupId>com.epmet</groupId>

1
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/constant/ProjectConstant.java

@ -81,6 +81,7 @@ public interface ProjectConstant {
* 项目来源于 工作端立项
*/
String PROJECT_ORIGIN_AGENCY="agency";
String PROJECT_ORIGIN_EVENT="resi_event";
/**
* 自办

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/heart/IcUserDemandServiceDao.java

@ -40,5 +40,5 @@ public interface IcUserDemandServiceDao extends BaseDao<IcUserDemandServiceEntit
* @param customerId 客户id
* @param serviceType 服务者类型
*/
List<DemandServiceCountResultDTO> listDemandServeTimes(@Param("customerId") String customerId, @Param("endTime") Date endTime, @Param("serviceType") String serviceType);
List<DemandServiceCountResultDTO> listDemandServeTimes(@Param("customerId") String customerId, @Param("gridId") String gridId, @Param("endTime") Date endTime, @Param("serviceType") String serviceType);
}

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

@ -3,6 +3,7 @@ package com.epmet.dao.user;
import com.epmet.dto.extract.form.GridHeartedFormDTO;
import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO;
import com.epmet.dto.extract.result.UserPartyResultDTO;
import com.epmet.dto.result.PatrolRoutineWorkResult;
import com.epmet.dto.screen.ScreenProjectDataDTO;
import com.epmet.dto.stats.form.GmUploadEventFormDTO;
import com.epmet.dto.user.form.StaffBaseInfoFormDTO;
@ -35,14 +36,14 @@ public interface UserDao {
CommonTotalAndIncCountResultDTO selectResiTotalAndIncrByLevel(@Param("regOrPartiFlag") String regOrPartiFlag, @Param("gridIds") Set<String> gridIds, @Param("targetDate") Date targetDate);
/**
* @Description 查询注册用户的总量与增量新方法
* @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);
List<TotalAndIncrResultDTO> selectResiTotalAndIncrByGridIds(@Param("regOrPartiFlag") String regOrPartiFlag, @Param("gridIds") Set<String> gridIds, @Param("targetDate") Date targetDate, @Param("startDate") Date startDate);
/**
* @param
@ -54,13 +55,13 @@ public interface UserDao {
CommonTotalAndIncCountResultDTO selectPartyTotalAndIncr(@Param("userIds") List<String> userIds, @Param("incrUserIds") List<String> incrUserIds, @Param("targetDate") Date targetDate);
/**
* @Description 查询党员的总量与增量新方法
* @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);
List<PartyTotalAndIncrResultDTO> selectPartyTotalAndIncrNew(@Param("targetDate") Date targetDate, @Param("regOrPartiFlag") String regOrPartiFlag, @Param("startDate") Date startDate);
/**
* @param
@ -72,7 +73,7 @@ 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 查询热心居民的总量与增量新方法
* @Description 查询热心居民的总量与增量新方法
* @Param userIds 总注册用户
* @Param incrUserIds 增长注册用户
* @Param gridIds 网格IDS
@ -81,7 +82,7 @@ public interface UserDao {
* @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("targetDate") Date targetDate, @Param("startDate") Date startDate, @Param("incrMonthlyUserIds") List<String> incrMonthlyUserIds);
/**
* @param
@ -102,7 +103,7 @@ public interface UserDao {
List<String> selectTotalUserIds(@Param("regOrPartiFlag") String regOrPartiFlag, @Param("gridIds") Set<String> gridIds, @Param("targetDate") Date targetDate);
/**
* @Description 查询指定网格范围下单位时间内新增的注册用户Id新方法
* @Description 查询指定网格范围下单位时间内新增的注册用户Id新方法
* @Param regOrPartiFlag
* @Param gridIds
* @Param targetDate
@ -110,10 +111,10 @@ public interface UserDao {
* @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);
@Param("startDate") Date startDate);
/**
* @Description 查询指定网格范围下单位时间内全部的注册用户Id新方法
* @Description 查询指定网格范围下单位时间内全部的注册用户Id新方法
* @Param regOrPartiFlag
* @Param gridIds
* @Param targetDate
@ -141,7 +142,7 @@ public interface UserDao {
Integer selectResiIncrWithinTimeRange(@Param("regOrPartiFlag") String regOrPartiFlag, @Param("gridIds") Set<String> gridIds, @Param("startDate") Date startDate, @Param("endDate") Date endDate);
/**
* @Description 查询指定时间范围内注册/参与用户增量新方法
* @Description 查询指定时间范围内注册/参与用户增量新方法
* @Param regOrPartiFlag
* @Param gridIds
* @Param startDate
@ -266,5 +267,7 @@ public interface UserDao {
List<MidPatrolDetailResult> getPatrolDetailList(MidPatrolFormDTO formDTO);
List<String> filterUserIds(@Param("userIds") List<String> userIds, @Param("roleKey") String roleKey);
List<PatrolRoutineWorkResult> selectRoutineWorkListByDateId(@Param("customerId") String customerId, @Param("dateId") String dateId);
}

9
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/stats/FactVolunteerServiceDailyEntity.java

@ -43,6 +43,11 @@ public class FactVolunteerServiceDailyEntity extends BaseEpmetEntity {
*/
private String customerId;
/**
* 网格ID
*/
private String gridId;
/**
* yyyyMMdd
*/
@ -82,5 +87,9 @@ public class FactVolunteerServiceDailyEntity extends BaseEpmetEntity {
* 居民服务总次数
*/
private Integer resiServiceTotal;
private String pid;
private String pids;
}

5
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/user/StatsStaffPatrolRecordDailyEntity.java

@ -123,5 +123,10 @@ public class StatsStaffPatrolRecordDailyEntity extends BaseEpmetEntity {
*/
private String latestPatrolStatus;
/**
* 例行工作次数
*/
private Integer routineWorkCount;
}

8
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/model/ParseIndexExcelResult.java

@ -39,8 +39,12 @@ public class ParseIndexExcelResult implements Serializable {
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
ParseIndexExcelResult that = (ParseIndexExcelResult) o;
return indexCode.equals(that.indexCode) &&
indexName.equals(that.indexName) &&

47
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/impl/BizDataStatsServiceImpl.java

@ -9,6 +9,7 @@ import com.epmet.constant.ProjectConstant;
import com.epmet.dto.ProjectDTO;
import com.epmet.dto.extract.form.BizDataFormDTO;
import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO;
import com.epmet.dto.result.PatrolRoutineWorkResult;
import com.epmet.dto.user.result.CustomerGridStaffDTO;
import com.epmet.dto.user.result.CustomerStaffDTO;
import com.epmet.dto.user.result.StaffPatrolRecordResult;
@ -135,25 +136,29 @@ public class BizDataStatsServiceImpl implements BizDataStatsService {
//获取昨日的立项项目数
List<ProjectDTO> yesterdayProjectList = projectService.selectProjectListByDateId(formDTO.getCustomerId(), formDTO.getDateId(), ProjectConstant.PROJECT_ORIGIN_AGENCY);
//获取昨日的例行工作数据
List<PatrolRoutineWorkResult> yesterdayWorkList = userService.selectRoutineWorkListByDateId(formDTO.getCustomerId(), formDTO.getDateId());
//遍历网格员 设置其 巡查次数 巡查时常 上报项目数
yesterdayPatrolList.forEach(patrolRecord -> {
String key = patrolRecord.getGrid().concat(patrolRecord.getStaffId());
StatsStaffPatrolRecordDailyDTO patrolRecordDailyDTO = yesterdayStatsMap.get(key);
if (patrolRecordDailyDTO != null) {
long total = (patrolRecord.getPatrolEndTime().getTime() - patrolRecord.getPatrolStartTime().getTime()) / 1000;
if (patrolRecordDailyDTO.getTotalTime() == null) {
patrolRecordDailyDTO.setTotalTime(NumConstant.ZERO);
}
patrolRecordDailyDTO.setTotalTime(patrolRecordDailyDTO.getTotalTime() + (int) total);
if (patrolRecordDailyDTO.getPatrolTotal() == null) {
patrolRecordDailyDTO.setPatrolTotal(NumConstant.ZERO);
}
patrolRecordDailyDTO.setPatrolTotal(patrolRecordDailyDTO.getPatrolTotal() + NumConstant.ONE);
//如果巡查记录时间小于统计里的最新的时间 则更新
if (patrolRecordDailyDTO.getLatestPatrolTime() == null || patrolRecordDailyDTO.getLatestPatrolTime().getTime() < patrolRecord.getPatrolStartTime().getTime()) {
patrolRecordDailyDTO.setLatestPatrolTime(patrolRecord.getPatrolStartTime());
patrolRecordDailyDTO.setLatestPatrolStatus(patrolRecord.getStatus());
}
if (patrolRecordDailyDTO == null) {
return;
}
long total = (patrolRecord.getPatrolEndTime().getTime() - patrolRecord.getPatrolStartTime().getTime()) / NumConstant.ONE_THOUSAND;
if (patrolRecordDailyDTO.getTotalTime() == null) {
patrolRecordDailyDTO.setTotalTime(NumConstant.ZERO);
}
patrolRecordDailyDTO.setTotalTime(patrolRecordDailyDTO.getTotalTime() + (int) total);
if (patrolRecordDailyDTO.getPatrolTotal() == null) {
patrolRecordDailyDTO.setPatrolTotal(NumConstant.ZERO);
}
patrolRecordDailyDTO.setPatrolTotal(patrolRecordDailyDTO.getPatrolTotal() + NumConstant.ONE);
//如果巡查记录时间小于统计里的最新的时间 则更新
if (patrolRecordDailyDTO.getLatestPatrolTime() == null || patrolRecordDailyDTO.getLatestPatrolTime().getTime() < patrolRecord.getPatrolStartTime().getTime()) {
patrolRecordDailyDTO.setLatestPatrolTime(patrolRecord.getPatrolStartTime());
patrolRecordDailyDTO.setLatestPatrolStatus(patrolRecord.getStatus());
}
});
//填充项目数
@ -171,10 +176,19 @@ public class BizDataStatsServiceImpl implements BizDataStatsService {
return;
}
recordDailyDTO.setReportProjectCount(recordDailyDTO.getReportProjectCount() + 1);
recordDailyDTO.setReportProjectCount(recordDailyDTO.getReportProjectCount() + NumConstant.ONE);
}
});
});
yesterdayWorkList.forEach(work->{
String key = work.getGridId().concat(work.getUserId());
StatsStaffPatrolRecordDailyDTO patrolRecordDailyDTO = yesterdayStatsMap.get(key);
if (patrolRecordDailyDTO == null){
return;
}
patrolRecordDailyDTO.setRoutineWorkCount(patrolRecordDailyDTO.getRoutineWorkCount() + NumConstant.ONE);
});
Integer effectRow = statsStaffPatrolService.delAndInsertBatch(formDTO, insertList);
log.debug("initStaffPatrolStats insert rows:{}", effectRow);
@ -234,6 +248,7 @@ public class BizDataStatsServiceImpl implements BizDataStatsService {
record.setPatrolTotal(NumConstant.ZERO);
record.setLatestPatrolStatus("end");
record.setReportProjectCount(NumConstant.ZERO);
record.setRoutineWorkCount(NumConstant.ZERO);
record.setSourceType("internal");
record.setSourceCustomerId(record.getCustomerId());

4
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/GroupExtractServiceImpl.java

@ -98,7 +98,9 @@ public class GroupExtractServiceImpl implements GroupExtractService {
for(Iterator<FactOriginGroupMainDailyDTO> iter = originGroupData.iterator();
iter.hasNext();){
FactOriginGroupMainDailyDTO pointer = iter.next();
if(null == gridMap.get(pointer.getGridId()))iter.remove();
if(null == gridMap.get(pointer.getGridId())) {
iter.remove();
}
}
//记录全量中的垃圾数

4
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/ProjectExtractServiceImpl.java

@ -513,7 +513,9 @@ public class ProjectExtractServiceImpl implements ProjectExtractService {
public void projectProcessCostTimeDataCompensation() {
List<String> customers = dimCustomerService.getAllCustomerId();
if(CollectionUtils.isEmpty(customers)) return ;
if(CollectionUtils.isEmpty(customers)) {
return ;
}
customers.forEach(local -> {
// projectProcessService.getProjectPeriod(true, local,null);
});

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

@ -218,7 +218,9 @@ public class IndexCalculateServiceImpl implements IndexCalculateService {
return false;
}
customerIds = externalCustomerIds.getData();
}else customerIds.add(formDTO.getCustomerId());
}else {
customerIds.add(formDTO.getCustomerId());
}
List<String> monthIds = new ArrayList<>();
if (StringUtils.isNotEmpty(formDTO.getStartMonth()) && StringUtils.isNotEmpty(formDTO.getEndMonth())){
monthIds = DateUtils.getMonthBetween(formDTO.getStartMonth(),formDTO.getEndMonth());
@ -227,7 +229,9 @@ public class IndexCalculateServiceImpl implements IndexCalculateService {
if (StringUtils.isEmpty(formDTO.getMonthId())){
// 默认上月
monthIds.add(DimIdGenerator.getMonthDimId(DateUtils.addDateMonths(new Date(), -1)));
}else monthIds.add(formDTO.getMonthId());
}else {
monthIds.add(formDTO.getMonthId());
}
}
List<String> finalMonthIds = monthIds;
customerIds.forEach(customerId -> {

4
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenDifficultyDataServiceImpl.java

@ -46,7 +46,9 @@ public class ScreenDifficultyDataServiceImpl extends BaseServiceImpl<ScreenDiffi
@Override
public List<String> selectExistedInfo(String customerId) {
if (baseDao.selectCountByCustomerId(customerId) > NumConstant.ZERO) return baseDao.selectClosedProjectId(customerId);
if (baseDao.selectCountByCustomerId(customerId) > NumConstant.ZERO) {
return baseDao.selectClosedProjectId(customerId);
}
return null;
}

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/heart/HeartDemandService.java

@ -11,5 +11,5 @@ import java.util.List;
*@Date 2021/12/8
*/
public interface HeartDemandService {
List<DemandServiceCountResultDTO> listDemandServeTimesPage(String customerId, Date endTime, int serviceCountPageNo, int serviceCountPageSize);
List<DemandServiceCountResultDTO> listDemandServeTimesPage(String customerId, String gridId, Date endTime, int serviceCountPageNo, int serviceCountPageSize);
}

4
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/heart/impl/HeartDemandServiceImpl.java

@ -29,11 +29,11 @@ public class HeartDemandServiceImpl implements HeartDemandService {
private IcUserDemandServiceDao demandServiceDao;
@Override
public List<DemandServiceCountResultDTO> listDemandServeTimesPage(String customerId, Date endTime, int serviceCountPageNo, int serviceCountPageSize) {
public List<DemandServiceCountResultDTO> listDemandServeTimesPage(String customerId, String gridId, Date endTime, int serviceCountPageNo, int serviceCountPageSize) {
return PageHelper.startPage(serviceCountPageNo, serviceCountPageSize).doSelectPage(new ISelect() {
@Override
public void doSelect() {
demandServiceDao.listDemandServeTimes(customerId, endTime, "volunteer");
demandServiceDao.listDemandServeTimes(customerId, gridId, endTime, "volunteer");
}
});
}

83
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DemandServiceImpl.java

@ -1,11 +1,16 @@
package com.epmet.service.impl;
import com.epmet.commons.tools.constant.EpmetRoleKeyConstant;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.dto.CustomerGridDTO;
import com.epmet.dto.form.CustomerGridFormDTO;
import com.epmet.dto.heart.result.DemandServiceCountResultDTO;
import com.epmet.entity.crm.CustomerEntity;
import com.epmet.entity.heart.VolunteerInfoEntity;
import com.epmet.entity.stats.FactVolunteerServiceDailyEntity;
import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.service.DemandService;
import com.epmet.service.crm.CustomerService;
import com.epmet.service.heart.HeartDemandService;
@ -27,7 +32,7 @@ import java.util.stream.Collectors;
* @Version 1.0
*/
@Service
public class DemandServiceImpl implements DemandService {
public class DemandServiceImpl implements DemandService, ResultDataResolver {
@Autowired
private HeartDemandService heartDemandService;
@ -37,12 +42,15 @@ public class DemandServiceImpl implements DemandService {
@Autowired
private UserService userService;
@Autowired
private DemandStatsService demandStatsService;
@Autowired
private CustomerService customerService;
@Autowired
private GovOrgOpenFeignClient govOrgOpenFeignClient;
@Override
public void statsVolunteerDemandServicesDaily(String customerId) {
@ -50,7 +58,7 @@ public class DemandServiceImpl implements DemandService {
Date now = new Date();
Date today = DateUtils.integrate(now, "yyyy-MM-dd");
Date yestoday = DateUtils.addDateDays(today, -1);
if (StringUtils.isNotBlank(customerId)) {
// 只计算单个客户
clearOldDatas(Arrays.asList(customerId), yestoday);
@ -67,7 +75,8 @@ public class DemandServiceImpl implements DemandService {
/**
* 清理旧数据
* @param targetDate 要清理哪天的数据
*
* @param targetDate 要清理哪天的数据
* @param customerIds 要清理哪些客户的
*/
private void clearOldDatas(List<String> customerIds, Date targetDate) {
@ -80,12 +89,44 @@ public class DemandServiceImpl implements DemandService {
/**
* 统计单个客户的志愿者服务情况
*
* @param customerId 客户ID
* @param endTime 统计截止时间(<endTime)
* @param endTime 统计截止时间(<endTime)
*/
private void statsVolunteerDemandServicesDaily4Customer(String customerId, Date endTime, Date belongTime) {
// 一.将客户下所有志愿者,按照网格ID,放到map中去
// 网格ID和志愿者列表。key:网格id;value:志愿者列表
HashMap<String, List<VolunteerInfoEntity>> gridIdAndVolunteers = new HashMap<>();
heartVolunteerService.listVolunteers(customerId, endTime).forEach(v -> {
String volunteerGridId = v.getGridId();
if (StringUtils.isNotBlank(volunteerGridId)) {
if (!gridIdAndVolunteers.containsKey(volunteerGridId)) {
gridIdAndVolunteers.put(volunteerGridId, new ArrayList<>());
}
gridIdAndVolunteers.get(volunteerGridId).add(v);
}
});
// 2.按网格分别统计,且持久化
for (Map.Entry<String, List<VolunteerInfoEntity>> entry : gridIdAndVolunteers.entrySet()) {
statsVolunteerDemandServicesDaily4Grid(customerId, entry.getKey(), endTime, entry.getValue(), belongTime);
}
}
/**
* 按日统计网格需求服务数据
* @param customerId
* @param gridId
* @param endTime 统计截止时间
* @param volunteers 志愿者volunteerInfo列表
* @param belongTime 该次统计要归属到哪一天即createTime
* @return 统计结果entity以备他用
*/
private FactVolunteerServiceDailyEntity statsVolunteerDemandServicesDaily4Grid(String customerId, String gridId, Date endTime, List<VolunteerInfoEntity> volunteers, Date belongTime) {
// 1.志愿者分流为党员志愿者&普通居民志愿者
Integer volunteerTotalCount = 0;
Integer volunteerTotalCount = volunteers.size();
// 党员志愿者数量
Integer partymemberVolunteerCount = 0;
// 居民志愿者数量
@ -94,15 +135,13 @@ public class DemandServiceImpl implements DemandService {
// 党员志愿者用户id列表
List<String> partymemberVolunteerUserIds = new ArrayList<>(16);
List<VolunteerInfoEntity> volunteers = heartVolunteerService.listVolunteers(customerId, endTime);
volunteerTotalCount = volunteers.size();
//--------------------------------【以上是结果数据变量】------------------------------------------
// 分片开始下标
int shardingStartIndex = 0;
// 分片大小(条数)
int shardingSize = 100;
// 分片去确定党员身份,防止in条件过大
while (true) {
int realShardingSize = Math.min(shardingSize, volunteerTotalCount - shardingStartIndex);
@ -141,7 +180,7 @@ public class DemandServiceImpl implements DemandService {
while (true) {
// 取出每一个服务者的服务次数
List<DemandServiceCountResultDTO> damendServeTimes = heartDemandService.listDemandServeTimesPage(customerId, endTime, serviceCountPageNo, serviceCountPageSize);
List<DemandServiceCountResultDTO> damendServeTimes = heartDemandService.listDemandServeTimesPage(customerId, gridId, endTime, serviceCountPageNo, serviceCountPageSize);
for (DemandServiceCountResultDTO damendServiceTimes : damendServeTimes) {
String serverId = damendServiceTimes.getServerId();
@ -158,11 +197,12 @@ public class DemandServiceImpl implements DemandService {
}
totalDemandServeTimes = partymemberDemandServeTimes + resiDemandServeTimes;
// 3.持久化
// 3.组装entity数据返回,待存储
FactVolunteerServiceDailyEntity insert = new FactVolunteerServiceDailyEntity();
insert.setDateId(DimIdGenerator.getDateDimId(belongTime));
insert.setCustomerId(customerId);
insert.setGridId(gridId);
insert.setMonthId(DimIdGenerator.getMonthDimId(belongTime));
insert.setPartyServiceTotal(partymemberDemandServeTimes);
insert.setServiceTotal(totalDemandServeTimes);
@ -171,6 +211,19 @@ public class DemandServiceImpl implements DemandService {
insert.setResiTotal(resiVolunteerCount);
insert.setVolunteerTotal(volunteerTotalCount);
CustomerGridFormDTO gridForm = new CustomerGridFormDTO();
gridForm.setGridId(gridId);
String errorMsg = "【志愿者服务按日统计】查询网格基本信息失败";
CustomerGridDTO gridInfo = getResultDataOrThrowsException(govOrgOpenFeignClient.getGridBaseInfoByGridId(gridForm), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), errorMsg, errorMsg);
Optional.ofNullable(gridInfo).ifPresent(gi -> {
insert.setPid(gi.getPid());
insert.setPids(gi.getPids());
});
// 持久化
demandStatsService.addVolunteerServiceDaily(insert);
return insert;
}
}

20
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/impl/ProjectProcessServiceImpl.java

@ -139,9 +139,13 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao
*/
@Override
public void updateProjectStatus(List<ScreenProjectDataDTO> list,String dateId,String customerId) {
if(CollectionUtils.isEmpty(list)) return;
if(CollectionUtils.isEmpty(list)) {
return;
}
List<ProjectProcessDTO> closedInfo = baseDao.selectClosedProjectOnAppointedDay(customerId, dateId);
if(CollectionUtils.isEmpty(closedInfo)) return;
if(CollectionUtils.isEmpty(closedInfo)) {
return;
}
list = list.stream().flatMap(target -> closedInfo.stream().filter(closedCase -> StringUtils.equals(closedCase.getProjectId(),target.getProjectId())).map(
merge -> {
@ -161,9 +165,13 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao
*/
@Override
public void updateProjectCloseTime(List<ScreenProjectDataDTO> list) {
if(CollectionUtils.isEmpty(list)) return;
if(CollectionUtils.isEmpty(list)) {
return;
}
List<ProjectProcessDTO> closedInfo = baseDao.selectClosedProjectByProjectIds(list.stream().map(ScreenProjectDataDTO::getProjectId).distinct().collect(Collectors.toList()));
if(CollectionUtils.isEmpty(closedInfo)) return;
if(CollectionUtils.isEmpty(closedInfo)) {
return;
}
list = list.stream().flatMap(target -> closedInfo.stream().filter(closedCase -> StringUtils.equals(closedCase.getProjectId(),target.getProjectId())).map(
merge -> {
@ -186,7 +194,9 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao
@Override
public List<ScreenProjectProcessDTO> buildNewScreenProjectProcessData(String customerId, String dateId, boolean ifRanged, String projectId) {
List<ScreenProjectProcessDTO> processes = baseDao.selectProjectProcessAndDirection(customerId, ifRanged ? null : dateId, dateId, projectId);
if(CollectionUtils.isEmpty(processes)) return null;
if(CollectionUtils.isEmpty(processes)) {
return null;
}
return processes.stream().map(target -> {
List<ProjectStaffDTO> points = target.getPoints();
if(!CollectionUtils.isEmpty(points)){

12
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/impl/ProjectServiceImpl.java

@ -98,7 +98,9 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
@Override
public Integer getOvertimeProjectByParameter(String customerId) {
String parameter = baseDao.selectParameterValueByKey(customerId);
if(StringUtils.isBlank(parameter)) parameter = baseDao.selectParameterValueByKey("default");
if(StringUtils.isBlank(parameter)) {
parameter = baseDao.selectParameterValueByKey("default");
}
return StringUtils.isBlank(parameter) ? NumConstant.FIVE : Integer.parseInt(parameter);
}
@ -136,9 +138,13 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
*/
@Override
public Map<String, Set<String>> getProjectCategory(List<String> projectIds) {
if(CollectionUtils.isEmpty(projectIds)) return null;
if(CollectionUtils.isEmpty(projectIds)) {
return null;
}
List<ProjectCategoryDTO> categories = baseDao.selectProjectCategory(projectIds);
if(CollectionUtils.isEmpty(categories)) return null;
if(CollectionUtils.isEmpty(categories)) {
return null;
}
Map<String, Set<String>> map = new HashMap<>();
Map<String, List<ProjectCategoryDTO>> projectMap = categories.stream().collect(Collectors.groupingBy(ProjectCategoryDTO::getProjectId));
projectMap.forEach((k,v) -> {

6
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/DimTopicStatusServiceImpl.java

@ -66,7 +66,9 @@ public class DimTopicStatusServiceImpl extends BaseServiceImpl<DimTopicStatusDao
private QueryWrapper<DimTopicStatusEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
String delFlag = (String)params.get(FieldConstant.DEL_FLAG_HUMP);
if(StringUtils.isBlank(delFlag)) delFlag = NumConstant.ZERO_STR;
if(StringUtils.isBlank(delFlag)) {
delFlag = NumConstant.ZERO_STR;
}
QueryWrapper<DimTopicStatusEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
@ -101,4 +103,4 @@ public class DimTopicStatusServiceImpl extends BaseServiceImpl<DimTopicStatusDao
baseDao.deleteBatchIds(Arrays.asList(ids));
}
}
}

4
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/ScreenCentralZoneDataExtractServiceImpl.java

@ -77,7 +77,9 @@ public class ScreenCentralZoneDataExtractServiceImpl implements ScreenCentralZon
if(DateUtils.getBeforeNDay(NumConstant.ONE).equals(dimId)){
result = factRegUserGridDailyDao.selectUserAndPartymemberByOrgLevel(ORG_LEVEL_AGENCY,customerId,DateUtils.getBeforeNDay(NumConstant.TWO));
}
if(null == result) result = new LinkedList<>();
if(null == result) {
result = new LinkedList<>();
}
}
// 网格级别
List<ScreenUserTotalDataEntity> gridUserResult =

4
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/topic/impl/TopicStatisticalServiceImpl.java

@ -52,7 +52,9 @@ public class TopicStatisticalServiceImpl implements TopicStatisticalService {
@Override
@Transactional(rollbackFor = Exception.class)
public void insertUniquely(TopicStatisticalData data) {
if(null == data) return;
if(null == data) {
return;
}
if(StringUtils.isBlank(data.getDateId()) || StringUtils.isBlank(data.getMonthId())){
logger.warn("缺失重要参数:dateId或monthId");

20
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/impl/TopicServiceImpl.java

@ -149,9 +149,13 @@ public class TopicServiceImpl implements TopicService {
*/
@Override
public Map<String,List<ScreenDifficultyImgDataEntity>> getTopicImgs(List<ProjectSourceMapFormDTO> list) {
if(CollectionUtils.isEmpty(list)) return Collections.EMPTY_MAP;
if(CollectionUtils.isEmpty(list)) {
return Collections.EMPTY_MAP;
}
List<ScreenDifficultyImgDataEntity> imgs = topicDao.selectTopicImgs(list);
if(CollectionUtils.isEmpty(imgs)) return Collections.EMPTY_MAP;
if(CollectionUtils.isEmpty(imgs)) {
return Collections.EMPTY_MAP;
}
//key -> topicId | value -> projectId
Map<String,String> projectTopicMap = list.stream().collect(Collectors.toMap(ProjectSourceMapFormDTO :: getSourceId,ProjectSourceMapFormDTO :: getProjectId,(o,n)->n));
//key -> topicId
@ -179,9 +183,13 @@ public class TopicServiceImpl implements TopicService {
*/
@Override
public Map<String, String> getTopicContent(List<ProjectSourceMapFormDTO> list) {
if(CollectionUtils.isEmpty(list)) return Collections.EMPTY_MAP;
if(CollectionUtils.isEmpty(list)) {
return Collections.EMPTY_MAP;
}
List<TopicContentResultDTO> contents = topicDao.selectTopicContent(list);
if(CollectionUtils.isEmpty(contents)) return Collections.EMPTY_MAP;
if(CollectionUtils.isEmpty(contents)) {
return Collections.EMPTY_MAP;
}
Map<String,String> topicContentMap = contents.stream().collect(Collectors.toMap(TopicContentResultDTO :: getTopicId,TopicContentResultDTO::getContent));
//key -> topicId | value -> projectId
Map<String,String> projectTopicMap = list.stream().collect(Collectors.toMap(ProjectSourceMapFormDTO :: getSourceId,ProjectSourceMapFormDTO :: getProjectId,(o,n)->n));
@ -227,7 +235,9 @@ public class TopicServiceImpl implements TopicService {
@Override
public List<ScreenProjectImgDataDTO> buildNewScreenProjectImgData(List<ScreenProjectDataDTO> list) {
List<ScreenProjectImgDataDTO> imgs = topicDao.initNewScreenProjectImgData(list.get(NumConstant.ZERO).getCustomerId(), list);
if(CollectionUtils.isEmpty(imgs)) return null;
if(CollectionUtils.isEmpty(imgs)) {
return null;
}
return imgs.stream().flatMap(img -> list.stream().filter(project -> StringUtils.equals(img.getTopicId(),project.getTopicId())).map(
match -> {
ScreenProjectImgDataDTO matchedImg

11
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/UserService.java

@ -4,6 +4,7 @@ import com.epmet.dto.AgencySubTreeDto;
import com.epmet.dto.extract.form.GridHeartedFormDTO;
import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO;
import com.epmet.dto.org.result.OrgStaffDTO;
import com.epmet.dto.result.PatrolRoutineWorkResult;
import com.epmet.dto.screen.ScreenProjectDataDTO;
import com.epmet.dto.stats.form.GmUploadEventFormDTO;
import com.epmet.dto.stats.user.result.UserStatisticalData;
@ -146,6 +147,14 @@ public interface UserService {
List<MidPatrolRecordResult> getPatrolRecordList(MidPatrolFormDTO formDTO);
List<MidPatrolDetailResult> getPatrolDetailList(MidPatrolFormDTO formDTO);
List<String> filterUserIds(List<String> userIds, String roleKey);
/**
* desc:根据客户id和日期获取 例行工作数据
* @param customerId
* @param dateId
* @return
*/
List<PatrolRoutineWorkResult> selectRoutineWorkListByDateId(String customerId, String dateId);
}

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/StatsStaffPatrolServiceImpl.java

@ -13,6 +13,7 @@ import com.epmet.service.user.StatsStaffPatrolService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@ -30,6 +31,7 @@ public class StatsStaffPatrolServiceImpl implements StatsStaffPatrolService {
@Autowired
private StatsStaffPatrolRecordDailyDao statsStaffPatrolRecordDailyDao;
@Transactional(rollbackFor = Exception.class)
@Override
public Integer delAndInsertBatch(StaffPatrolStatsFormDTO formDTO, List<StatsStaffPatrolRecordDailyDTO> insertList) {
int delete = statsStaffPatrolRecordDailyDao.deleteInternal(formDTO);

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

@ -13,6 +13,7 @@ import com.epmet.dto.extract.form.GridHeartedFormDTO;
import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO;
import com.epmet.dto.extract.result.UserPartyResultDTO;
import com.epmet.dto.org.result.OrgStaffDTO;
import com.epmet.dto.result.PatrolRoutineWorkResult;
import com.epmet.dto.screen.ScreenProjectDataDTO;
import com.epmet.dto.stats.form.GmUploadEventFormDTO;
import com.epmet.dto.stats.user.*;
@ -1113,4 +1114,16 @@ public class UserServiceImpl implements UserService {
public List<String> filterUserIds(List<String> userIds, String roleKey) {
return userDao.filterUserIds(userIds, roleKey);
}
/**
* desc:根据客户id和日期获取 例行工作数据
*
* @param customerId
* @param dateId
* @return
*/
@Override
public List<PatrolRoutineWorkResult> selectRoutineWorkListByDateId(String customerId, String dateId) {
return userDao.selectRoutineWorkListByDateId(customerId, dateId);
}
}

4
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/support/normalizing/ScoreCalculator.java

@ -168,7 +168,9 @@ public abstract class ScoreCalculator<T> {
*/
protected BigDecimal calcuteCoefficient(BigDecimal min, BigDecimal max) {
BigDecimal fenmu = max.subtract(min);
if (fenmu.compareTo(BigDecimal.ZERO)==0)return new BigDecimal(0);
if (fenmu.compareTo(BigDecimal.ZERO)==0) {
return new BigDecimal(0);
}
BigDecimal fenzi = maxScore.subtract(minScore);
BigDecimal divide = fenzi.divide(fenmu, MathContext.DECIMAL32);
return divide;

14
epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.27__volunteer_service_daily_add_gridid.sql

@ -0,0 +1,14 @@
-- 发布前执行
alter table fact_volunteer_service_daily add column GRID_ID varchar(64) not null comment '网格ID' after CUSTOMER_ID;
alter table fact_volunteer_service_daily add column PID varchar(64) default '' comment 'pid网格父级ID' after RESI_SERVICE_TOTAL;
alter table fact_volunteer_service_daily add column PIDS varchar(255) default '' comment 'pid网格父级ID路径,包含PID' after PID;
-- 发布后执行
delete from fact_volunteer_service_daily;
alter table fact_volunteer_service_daily drop key uni_vsd;
alter table fact_volunteer_service_daily
add constraint uni_vsd
unique (GRID_ID, DATE_ID, DEL_FLAG);

2
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/heart/IcUserDemandServiceDao.xml

@ -24,11 +24,13 @@
select service.SERVER_ID, SERVICE_TYPE, count(1) as SERVE_TIMES
from ic_user_demand_rec damend
inner join ic_user_demand_service service on (damend.ID = service.DEMAND_REC_ID and service.DEL_FLAG = 0)
inner join volunteer_info v on (service.SERVER_ID = v.USER_ID and v.DEL_FLAG = 0)
where damend.DEL_FLAG = 0
and damend.STATUS = 'finished'
and damend.CUSTOMER_ID = #{customerId}
and service.SERVICE_END_TIME <![CDATA[<]]> #{endTime}
and service.SERVICE_TYPE = #{serviceType}
and v.GRID_ID = #{gridId}
group by service.SERVER_ID, SERVICE_TYPE
</select>
</mapper>

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

Loading…
Cancel
Save