Browse Source

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

dev
wangxianzhang 3 years ago
parent
commit
986c9c4e72
  1. 2
      epmet-admin/epmet-admin-server/deploy/docker-compose-dev.yml
  2. 34
      epmet-admin/epmet-admin-server/src/main/resources/db/migration/V0.0.21__policy_dict.sql
  3. 28
      epmet-auth/src/main/java/com/epmet/controller/GovLoginController.java
  4. 26
      epmet-auth/src/main/java/com/epmet/controller/ThirdLoginController.java
  5. 48
      epmet-auth/src/main/java/com/epmet/dto/form/GovWxmpEnteOrgByAccountFormDTO.java
  6. 43
      epmet-auth/src/main/java/com/epmet/dto/form/StaffOrgByAccountFormDTO.java
  7. 48
      epmet-auth/src/main/java/com/epmet/dto/form/ThirdStaffOrgByAccountFormDTO.java
  8. 47
      epmet-auth/src/main/java/com/epmet/dto/form/ThirdWxmpEnteOrgByAccountFormDTO.java
  9. 22
      epmet-auth/src/main/java/com/epmet/feign/EpmetUserFeignClient.java
  10. 9
      epmet-auth/src/main/java/com/epmet/feign/fallback/EpmetUserFeignClientFallback.java
  11. 23
      epmet-auth/src/main/java/com/epmet/service/GovLoginService.java
  12. 18
      epmet-auth/src/main/java/com/epmet/service/ThirdLoginService.java
  13. 87
      epmet-auth/src/main/java/com/epmet/service/impl/GovLoginServiceImpl.java
  14. 125
      epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java
  15. 5
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/OrgOrStaffMQMsg.java
  16. 16
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/Constant.java
  17. 2
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/NumConstant.java
  18. 1
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/DictTypeEnum.java
  19. 2
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java
  20. 2
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/page/PageData.java
  21. 52
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java
  22. 29
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisUtils.java
  23. 1
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/HouseInfoCache.java
  24. 37
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/StrUtil.java
  25. 8
      epmet-commons/epmet-commons-tools/src/main/resources/logback-base.xml
  26. 3
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/OrgConstant.java
  27. 77
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/ResisByPolicyRulesFormDTO.java
  28. 46
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/ResiByPolicyInfoResultDTO.java
  29. 25
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/OrgStatisticsFormDTO.java
  30. 24
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/MemberProjectInfoResultDTO.java
  31. 17
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/OrgCountDTO.java
  32. 25
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/OrgProjectDetailResultDTO.java
  33. 12
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/DataAggregatorOpenFeignClient.java
  34. 8
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/impl/DataAggregatorOpenFeignClientFallback.java
  35. 5
      epmet-module/data-aggregator/data-aggregator-server/pom.xml
  36. 128
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java
  37. 89
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/IcUserController.java
  38. 9
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java
  39. 39
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/IcResiUserDao.java
  40. 4
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StaffRoleDao.java
  41. 2
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerAgencyDao.java
  42. 24
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/IcHouseDao.java
  43. 13
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/IcNeighborhoodDao.java
  44. 7
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govproject/ProjectDao.java
  45. 40
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/MemberProjectInfoExcel.java
  46. 47
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/OrgProjectDetailExcel.java
  47. 21
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/ResisByPolicyExcel.java
  48. 50
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/ResiService.java
  49. 10
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java
  50. 157
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java
  51. 31
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java
  52. 55
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java
  53. 31
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java
  54. 242
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java
  55. 36
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/GovProjectService.java
  56. 56
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/impl/GovProjectServiceImpl.java
  57. 288
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/ResiServiceImpl.java
  58. 51
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml
  59. 82
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/IcResiUserDao.xml
  60. 42
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffRoleDao.xml
  61. 10
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerAgencyDao.xml
  62. 35
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/IcHouseDao.xml
  63. 15
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/IcNeighborhoodDao.xml
  64. 82
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govproject/ProjectDao.xml
  65. 4
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/constant/DataSourceConstant.java
  66. 7
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/basereport/form/EventInfoFormDTO.java
  67. 2
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/org/form/GridBaseInfoFormDTO.java
  68. 10
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/org/result/CustomerAgencyDTO.java
  69. 5
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/CustomerStaffDTO.java
  70. 20
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/GridUserInfoDTO.java
  71. 5
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/feign/DataStatisticalOpenFeignClient.java
  72. 5
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/feign/impl/DataStatisticalOpenFeignClientFallBack.java
  73. 5
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DataReportingController.java
  74. 3
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectDataDao.java
  75. 9
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/DataReportingService.java
  76. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/ScreenProjectDataService.java
  77. 15
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectDataServiceImpl.java
  78. 74
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java
  79. 3
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/FactAgencyUserHouseDailyServiceImpl.java
  80. 1
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/FactGridUserHouseDailyServiceImpl.java
  81. 1
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/FactNeighborhoodUserHouseDailyServiceImpl.java
  82. 9
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/FactUserHouseServiceImpl.java
  83. 80
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectDataDao.xml
  84. 11
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/org/CustomerGridDao.xml
  85. 8
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/org/StatsCustomerAgencyDao.xml
  86. 2
      epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/AreaCodeDTO.java
  87. 13
      epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/AreaCodeDetailFormDTO.java
  88. 76
      epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/result/CustomerTreeDTO.java
  89. 22
      epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/EpmetCommonServiceOpenFeignClient.java
  90. 10
      epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/fallback/EpmetCommonServiceOpenFeignClientFallback.java
  91. 28
      epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/AreaCodeController.java
  92. 18
      epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/dao/AreaCodeDao.java
  93. 10
      epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/AreaCodeService.java
  94. 321
      epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/AreaCodeServiceImpl.java
  95. 10
      epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/AreaCodeChildDao.xml
  96. 31
      epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/AreaCodeDao.xml
  97. 116
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/HeartAttachmentDTO.java
  98. 74
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPolicyCategoryDTO.java
  99. 77
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPolicyDTO.java
  100. 82
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPolicyRuleDTO.java

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

@ -9,7 +9,7 @@ services:
volumes:
- "/opt/epmet-cloud-logs/dev:/logs"
environment:
RUN_INSTRUCT: "java -Xms32m -Xmx200m -jar ../target/epmet-admin-server.jar"
RUN_INSTRUCT: "java -Xms32m -Xmx200m -jar ./epmet-admin.jar"
restart: "unless-stopped"
logging:
driver: local

34
epmet-admin/epmet-admin-server/src/main/resources/db/migration/V0.0.21__policy_dict.sql

@ -0,0 +1,34 @@
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 ('1549241609500921857', 'house_purpose', '房屋用途', '', 31, 0, 0, '1', '2022-07-19 11:55:58', '1', '2022-07-19 11:55:58');
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 ('1549241262669729794', 'house_type', '房屋类型', '楼房、平房、别墅', 30, 0, 0, '1', '2022-07-19 11:54:35', '1', '2022-07-19 11:54:35');
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 ('1548958559042969601', 'policy_level', '政策级别', '政策级别;与服务项目的政策级别一致', 29, 0, 0, '1', '2022-07-18 17:11:13', '1', '2022-07-19 11:10:42');
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 ('1548956290117443586', 'sql_query_type', 'sql查询条件', '目前应用于政策找人规则查询条件', 28, 0, 0, '1', '2022-07-18 17:02:12', '1', '2022-07-19 11:10:36');
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 ('1548956434175008770', 1548956290117443586, '等于', '=', '0', '等于', 1, 0, 0, '1', '2022-07-18 17:02:47', '1', '2022-07-18 17:02:47');
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 ('1548956518434381826', 1548956290117443586, '不等于', '!=', '0', '不等于', 2, 0, 0, '1', '2022-07-18 17:03:07', '1', '2022-07-18 17:03:07');
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 ('1548956603855577089', 1548956290117443586, '大于', '>', '0', '大于', 3, 0, 0, '1', '2022-07-18 17:03:27', '1', '2022-07-18 17:03: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 ('1548956681525698561', 1548956290117443586, '大于等于', '>=', '0', '大于等于', 4, 0, 0, '1', '2022-07-18 17:03:46', '1', '2022-07-18 17:03:46');
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 ('1548956755412557826', 1548956290117443586, '小于', '<', '0', '小于', 5, 0, 0, '1', '2022-07-18 17:04:03', '1', '2022-07-18 17:04:03');
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 ('1548956830482210818', 1548956290117443586, '小于等于', '<=', '0', '<=', 6, 0, 0, '1', '2022-07-18 17:04:21', '1', '2022-07-18 17:04:21');
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 ('1548956956554600450', 1548956290117443586, '包含', 'like', '0', '包含', 7, 0, 0, '1', '2022-07-18 17:04:51', '1', '2022-07-18 17:04:51');
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 ('1548957038305779714', 1548956290117443586, '不包含', 'not like', '0', '不包含', 8, 0, 0, '1', '2022-07-18 17:05:11', '1', '2022-07-18 17:05:11');
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 ('1548958784704913410', 1548958559042969601, '市级', '0', '0', '市级;政策级别ic_policy.POLICY_LEVEL', 1, 0, 0, '1', '2022-07-18 17:12:07', '1', '2022-07-18 17:12:07');
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 ('1548958823573528578', 1548958559042969601, '区级', '1', '0', '区级;政策级别ic_policy.POLICY_LEVEL', 2, 0, 0, '1', '2022-07-18 17:12:16', '1', '2022-07-18 17:12:16');
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 ('1548958887222091777', 1548958559042969601, '街道级', '2', '0', '街道级;政策级别ic_policy.POLICY_LEVEL', 3, 0, 0, '1', '2022-07-18 17:12:32', '1', '2022-07-18 17:12:32');
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 ('1549241348443246594', 1549241262669729794, '楼房', '1', '0', '房屋类型ic_house.houseType', 1, 0, 0, '1', '2022-07-19 11:54:56', '1', '2022-07-19 11:54:56');
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 ('1549241378726121473', 1549241262669729794, '平房', '2', '0', '房屋类型ic_house.houseType', 2, 0, 0, '1', '2022-07-19 11:55:03', '1', '2022-07-19 11:55:03');
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 ('1549241467490177025', 1549241262669729794, '别墅', '3', '0', '房屋类型ic_house.houseType', 3, 0, 0, '1', '2022-07-19 11:55:24', '1', '2022-07-19 11:55:24');
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 ('1549241664320475137', 1549241609500921857, '住宅', '1', '0', '房屋用途ic_house.purpose', 1, 0, 0, '1', '2022-07-19 11:56:11', '1', '2022-07-19 11:56:11');
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 ('1549241693034680321', 1549241609500921857, '商业', '2', '0', '房屋用途ic_house.purpose', 2, 0, 0, '1', '2022-07-19 11:56:18', '1', '2022-07-19 11:56: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 ('1549241720020832257', 1549241609500921857, '办公', '3', '0', '房屋用途ic_house.purpose', 3, 0, 0, '1', '2022-07-19 11:56:24', '1', '2022-07-19 11:56:24');
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 ('1549241750299512833', 1549241609500921857, '工业', '4', '0', '房屋用途ic_house.purpose', 4, 0, 0, '1', '2022-07-19 11:56:31', '1', '2022-07-19 11:56:31');
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 ('1549241808101216257', 1549241609500921857, '仓储', '5', '0', '房屋用途ic_house.purpose', 5, 0, 0, '1', '2022-07-19 11:56:45', '1', '2022-07-19 11:56:45');
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 ('1549241873729490946', 1549241609500921857, '商住混用', '6', '0', '房屋用途ic_house.purpose', 6, 0, 0, '1', '2022-07-19 11:57:01', '1', '2022-07-19 11:57:01');
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 ('1549241913411801089', 1549241609500921857, '其他', '7', '0', '房屋用途ic_house.purpose', 7, 0, 0, '1', '2022-07-19 11:57:10', '1', '2022-07-19 11:57:10');

28
epmet-auth/src/main/java/com/epmet/controller/GovLoginController.java

@ -83,6 +83,20 @@ public class GovLoginController {
return new Result<UserTokenResultDTO>().ok(userTokenResultDTO);
}
/**
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.result.UserTokenResultDTO>
* @Author zhy
* @Description 4选择组织进入首页
* @Date 2020/4/20 13:07
**/
@PostMapping(value = "/loginwxmp/enterorgbyaccount")
public Result<UserTokenResultDTO> enterOrgByAccount(@RequestBody GovWxmpEnteOrgByAccountFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO,GovWxmpEnteOrgByAccountFormDTO.AddUserShowGroup.class,GovWxmpEnteOrgByAccountFormDTO.AddUserInternalGroup.class);
UserTokenResultDTO userTokenResultDTO=govLoginService.enterOrgByAccount(formDTO);
return new Result<UserTokenResultDTO>().ok(userTokenResultDTO);
}
/**
* @param tokenDto
* @return com.epmet.commons.tools.utils.Result
@ -121,5 +135,19 @@ public class GovLoginController {
List<StaffOrgsResultDTO> staffOrgs = govLoginService.getMyOrgByPassword(formDTO);
return new Result<List<StaffOrgsResultDTO>>().ok(staffOrgs);
}
/**
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<java.util.List < com.epmet.dto.result.StaffOrgsResultDTO>>
* @author zhy
* @description 6账户密码获取组织
* @Date 2020/6/30 22:43
**/
@PostMapping(value = "/getmyorgbyaccount")
public Result<List<StaffOrgsResultDTO>> getMyOrgByAccount(@RequestBody StaffOrgByAccountFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, StaffOrgByAccountFormDTO.AddUserShowGroup.class, StaffOrgByAccountFormDTO.GetMyOrgByPassWordGroup.class);
List<StaffOrgsResultDTO> staffOrgs = govLoginService.getMyOrgByAccount(formDTO);
return new Result<List<StaffOrgsResultDTO>>().ok(staffOrgs);
}
}

26
epmet-auth/src/main/java/com/epmet/controller/ThirdLoginController.java

@ -63,6 +63,19 @@ public class ThirdLoginController {
return new Result<UserTokenResultDTO>().ok(userTokenResultDTO);
}
/**
* @param formDTO
* @return
* @Author zhy
* @Description 单客户-选择组织进入首页
**/
@PostMapping(value = "enterorgbyaccount")
public Result<UserTokenResultDTO> enterOrgByAccount(@RequestBody ThirdWxmpEnteOrgByAccountFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO,ThirdWxmpEnteOrgFormDTO.AddUserShowGroup.class,ThirdWxmpEnteOrgFormDTO.AddUserInternalGroup.class);
UserTokenResultDTO userTokenResultDTO=thirdLoginService.enterOrgByAccount(formDTO);
return new Result<UserTokenResultDTO>().ok(userTokenResultDTO);
}
/**
* @param formDTO
* @return
@ -89,6 +102,19 @@ public class ThirdLoginController {
return new Result<List<StaffOrgsResultDTO>>().ok(staffOrgs);
}
/**
* @param formDTO
* @return
* @author zhy
* @description 单客户-账号密码获取组织
**/
@PostMapping(value = "/getmyorgbyaccount")
public Result<List<StaffOrgsResultDTO>> getMyOrgByAccount(@RequestBody ThirdStaffOrgByAccountFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, StaffOrgByAccountFormDTO.AddUserShowGroup.class, StaffOrgByAccountFormDTO.GetMyOrgByPassWordGroup.class);
List<StaffOrgsResultDTO> staffOrgs = thirdLoginService.getMyOrgByAccount(formDTO);
return new Result<List<StaffOrgsResultDTO>>().ok(staffOrgs);
}
/**
* @param formDTO
* @return

48
epmet-auth/src/main/java/com/epmet/dto/form/GovWxmpEnteOrgByAccountFormDTO.java

@ -0,0 +1,48 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Description 选择组织进入首页入参Dto
* @Author yinzuomei
* @Date 2020/4/20 13:03
*/
@Data
public class GovWxmpEnteOrgByAccountFormDTO implements Serializable {
public interface AddUserInternalGroup {}
public interface AddUserShowGroup extends CustomerClientShowGroup {}
/**
* wxCode
*/
@NotBlank(message = "wxCode不能为空",groups = {AddUserInternalGroup.class})
private String wxCode;
/**
* 手机号
*/
@NotBlank(message = "账号不能为空",groups = {AddUserShowGroup.class})
private String userAccount;
/**
* 选择的组织所属的id
*/
@NotBlank(message = "客户id不能为空",groups = {AddUserInternalGroup.class})
private String customerId;
/**
* 选择的要进入的组织(根组织id)
*/
@NotBlank(message = "组织id不能为空",groups = {AddUserInternalGroup.class})
private String rootAgencyId;
/**
* desc:小程序appId
*/
private String appId;
}

43
epmet-auth/src/main/java/com/epmet/dto/form/StaffOrgByAccountFormDTO.java

@ -0,0 +1,43 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Description 手机验证码获取组织接口入参
* @Author zhy
* @Date 2020/4/18 10:38
*/
@Data
public class StaffOrgByAccountFormDTO implements Serializable {
private static final long serialVersionUID = 4193133227120225342L;
/**
* 添加用户操作的用户可见异常分组
* 该分组用于校验需要返回给前端错误信息提示的列需要继承CustomerClientShowGroup
* 返回错误码为8999提示信息为DTO中具体的列的校验注解message的内容
*/
public interface AddUserShowGroup extends CustomerClientShowGroup {
}
public interface GetMyOrgByPassWordGroup extends CustomerClientShowGroup {
}
public interface GetMyOrgByLoginWxmp extends CustomerClientShowGroup{}
/**
* 手机号
*/
@NotBlank(message = "手机号不能为空", groups = {AddUserShowGroup.class})
private String userAccount;
/**
* 验证码
*/
@NotBlank(message="验证码不能为空", groups = {GetMyOrgByLoginWxmp.class})
private String smsCode;
@NotBlank(message = "密码不能为空",groups ={GetMyOrgByPassWordGroup.class})
private String password;
}

48
epmet-auth/src/main/java/com/epmet/dto/form/ThirdStaffOrgByAccountFormDTO.java

@ -0,0 +1,48 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Description appId账号验证码获取组织-接口入参
* @Author zhy
*/
@Data
public class ThirdStaffOrgByAccountFormDTO implements Serializable {
private static final long serialVersionUID = 4193133227120225342L;
/**
* 添加用户操作的用户可见异常分组
* 该分组用于校验需要返回给前端错误信息提示的列需要继承CustomerClientShowGroup
* 返回错误码为8999提示信息为DTO中具体的列的校验注解message的内容
*/
public interface AddUserShowGroup extends CustomerClientShowGroup {
}
public interface GetMyOrgByPassWordGroup extends CustomerClientShowGroup {
}
public interface GetMyOrgByLoginWxmp extends CustomerClientShowGroup{}
/**
* 小程序appId
*/
@NotBlank(message = "appId不能为空", groups = {AddUserShowGroup.class})
private String appId;
/**
* 手机号
*/
@NotBlank(message = "账号不能为空", groups = {AddUserShowGroup.class})
private String userAccount;
/**
* 验证码
*/
@NotBlank(message="验证码不能为空", groups = {GetMyOrgByLoginWxmp.class})
private String smsCode;
@NotBlank(message = "密码不能为空",groups ={GetMyOrgByPassWordGroup.class})
private String password;
}

47
epmet-auth/src/main/java/com/epmet/dto/form/ThirdWxmpEnteOrgByAccountFormDTO.java

@ -0,0 +1,47 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Description 单客户-选择组织进入首页入参Dto
* @Author sun
*/
@Data
public class ThirdWxmpEnteOrgByAccountFormDTO implements Serializable {
public interface AddUserInternalGroup {}
public interface AddUserShowGroup extends CustomerClientShowGroup {}
/**
* wxCode
*/
@NotBlank(message = "wxCode不能为空",groups = {AddUserInternalGroup.class})
private String wxCode;
/**
* 手机号
*/
@NotBlank(message = "账号不能为空",groups = {AddUserShowGroup.class})
private String userAccount;
/**
* 选择的组织所属的id
*/
@NotBlank(message = "客户id不能为空",groups = {AddUserInternalGroup.class})
private String customerId;
/**
* 选择的要进入的组织(根组织id)
*/
@NotBlank(message = "组织id不能为空",groups = {AddUserInternalGroup.class})
private String rootAgencyId;
/**
* 客户appIdexJson文件中获取
*/
@NotBlank(message = "appId不能为空",groups = {AddUserInternalGroup.class})
private String appId;
}

22
epmet-auth/src/main/java/com/epmet/feign/EpmetUserFeignClient.java

@ -70,6 +70,17 @@ public interface EpmetUserFeignClient {
@GetMapping(value = "epmetuser/customerstaff/getcustsomerstaffbyphone/{mobile}")
Result<List<CustomerStaffDTO>> checkCustomerStaff(@PathVariable("mobile") String mobile);
/**
* @param account
* @return com.epmet.commons.tools.utils.Result
* @Author zhy
* @Description 根据账户查询政府端工作人员基本信息校验用户是否存在
* @Date 2020/4/18 14:03
**/
@GetMapping(value = "epmetuser/customerstaff/getcustsomerstaffbyaccount/{account}")
Result<List<CustomerStaffDTO>> checkCustomerStaffByAccount(@PathVariable("account") String account);
/**
* @param staffWechatFormDTO
* @return com.epmet.commons.tools.utils.Result
@ -100,6 +111,17 @@ public interface EpmetUserFeignClient {
@PostMapping(value = "epmetuser/customerstaff/getcustomerstaffinfo", consumes = MediaType.APPLICATION_JSON_VALUE)
Result<CustomerStaffDTO> getCustomerStaffInfo(@RequestBody CustomerStaffFormDTO customerStaffFormDTO);
/**
* @param customerStaffFormDTO
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.CustomerStaffDTO>
* @Author zhy
* @Description 根据手机号+客户id获取工作人员基本信息
* @Date 2020/4/20 14:16
**/
@PostMapping(value = "epmetuser/customerstaff/getcustomerstaffinfobyaccount", consumes = MediaType.APPLICATION_JSON_VALUE)
Result<CustomerStaffDTO> getCustomerStaffInfoByAccount(@RequestBody CustomerStaffByAccountFormDTO customerStaffFormDTO);
/**
* @param staffLoginHistoryFormDTO
* @return com.epmet.commons.tools.utils.Result

9
epmet-auth/src/main/java/com/epmet/feign/fallback/EpmetUserFeignClientFallback.java

@ -44,6 +44,10 @@ public class EpmetUserFeignClientFallback implements EpmetUserFeignClient {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "getCustsomerStaffByPhone", phone);
}
@Override
public Result<List<CustomerStaffDTO>> checkCustomerStaffByAccount(String account) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "getCustsomerStaffByAccount", account);
}
@Override
public Result saveStaffWechat(StaffWechatFormDTO staffWechatFormDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "saveStaffWechat", staffWechatFormDTO);
@ -59,6 +63,11 @@ public class EpmetUserFeignClientFallback implements EpmetUserFeignClient {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "getCustomerStaffInfo", customerStaffFormDTO);
}
@Override
public Result<CustomerStaffDTO> getCustomerStaffInfoByAccount(CustomerStaffByAccountFormDTO customerStaffFormDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "getCustomerStaffInfoByAccount", customerStaffFormDTO);
}
@Override
public Result saveStaffLoginRecord(StaffLoginAgencyRecordFormDTO staffLoginHistoryFormDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "saveStaffLoginRecord", staffLoginHistoryFormDTO);

23
epmet-auth/src/main/java/com/epmet/service/GovLoginService.java

@ -1,10 +1,7 @@
package com.epmet.service;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.form.GovWxmpEnteOrgFormDTO;
import com.epmet.dto.form.GovWxmpFormDTO;
import com.epmet.dto.form.SendSmsCodeFormDTO;
import com.epmet.dto.form.StaffOrgsFormDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.StaffOrgsResultDTO;
import com.epmet.dto.result.UserTokenResultDTO;
@ -52,6 +49,15 @@ public interface GovLoginService {
**/
UserTokenResultDTO enterOrg(GovWxmpEnteOrgFormDTO formDTO);
/**
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.result.UserTokenResultDTO>
* @Author zhy
* @Description 4选择组织进入首页
* @Date 2020/4/20 13:08
**/
UserTokenResultDTO enterOrgByAccount(GovWxmpEnteOrgByAccountFormDTO formDTO);
/**
* @return com.epmet.commons.tools.utils.Result
* @param tokenDto
@ -76,4 +82,13 @@ public interface GovLoginService {
* @Date 2020/6/30 22:43
**/
List<StaffOrgsResultDTO> getMyOrgByPassword(StaffOrgsFormDTO formDTO);
/**
* @return java.util.List<com.epmet.dto.result.StaffOrgsResultDTO>
* @param formDTO
* @author zhy
* @description 6账户密码获取组织
* @Date 2020/6/30 22:43
**/
List<StaffOrgsResultDTO> getMyOrgByAccount(StaffOrgByAccountFormDTO formDTO);
}

18
epmet-auth/src/main/java/com/epmet/service/ThirdLoginService.java

@ -36,6 +36,15 @@ public interface ThirdLoginService {
**/
UserTokenResultDTO enterOrg(ThirdWxmpEnteOrgFormDTO formDTO);
/**
* @param formDTO
* @return
* @Author zhy
* @Description 单客户-选择组织进入首页
**/
UserTokenResultDTO enterOrgByAccount(ThirdWxmpEnteOrgByAccountFormDTO formDTO);
/**
* @param formDTO
* @return
@ -52,6 +61,15 @@ public interface ThirdLoginService {
**/
List<StaffOrgsResultDTO> getMyOrgByPassword(ThirdStaffOrgsFormDTO formDTO);
/**
* @param formDTO
* @return
* @author zhy
* @description 单客户-手机号密码获取组织
**/
List<StaffOrgsResultDTO> getMyOrgByAccount(ThirdStaffOrgByAccountFormDTO formDTO);
/**
* @param formDTO
* @return

87
epmet-auth/src/main/java/com/epmet/service/impl/GovLoginServiceImpl.java

@ -289,6 +289,36 @@ public class GovLoginServiceImpl implements GovLoginService, ResultDataResolver
return userTokenResultDTO;
}
@Override
public UserTokenResultDTO enterOrgByAccount(GovWxmpEnteOrgByAccountFormDTO formDTO) {
//1、需要校验要登录的客户,是否被禁用
CustomerStaffByAccountFormDTO customerStaffFormDTO = new CustomerStaffByAccountFormDTO();
customerStaffFormDTO.setCustomerId(formDTO.getCustomerId());
customerStaffFormDTO.setUserAccount(formDTO.getUserAccount());
Result<CustomerStaffDTO> customerStaffDTOResult = epmetUserFeignClient.getCustomerStaffInfoByAccount(customerStaffFormDTO);
if (!customerStaffDTOResult.success() || null == customerStaffDTOResult.getData()) {
logger.warn(String.format("获取工作人员信息失败,账户[%s],客户id:[%s],code[%s],msg[%s]", formDTO.getUserAccount(), formDTO.getCustomerId(), customerStaffDTOResult.getCode(), customerStaffDTOResult.getMsg()));
throw new RenException(customerStaffDTOResult.getCode());
}
CustomerStaffDTO customerStaff = customerStaffDTOResult.getData();
//2、解析微信用户
WxMaJscode2SessionResult wxMaJscode2SessionResult = loginService.getWxMaUser(LoginConstant.APP_GOV, formDTO.getWxCode(), formDTO.getAppId());
//3、记录staff_wechat,并记录用户激活状态,激活时间
this.savestaffwechat(customerStaff.getUserId(), wxMaJscode2SessionResult.getOpenid(), formDTO.getCustomerId());
//4、记录登录日志
GovWxmpEnteOrgFormDTO orgDTO = ConvertUtils.sourceToTarget(formDTO, GovWxmpEnteOrgFormDTO.class);
orgDTO.setMobile(customerStaff.getMobile());
this.saveStaffLoginRecord(orgDTO, customerStaff.getUserId(), wxMaJscode2SessionResult.getOpenid());
//5.1、获取用户token
String token = this.generateGovWxmpToken(customerStaff.getUserId());
//5.2、保存到redis
this.saveGovTokenDto(formDTO.getRootAgencyId(), formDTO.getCustomerId(), customerStaff.getUserId(), wxMaJscode2SessionResult, token);
UserTokenResultDTO userTokenResultDTO = new UserTokenResultDTO();
userTokenResultDTO.setToken(token);
return userTokenResultDTO;
}
@Override
public void loginOut(TokenDto tokenDto) {
if(null == tokenDto){
@ -381,6 +411,63 @@ public class GovLoginServiceImpl implements GovLoginService, ResultDataResolver
return new ArrayList<>();
}
@Override
public List<StaffOrgsResultDTO> getMyOrgByAccount(StaffOrgByAccountFormDTO formDTO) {
//1、根据手机号查询到用户信息
Result<List<CustomerStaffDTO>> customerStaffResult = epmetUserFeignClient.checkCustomerStaffByAccount(formDTO.getUserAccount());
if (!customerStaffResult.success()) {
logger.warn(String.format("账户密码登录异常,手机号[%s],code[%s],msg[%s]", formDTO.getUserAccount(), customerStaffResult.getCode(), customerStaffResult.getMsg()));
throw new RenException(customerStaffResult.getCode());
}
//2、密码是否正确
List<CustomerStaffDTO> customerStaffList=customerStaffResult.getData();
//3、查询用户所有的组织信息
List<String> customerIdList = new ArrayList<>();
//是否设置过密码
boolean havePasswordFlag=false;
//密码是否正确
boolean passwordRightFlag=false;
for (CustomerStaffDTO customerStaffDTO : customerStaffList) {
if(StringUtils.isNotBlank(customerStaffDTO.getPassword())){
havePasswordFlag=true;
}else{
logger.warn(String.format("当前用户:账户%s,客户Id%s下未设置密码.",formDTO.getUserAccount(),customerStaffDTO.getCustomerId()));
continue;
}
if (!PasswordUtils.matches(formDTO.getPassword(), customerStaffDTO.getPassword())) {
logger.warn(String.format("当前用户:账户%s,客户Id%s密码匹配错误.",formDTO.getUserAccount(),customerStaffDTO.getCustomerId()));
}else{
logger.warn(String.format("当前用户:账户%s,客户Id%s密码匹配正确.",formDTO.getUserAccount(),customerStaffDTO.getCustomerId()));
passwordRightFlag=true;
customerIdList.add(customerStaffDTO.getCustomerId());
}
}
//根据手机号查出来所有用户,密码都为空,表明用户未激活账户,未设置密码
if(!havePasswordFlag){
logger.warn(String.format("当前账户(%s)下所有账户都未设置密码,请先使用验证码登录激活账户",formDTO.getUserAccount()));
throw new RenException(EpmetErrorCode.PASSWORD_ERROR.getCode());
}
//密码错误
if(!passwordRightFlag){
logger.warn(String.format("根据当前账户(%s)密码未找到所属组织,密码错误",formDTO.getUserAccount()));
throw new RenException(EpmetErrorCode.PASSWORD_ERROR.getCode());
}
StaffOrgFormDTO staffOrgFormDTO = new StaffOrgFormDTO();
staffOrgFormDTO.setCustomerIdList(customerIdList);
Result<List<StaffOrgsResultDTO>> result = govOrgFeignClient.getStaffOrgList(staffOrgFormDTO);
if(result.success()&&null!=result.getData()){
return result.getData();
}
logger.warn(String .format("手机验证码获取组织,调用%s服务失败,入参账户%s,密码%s,返回错误码%s,错误提示信息%s",
ServiceConstant.GOV_ORG_SERVER,
formDTO.getUserAccount(),
formDTO.getPassword(),
result.getCode(),
result.getMsg()));
return new ArrayList<>();
}
//保存登录日志
private Result saveStaffLoginRecord(GovWxmpEnteOrgFormDTO formDTO, String staffId, String openId) {
StaffLoginAgencyRecordFormDTO staffLoginAgencyRecordFormDTO = new StaffLoginAgencyRecordFormDTO();

125
epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java

@ -425,6 +425,68 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
return userTokenResultDTO;
}
/**
* @param formDTO
* @return
* @Author sun
* @Description 单客户-选择组织进入首页
**/
@Override
public UserTokenResultDTO enterOrgByAccount(ThirdWxmpEnteOrgByAccountFormDTO formDTO) {
//1、需要校验要登录的客户,是否被禁用
CustomerStaffByAccountFormDTO customerStaffFormDTO = new CustomerStaffByAccountFormDTO();
customerStaffFormDTO.setCustomerId(formDTO.getCustomerId());
customerStaffFormDTO.setUserAccount(formDTO.getUserAccount());
Result<CustomerStaffDTO> customerStaffDTOResult = epmetUserOpenFeignClient.getCustomerStaffInfoByAccount(customerStaffFormDTO);
if (!customerStaffDTOResult.success() || null == customerStaffDTOResult.getData()) {
logger.error(String.format("获取工作人员信息失败,账户[%s],客户id:[%s],code[%s],msg[%s]", formDTO.getUserAccount(), formDTO.getCustomerId(), customerStaffDTOResult.getCode(), customerStaffDTOResult.getMsg()));
throw new RenException(customerStaffDTOResult.getCode());
}
CustomerStaffDTO customerStaff = customerStaffDTOResult.getData();
//2020.7.24 获取微信信息接口调整,改调用微信api的方式 sun start
//2.调用epmet_third服务,校验appId是否有效以及是否授权,校验通过的调用微信API获取用户基本信息
WxLoginFormDTO resiLoginFormDTO = new WxLoginFormDTO();
resiLoginFormDTO.setAppId(formDTO.getAppId());
resiLoginFormDTO.setWxCode(formDTO.getWxCode());
UserWechatDTO userWechatDTO = this.getUserWeChat(resiLoginFormDTO);
WxMaJscode2SessionResult wxMaJscode2SessionResult = new WxMaJscode2SessionResult();
wxMaJscode2SessionResult.setOpenid(userWechatDTO.getWxOpenId());
wxMaJscode2SessionResult.setSessionKey(userWechatDTO.getSessionKey());
wxMaJscode2SessionResult.setUnionid("");
// end
//3、记录staff_wechat,并记录用户激活状态,激活时间
this.savestaffwechat(customerStaff.getUserId(), userWechatDTO.getWxOpenId(), formDTO.getCustomerId());
//4、记录登录日志
StaffLatestAgencyResultDTO staffLatestAgencyResultDTO = new StaffLatestAgencyResultDTO();
staffLatestAgencyResultDTO.setCustomerId(formDTO.getCustomerId());
staffLatestAgencyResultDTO.setStaffId(customerStaff.getUserId());
staffLatestAgencyResultDTO.setWxOpenId(userWechatDTO.getWxOpenId());
staffLatestAgencyResultDTO.setMobile(customerStaff.getMobile());
staffLatestAgencyResultDTO.setAgencyId(formDTO.getRootAgencyId());
this.saveStaffLoginRecord(staffLatestAgencyResultDTO);
//5.1、获取用户token
String token = this.generateGovWxmpToken(customerStaff.getUserId());
//5.2、保存到redis
StaffLatestAgencyResultDTO staffLatestAgency = new StaffLatestAgencyResultDTO();
staffLatestAgency.setAgencyId(formDTO.getRootAgencyId());
staffLatestAgency.setCustomerId(formDTO.getCustomerId());
staffLatestAgency.setStaffId(customerStaff.getUserId());
this.saveLatestGovTokenDto(staffLatestAgency, userWechatDTO, token);
UserTokenResultDTO userTokenResultDTO = new UserTokenResultDTO();
userTokenResultDTO.setToken(token);
//6.发送登录事件
try {
sendLoginEvent(customerStaff.getUserId(), formDTO.getAppId(), AppClientConstant.APP_GOV, AppClientConstant.CLIENT_WXMP);
} catch (RenException e) {
log.error(e.getInternalMsg());
} catch (Exception e) {
log.error("【工作端enterOrg登录】发送登录事件失败,程序继续执行。错误信息");
}
return userTokenResultDTO;
}
/**
* @param formDTO
* @return
@ -538,6 +600,69 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
return new ArrayList<>();
}
@Override
public List<StaffOrgsResultDTO> getMyOrgByAccount(ThirdStaffOrgByAccountFormDTO formDTO) {
//0.根据appId查询对应客户Id
PaCustomerDTO customer = this.getCustomerInfo(formDTO.getAppId());
//7.28 上边根据appId只能锁定一条客户id,后边的批量循环操作暂不做调整,还是使用之前的代码 sun
//1、根据手机号查询到用户信息
ThirdCustomerStaffByAccountFormDTO dto = new ThirdCustomerStaffByAccountFormDTO();
dto.setCustomerId(customer.getId());
dto.setUserAccount(formDTO.getUserAccount());
Result<List<CustomerStaffDTO>> customerStaffResult = epmetUserOpenFeignClient.getCustsomerStaffByIdAndAccount(dto);
if (!customerStaffResult.success()) {
logger.warn(String.format("账户密码登录异常,账户[%s],code[%s],msg[%s]", formDTO.getUserAccount(), customerStaffResult.getCode(), customerStaffResult.getMsg()));
throw new RenException(customerStaffResult.getCode());
}
//2、密码是否正确
List<CustomerStaffDTO> customerStaffList=customerStaffResult.getData();
//3、查询用户所有的组织信息
List<String> customerIdList = new ArrayList<>();
//是否设置过密码
boolean havePasswordFlag=false;
//密码是否正确
boolean passwordRightFlag=false;
for (CustomerStaffDTO customerStaffDTO : customerStaffList) {
if(StringUtils.isNotBlank(customerStaffDTO.getPassword())){
havePasswordFlag=true;
}else{
logger.warn(String.format("当前用户:账户%s,客户Id%s下未设置密码.",formDTO.getUserAccount(),customerStaffDTO.getCustomerId()));
continue;
}
if (!PasswordUtils.matches(formDTO.getPassword(), customerStaffDTO.getPassword())) {
logger.warn(String.format("当前用户:账户%s,客户Id%s密码匹配错误.",formDTO.getUserAccount(),customerStaffDTO.getCustomerId()));
}else{
logger.warn(String.format("当前用户:账户%s,客户Id%s密码匹配正确.",formDTO.getUserAccount(),customerStaffDTO.getCustomerId()));
passwordRightFlag=true;
customerIdList.add(customerStaffDTO.getCustomerId());
}
}
//根据手机号查出来所有用户,密码都为空,表明用户未激活账户,未设置密码
if(!havePasswordFlag){
logger.warn(String.format("当前账户(%s)下所有账户都未设置密码,请先使用验证码登录激活账户",formDTO.getUserAccount()));
throw new RenException(EpmetErrorCode.PASSWORD_ERROR.getCode());
}
//密码错误
if(!passwordRightFlag){
logger.warn(String.format("根据当前账户(%s)密码未找到所属组织,密码错误",formDTO.getUserAccount()));
throw new RenException(EpmetErrorCode.PASSWORD_ERROR.getCode());
}
StaffOrgFormDTO staffOrgFormDTO = new StaffOrgFormDTO();
staffOrgFormDTO.setCustomerIdList(customerIdList);
Result<List<StaffOrgsResultDTO>> result = govOrgOpenFeignClient.getStaffOrgList(staffOrgFormDTO);
if(result.success()&&null!=result.getData()){
return result.getData();
}
logger.warn(String .format("手机验证码获取组织,调用%s服务失败,入参账户%s,密码%s,返回错误码%s,错误提示信息%s",
ServiceConstant.GOV_ORG_SERVER,
formDTO.getUserAccount(),
formDTO.getPassword(),
result.getCode(),
result.getMsg()));
return new ArrayList<>();
}
/**
* @Description 获取客户信息
* @param appId

5
epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/OrgOrStaffMQMsg.java

@ -3,6 +3,7 @@ package com.epmet.commons.rocketmq.messages;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 组织网格人员中间库数据上报MQ
@ -18,7 +19,11 @@ public class OrgOrStaffMQMsg implements Serializable {
//数据类型【组织:agency 网格:grid 人员:staff】
private String orgType;
//操作类型【组织新增:agency_create 组织变更:agency_change 网格新增:grid_create 网格变更:grid_change 人员新增:staff_create 人员变更:staff_change】
//删除网格:grid_delete;删除组织:agency_delete
private String type;
//工作人员Id集合
private List<String> staffIdList;
}

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

@ -174,4 +174,20 @@ public interface Constant {
String OPITON_SOURCE_REMOTE = "remote";
String OPITON_SOURCE_LOCAL = "local";
/**
* 附件状态审核中auditing
auto_passed: 自动通过
review结果不确定需要人工审核
block: 结果违规
rejected人工审核驳回;
approved人工审核通过
现在图片是同步审核的所以图片只有auto_passed一种状态
*/
String AUDITING="auditing";
String AUTO_PASSED="auto_passed";
String REVIEW="review";
String BLOCK="block";
String REJECTED="rejected";
String APPROVED="approved";
}

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

@ -50,6 +50,8 @@ public interface NumConstant {
BigDecimal ZERO_DECIMAL = new BigDecimal(0);
int ONE_THOUSAND = 1000;
int TEN_THOUSAND = 10000;
int THREE_THOUSAND = 3000;
int MAX = 99999999;
int EIGHTY_EIGHT = 88;
int EIGHTY = 80;

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

@ -27,6 +27,7 @@ public enum DictTypeEnum {
IC_EVENT_SOURCE_TYPE("ic_event_source_type","事件管理",19),
IC_SERVICE_TYPE("ic_service_type","服务类别",20),
IC_DANGER_TYPE("ic_danger_type","危化品种类",24),
POLICY_LEVEL("policy_level","政策级别",25),
;
private final String code;

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

@ -40,6 +40,7 @@ public enum EpmetErrorCode {
PASSWORD_NOT_FIT(8010,"两次填写的密码不一致"),
PASSWORD_OUT_OF_ORDER(8011,"密码必须8-20个字符,而且同时包含大小写字母和数字"),
PASSWORD_UPDATE_FAILED(8012,"密码修改失败"),
GOV_STAFF_ACCOUNT_NOT_EXISTS(8013,"账户未注册,请联系贵单位管理员"),
MOBILE_HAS_BEEN_USED(8101, "该手机号已注册,请更换手机号或使用原绑定的微信账号登录"),
MOBILE_CODE_ERROR(8102, "验证码错误"),
AUTO_CONFIRM_FAILED(8103, "党员注册失败"),
@ -99,6 +100,7 @@ public enum EpmetErrorCode {
EXIT_PEND_PROJECT(8408,"该工作人员有项目尚在处理,处理完毕方可操作"),
EXIT_PUBLISHED_ACTIVITY(8409,"该工作人员有活动尚在进行,等活动完成方可操作"),
CAN_NOT_SELF(8410,"无法对自己进行操作"),
ACCOUNT_USED(8411,"该账号已注册"),
PATROL_IS_NOT_OVER(8520,"巡查尚未结束"),
ALREADY_EVALUATE(8501,"您已评价"),

2
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/page/PageData.java

@ -9,6 +9,7 @@
package com.epmet.commons.tools.page;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
@ -20,6 +21,7 @@ import java.util.List;
* @since 1.0.0
*/
@Data
@NoArgsConstructor
public class PageData<T> implements Serializable {
private static final long serialVersionUID = 1L;

52
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java

@ -644,8 +644,18 @@ public class RedisKeys {
* @param agencyId
* @return
*/
public static String getOrgTreeCacheKey(String agencyId) {
return rootPrefix.concat("org:temp:orgtree").concat(agencyId);
public static String getOrgTreeCacheKey(String agencyId,String customerId) {
return rootPrefix.concat("org:temp:orgtree:").concat(customerId).concat(StrConstant.COLON).concat(agencyId);
}
/**
* 与getOrgTreeCacheKey一致用于模糊删除
* @param customerId
* @return
*/
public static String getOrgTreeCachePrexKey(String customerId) {
// return "epmet:org:temp:orgtree".concat(StrConstant.STAR);
return rootPrefix.concat("org:temp:orgtree:").concat(customerId).concat(StrConstant.STAR);
}
public static String getHouseInfoCacheKey(String houseId,String customerId){
@ -778,6 +788,18 @@ public class RedisKeys {
return rootPrefix.concat("lock:").concat(methodName);
}
/**
* desc:获取分布式锁key
* @param customerId
* @return
*/
public static String getXiaoquEditLock(String customerId) {
if (StringUtils.isBlank(customerId)){
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"参数错误");
}
return rootPrefix.concat("lock:xiaoquedit").concat(customerId);
}
/**
* desc:获取更新 房屋内有居民数量的key
* @param customerId
@ -791,4 +813,30 @@ public class RedisKeys {
}
/**
* desc: 数据同步业务key 根据方法名区分
*
* @param bizType [resi]
* @return java.lang.String
* @author LiuJanJun
* @date 2022/7/16 7:12 下午
*/
public static String getDataSyncKey(String bizType) {
if (StringUtils.isBlank(bizType)){
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"参数错误");
}
return rootPrefix.concat("datasync:").concat(bizType);
}
/**
* Desc: 服务组织名称
* @param customerId
* @param serviceOrgType
* @param serviceOrgId
* @author zxc
* @date 2022/7/19 14:08
*/
public static String getServiceOrgNameKey(String customerId,String serviceOrgType,String serviceOrgId){
return rootPrefix.concat("serviceOrgName:").concat(serviceOrgType).concat(":").concat(customerId).concat(":").concat(serviceOrgId);
}
}

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

@ -357,6 +357,24 @@ public class RedisUtils {
return redisTemplate.opsForSet().members(key);
}
/**
* @Description 获取一个set
* @param key
* @author zxc
*/
public Object sPop(String key){
return redisTemplate.opsForSet().pop(key);
}
/**
* @Description 添加一个元素set
* @param key
* @author zxc
*/
public Long sAdd(String key,Object value){
return redisTemplate.opsForSet().add(key,value);
}
/**
* @Description 获取 zset 中带score的集合
* @param key
@ -444,4 +462,15 @@ public class RedisUtils {
public Long getTTL(String treeCacheKey) {
return redisTemplate.getExpire(treeCacheKey);
}
/**
* 根据前缀模糊删除
* @param prex
*/
public void deleteByPrex(String prex) {
Set<String> keys = redisTemplate.keys(prex);
if (!CollectionUtils.isEmpty(keys)) {
redisTemplate.delete(keys);
}
}
}

1
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/HouseInfoCache.java

@ -102,6 +102,7 @@ public class HouseInfoCache implements Serializable {
* 房屋编码
*/
private String houseCode;
private String coding;
/**
* 二维码地址
*/

37
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/StrUtil.java

@ -0,0 +1,37 @@
package com.epmet.commons.tools.utils;
import org.apache.commons.lang3.StringUtils;
/**
* desc:utf8mb4转为utf8
*
* @author: LiuJanJun
* @date: 2022/7/22 9:45 下午
* @version: 1.0
*/
public class StrUtil {
private static final int LAST_BMP = 0xFFFF;
public static String filterEmoji(String source) {
if (StringUtils.isBlank(source)) {
return source;
}
StringBuilder sb = new StringBuilder(source.length());
for (int i = 0; i < source.length(); i++) {
int codePoint = source.codePointAt(i);
if (codePoint < LAST_BMP) {
sb.appendCodePoint(codePoint);
} else {
i++;
}
}
return sb.toString();
}
public static void main(String[] args) {
String x = StrUtil.filterEmoji("😀😁😆😅🥹🥹😇😗😀😂666");
System.out.println(x);
}
}

8
epmet-commons/epmet-commons-tools/src/main/resources/logback-base.xml

@ -7,11 +7,13 @@ Base logback configuration provided for compatibility with Spring Boot 1.1
<included>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<!--<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>-->
<include resource="org/springframework/boot/logging/logback/console-appender.xml" />
<include resource="org/springframework/boot/logging/logback/file-appender.xml" />
<!--该配置主要是配置了console控制台日志的输出级别以及appender,配置只输出到CONSOLE,而不输出到file即可避免产生spring.log-->
<!--<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>-->
<!--<include resource="org/springframework/boot/logging/logback/file-appender.xml" />-->
<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
<!--<appender-ref ref="FILE" />-->
</root>
</included>

3
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/OrgConstant.java

@ -10,7 +10,8 @@ public interface OrgConstant {
String PROVINCE = "province";
String CITY = "city";
String DISTRICT = "district";
String STREET = "street";
String COMMUNITY = "community";
String GRID_ID="GRID_ID";
String GENDER="GENDER";
String HOUSE_TYPE_KEY="HOUSE_TYPE";

77
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/ResisByPolicyRulesFormDTO.java

@ -0,0 +1,77 @@
package com.epmet.dataaggre.dto.epmetuser.form;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Set;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ResisByPolicyRulesFormDTO {
private String ruleId;
private String orgId;
private String orgType;
private String neighborHoodId;
private String buildingId;
private String unitId;
private String houseId;
private String name;
private String mobile;
private String idCard;
private RuleList ruleList = new RuleList();
private Integer pageNo = 1;
private Integer pageSize = 20;
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class RuleList {
private String ruleName;
private List<ResiRule> resiRuleList;
private List<HouseRule> houseRuleList;
private List<StatRule> statRuleList;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class ResiRule {
private String ruleDesc;
private String nextLogicalRel;
private String itemGroupId;
private String itemId;
private String queryType;
private String colTable;
private String colKey;
private String colVal;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class HouseRule {
private String colTable;
private String colKey;
private String colVal;
private String ruleDesc;
private String nextLogicalRel;
private String queryType;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class StatRule {
private String colKey;
private String colVal;
private String nextLogicalRel;
private String ruleDesc;
private String queryType;
private String colTable;
}
}

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

@ -0,0 +1,46 @@
package com.epmet.dataaggre.dto.epmetuser.result;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ResiByPolicyInfoResultDTO {
@ExcelIgnore
private String icResiUserId;
@ExcelProperty(value = "姓名")
@ColumnWidth(10)
private String name;
@ExcelProperty("手机号")
@ColumnWidth(20)
private String mobile;
@ExcelProperty("身份证号")
@ColumnWidth(30)
private String idCard;
/**
* 小区全名包含小区前面的属性比如网格等
*/
@ExcelIgnore
private String gridId;
@ExcelIgnore
private String neighborhoodId;
@ExcelProperty("小区名称")
@ColumnWidth(30)
private String neighborHoodName;
@ExcelProperty("年龄")
@ColumnWidth(10)
private Integer age;
@ExcelIgnore
private String birthday;
}

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

@ -0,0 +1,25 @@
package com.epmet.dataaggre.dto.govorg.form;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Description
* @Author zhaoqifeng
* @Date 2022/7/27 9:27
*/
@Data
public class OrgStatisticsFormDTO extends PageFormDTO implements Serializable {
private static final long serialVersionUID = -1043502365053945317L;
private String customerId;
private String agencyId;
private String orgId;
private String orgType;
private String type;
private String startDate;
private String endDate;
private List<String> agencyList;
}

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

@ -0,0 +1,24 @@
package com.epmet.dataaggre.dto.govorg.result;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @Description
* @Author zhaoqifeng
* @Date 2022/7/27 9:33
*/
@NoArgsConstructor
@Data
public class MemberProjectInfoResultDTO implements Serializable {
private static final long serialVersionUID = -4880909768378661921L;
private String staffId;
private String staffName;
private String orgId;
private String orgName;
private Integer projectCount = 0;
private Integer closedCount = 0;
}

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

@ -0,0 +1,17 @@
package com.epmet.dataaggre.dto.govorg.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Description
* @Author zhaoqifeng
* @Date 2022/7/27 14:56
*/
@Data
public class OrgCountDTO implements Serializable {
private static final long serialVersionUID = -1875812403619088015L;
private String orgId;
private Integer count;
}

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

@ -0,0 +1,25 @@
package com.epmet.dataaggre.dto.govorg.result;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @Description
* @Author zhaoqifeng
* @Date 2022/7/27 9:32
*/
@NoArgsConstructor
@Data
public class OrgProjectDetailResultDTO implements Serializable {
private static final long serialVersionUID = 6333117500929136144L;
private String orgId;
private String orgType;
private String orgName;
private Integer memberCount = 0;
private Integer projectCount = 0;
private Integer closedCount = 0;
private Integer projectAve = 0;
private Integer closedAve = 0;
}

12
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/DataAggregatorOpenFeignClient.java

@ -2,13 +2,18 @@ package com.epmet.dataaggre.feign;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dataaggre.dto.epmetuser.form.ResisByPolicyRulesFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.ResiByPolicyInfoResultDTO;
import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO;
import com.epmet.dataaggre.feign.impl.DataAggregatorOpenFeignClientFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
@FeignClient(name = ServiceConstant.DATA_AGGREGATOR_SERVER, fallbackFactory = DataAggregatorOpenFeignClientFallbackFactory.class)
// @FeignClient(name = ServiceConstant.DATA_AGGREGATOR_SERVER, fallbackFactory= DataAggregatorOpenFeignClientFallbackFactory.class,url = "localhost:8114")
public interface DataAggregatorOpenFeignClient {
@ -21,4 +26,11 @@ public interface DataAggregatorOpenFeignClient {
@PostMapping(value = "data/aggregator/org/export-send-msg")
Result exportGridLiveRes(@RequestBody GridLivelyFormDTO form);
/**
* 政策人员预览
* @param input
* @return
*/
@PostMapping("data/aggregator/icuser/listByPolicyRules")
Result<PageData<ResiByPolicyInfoResultDTO>> listByPolicyRules(@RequestBody ResisByPolicyRulesFormDTO input);
}

8
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/impl/DataAggregatorOpenFeignClientFallback.java

@ -1,8 +1,11 @@
package com.epmet.dataaggre.feign.impl;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ModuleUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dataaggre.dto.epmetuser.form.ResisByPolicyRulesFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.ResiByPolicyInfoResultDTO;
import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO;
import com.epmet.dataaggre.feign.DataAggregatorOpenFeignClient;
@ -16,4 +19,9 @@ public class DataAggregatorOpenFeignClientFallback implements DataAggregatorOpen
public Result exportGridLiveRes(GridLivelyFormDTO form) {
return ModuleUtils.feignConError(ServiceConstant.DATA_AGGREGATOR_SERVER, "pcworkRecordListExportSendMsg",form);
}
@Override
public Result<PageData<ResiByPolicyInfoResultDTO>> listByPolicyRules(ResisByPolicyRulesFormDTO input) {
return ModuleUtils.feignConError(ServiceConstant.DATA_AGGREGATOR_SERVER, "listByPolicyRules", input);
}
}

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

@ -13,6 +13,11 @@
<artifactId>data-aggregator-server</artifactId>
<dependencies>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>epmet-heart-client</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>epmet-commons-tools</artifactId>

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

@ -3,6 +3,7 @@ package com.epmet.dataaggre.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.annotation.RequirePermission;
import com.epmet.commons.tools.aop.NoRepeatSubmit;
@ -18,7 +19,9 @@ 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.ExcelUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dataaggre.beans.GridMemberDataAnalysisExcelExportBean;
import com.epmet.dataaggre.dto.epmetuser.result.StaffSelectResDTO;
@ -27,6 +30,8 @@ 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.enums.GridMemberDataAnalysisEnums;
import com.epmet.dataaggre.excel.MemberProjectInfoExcel;
import com.epmet.dataaggre.excel.OrgProjectDetailExcel;
import com.epmet.dataaggre.service.AggreGridService;
import com.epmet.dataaggre.service.govorg.GovOrgService;
import lombok.extern.slf4j.Slf4j;
@ -39,11 +44,13 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;
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.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
/**
@ -439,4 +446,125 @@ public class GovOrgController {
}
return new Result<BuildingInfoCache>().ok(govOrgService.queryBuildingInfo(buildingId));
}
/**
* 组织项目统计
* @Param tokenDto
* @Param formDTO
* @Return {@link Result< PageData< OrgProjectDetailResultDTO>>}
* @Author zhaoqifeng
* @Date 2022/7/28 10:34
*/
@PostMapping("orgProjectDetailList")
public Result<PageData<OrgProjectDetailResultDTO>> orgProjectDetailList(@LoginUser TokenDto tokenDto, @RequestBody OrgStatisticsFormDTO formDTO) {
return new Result<PageData<OrgProjectDetailResultDTO>>().ok(govOrgService.orgProjectDetailList(tokenDto, formDTO));
}
/**
* 网格员项目统计
* @Param tokenDto
* @Param formDTO
* @Return {@link Result< PageData< MemberProjectInfoResultDTO>>}
* @Author zhaoqifeng
* @Date 2022/7/28 10:34
*/
@PostMapping("memberProjectInfoList")
public Result<PageData<MemberProjectInfoResultDTO>> memberProjectInfoList(@LoginUser TokenDto tokenDto, @RequestBody OrgStatisticsFormDTO formDTO) {
return new Result<PageData<MemberProjectInfoResultDTO>>().ok(govOrgService.memberProjectInfoList(tokenDto, formDTO));
}
@NoRepeatSubmit
@PostMapping("orgProjectDetailList/export")
public void orgProjectExport(@LoginUser TokenDto tokenDto, @RequestBody OrgStatisticsFormDTO formDTO, HttpServletResponse response) throws Exception {
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setIsPage(false);
formDTO.setPageSize(NumConstant.TEN_THOUSAND);
ExcelWriter excelWriter = null;
AtomicInteger i = new AtomicInteger(1);
try {
String fileName = "组织事件统计.xlsx";
excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), OrgProjectDetailExcel.class).build();
PageData<OrgProjectDetailResultDTO> page = null;
WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build();
OrgProjectDetailExcel sum = new OrgProjectDetailExcel();
do {
page = govOrgService.orgProjectDetailList(tokenDto, formDTO);
List<OrgProjectDetailExcel> list = ConvertUtils.sourceToTarget(page.getList(), OrgProjectDetailExcel.class);
list.forEach(item -> {
item.setIndex(i.getAndIncrement());
});
sum.setMemberCount(sum.getMemberCount() + list.stream().mapToInt(OrgProjectDetailExcel::getMemberCount).sum());
sum.setProjectCount(sum.getProjectCount() + list.stream().mapToInt(OrgProjectDetailExcel::getProjectCount).sum());
sum.setClosedCount(sum.getClosedCount() + list.stream().mapToInt(OrgProjectDetailExcel::getClosedCount).sum());
excelWriter.write(list, writeSheet);
formDTO.setPageNo(formDTO.getPageNo() + NumConstant.ONE);
} while (org.apache.commons.collections4.CollectionUtils.isNotEmpty(page.getList()) && page.getList().size() == formDTO.getPageSize());
sum.setIndex(i.getAndIncrement());
sum.setOrgName("合计");
if (NumConstant.ZERO != sum.getMemberCount()) {
sum.setProjectAve(sum.getProjectCount()/sum.getMemberCount());
sum.setClosedAve(sum.getClosedCount()/sum.getMemberCount());
}
List<OrgProjectDetailExcel> list = new ArrayList<>();
list.add(sum);
excelWriter.write(list, writeSheet);
} catch (EpmetException e) {
response.reset();
response.setCharacterEncoding("UTF-8");
response.setHeader("content-type", "application/json; charset=UTF-8");
PrintWriter printWriter = response.getWriter();
Result<Object> result = new Result<>().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),e.getMsg());
printWriter.write(JSON.toJSONString(result));
printWriter.close();
} catch (Exception e) {
log.error("export exception", e);
} finally {
if (excelWriter != null) {
excelWriter.finish();
}
}
}
@NoRepeatSubmit
@PostMapping("memberProjectInfoList/export")
public void memberProjectExport(@LoginUser TokenDto tokenDto, @RequestBody OrgStatisticsFormDTO formDTO, HttpServletResponse response) throws Exception {
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setIsPage(false);
formDTO.setPageSize(NumConstant.TEN_THOUSAND);
ExcelWriter excelWriter = null;
AtomicInteger i = new AtomicInteger(1);
try {
String fileName = "网格员事件统计.xlsx";
excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), MemberProjectInfoExcel.class).build();
PageData<MemberProjectInfoResultDTO> page = null;
WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build();
do {
page = govOrgService.memberProjectInfoList(tokenDto, formDTO);
List<MemberProjectInfoExcel> list = ConvertUtils.sourceToTarget(page.getList(), MemberProjectInfoExcel.class);
list.forEach(item -> {
item.setIndex(i.getAndIncrement());
});
excelWriter.write(list, writeSheet);
formDTO.setPageNo(formDTO.getPageNo() + NumConstant.ONE);
} while (org.apache.commons.collections4.CollectionUtils.isNotEmpty(page.getList()) && page.getList().size() == formDTO.getPageSize());
} catch (EpmetException e) {
response.reset();
response.setCharacterEncoding("UTF-8");
response.setHeader("content-type", "application/json; charset=UTF-8");
PrintWriter printWriter = response.getWriter();
Result<Object> result = new Result<>().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),e.getMsg());
printWriter.write(JSON.toJSONString(result));
printWriter.close();
} catch (Exception e) {
log.error("export exception", e);
} finally {
if (excelWriter != null) {
excelWriter.finish();
}
}
}
}

89
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/IcUserController.java

@ -2,27 +2,49 @@ package com.epmet.dataaggre.controller;
import com.epmet.commons.tools.annotation.LoginUser;
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.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dataaggre.dto.epmetuser.form.IcUserCategoryFormDTO;
import com.epmet.dataaggre.dto.epmetuser.form.ResisByPolicyRulesFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.IcUserCategoryResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.ResiByPolicyInfoResultDTO;
import com.epmet.dataaggre.service.ResiService;
import com.epmet.dataaggre.service.epmetuser.EpmetUserService;
import com.epmet.feign.EpmetHeartOpenFeignClient;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
@RestController
@RequestMapping("icuser")
public class IcUserController {
public class IcUserController implements ResultDataResolver {
@Autowired
private EpmetUserService epmetUserService;
@Autowired
private ResiService icResiService;
@Autowired
private EpmetHeartOpenFeignClient heartOpenFeignClient;
/**
* 人员类别分析-各类别人数
@ -38,5 +60,70 @@ public class IcUserController {
return new Result<List<IcUserCategoryResultDTO>>().ok(epmetUserService.queryIcUserCategoryData(formDTO));
}
/**
* 政策人员预览
* @param input
* @return
*/
@PostMapping("listByPolicyRules")
public Result<PageData<ResiByPolicyInfoResultDTO>> listByPolicyRules(@RequestBody ResisByPolicyRulesFormDTO input) {
List<ResisByPolicyRulesFormDTO.ResiRule> resiRule = input.getRuleList().getResiRuleList();
List<ResisByPolicyRulesFormDTO.HouseRule> houseRule = input.getRuleList().getHouseRuleList();
List<ResisByPolicyRulesFormDTO.StatRule> statRule = input.getRuleList().getStatRuleList();
Integer pageNo = input.getPageNo();
Integer pageSize = input.getPageSize();
String orgId = input.getOrgId();
String orgType = input.getOrgType();
String neighborHoodId = input.getNeighborHoodId();
String buildingId = input.getBuildingId();
String unitId = input.getUnitId();
String houseId = input.getHouseId();
String idCard = input.getIdCard();
String name = input.getName();
String ruleId = input.getRuleId();
if (StringUtils.isNotBlank(ruleId)) {
// 从heart取,覆盖形参
com.epmet.dto.form.resi.ResisByPolicyRulesFormDTO.RuleList ruleList = getResultDataOrThrowsException(
heartOpenFeignClient.listPolicyRules4QueryAndExport(ruleId),
ServiceConstant.EPMET_HEART_SERVER,
EpmetErrorCode.SERVER_ERROR.getCode(),
null, null);
resiRule = ConvertUtils.sourceToTarget(ruleList.getResiRuleList(), ResisByPolicyRulesFormDTO.ResiRule.class);
houseRule = ConvertUtils.sourceToTarget(ruleList.getHouseRuleList(), ResisByPolicyRulesFormDTO.HouseRule.class);
statRule = ConvertUtils.sourceToTarget(ruleList.getStatRuleList(), ResisByPolicyRulesFormDTO.StatRule.class);
}
// 全都为空,则返回空ç
if (CollectionUtils.isEmpty(resiRule)
&& CollectionUtils.isEmpty(houseRule)
&& CollectionUtils.isEmpty(statRule)) {
return new Result().ok(new PageData<>(new ArrayList<>(), 0));
}
PageData<ResiByPolicyInfoResultDTO> page = icResiService.listByPolicyRules(orgId, orgType, neighborHoodId, buildingId, unitId,
houseId, idCard, name, pageNo, pageSize, resiRule, houseRule, statRule);
return new Result<PageData<ResiByPolicyInfoResultDTO>>().ok(page);
}
/**
* 导出政策查找到的居民
* @param input
*/
@PostMapping("exportByPolicyRules")
public void exportResisByPolicy(@RequestBody ResisByPolicyRulesFormDTO input, HttpServletResponse response) {
try {
icResiService.exportResisByPolicy(
input.getOrgId(), input.getOrgType(), input.getNeighborHoodId(), input.getBuildingId(), input.getUnitId(),
input.getHouseId(), input.getIdCard(), input.getName(), input.getRuleId(), input.getRuleList().getResiRuleList(),
input.getRuleList().getHouseRuleList(), input.getRuleList().getStatRuleList(), response);
} catch (IOException e) {
throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "导出Excel文件失败", "导出Excel文件失败");
}
}
}

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

@ -26,7 +26,10 @@ import com.epmet.dataaggre.dto.epmetuser.FactIcuserCategoryAnalysisDailyDTO;
import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.GridMemberPatrolListResultDTO;
import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO;
import com.epmet.dataaggre.dto.govorg.form.OrgStatisticsFormDTO;
import com.epmet.dataaggre.dto.govorg.result.GridDateIdResultDTO;
import com.epmet.dataaggre.dto.govorg.result.MemberProjectInfoResultDTO;
import com.epmet.dataaggre.dto.govorg.result.OrgCountDTO;
import com.epmet.dataaggre.dto.govproject.form.ProjectTotalFormDTO;
import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO;
import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO;
@ -373,4 +376,10 @@ public interface DataStatsDao {
*/
List<GridDateIdResultDTO> getGridProejctToProjectMain(GridLivelyFormDTO formDTO);
List<SubAgencyProjectResultDTO> getAgencyProjectTotal(OrgStatisticsFormDTO formDTO);
List<OrgCountDTO> getMemberCount(@Param("agencyId")String agencyId, @Param("dateId") String dateId);
List<MemberProjectInfoResultDTO> getMemberList(@Param("gridId") String gridId, @Param("dateId") String dateId);
}

39
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/IcResiUserDao.java

@ -18,7 +18,9 @@
package com.epmet.dataaggre.dao.epmetuser;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dataaggre.dto.epmetuser.form.ResisByPolicyRulesFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.IcResiInfoResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.ResiByPolicyInfoResultDTO;
import com.epmet.dataaggre.dto.govproject.result.ProjectAnalysisResultDTO;
import com.epmet.dataaggre.entity.epmetuser.IcResiUserEntity;
import com.epmet.dto.IcResiUserDTO;
@ -26,6 +28,7 @@ import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Set;
/**
* 用户基础信息
@ -59,4 +62,40 @@ public interface IcResiUserDao extends BaseDao<IcResiUserEntity> {
@Param("queryPids") String queryPids,
@Param("categoryKey") String categoryKey,
@Param("search") String search);
/**
* 政策查找居民
* @param houseIds
* @return
*/
List<ResiByPolicyInfoResultDTO> listByPolicyRules(@Param("customerId") String customerId,
@Param("orgIdPath") String orgIdPath,
@Param("orgId") String orgId,
@Param("orgType") String orgType,
@Param("neighborHoodId") String neighborHoodId,
@Param("buildingId") String buildingId,
@Param("unitId") String unitId,
@Param("houseId") String houseId,
@Param("idCard") String idCard,
@Param("name") String name,
@Param("resiRules") List<ResisByPolicyRulesFormDTO.ResiRule> resiRule,
@Param("houseIds") List<String> houseIds);
/**
* 政策查找居民
* @param houseIds
* @return
*/
Integer getTotalByPolicyRules(@Param("customerId") String customerId,
@Param("orgIdPath") String orgIdPath,
@Param("orgId") String orgId,
@Param("orgType") String orgType,
@Param("neighborHoodId") String neighborHoodId,
@Param("buildingId") String buildingId,
@Param("unitId") String unitId,
@Param("houseId") String houseId,
@Param("idCard") String idCard,
@Param("name") String name,
@Param("resiRules") List<ResisByPolicyRulesFormDTO.ResiRule> resiRule,
@Param("houseIds") List<String> houseIds);
}

4
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StaffRoleDao.java

@ -21,6 +21,8 @@ import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dataaggre.dto.epmetuser.result.RoleListResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.StaffRoleListResultDTO;
import com.epmet.dataaggre.dto.govorg.result.GridStaffResultDTO;
import com.epmet.dataaggre.dto.govorg.result.MemberProjectInfoResultDTO;
import com.epmet.dataaggre.dto.govorg.result.OrgCountDTO;
import com.epmet.dataaggre.entity.epmetuser.StaffRoleEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -74,4 +76,6 @@ public interface StaffRoleDao extends BaseDao<StaffRoleEntity> {
*/
List<StaffRoleEntity> selectStaffByRole(@Param("customerId") String customerId, @Param("roleId") String roleId, @Param("userId") String userId);
List<OrgCountDTO> getMemberCount(@Param("customerId") String customerId);
List<MemberProjectInfoResultDTO> getMemberList(@Param("customerId") String customerId, @Param("orgIds") List<String> orgIds);
}

2
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerAgencyDao.java

@ -106,4 +106,6 @@ public interface CustomerAgencyDao extends BaseDao<CustomerAgencyEntity> {
*/
LinkedList<GridLivelyResultDTO> subAgencyListAndGridSumNum(@Param("agencyId") String agencyId);
List<String> getSubAgencyList(@Param("agencyId") String agencyId);
}

24
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/IcHouseDao.java

@ -1,8 +1,12 @@
package com.epmet.dataaggre.dao.govorg;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dataaggre.dto.epmetuser.form.ResisByPolicyRulesFormDTO;
import com.epmet.dataaggre.entity.govorg.IcHouseEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 房屋信息
@ -12,4 +16,24 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface IcHouseDao extends BaseDao<IcHouseEntity> {
/**
* 为政策-预览居民提供房屋id列表查询
* @param orgIdPath
* @param customerId
* @param neighborHoodId
* @param buildingId
* @param unitId
* @param houseId
* @param houseRule
* @param statRule
* @return
*/
List<String> listHouseIds4PolicyResis(@Param("orgIdPath") String orgIdPath,
@Param("customerId") String customerId,
@Param("neighborHoodId") String neighborHoodId,
@Param("buildingId") String buildingId,
@Param("unitId") String unitId,
@Param("houseId") String houseId,
@Param("houseRule") List<ResisByPolicyRulesFormDTO.HouseRule> houseRule,
@Param("statRule") List<ResisByPolicyRulesFormDTO.StatRule> statRule);
}

13
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/IcNeighborhoodDao.java

@ -0,0 +1,13 @@
package com.epmet.dataaggre.dao.govorg;
import com.epmet.commons.tools.redis.common.bean.BuildingInfoCache;
import com.epmet.dto.IcNeighborHoodDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface IcNeighborhoodDao {
List<IcNeighborHoodDTO> neighborhoodsByIds(@Param("neighborhoodIds") List<String> neighborhoodIds);
}

7
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govproject/ProjectDao.java

@ -19,6 +19,8 @@ package com.epmet.dataaggre.dao.govproject;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dataaggre.dto.govissue.result.IssueListResultDTO;
import com.epmet.dataaggre.dto.govorg.form.OrgStatisticsFormDTO;
import com.epmet.dataaggre.dto.govorg.result.OrgCountDTO;
import com.epmet.dataaggre.dto.govproject.ProjectDTO;
import com.epmet.dataaggre.dto.govproject.ProjectRelatedPersonnelDTO;
import com.epmet.dataaggre.dto.govproject.ResiEventDTO;
@ -123,4 +125,9 @@ public interface ProjectDao extends BaseDao<ProjectEntity> {
*/
List<ResiEventReportOrgDTO> getEventOrgList(@Param("eventIds") List<String> eventIds);
List<ProjectCategoryTotalResultDTO> getCategoryCount(ProjectCategoryTotalFormDTO formDTO);
List<OrgCountDTO> getGridProjectCount(OrgStatisticsFormDTO formDTO);
List<OrgCountDTO> getGridClosedProjectCount(OrgStatisticsFormDTO formDTO);
List<OrgCountDTO> getMemberProjectCount(OrgStatisticsFormDTO formDTO);
List<OrgCountDTO> getMemberClosedProjectCount(OrgStatisticsFormDTO formDTO);
}

40
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/MemberProjectInfoExcel.java

@ -0,0 +1,40 @@
package com.epmet.dataaggre.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.HeadStyle;
import com.alibaba.excel.enums.poi.FillPatternTypeEnum;
import lombok.Data;
/**
* 数字平台党员信息表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-05-17
*/
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 44)
@Data
public class MemberProjectInfoExcel {
@ColumnWidth(10)
@ExcelProperty(value = "序号",order = 1)
private Integer index;
@ColumnWidth(30)
@ExcelProperty(value = "网格员",order = 2)
private String staffName;
@ColumnWidth(40)
@ExcelProperty(value = "所属组织",order = 3)
private String orgName;
@ColumnWidth(20)
@ExcelProperty(value = "上报数量",order = 4)
private Integer projectCount = 0;
@ColumnWidth(20)
@ExcelProperty(value = "办结数",order = 5)
private Integer closedCount = 0;
}

47
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/OrgProjectDetailExcel.java

@ -0,0 +1,47 @@
package com.epmet.dataaggre.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.HeadStyle;
import com.alibaba.excel.enums.poi.FillPatternTypeEnum;
import lombok.Data;
/**
* 数字平台党员信息表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-05-17
*/
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 44)
@Data
public class OrgProjectDetailExcel {
@ColumnWidth(10)
@ExcelProperty(value = "序号",order = 1)
private Integer index;
@ColumnWidth(40)
@ExcelProperty(value = "所属组织",order = 2)
private String orgName;
@ColumnWidth(20)
@ExcelProperty(value = "网格员数",order = 3)
private Integer memberCount = 0;
@ColumnWidth(20)
@ExcelProperty(value = "上报数量",order = 4)
private Integer projectCount = 0;
@ColumnWidth(20)
@ExcelProperty(value = "办结数",order = 5)
private Integer closedCount = 0;
@ColumnWidth(20)
@ExcelProperty(value = "人均上报",order = 6)
private Integer projectAve = 0;
@ColumnWidth(20)
@ExcelProperty(value = "人均办结",order = 7)
private Integer closedAve = 0;
}

21
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/ResisByPolicyExcel.java

@ -0,0 +1,21 @@
package com.epmet.dataaggre.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
@Data
public class ResisByPolicyExcel {
@ExcelProperty("姓名")
private String name;
@ExcelProperty("手机号")
private String mobile;
@ExcelProperty("身份证号")
private String idCard;
/**
* 小区全名包含小区前面的属性比如网格等
*/
@ExcelProperty("小区名")
private String neighborHoodName;
@ExcelProperty("年龄")
private Integer age;
}

50
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/ResiService.java

@ -0,0 +1,50 @@
package com.epmet.dataaggre.service;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dataaggre.dto.epmetuser.form.ResisByPolicyRulesFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.ResiByPolicyInfoResultDTO;
import com.github.pagehelper.PageInfo;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Set;
/**
* 居民的service
*/
public interface ResiService {
/**
* 政策人员预览
* @param pageNo
* @param pageSize
* @param resiRule
* @param houseRule
*/
PageData<ResiByPolicyInfoResultDTO> listByPolicyRules(
String orgId, String orgType, String neighborHoodId, String buildingId, String unitId,
String houseId, String idCard, String name, Integer pageNo, Integer pageSize,
List<ResisByPolicyRulesFormDTO.ResiRule> resiRule,
List<ResisByPolicyRulesFormDTO.HouseRule> houseRule,
List<ResisByPolicyRulesFormDTO.StatRule> statRule);
/**
* 政策找居民导出
* @param orgId
* @param orgType
* @param neighborHoodId
* @param buildingId
* @param unitId
* @param houseId
* @param idCard
* @param name
* @param ruleId
*/
void exportResisByPolicy(String orgId, String orgType, String neighborHoodId, String buildingId, String unitId,
String houseId, String idCard, String name,
String ruleId, List<ResisByPolicyRulesFormDTO.ResiRule> resiRule,
List<ResisByPolicyRulesFormDTO.HouseRule> houseRule,
List<ResisByPolicyRulesFormDTO.StatRule> statRule,
HttpServletResponse response) throws IOException;
}

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

@ -1,5 +1,6 @@
package com.epmet.dataaggre.service.datastats;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dataaggre.dto.datastats.FactGroupActDailyDTO;
import com.epmet.dataaggre.dto.datastats.form.*;
import com.epmet.dataaggre.dto.datastats.result.*;
@ -7,8 +8,10 @@ import com.epmet.dataaggre.dto.epmetuser.FactIcuserCategoryAnalysisDailyDTO;
import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.GridMemberPatrolListResultDTO;
import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO;
import com.epmet.dataaggre.dto.govorg.form.OrgStatisticsFormDTO;
import com.epmet.dataaggre.dto.govorg.result.GridDateIdResultDTO;
import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO;
import com.epmet.dataaggre.dto.govorg.result.MemberProjectInfoResultDTO;
import com.epmet.dataaggre.dto.govproject.form.ProjectTotalFormDTO;
import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO;
import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO;
@ -16,6 +19,7 @@ import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO;
import javax.servlet.http.HttpServletResponse;
import java.text.ParseException;
import java.util.List;
import java.util.Map;
/**
* @Author sun
@ -296,4 +300,10 @@ public interface DataStatsService {
* @author sun
*/
List<GridDateIdResultDTO> getGridProejctToProjectMain(GridLivelyFormDTO formDTO);
Map<String, SubAgencyProjectResultDTO> getAgencyProjectTotal(OrgStatisticsFormDTO formDTO);
Map<String, Integer> getMemberMap(String agencyId);
PageData<MemberProjectInfoResultDTO> getMemberList(OrgStatisticsFormDTO formDTO);
}

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

@ -1,63 +1,69 @@
package com.epmet.dataaggre.service.datastats.impl;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.enums.OrgLevelEnum;
import com.epmet.commons.tools.enums.OrgTypeEnum;
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;
import com.epmet.commons.tools.utils.poi.excel.ExportMultiView;
import com.epmet.dataaggre.constant.DataSourceConstant;
import com.epmet.dataaggre.constant.OrgConstant;
import com.epmet.dataaggre.dao.datastats.DataStatsDao;
import com.epmet.dataaggre.dao.datastats.FactGridMemberStatisticsDailyDao;
import com.epmet.dataaggre.dto.datastats.FactGroupActDailyDTO;
import com.epmet.dataaggre.dto.datastats.form.*;
import com.epmet.dataaggre.dto.datastats.result.*;
import com.epmet.dataaggre.dto.epmetuser.FactIcuserCategoryAnalysisDailyDTO;
import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.GridMemberPatrolListResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult;
import com.epmet.dataaggre.dto.evaluationindex.ScreenAgencyOrGridListDTO;
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.form.GridLivelyFormDTO;
import com.epmet.dataaggre.dto.govorg.result.GridDateIdResultDTO;
import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO;
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;
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;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.enums.OrgLevelEnum;
import com.epmet.commons.tools.enums.OrgTypeEnum;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.poi.excel.ExportMultiView;
import com.epmet.dataaggre.constant.DataSourceConstant;
import com.epmet.dataaggre.constant.OrgConstant;
import com.epmet.dataaggre.dao.datastats.DataStatsDao;
import com.epmet.dataaggre.dao.datastats.FactGridMemberStatisticsDailyDao;
import com.epmet.dataaggre.dto.datastats.FactGroupActDailyDTO;
import com.epmet.dataaggre.dto.datastats.form.*;
import com.epmet.dataaggre.dto.datastats.result.*;
import com.epmet.dataaggre.dto.epmetuser.FactIcuserCategoryAnalysisDailyDTO;
import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.GridMemberPatrolListResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult;
import com.epmet.dataaggre.dto.evaluationindex.ScreenAgencyOrGridListDTO;
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.form.GridLivelyFormDTO;
import com.epmet.dataaggre.dto.govorg.form.OrgStatisticsFormDTO;
import com.epmet.dataaggre.dto.govorg.result.GridDateIdResultDTO;
import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO;
import com.epmet.dataaggre.dto.govorg.result.MemberProjectInfoResultDTO;
import com.epmet.dataaggre.dto.govorg.result.OrgCountDTO;
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;
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 com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @Author sun
@ -2267,4 +2273,41 @@ public class DataStatsServiceImpl implements DataStatsService, ResultDataResolve
public List<GridDateIdResultDTO> getGridProejctToProjectMain(GridLivelyFormDTO formDTO) {
return dataStatsDao.getGridProejctToProjectMain(formDTO);
}
@Override
public Map<String, SubAgencyProjectResultDTO> getAgencyProjectTotal(OrgStatisticsFormDTO formDTO) {
List<SubAgencyProjectResultDTO> list = dataStatsDao.getAgencyProjectTotal(formDTO);
if (CollectionUtils.isEmpty(list)) {
return Collections.emptyMap();
}
return list.stream().collect(Collectors.toMap(SubAgencyProjectResultDTO::getAgencyId, Function.identity()));
}
/**
* 组织下网格的网格员数量统计
* @Param agencyId
* @Return {@link Map< String, Integer>}
* @Author zhaoqifeng
* @Date 2022/7/27 16:11
*/
@Override
public Map<String, Integer> getMemberMap(String agencyId) {
//当前日期前一天
String dateId = DateUtils.format(DateUtils.addDateDays(new Date(), NumConstant.ONE_NEG), DateUtils.DATE_PATTERN_YYYYMMDD);
List<OrgCountDTO> list = dataStatsDao.getMemberCount(agencyId, dateId);
if (CollectionUtils.isEmpty(list)) {
return Collections.emptyMap();
}
return list.stream().collect(Collectors.toMap(OrgCountDTO::getOrgId, OrgCountDTO::getCount, (o1, o2) -> o1));
}
@Override
public PageData<MemberProjectInfoResultDTO> getMemberList(OrgStatisticsFormDTO formDTO) {
//当前日期前一天
String dateId = DateUtils.format(DateUtils.addDateDays(new Date(), NumConstant.ONE_NEG), DateUtils.DATE_PATTERN_YYYYMMDD);
PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize());
List<MemberProjectInfoResultDTO> list = dataStatsDao.getMemberList(formDTO.getOrgId(), dateId);
PageInfo<MemberProjectInfoResultDTO> pageInfo = new PageInfo<>(list);
return new PageData<>(list, pageInfo.getTotal());
}
}

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

@ -1,18 +1,22 @@
package com.epmet.dataaggre.service.epmetuser;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dataaggre.dto.epmetuser.form.*;
import com.epmet.dataaggre.dto.epmetuser.result.*;
import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO;
import com.epmet.dataaggre.dto.govorg.form.OrgStaffListFormDTO;
import com.epmet.dataaggre.dto.govorg.form.OrgStatisticsFormDTO;
import com.epmet.dataaggre.dto.govorg.form.StaffDetailV2FormDTO;
import com.epmet.dataaggre.dto.govorg.result.GridDateIdResultDTO;
import com.epmet.dataaggre.dto.govorg.result.GridStaffResultDTO;
import com.epmet.dataaggre.dto.govorg.result.MemberProjectInfoResultDTO;
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;
import java.util.List;
import java.util.Map;
/**
* @Author zxc
@ -199,4 +203,31 @@ public interface EpmetUserService {
* @return
*/
List<StaffSelectResDTO> staffSelectList(List<String> staffIds);
List<ResiByPolicyInfoResultDTO> listByPolicyRules(String customerId, String orgIdPath, String orgId, String orgType, String neighborHoodId, String buildingId, String unitId,
String houseId, String idCard, String name, Integer pageNo, Integer pageSize,
List<ResisByPolicyRulesFormDTO.ResiRule> resiRule, List<String> houseIds);
Integer getTotalByPolicyRules(String customerId, String orgIdPath, String orgId, String orgType, String neighborHoodId, String buildingId, String unitId,
String houseId, String idCard, String name,
List<ResisByPolicyRulesFormDTO.ResiRule> resiRule, List<String> houseIds);
/**
* 统计各组织下网格员数量
*
* @Param customerId
* @Return {@link Map< String, Integer>}
* @Author zhaoqifeng
* @Date 2022/7/27 14:58
*/
Map<String, Integer> getMemberCount(String customerId);
/**
* 获取组织下网格员列表
*
* @Param agencyId
* @Return {@link PageData< MemberProjectInfoResultDTO>}
* @Author zhaoqifeng
* @Date 2022/7/27 17:32
*/
PageData<MemberProjectInfoResultDTO> getMemberList(OrgStatisticsFormDTO formDTO);
}

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

@ -7,6 +7,7 @@ import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.form.IdAndNameDTO;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.enums.OrgTypeEnum;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
@ -25,11 +26,9 @@ import com.epmet.dataaggre.dto.govorg.CustomerDepartmentDTO;
import com.epmet.dataaggre.dto.govorg.CustomerGridDTO;
import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO;
import com.epmet.dataaggre.dto.govorg.form.OrgStaffListFormDTO;
import com.epmet.dataaggre.dto.govorg.form.OrgStatisticsFormDTO;
import com.epmet.dataaggre.dto.govorg.form.StaffDetailV2FormDTO;
import com.epmet.dataaggre.dto.govorg.result.GridDateIdResultDTO;
import com.epmet.dataaggre.dto.govorg.result.GridStaffResultDTO;
import com.epmet.dataaggre.dto.govorg.result.StaffOrgNameResultDTO;
import com.epmet.dataaggre.dto.govorg.result.StaffOrgRelationResultDTO;
import com.epmet.dataaggre.dto.govorg.result.*;
import com.epmet.dataaggre.dto.govproject.result.ProjectAnalysisResultDTO;
import com.epmet.dataaggre.entity.epmetuser.CustomerStaffEntity;
import com.epmet.dataaggre.entity.epmetuser.GovStaffRoleEntity;
@ -45,6 +44,8 @@ import com.epmet.dataaggre.service.opercustomize.CustomerFootBarService;
import com.epmet.dto.IcResiUserDTO;
import com.epmet.dto.UserBaseInfoDTO;
import com.epmet.dto.result.StaffRoleResultDTO;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
@ -844,5 +845,51 @@ public class EpmetUserServiceImpl implements EpmetUserService {
return customerStaffDao.staffSelectList(staffIds);
}
@Override
public List<ResiByPolicyInfoResultDTO> listByPolicyRules(String customerId, String orgIdPath, String orgId, String orgType, String neighborHoodId, String buildingId, String unitId,
String houseId, String idCard, String name, Integer pageNo, Integer pageSize,
List<ResisByPolicyRulesFormDTO.ResiRule> resiRule, List<String> houseIds) {
PageHelper.startPage(pageNo, pageSize);
return icResiUserDao.listByPolicyRules(customerId, orgIdPath, orgId, orgType, neighborHoodId, buildingId, unitId, houseId, idCard, name, resiRule, houseIds);
}
@Override
public Integer getTotalByPolicyRules(String customerId, String orgIdPath, String orgId, String orgType, String neighborHoodId, String buildingId, String unitId, String houseId, String idCard, String name, List<ResisByPolicyRulesFormDTO.ResiRule> resiRule, List<String> houseIds) {
return icResiUserDao.getTotalByPolicyRules(customerId, orgIdPath, orgId, orgType, neighborHoodId, buildingId, unitId, houseId, idCard, name, resiRule, houseIds);
}
/**
* 统计各组织下网格员数量
*
* @param customerId
* @Param customerId
* @Return {@link Map< String, Integer>}
* @Author zhaoqifeng
* @Date 2022/7/27 14:58
*/
@Override
public Map<String, Integer> getMemberCount(String customerId) {
List<OrgCountDTO> list = staffRoleDao.getMemberCount(customerId);
if (CollectionUtils.isEmpty(list)) {
return Collections.emptyMap();
}
return list.stream().collect(Collectors.toMap(OrgCountDTO::getOrgId, OrgCountDTO::getCount, (o1, o2) -> o1));
}
/**
* 获取组织下网格员列表
*
* @param formDTO
* @Param agencyId
* @Return {@link PageData < MemberProjectInfoResultDTO>}
* @Author zhaoqifeng
* @Date 2022/7/27 17:32
*/
@Override
public PageData<MemberProjectInfoResultDTO> getMemberList(OrgStatisticsFormDTO formDTO) {
PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize());
List<MemberProjectInfoResultDTO> list = staffRoleDao.getMemberList(formDTO.getCustomerId(), formDTO.getAgencyList());
PageInfo<MemberProjectInfoResultDTO> pageInfo = new PageInfo<>(list);
return new PageData<>(list, pageInfo.getTotal());
}
}

31
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java

@ -1,7 +1,9 @@
package com.epmet.dataaggre.service.govorg;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.bean.BuildingInfoCache;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dataaggre.dto.epmetuser.form.ResisByPolicyRulesFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.StaffSelectResDTO;
import com.epmet.dataaggre.dto.govorg.CustomerAgencyDTO;
import com.epmet.dataaggre.dto.govorg.CustomerDepartmentDTO;
@ -10,6 +12,7 @@ import com.epmet.dataaggre.dto.govorg.form.*;
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.dto.IcNeighborHoodDTO;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
@ -212,4 +215,32 @@ public interface GovOrgService {
* @return
*/
CustomerAgencyEntity getRootAgencyByCustomerId(String customerId);
List<String> listHouseIdsByRules(String customerId, String orgIdPath, String orgId, String orgType, String neighborHoodId, String buildingId,
String unitId, String houseId, List<ResisByPolicyRulesFormDTO.HouseRule> houseRule,
List<ResisByPolicyRulesFormDTO.StatRule> statRule, Integer pageNo, Integer pageSize);
List<IcNeighborHoodDTO> neighborhoodsByIds(List<String> neighborhoodIds);
/**
* 组织项目统计
*
* @Param tokenDto
* @Param formDTO
* @Return {@link PageData< MemberProjectInfoResultDTO>}
* @Author zhaoqifeng
* @Date 2022/7/27 9:43
*/
PageData<OrgProjectDetailResultDTO> orgProjectDetailList(TokenDto tokenDto, OrgStatisticsFormDTO formDTO);
/**
* 网格员项目相关统计
*
* @Param tokenDto
* @Param formDTO
* @Return {@link PageData< MemberProjectInfoResultDTO>}
* @Author zhaoqifeng
* @Date 2022/7/27 9:44
*/
PageData<MemberProjectInfoResultDTO> memberProjectInfoList(TokenDto tokenDto, OrgStatisticsFormDTO formDTO);
}

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

@ -17,6 +17,7 @@ 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.redis.RedisKeys;
import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.commons.tools.redis.common.CustomerOrgRedis;
@ -26,10 +27,14 @@ import com.epmet.commons.tools.redis.common.bean.BuildingInfoCache;
import com.epmet.commons.tools.redis.common.bean.GridInfoCache;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.HttpClientManager;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dataaggre.constant.DataSourceConstant;
import com.epmet.dataaggre.constant.OrgConstant;
import com.epmet.dataaggre.dao.govorg.*;
import com.epmet.dataaggre.dto.datastats.result.SubAgencyProjectResultDTO;
import com.epmet.dataaggre.dto.epmetuser.form.ResisByPolicyRulesFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.ListStaffResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.StaffRoleListResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.StaffSelectResDTO;
@ -38,6 +43,7 @@ import com.epmet.dataaggre.dto.govorg.form.*;
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.excel.GridLivelyDetailExcel;
import com.epmet.dataaggre.excel.GridLivelyExcel;
import com.epmet.dataaggre.service.commonservice.AreaCodeService;
@ -45,9 +51,13 @@ import com.epmet.dataaggre.service.datastats.DataStatsService;
import com.epmet.dataaggre.service.epmetuser.EpmetUserService;
import com.epmet.dataaggre.service.evaluationindex.EvaluationIndexService;
import com.epmet.dataaggre.service.govorg.GovOrgService;
import com.epmet.dataaggre.service.govproject.GovProjectService;
import com.epmet.dataaggre.service.opercrm.CustomerRelation;
import com.epmet.dto.IcNeighborHoodDTO;
import com.epmet.dto.result.UploadImgResultDTO;
import com.epmet.feign.OssFeignClient;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.fileupload.FileItem;
@ -60,6 +70,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@ -107,6 +118,12 @@ public class GovOrgServiceImpl implements GovOrgService {
private RedisUtils redisUtils;
@Autowired
private ExecutorService executorService;
@Autowired
private IcHouseDao houseDao;
@Autowired
private IcNeighborhoodDao neighborhoodDao;
@Resource
private GovProjectService govProjectService;
/**
* @param staffId
@ -566,7 +583,7 @@ public class GovOrgServiceImpl implements GovOrgService {
String agencyId = staffInfo.getAgencyId();
String client = formDTO.getClient();
//组织缓存key
String treeCacheKey = RedisKeys.getOrgTreeCacheKey(agencyId).concat(StrConstant.COLON).concat(client);
String treeCacheKey = RedisKeys.getOrgTreeCacheKey(agencyId,tokenDto.getCustomerId()).concat(StrConstant.COLON).concat(client);
Long expiryTime = redisUtils.getTTL(treeCacheKey);
List<OrgTreeResultDTO> orgTreeResultDTOS = (List<OrgTreeResultDTO>) redisUtils.get(treeCacheKey);
//如果接近过期或已经过期且缓存数据不为空 则异步查询
@ -1079,4 +1096,227 @@ public class GovOrgServiceImpl implements GovOrgService {
query.eq(CustomerAgencyEntity::getPid, "0"); // 跟组织的pid为"0"
return customerAgencyDao.selectOne(query);
}
public String getOrgIdPath(String orgId, String orgType) {
if ("agency".equals(orgType)) {
AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(orgId);
if (agencyInfo != null) {
String pids = agencyInfo.getPids();
String id = agencyInfo.getId();
if (StringUtils.isBlank(pids)) {
return id;
} else {
return pids.concat(":").concat(id);
}
}
} else {
GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(orgId);
return gridInfo.getPids().concat(":").concat(gridInfo.getId());
}
return null;
}
@Override
public List<String> listHouseIdsByRules(String customerId, String orgIdPath, String orgId, String orgType, String neighborHoodId, String buildingId,
String unitId, String houseId, List<ResisByPolicyRulesFormDTO.HouseRule> houseRule,
List<ResisByPolicyRulesFormDTO.StatRule> statRule, Integer pageNo, Integer pageSize) {
if (CollectionUtils.isEmpty(houseRule) && CollectionUtils.isEmpty(statRule)) {
return new ArrayList<>();
}
if (StringUtils.isNotBlank(orgId) && StringUtils.isNotBlank(orgType)) {
orgIdPath = getOrgIdPath(orgId, orgType);
}
PageHelper.startPage(pageNo, pageSize);
return houseDao.listHouseIds4PolicyResis(orgIdPath, customerId, neighborHoodId, buildingId, unitId, houseId, houseRule, statRule);
}
@Override
public List<IcNeighborHoodDTO> neighborhoodsByIds(List<String> neighborhoodIds) {
return neighborhoodDao.neighborhoodsByIds(neighborhoodIds);
}
/**
* 组织项目统计
*
* @param tokenDto
* @param formDTO
* @Param tokenDto
* @Param formDTO
* @Return {@link PageData < MemberProjectInfoResultDTO>}
* @Author zhaoqifeng
* @Date 2022/7/27 9:43
*/
@Override
public PageData<OrgProjectDetailResultDTO> orgProjectDetailList(TokenDto tokenDto, OrgStatisticsFormDTO formDTO) {
List<OrgProjectDetailResultDTO> resultList = new ArrayList<>();
if (StringUtils.isBlank(formDTO.getAgencyId())) {
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId());
if (null == staffInfo) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取用户信息失败", "获取用户信息失败");
}
formDTO.setAgencyId(staffInfo.getAgencyId());
}
if (StringUtils.isEmpty(formDTO.getStartDate()) && StringUtils.isEmpty(formDTO.getEndDate())) {
//当前日期前一天
String dateId = DateUtils.format(DateUtils.addDateDays(new Date(), NumConstant.ONE_NEG), DateUtils.DATE_PATTERN_YYYYMMDD);
formDTO.setEndDate(dateId);
}
CustomerAgencyEntity agencyEntity = customerAgencyDao.selectById(formDTO.getAgencyId());
if (null == agencyEntity) {
return new PageData<>(Collections.emptyList(), NumConstant.ZERO);
}
PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize());
long total = 0;
if (OrgConstant.COMMUNITY.equals(agencyEntity.getLevel()) && NumConstant.ONE_STR.equals(formDTO.getType())) {
//获取网格列表
LambdaQueryWrapper<CustomerGridEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(CustomerGridEntity::getCustomerId, tokenDto.getCustomerId());
wrapper.eq(CustomerGridEntity::getPid, formDTO.getAgencyId());
wrapper.last("ORDER BY CONVERT ( GRID_NAME USING gbk ) ASC");
List<CustomerGridEntity> gridList = customerGridDao.selectList(wrapper);
//拼装数据
if (CollectionUtils.isNotEmpty(gridList)) {
//统计网格项目数
Map<String, Integer> projectMap = govProjectService.getGridProjectMap(formDTO);
//统计网格关闭项目数
Map<String, Integer> closedMap = govProjectService.getGridClosedProjectMap(formDTO);
//网格员统计
Map<String, Integer> memberMap = dataStatsService.getMemberMap(formDTO.getAgencyId());
resultList = gridList.stream().map(grid -> {
OrgProjectDetailResultDTO dto = new OrgProjectDetailResultDTO();
dto.setOrgId(grid.getId());
dto.setOrgType(OrgConstant.GRID);
dto.setOrgName(grid.getGridName());
if (projectMap.containsKey(grid.getId())) {
dto.setProjectCount(projectMap.get(grid.getId()));
}
if (closedMap.containsKey(grid.getId())) {
dto.setClosedCount(closedMap.get(grid.getId()));
}
if (memberMap.containsKey(grid.getId())) {
dto.setMemberCount(memberMap.get(grid.getId()));
dto.setProjectAve(dto.getProjectCount()/memberMap.get(grid.getId()));
dto.setClosedAve(dto.getClosedCount()/memberMap.get(grid.getId()));
}
return dto;
}).collect(Collectors.toList());
}
//获取统计数据
PageInfo<CustomerGridEntity> pageInfo = new PageInfo<>(gridList);
total = pageInfo.getTotal();
} else {
//获取组织列表
LambdaQueryWrapper<CustomerAgencyEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(CustomerAgencyEntity::getCustomerId, tokenDto.getCustomerId());
if (NumConstant.ZERO_STR.equals(formDTO.getType())) {
wrapper.eq(CustomerAgencyEntity::getId, formDTO.getAgencyId());
} else {
wrapper.eq(CustomerAgencyEntity::getPid, formDTO.getAgencyId());
}
wrapper.last("ORDER BY CONVERT ( ORGANIZATION_NAME USING gbk ) ASC");
List<CustomerAgencyEntity> agencyList = customerAgencyDao.selectList(wrapper);
//拼装数据
if (CollectionUtils.isNotEmpty(agencyList)) {
//项目相关统计
Map<String, SubAgencyProjectResultDTO> projectMap = dataStatsService.getAgencyProjectTotal(formDTO);
//网格员统计
Map<String, Integer> memberMap = epmetUserService.getMemberCount(tokenDto.getCustomerId());
resultList = agencyList.stream().map(agency -> {
OrgProjectDetailResultDTO dto = new OrgProjectDetailResultDTO();
dto.setOrgId(agency.getId());
dto.setOrgType(OrgConstant.AGENCY);
dto.setOrgName(agency.getOrganizationName());
if (projectMap.containsKey(agency.getId())) {
dto.setProjectCount(projectMap.get(agency.getId()).getProjectTotal());
dto.setClosedCount(projectMap.get(agency.getId()).getClosedProjectTotal());
}
//获取当前组织的所有下级组织ID(包含本级)
List<String> agencyIds = customerAgencyDao.getSubAgencyList(agency.getId());
//将下级组织网格员数加起来
int memberCount = agencyIds.stream().filter(memberMap::containsKey).mapToInt(memberMap::get).sum();
dto.setMemberCount(memberCount);
if (memberCount != NumConstant.ZERO) {
dto.setProjectAve(dto.getProjectCount()/memberCount);
dto.setClosedAve(dto.getClosedCount()/memberCount);
}
return dto;
}).collect(Collectors.toList());
}
//获取统计数据
PageInfo<CustomerAgencyEntity> pageInfo = new PageInfo<>(agencyList);
total = pageInfo.getTotal();
}
return new PageData<>(resultList, total);
}
/**
* 网格员项目相关统计
*
* @param tokenDto
* @param formDTO
* @Param tokenDto
* @Param formDTO
* @Return {@link PageData< MemberProjectInfoResultDTO>}
* @Author zhaoqifeng
* @Date 2022/7/27 9:44
*/
@Override
public PageData<MemberProjectInfoResultDTO> memberProjectInfoList(TokenDto tokenDto, OrgStatisticsFormDTO formDTO) {
formDTO.setCustomerId(tokenDto.getCustomerId());
PageData<MemberProjectInfoResultDTO> result;
if (StringUtils.isBlank(formDTO.getOrgId())) {
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId());
if (null == staffInfo) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取用户信息失败", "获取用户信息失败");
}
formDTO.setOrgId(staffInfo.getAgencyId());
formDTO.setOrgType(OrgConstant.AGENCY);
}
if (StringUtils.isEmpty(formDTO.getStartDate()) && StringUtils.isEmpty(formDTO.getEndDate())) {
//当前日期前一天
String dateId = DateUtils.format(DateUtils.addDateDays(new Date(), NumConstant.ONE_NEG), DateUtils.DATE_PATTERN_YYYYMMDD);
formDTO.setEndDate(dateId);
}
if (OrgConstant.AGENCY.contains(formDTO.getOrgType())) {
//获取当前组织的所有下级组织ID(包含本级)
List<String> agencyIds = customerAgencyDao.getSubAgencyList(formDTO.getOrgId());
formDTO.setAgencyList(agencyIds);
//获取组织下的网格员
result = epmetUserService.getMemberList(formDTO);
} else {
//获取网格下的网格员
result = dataStatsService.getMemberList(formDTO);
}
if (CollectionUtils.isNotEmpty(result.getList())) {
//统计项目数
Map<String, Integer> projectMap = govProjectService.getMemberProjectMap(formDTO);
//统计关闭项目数
Map<String, Integer> closedMap = govProjectService.getMemberClosedProjectMap(formDTO);
result.getList().forEach(item -> {
if (projectMap.containsKey(item.getStaffId())) {
item.setProjectCount(projectMap.get(item.getStaffId()));
}
if (projectMap.containsKey(item.getStaffId())) {
item.setClosedCount(closedMap.get(item.getStaffId()));
}
if (OrgConstant.AGENCY.contains(formDTO.getOrgType())) {
AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(item.getOrgId());
if (null != agencyInfo) {
item.setOrgName(agencyInfo.getOrganizationName());
}
} else {
GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(item.getOrgId());
if (null != gridInfo) {
item.setOrgName(gridInfo.getGridName());
}
}
});
}
return result;
}
}

36
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/GovProjectService.java

@ -2,13 +2,14 @@ package com.epmet.dataaggre.service.govproject;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dataaggre.dto.govissue.result.IssueListResultDTO;
import com.epmet.dataaggre.dto.govorg.form.OrgStatisticsFormDTO;
import com.epmet.dataaggre.dto.govproject.form.*;
import com.epmet.dataaggre.dto.govproject.result.*;
import com.epmet.dataaggre.entity.govproject.IcEventEntity;
import com.sun.org.apache.xpath.internal.operations.Bool;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
/**
* @Author zxc
@ -120,5 +121,36 @@ public interface GovProjectService {
*/
List<IcEventEntity> searchIcEventEntities(String customerId, String staffOrgIds, String search, Boolean isDifficultPoint,
Boolean isPage, Integer pageNo, Integer pageSize);
/**
* 网格上报项目数
* @Param formDTO
* @Return {@link Map< String, Integer>}
* @Author zhaoqifeng
* @Date 2022/7/28 9:29
*/
Map<String, Integer> getGridProjectMap(OrgStatisticsFormDTO formDTO);
/**
* 网格关闭项目数
* @Param formDTO
* @Return {@link Map< String, Integer>}
* @Author zhaoqifeng
* @Date 2022/7/28 9:29
*/
Map<String, Integer> getGridClosedProjectMap(OrgStatisticsFormDTO formDTO);
/**
* 工作人员上报项目数
* @Param formDTO
* @Return {@link Map< String, Integer>}
* @Author zhaoqifeng
* @Date 2022/7/28 9:28
*/
Map<String, Integer> getMemberProjectMap(OrgStatisticsFormDTO formDTO);
/**
* 工作人员关闭项目数
* @Param formDTO
* @Return {@link Map< String, Integer>}
* @Author zhaoqifeng
* @Date 2022/7/28 9:29
*/
Map<String, Integer> getMemberClosedProjectMap(OrgStatisticsFormDTO formDTO);
}

56
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/impl/GovProjectServiceImpl.java

@ -26,6 +26,8 @@ import com.epmet.dataaggre.dto.datastats.result.FactAgencyProjectResultDTO;
import com.epmet.dataaggre.dto.govissue.IssueProjectCategoryDictDTO;
import com.epmet.dataaggre.dto.govissue.result.IssueInfoDTO;
import com.epmet.dataaggre.dto.govissue.result.IssueListResultDTO;
import com.epmet.dataaggre.dto.govorg.form.OrgStatisticsFormDTO;
import com.epmet.dataaggre.dto.govorg.result.OrgCountDTO;
import com.epmet.dataaggre.dto.govproject.ProjectDTO;
import com.epmet.dataaggre.dto.govproject.ProjectRelatedPersonnelDTO;
import com.epmet.dataaggre.dto.govproject.ResiEventDTO;
@ -665,6 +667,60 @@ public class GovProjectServiceImpl implements GovProjectService {
return icEventDao.selectList(query);
}
@Override
public Map<String, Integer> getGridProjectMap(OrgStatisticsFormDTO formDTO) {
List<OrgCountDTO> list = projectDao.getGridProjectCount(formDTO);
if (CollectionUtils.isEmpty(list)) {
return Collections.emptyMap();
}
return list.stream().collect(Collectors.toMap(OrgCountDTO::getOrgId, OrgCountDTO::getCount, (o1, o2) -> o1));
}
@Override
public Map<String, Integer> getGridClosedProjectMap(OrgStatisticsFormDTO formDTO) {
List<OrgCountDTO> list = projectDao.getGridClosedProjectCount(formDTO);
if (CollectionUtils.isEmpty(list)) {
return Collections.emptyMap();
}
return list.stream().collect(Collectors.toMap(OrgCountDTO::getOrgId, OrgCountDTO::getCount, (o1, o2) -> o1));
}
/**
* 工作人员上报项目数
*
* @param formDTO
* @Param formDTO
* @Return {@link Map< String, Integer>}
* @Author zhaoqifeng
* @Date 2022/7/28 9:28
*/
@Override
public Map<String, Integer> getMemberProjectMap(OrgStatisticsFormDTO formDTO) {
List<OrgCountDTO> list = projectDao.getMemberProjectCount(formDTO);
if (CollectionUtils.isEmpty(list)) {
return Collections.emptyMap();
}
return list.stream().collect(Collectors.toMap(OrgCountDTO::getOrgId, OrgCountDTO::getCount, (o1, o2) -> o1));
}
/**
* 工作人员关闭项目数
*
* @param formDTO
* @Param formDTO
* @Return {@link Map< String, Integer>}
* @Author zhaoqifeng
* @Date 2022/7/28 9:29
*/
@Override
public Map<String, Integer> getMemberClosedProjectMap(OrgStatisticsFormDTO formDTO) {
List<OrgCountDTO> list = projectDao.getMemberProjectCount(formDTO);
if (CollectionUtils.isEmpty(list)) {
return Collections.emptyMap();
}
return list.stream().collect(Collectors.toMap(OrgCountDTO::getOrgId, OrgCountDTO::getCount, (o1, o2) -> o1));
}
/**
* 构造事件查询
* @param customerId

288
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/ResiServiceImpl.java

@ -0,0 +1,288 @@
package com.epmet.dataaggre.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.alibaba.excel.write.builder.ExcelWriterSheetBuilder;
import com.alibaba.excel.write.metadata.WriteSheet;
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.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.EpmetRequestHolder;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dataaggre.dto.epmetuser.form.ResisByPolicyRulesFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.ResiByPolicyInfoResultDTO;
import com.epmet.dataaggre.dto.govorg.result.GridsInfoListResultDTO;
import com.epmet.dataaggre.entity.govorg.IcHouseEntity;
import com.epmet.dataaggre.excel.ResisByPolicyExcel;
import com.epmet.dataaggre.service.ResiService;
import com.epmet.dataaggre.service.epmetuser.EpmetUserService;
import com.epmet.dataaggre.service.govorg.GovOrgService;
import com.epmet.dto.IcNeighborHoodDTO;
import com.epmet.dto.form.LoginUserDetailsFormDTO;
import com.epmet.dto.result.LoginUserDetailsResultDTO;
import com.epmet.feign.EpmetHeartOpenFeignClient;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.github.pagehelper.PageInfo;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.servlet.resource.ResourceUrlEncodingFilter;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalUnit;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
@Service
public class ResiServiceImpl implements ResiService, ResultDataResolver {
@Autowired
private EpmetUserService epmetUserService;
@Autowired
private GovOrgService govOrgService;
@Autowired
private EpmetHeartOpenFeignClient heartOpenFeignClient;
@Autowired
private EpmetUserOpenFeignClient userOpenFeignClient;
public static final Pattern REG_DATE = Pattern.compile("^(\\d{4})-(\\d{2})-(\\d{2})");
@Override
public PageData<ResiByPolicyInfoResultDTO> listByPolicyRules(String orgId, String orgType, String neighborHoodId, String buildingId, String unitId,
String houseId, String idCard, String name, Integer pageNo, Integer pageSize,
List<ResisByPolicyRulesFormDTO.ResiRule> resiRule,
List<ResisByPolicyRulesFormDTO.HouseRule> houseRule,
List<ResisByPolicyRulesFormDTO.StatRule> statRule) {
String userId = EpmetRequestHolder.getLoginUserId();
String app = EpmetRequestHolder.getLoginUserApp();
String client = EpmetRequestHolder.getLoginUserClient();
String customerId = EpmetRequestHolder.getLoginUserCustomerId();
// 对特殊规则进行转换。
specificRuleConvert(resiRule);
// 查询当前组织及下级id路径
LoginUserDetailsResultDTO userDetail = getResultDataOrThrowsException(userOpenFeignClient.getLoginUserDetails(new LoginUserDetailsFormDTO(app, client, userId)),
ServiceConstant.EPMET_USER_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null, null);
String orgIdPath = userDetail.getOrgIdPath();
// 结果集
List<ResiByPolicyInfoResultDTO> resultResis = new ArrayList<>();
// 1.用户没配置house和stat规则,直接按照居民规则查询
if (CollectionUtils.isEmpty(houseRule) && CollectionUtils.isEmpty(statRule)) {
List<ResiByPolicyInfoResultDTO> resis = epmetUserService.listByPolicyRules(customerId, orgIdPath, orgId, orgType, neighborHoodId, buildingId, unitId,
houseId, idCard, name, pageNo, pageSize, resiRule, null);
fillResisExtraInfoForPolicy(resis);
return new PageData<>(resis, new PageInfo(resis).getTotal());
}
// 2.用户至少配置了house和stat规则的一个,那么就先查询房屋出来,然后根据房屋去找居民
int housePageNo = 1;
int total = 0;
// 只能手动分页了
int start = (pageNo - 1) * pageSize;
int end = pageNo * pageSize; // 不包含
do {
// 拿到房屋id列表,去查询居民列表
List<String> houseIds = govOrgService.listHouseIdsByRules(customerId, orgIdPath, orgId, orgType, neighborHoodId, buildingId, unitId,
houseId, houseRule, statRule, housePageNo, 50);
if (houseIds.size() == 0) {
// 用户使用了房屋和统计相关的条件,但是没查到房屋,我看就没有走下去了的必要了吧..
break;
}
// 查询居民数量
Integer count = epmetUserService.getTotalByPolicyRules(
customerId, orgIdPath, orgId, orgType, neighborHoodId, buildingId, unitId,
houseId, idCard, name, resiRule, houseIds);
total += count;
// 查询居民,满了20个,不再查询数据,只查询数量
if (resultResis.size() < end) {
List<ResiByPolicyInfoResultDTO> resis = epmetUserService.listByPolicyRules(
customerId, orgIdPath, orgId, orgType, neighborHoodId, buildingId, unitId,
houseId, idCard, name, 1, end, resiRule, houseIds);
resultResis.addAll(resis);
}
housePageNo ++;
} while (true);
// 查出来所有的数据都没够到这一页的起始条数,返回空
if (resultResis.size() < start) {
return new PageData<>(new ArrayList<>(), total);
}
resultResis = resultResis.subList(start, Math.min(end, resultResis.size()));
// 补充额外信息
fillResisExtraInfoForPolicy(resultResis);
return new PageData<>(resultResis, total);
}
/**
* 为特定的规则进行转换
* @param resiRule
*/
private void specificRuleConvert(List<ResisByPolicyRulesFormDTO.ResiRule> resiRule) {
// 使用年龄计算出生日期
if (resiRule != null) {
resiRule.stream().forEach((r) -> {
if ("BIRTHDAY".equals(r.getColKey())) {
LocalDate birthday = LocalDate.now().minus(Long.valueOf(r.getColVal()), ChronoUnit.YEARS);
r.setQueryType(revertQueryType(r.getQueryType()));
r.setColVal(birthday.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
}
});
}
}
/**
* 翻转逻辑操作符
* @param oldRel
* @return
*/
private String revertQueryType(String oldRel) {
if (">".equals(oldRel)) {
return "<";
}
if (">=".equals(oldRel)) {
return "<=";
}
if ("<".equals(oldRel)) {
return ">";
}
if ("<=".equals(oldRel)) {
return ">=";
}
return "";
}
/**
* 补充额外信息
* @param resultResis
*/
private void fillResisExtraInfoForPolicy(List<ResiByPolicyInfoResultDTO> resultResis) {
if (CollectionUtils.isEmpty(resultResis)) {
return;
}
List<String> gridIds = new ArrayList<>();
List<String> neighborhoodIds = new ArrayList<>();
resultResis.stream().forEach((r) -> {
gridIds.add(r.getGridId());
neighborhoodIds.add(r.getNeighborhoodId());
});
// 统一收集网格和小区信息
Map<String, String> gridIdAndName = govOrgService.gridListByIds(gridIds)
.stream()
.collect(Collectors.toMap(GridsInfoListResultDTO::getGridId, GridsInfoListResultDTO::getName));
Map<String, String> neighborhoodIdAndName = govOrgService.neighborhoodsByIds(neighborhoodIds)
.stream().collect(Collectors.toMap(IcNeighborHoodDTO::getId, IcNeighborHoodDTO::getNeighborHoodName));
resultResis.stream().forEach((r) -> {
// 小区名称
r.setNeighborHoodName(gridIdAndName.get(r.getGridId()).concat("-").concat(neighborhoodIdAndName.get(r.getNeighborhoodId())));
// 出生日期 & 年龄
if (r.getBirthday() != null) {
Integer age = null;
try {
Matcher matcher = REG_DATE.matcher(r.getBirthday());
if (matcher.matches()) {
String year = matcher.group(1);
String month = matcher.group(2);
String day = matcher.group(3);
LocalDate birthdayLocalDate = LocalDate.of(Integer.parseInt(year), Integer.parseInt(month), Integer.parseInt(day));
age = Period.between(birthdayLocalDate, LocalDate.now()).getYears();
r.setAge(age);
}
} catch (DateTimeException e) {
logger.error(r.getIcResiUserId() + "居民生日计算错误");
}
}
});
}
@Override
public void exportResisByPolicy(String orgId, String orgType, String neighborHoodId, String buildingId, String unitId,
String houseId, String idCard, String name,
String ruleId, List<ResisByPolicyRulesFormDTO.ResiRule> resiRule,
List<ResisByPolicyRulesFormDTO.HouseRule> houseRule,
List<ResisByPolicyRulesFormDTO.StatRule> statRule,
HttpServletResponse response) throws IOException {
if (StringUtils.isNotBlank(ruleId)) {
// 从heart取,覆盖形参
com.epmet.dto.form.resi.ResisByPolicyRulesFormDTO.RuleList ruleList = getResultDataOrThrowsException(
heartOpenFeignClient.listPolicyRules4QueryAndExport(ruleId),
ServiceConstant.EPMET_HEART_SERVER,
EpmetErrorCode.SERVER_ERROR.getCode(),
null, null);
resiRule = ConvertUtils.sourceToTarget(ruleList.getResiRuleList(), ResisByPolicyRulesFormDTO.ResiRule.class);
houseRule = ConvertUtils.sourceToTarget(ruleList.getHouseRuleList(), ResisByPolicyRulesFormDTO.HouseRule.class);
statRule = ConvertUtils.sourceToTarget(ruleList.getStatRuleList(), ResisByPolicyRulesFormDTO.StatRule.class);
}
// 模板导出
ExcelWriter writer = EasyExcel.write(ExcelUtils.getOutputStreamForExcel("政策人员预览信息导出.xlsx", response))
//.withTemplate(inputStream)
.build();
WriteSheet writeSheet = EasyExcel.writerSheet("政策人员列表")
.head(ResiByPolicyInfoResultDTO.class)
.build();
Integer pageSize = 500;
Integer pageNo = 1;
try {
do {
PageData<ResiByPolicyInfoResultDTO> resis = this.listByPolicyRules(orgId, orgType, neighborHoodId, buildingId, unitId,
houseId, idCard, name, pageNo, pageSize, resiRule, houseRule, statRule);
List<ResiByPolicyInfoResultDTO> list = resis.getList();
List<ResisByPolicyExcel> excelDatas = ConvertUtils.sourceToTarget(list, ResisByPolicyExcel.class);
if (CollectionUtils.isEmpty(excelDatas)) {
break;
}
writer.write(resis.getList(), writeSheet);
pageNo++;
} while (true);
} finally {
writer.finish();
}
}
}

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

@ -1206,4 +1206,55 @@
GROUP BY grid_id, date_id
</select>
<select id="getAgencyProjectTotal" resultType="com.epmet.dataaggre.dto.datastats.result.SubAgencyProjectResultDTO">
SELECT
AGENCY_ID,
SUM(PROJECT_INCR) AS "projectTotal",
SUM(CLOSED_INCR) AS "closedProjectTotal"
FROM
fact_agency_project_daily
WHERE DEL_FLAG = '0'
<if test="type == '0'">
AND AGENCY_ID = #{agencyId}
</if>
<if test="type == '1'">
AND PARENT_ID = #{agencyId}
</if>
<if test="null != startDate and '' != startDate">
AND DATE_ID <![CDATA[ >= ]]> #{startDate}
</if>
<if test="null != endDate and '' != endDate">
AND DATE_ID <![CDATA[ <= ]]> #{endDate}
</if>
GROUP BY AGENCY_ID
</select>
<select id="getMemberCount" resultType="com.epmet.dataaggre.dto.govorg.result.OrgCountDTO">
SELECT
GRID_ID AS "orgId",
COUNT( STAFF_ID ) AS "count"
FROM
fact_grid_member_statistics_daily
WHERE
DEL_FLAG = '0'
AND AGENCY_ID = #{agencyId}
AND DATE_ID = #{dateId}
GROUP BY
GRID_ID
</select>
<select id="getMemberList" resultType="com.epmet.dataaggre.dto.govorg.result.MemberProjectInfoResultDTO">
SELECT
STAFF_ID,
STAFF_NAME,
GRID_ID AS "orgId"
FROM
fact_grid_member_statistics_daily
WHERE
DEL_FLAG = '0'
AND GRID_ID = #{gridId}
AND DATE_ID = #{dateId}
ORDER BY
CONVERT ( STAFF_NAME USING gbk )
</select>
</mapper>

82
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/IcResiUserDao.xml

@ -69,4 +69,86 @@
and resi.STATUS='0'
</select>
<sql id="segmentForPolicyRules">
<where>
ic_resi_user.status='0'
and ic_resi_user.CUSTOMER_ID=#{customerId}
and ic_resi_user.PIDS LIKE CONCAT(#{orgIdPath},'%')
and ic_resi_user.del_flag='0'
<!--组织过滤-->
<if test="orgId != null and orgId != '' and orgType != null and orgType != ''">
<choose>
<when test="orgType == 'agency'">
and ic_resi_user.AGENCY_ID=#{orgId}
</when>
<otherwise>
and ic_resi_user.GRID_ID=#{orgId}
</otherwise>
</choose>
</if>
<!-- 小区等条件 -->
<if test="neighborHoodId != null and neighborHoodId!=''">
and ic_resi_user.VILLAGE_ID=#{neighborHoodId}
</if>
<if test="buildingId != null and buildingId!=''">
and ic_resi_user.BUILD_ID=#{buildingId}
</if>
<if test="unitId != null and unitId!=''">
and ic_resi_user.UNIT_ID=#{unitId}
</if>
<if test="houseId != null and houseId!=''">
and ic_resi_user.HOME_ID=#{houseId}
</if>
<if test="idCard != null and idCard!=''">
and ic_resi_user.ID_CARD like CONCAT('%',#{idCard}, '%')
</if>
<if test="name != null and name!=''">
and ic_resi_user.NAME like CONCAT('%',#{name}, '%')
</if>
<!-- 房屋id列表 -->
<if test="houseIds != null and houseIds.size() > 0">
and HOME_ID in
<foreach collection="houseIds" item="houseId" open="(" close=")" separator=",">
#{houseId}
</foreach>
</if>
<!-- resi规则列表 -->
<if test="resiRules != null and resiRules.size() > 0">
and
<foreach collection="resiRules" item="rule" open="(" close=")">
${rule.colTable}.${rule.colKey} ${rule.queryType} #{rule.colVal} ${rule.nextLogicalRel}
</foreach>
</if>
</where>
</sql>
<!--政策查找-->
<select id="listByPolicyRules" resultType="com.epmet.dataaggre.dto.epmetuser.result.ResiByPolicyInfoResultDTO">
select ic_resi_user.`ID` as icResiUserId,
ic_resi_user.`GRID_ID`,
ic_resi_user.`NAME`,
ic_resi_user.`MOBILE`,
ic_resi_user.`ID_CARD`,
ic_resi_user.`VILLAGE_ID` as neighborhoodId,
ic_resi_user.`BIRTHDAY`
from ic_resi_user
<if test="resiRules != null and resiRules.size() > 0">
<foreach collection="resiRules" item="rule">
<if test="rule.colTable != 'ic_resi_user'"> inner join ${rule.colTable}</if>
</foreach>
</if>
<include refid="segmentForPolicyRules"></include>
</select>
<select id="getTotalByPolicyRules" resultType="int">
select count(1)
from ic_resi_user
<if test="resiRules != null and resiRules.size() > 0">
<foreach collection="resiRules" item="rule">
<if test="rule.colTable != 'ic_resi_user'"> inner join ${rule.colTable}</if>
</foreach>
</if>
<include refid="segmentForPolicyRules"></include>
</select>
</mapper>

42
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffRoleDao.xml

@ -93,4 +93,46 @@
AND b.STAFF_ID != #{userId}
</if>
</select>
<select id="getMemberCount" resultType="com.epmet.dataaggre.dto.govorg.result.OrgCountDTO">
SELECT
ORG_ID AS "orgId",
COUNT( a.STAFF_ID ) AS "count"
FROM
staff_role a
INNER JOIN gov_staff_role b ON a.ROLE_ID = b.ID
AND b.DEL_FLAG = '0'
AND b.ROLE_KEY = 'grid_member'
AND b.CUSTOMER_ID = #{customerId}
INNER JOIN customer_staff c ON c.USER_ID = a.STAFF_ID
AND c.DEL_FLAG = '0'
AND c.CUSTOMER_ID = #{customerId}
WHERE
a.DEL_FLAG = '0'
AND a.CUSTOMER_ID = #{customerId}
GROUP BY
ORG_ID
</select>
<select id="getMemberList" resultType="com.epmet.dataaggre.dto.govorg.result.MemberProjectInfoResultDTO">
SELECT
a.STAFF_ID ,
c.REAL_NAME AS "staffName",
a.ORG_ID
FROM
staff_role a
INNER JOIN gov_staff_role b ON a.ROLE_ID = b.ID
AND b.DEL_FLAG = '0'
AND b.ROLE_KEY = 'grid_member'
AND b.CUSTOMER_ID = #{customerId}
INNER JOIN customer_staff c ON c.USER_ID = a.STAFF_ID
AND c.DEL_FLAG = '0'
AND c.CUSTOMER_ID = #{customerId}
WHERE
a.DEL_FLAG = '0'
AND a.CUSTOMER_ID = #{customerId}
<foreach collection="orgIds" item="id" open="AND a.ORG_ID IN (" separator="," close=")">
#{id}
</foreach>
ORDER BY
CONVERT ( c.REAL_NAME USING gbk )
</select>
</mapper>

10
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerAgencyDao.xml

@ -298,5 +298,15 @@
AND pid = #{agencyId}
ORDER BY created_time ASC
</select>
<select id="getSubAgencyList" resultType="java.lang.String">
SELECT
ID
FROM
customer_agency
WHERE
DEL_FLAG = '0'
AND (ID = #{agencyId}
OR PIDS LIKE CONCAT('%', #{agencyId}, '%'))
</select>
</mapper>

35
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/IcHouseDao.xml

@ -3,4 +3,39 @@
<mapper namespace="com.epmet.dataaggre.dao.govorg.IcHouseDao">
<!--为政策-预览居民,提供房屋id列表查询-->
<select id="listHouseIds4PolicyResis" resultType="java.lang.String">
select ic_house.ID
from ic_house
<where>
DEL_FLAG = '0'
and ic_house.CUSTOMER_ID = #{customerId}
and ic_house.ORG_ID_PATH like CONCAT(#{orgIdPath}, '%')
<if test="neighborHoodId != null and neighborHoodId != ''">
and ic_house.NEIGHBOR_HOOD_ID = #{neighborHoodId}
</if>
<if test="buildingId != null and buildingId != ''">
and ic_house.BUILDING_ID = #{buildingId}
</if>
<if test="unitId != null and unitId != ''">
and ic_house.BUILDING_UNIT_ID = #{unitId}
</if>
<if test="houseId != null and houseId != ''">
and ic_house.ID = #{houseId}
</if>
<if test="houseRule != null and houseRule.size() > 0">
and
<foreach collection="houseRule" item="rule" open="(" close=")">
${rule.colTable}.${rule.colKey} ${rule.queryType} #{rule.colVal} ${rule.nextLogicalRel}
</foreach>
</if>
<if test="statRule != null and statRule.size() > 0">
and
<foreach collection="statRule" item="rule" open="(" close=")">
${rule.colTable}.${rule.colKey} ${rule.queryType} #{rule.colVal} ${rule.nextLogicalRel}
</foreach>
</if>
</where>
</select>
</mapper>

15
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/IcNeighborhoodDao.xml

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dataaggre.dao.govorg.IcNeighborhoodDao">
<!--id批量查询小区列表-->
<select id="neighborhoodsByIds" resultType="com.epmet.dto.IcNeighborHoodDTO">
select ID, NEIGHBOR_HOOD_NAME
from ic_neighbor_hood
where ID in
<foreach collection="neighborhoodIds" item="id" separator="," open="(" close=")">
#{id}
</foreach>
</select>
</mapper>

82
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govproject/ProjectDao.xml

@ -419,5 +419,87 @@
GROUP BY LEFT(c.CATEGORY_CODE,#{categoryOneLength})
ORDER BY total DESC
</select>
<select id="getGridProjectCount" resultType="com.epmet.dataaggre.dto.govorg.result.OrgCountDTO">
SELECT
GRID_ID AS "orgId",
COUNT( ID ) AS "count"
FROM
project
WHERE
DEL_FLAG = '0'
AND AGENCY_ID = #{agencyId}
<if test="null != startDate and '' != startDate">
AND DATE_FORMAT(CREATED_TIME,"%Y%m%d") <![CDATA[ >= ]]> #{startDate}
</if>
<if test="null != endDate and '' != endDate">
AND DATE_FORMAT(CREATED_TIME,"%Y%m%d") <![CDATA[ <= ]]> #{endDate}
</if>
GROUP BY
GRID_ID
</select>
<select id="getGridClosedProjectCount" resultType="com.epmet.dataaggre.dto.govorg.result.OrgCountDTO">
SELECT
GRID_ID AS "orgId",
COUNT( ID ) AS "count"
FROM
project_process
WHERE
DEL_FLAG = '0'
AND AGENCY_ID = #{agencyId}
AND OPERATION = 'close'
AND GRID_ID IS NOT NULL
AND GRID_ID != ''
<if test="null != startDate and '' != startDate">
AND DATE_FORMAT(CREATED_TIME,"%Y%m%d") <![CDATA[ >= ]]> #{startDate}
</if>
<if test="null != endDate and '' != endDate">
AND DATE_FORMAT(CREATED_TIME,"%Y%m%d") <![CDATA[ <= ]]> #{endDate}
</if>
GROUP BY
GRID_ID
</select>
<select id="getMemberProjectCount" resultType="com.epmet.dataaggre.dto.govorg.result.OrgCountDTO">
SELECT
CREATED_BY AS "orgId",
COUNT( ID ) AS "count"
FROM
project
WHERE
DEL_FLAG = '0'
AND CUSTOMER_ID = #{customerId}
<if test="'grid' == orgType">
AND GRID_ID = #{orgId}
</if>
<if test="null != startDate and '' != startDate">
AND DATE_FORMAT(CREATED_TIME,"%Y%m%d") <![CDATA[ >= ]]> #{startDate}
</if>
<if test="null != endDate and '' != endDate">
AND DATE_FORMAT(CREATED_TIME,"%Y%m%d") <![CDATA[ <= ]]> #{endDate}
</if>
GROUP BY
CREATED_BY
</select>
<select id="getMemberClosedProjectCount" resultType="com.epmet.dataaggre.dto.govorg.result.OrgCountDTO">
SELECT
STAFF_ID AS "orgId",
COUNT( ID ) AS "count"
FROM
project_process
WHERE
DEL_FLAG = '0'
AND CUSTOMER_ID = #{customerId}
AND OPERATION = 'close'
<if test="'grid' == orgType">
AND GRID_ID = #{orgId}
</if>
<if test="null != startDate and '' != startDate">
AND DATE_FORMAT(CREATED_TIME,"%Y%m%d") <![CDATA[ >= ]]> #{startDate}
</if>
<if test="null != endDate and '' != endDate">
AND DATE_FORMAT(CREATED_TIME,"%Y%m%d") <![CDATA[ <= ]]> #{endDate}
</if>
GROUP BY
STAFF_ID
</select>
</mapper>

4
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/constant/DataSourceConstant.java

@ -17,4 +17,8 @@ public interface DataSourceConstant {
String EPMET_HEART="epmetHeart";
String EPMET_POINT = "epmetPoint";
String OPER_CUSTOMIZE="operCustomize";
/**
* 济南的中间数据库
*/
String JI_NAN = "jinan";
}

7
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/basereport/form/EventInfoFormDTO.java

@ -20,4 +20,11 @@ public class EventInfoFormDTO extends PageFormDTO implements Serializable {
* 操作类型新增:add 修改删除:edit
*/
private String type;
/**
* 是否初始化, 通常用于初期初始化数据由自己控制
* 0不初始化有则更新没有则新增
* 1完全初始化删除全部数据
* 2在完全初始化之后由于eventreport_pingyin表没有客户ID初始化其他客户的数据时候可以设2直接新增
*/
private String initFlag = "0";
}

2
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/org/form/GridBaseInfoFormDTO.java

@ -28,7 +28,7 @@ public class GridBaseInfoFormDTO implements Serializable {
* 操作类型新增:add 修改删除:edit 初始化所有数据:all
*/
private String type;
private String delFlag;
public interface Grid extends CustomerClientShowGroup {}
}

10
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/org/result/CustomerAgencyDTO.java

@ -147,4 +147,14 @@ public class CustomerAgencyDTO implements Serializable {
* 社区
*/
private String community;
/**
* 中心位置经度
*/
private String longitude;
/**
* 中心位置纬度
*/
private String latitude;
}

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

@ -134,4 +134,9 @@ public class CustomerStaffDTO implements Serializable {
*/
private String roleName;
/**
* 身份证号
*/
private String idCard;
}

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

@ -20,6 +20,7 @@ package com.epmet.dto.user.result;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
@ -78,6 +79,25 @@ public class GridUserInfoDTO implements Serializable {
*/
private String sex;
/**
* 网格员信息编辑插入更新时间,县市区填写
*/
private Date updateTime;
/**
* 身份证号
*/
private String idCard;
/**
* 是否离职格式为YN
*/
private String isLeave;
/**
* 离职时间格式为YYYY-MM-DD
*/
private Date leaveDate;
}

5
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/feign/DataStatisticalOpenFeignClient.java

@ -36,7 +36,7 @@ import java.util.List;
* @author: jianjun liu
*/
//url="http://localhost:8108"
//@FeignClient(name = ServiceConstant.DATA_STATISTICAL_SERVER, fallback = DataStatisticalOpenFeignClientFallBack.class, url = "http://localhost:6666")
// @FeignClient(name = ServiceConstant.DATA_STATISTICAL_SERVER, fallbackFactory = DataStatisticalOpenFeignClientFallBackFactory.class, url = "http://localhost:8108")
@FeignClient(name = ServiceConstant.DATA_STATISTICAL_SERVER, fallbackFactory = DataStatisticalOpenFeignClientFallBackFactory.class)
public interface DataStatisticalOpenFeignClient {
@ -341,7 +341,8 @@ public interface DataStatisticalOpenFeignClient {
*/
@PostMapping("/data/stats/datareporting/eventinfo")
Result<List<EventInfoResultDTO>> getEventInfo(@RequestBody EventInfoFormDTO formDTO);
@PostMapping("/data/stats/datareporting/eventinfoV2")
Result<List<EventInfoResultDTO>> getEventInfoV2(@RequestBody EventInfoFormDTO formDTO);
/**
* wangxianzhang
*

5
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/feign/impl/DataStatisticalOpenFeignClientFallBack.java

@ -333,6 +333,11 @@ public class DataStatisticalOpenFeignClientFallBack implements DataStatisticalOp
return ModuleUtils.feignConError(ServiceConstant.DATA_STATISTICAL_SERVER, "getEventInfo", formDTO);
}
@Override
public Result<List<EventInfoResultDTO>> getEventInfoV2(EventInfoFormDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.DATA_STATISTICAL_SERVER, "getEventInfoV2", formDTO);
}
@Override
public Result statsVolunteerDemandServicesDaily(String customerId) {
return ModuleUtils.feignConError(ServiceConstant.DATA_STATISTICAL_SERVER, "statsVolunteerDemandServicesDaily", customerId);

5
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DataReportingController.java

@ -102,5 +102,8 @@ public class DataReportingController {
public Result<List<EventInfoResultDTO>> getEventInfo(@RequestBody(required = false) EventInfoFormDTO formDTO) {
return new Result<List<EventInfoResultDTO>>().ok(dataReportingService.getEventInfo(formDTO));
}
@PostMapping("eventinfoV2")
public Result<List<EventInfoResultDTO>> getEventInfoV2(@RequestBody(required = false) EventInfoFormDTO formDTO) {
return new Result<List<EventInfoResultDTO>>().ok(dataReportingService.getEventInfoV2(formDTO));
}
}

3
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectDataDao.java

@ -72,6 +72,7 @@ public interface ScreenProjectDataDao extends BaseDao<ScreenProjectDataEntity> {
int updateProjectSatisfactionScore(@Param("projectId")String projectId, @Param("score")BigDecimal score);
List<ScreenProjectDataDTO> selectProjectList(@Param("customerId") String customerId, @Param("projectIds") List<String> projectIds);
List<ScreenProjectDataDTO> selectProjectListV2(@Param("customerId") String customerId, @Param("projectIds") List<String> projectIds);
/**
* @Description 查询网格下的项目分类
@ -132,4 +133,6 @@ public interface ScreenProjectDataDao extends BaseDao<ScreenProjectDataEntity> {
* @Date 2022/3/16 9:48
*/
void updateHistoryData(CustomerStaffGridDTO dto);
int getProjectCount(@Param("customerId") String customerId,@Param("dateId") String dateId);
}

9
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/DataReportingService.java

@ -69,4 +69,13 @@ public interface DataReportingService {
*/
List<EventInfoResultDTO> getEventInfo(EventInfoFormDTO formDTO);
/**
* 事件上报
* @Param formDTO
* @Return {@link List<EventInfoResultDTO>}
* @Author zhaoqifeng
* @Date 2021/10/15 14:10
*/
List<EventInfoResultDTO> getEventInfoV2(EventInfoFormDTO formDTO);
}

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/ScreenProjectDataService.java

@ -139,7 +139,7 @@ public interface ScreenProjectDataService extends BaseService<ScreenProjectDataE
* @Date 2021/10/15 14:22
*/
List<ScreenProjectDataDTO> getProjectList(String customerId, List<String> projectId, Integer pageNo, Integer pageSize);
List<ScreenProjectDataDTO> getProjectListV2(String customerId, List<String> projectId, Integer pageNo, Integer pageSize);
/**
* 项目变更MQ
* @Param msg

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

@ -260,10 +260,12 @@ public class ScreenProjectDataServiceImpl extends BaseServiceImpl<ScreenProjectD
//库中无数据,范围性删除无意义,只是针对在数据库有历史数据的情况下,保证对同一天进行反
//复采集时数不会重复
if(!CollectionUtils.isEmpty(meta)){
int affectedRows = baseDao.deleteByProjectTimeAndCustomerId(customerId,dateId);
while (affectedRows > NumConstant.ZERO) {
affectedRows = baseDao.deleteByProjectTimeAndCustomerId(customerId, dateId);
}
List<String> projectIds = meta.stream().map(ScreenProjectDataDTO::getProjectId).collect(Collectors.toList());
List<List<String>> projectPartition = ListUtils.partition(projectIds, NumConstant.FIFTY);
projectPartition.forEach(part -> {
baseDao.deleteByProjectIds(customerId, part);
});
List<List<ScreenProjectDataDTO>> partition = ListUtils.partition(meta, NumConstant.ONE_HUNDRED);
partition.forEach(part -> {
List<ScreenProjectDataEntity> list = ConvertUtils.sourceToTarget(part, ScreenProjectDataEntity.class);
@ -309,6 +311,11 @@ public class ScreenProjectDataServiceImpl extends BaseServiceImpl<ScreenProjectD
PageHelper.startPage(pageNo, pageSize, false);
return baseDao.selectProjectList(customerId, projectId);
}
@Override
public List<ScreenProjectDataDTO> getProjectListV2(String customerId, List<String> projectId, Integer pageNo, Integer pageSize) {
PageHelper.startPage(pageNo, pageSize, false);
return baseDao.selectProjectListV2(customerId, projectId);
}
/**
* @Description 项目变更MQ

74
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java

@ -100,6 +100,9 @@ public class DataReportingServiceImpl implements DataReportingService {
public List<GridUserInfoDTO> getStaffBaseInfo(StaffBaseInfoFormDTO formDTO) {
//1.查询工作人员所属网格信息
List<GridUserInfoDTO> resultList = customerGridService.getStaffGrid(formDTO);
if (CollectionUtils.isEmpty(resultList)) {
return new ArrayList<>();
}
//2.查询工作人员基础信息
List<CustomerStaffDTO> staffDTOList = userService.getStaffBaseInfo(formDTO);
@ -118,6 +121,13 @@ public class DataReportingServiceImpl implements DataReportingService {
st.setUserType(dto.getWorkType().equals("fulltime") ? "01" : "02");
st.setPhonenumber(dto.getMobile());
st.setSex(0 == dto.getGender() ? "9" : dto.getGender().toString());
st.setUpdateTime(dto.getUpdatedTime());
st.setIdCard(dto.getIdCard());
st.setStaffId(dto.getUserId());
st.setIsLeave("enable".equals(dto.getEnableFlag()) ? "N" : "Y");
if ("Y".equals(st.getIsLeave())) {
st.setLeaveDate(DateUtils.integrate(dto.getUpdatedTime(), DateUtils.DATE_PATTERN));
}
}
});
@ -201,12 +211,72 @@ public class DataReportingServiceImpl implements DataReportingService {
return list.stream().collect(collectingAndThen(toCollection(() -> new TreeSet<>(Comparator.comparing(EventInfoResultDTO::getId))), ArrayList::new));
}
/**
* 事件上报
*
* @param formDTO
* @Param formDTO
* @Return {@link List<EventInfoResultDTO>}
* @Author zhaoqifeng
* @Date 2021/10/15 14:10
*/
@Override
public List<EventInfoResultDTO> getEventInfoV2(EventInfoFormDTO formDTO) {
List<EventInfoResultDTO> list;
//根据入参,获取项目
long start = System.currentTimeMillis();
List<ScreenProjectDataDTO> projectList = screenProjectDataService.getProjectListV2(formDTO.getCustomerId(), formDTO.getProjectId(), formDTO.getPageNo(), formDTO.getPageSize());
log.info("事件上报-查询项目列表耗时:{}ms",System.currentTimeMillis()-start);
//项目列表为空,返回空数组
if(CollectionUtils.isEmpty(projectList)) {
return Collections.emptyList();
}
start = System.currentTimeMillis();
Map<String, CustomerProjectCategoryDictEntity> epmetCodeMap = new HashMap<>();
Result<String> parentCustomer = operCrmOpenFeignClient.getExternalAndParentCustomerId(formDTO.getCustomerId());
if (StringUtils.isNotBlank(parentCustomer.getData())) {
epmetCodeMap = customerProjectCategoryDictService.getByCategoryCodeMap(parentCustomer.getData());
}
Map<String, CustomerProjectCategoryDictEntity> codeMap = customerProjectCategoryDictService.getByCategoryCodeMap(formDTO.getCustomerId());
//项目ID不为空时,因为只有一条,可以直接处理
Map<String, CustomerProjectCategoryDictEntity> finalEpmetCodeMap = epmetCodeMap;
if (CollectionUtils.isNotEmpty(formDTO.getProjectId())) {
list = projectList.stream().map(project -> {
EventInfoResultDTO dto = getEventInfoResultDTO(project, finalEpmetCodeMap, codeMap);
ScreenCustomerGridDTO grid = screenCustomerGridService.getGridById(project.getOrgId());
dto.setOrgId(project.getOrgId());
if (null != grid) {
dto.setOrgCode(grid.getCode());
dto.setOrgName(grid.getGridName());
}
return dto;
}).collect(Collectors.toList());
} else {
//项目ID不为空时,提前取出客户下的组织和网格
Map<String, ScreenCustomerAgencyEntity> agencyMap = screenCustomerAgencyService.getAgencyList(formDTO.getCustomerId());
Map<String, ScreenCustomerGridDTO> gridMap = screenCustomerGridService.getGridList(formDTO.getCustomerId());
list = projectList.stream().map(project -> {
EventInfoResultDTO dto = getEventInfoResultDTO(project, finalEpmetCodeMap, codeMap);
ScreenCustomerGridDTO grid = gridMap.get(project.getOrgId());
dto.setOrgId(project.getOrgId());
if (null != grid) {
dto.setOrgCode(grid.getCode());
dto.setOrgName(grid.getGridName());
}
return dto;
}).collect(Collectors.toList());
}
log.info("事件上报-组装数据耗时:{}ms",System.currentTimeMillis()-start);
return list.stream().collect(collectingAndThen(toCollection(() -> new TreeSet<>(Comparator.comparing(EventInfoResultDTO::getId))), ArrayList::new));
}
private EventInfoResultDTO getEventInfoResultDTO(ScreenProjectDataDTO project, Map<String, CustomerProjectCategoryDictEntity> epmetCodeMap, Map<String, CustomerProjectCategoryDictEntity> codeMap) {
EventInfoResultDTO dto = new EventInfoResultDTO();
dto.setId(project.getProjectId());
dto.setCustomerId(project.getCustomerId());
dto.setEventName(project.getProjectTitle());
dto.setReporterId(project.getProjectCreator());
//获取工作人员姓名和身份证
String categoryCode = project.getCategoryCode().split(StrConstant.COMMA)[0];
String parentCode = null == codeMap.get(categoryCode)?null:codeMap.get(categoryCode).getParentCategoryCode();
//如果是孔村、榆山、锦水的项目需要关联分类字典表
@ -290,6 +360,7 @@ public class DataReportingServiceImpl implements DataReportingService {
dto.setCompleteTime(project.getCloseCaseTime());
dto.setLat(project.getLatitude());
dto.setLng(project.getLongitude());
dto.setWaysOfResolving(ProjectConstant.PROJECT_SELF_CLOSED);
return dto;
}
@ -333,4 +404,7 @@ public class DataReportingServiceImpl implements DataReportingService {
return userService.getPatrolDetailList(formDTO);
}
}

3
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/FactAgencyUserHouseDailyServiceImpl.java

@ -74,6 +74,7 @@ public class FactAgencyUserHouseDailyServiceImpl extends BaseServiceImpl<FactAge
@Override
public List<FactUserHouseResultDTO> listExport(Map<String, Object> params) {
params.put("customerId", loginUserUtil.getLoginUserCustomerId());
return baseDao.listPage(params);
}
@ -118,4 +119,4 @@ public class FactAgencyUserHouseDailyServiceImpl extends BaseServiceImpl<FactAge
baseDao.deleteByDateId(formDTO);
}
}
}

1
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/FactGridUserHouseDailyServiceImpl.java

@ -82,6 +82,7 @@ public class FactGridUserHouseDailyServiceImpl extends BaseServiceImpl<FactGridU
@Override
public List<FactUserHouseResultDTO> listExport(Map<String, Object> params) {
params.put("customerId", loginUserUtil.getLoginUserCustomerId());
return baseDao.listPage(params);
}

1
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/FactNeighborhoodUserHouseDailyServiceImpl.java

@ -93,6 +93,7 @@ public class FactNeighborhoodUserHouseDailyServiceImpl extends BaseServiceImpl<F
@Override
public List<FactUserHouseResultDTO> listExport(Map<String, Object> params) {
params.put("customerId", loginUserUtil.getLoginUserCustomerId());
return baseDao.listPage(params);
}

9
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/FactUserHouseServiceImpl.java

@ -103,6 +103,15 @@ public class FactUserHouseServiceImpl implements FactUserHouseService {
@Override
public List<FactUserHouseResultDTO> list(Map<String, Object> params) {
List<FactUserHouseResultDTO> list = new ArrayList<>();
if (params.containsKey("startTime") && params.containsKey("endTime")) {
if (StringUtils.isNotBlank(params.get("startTime").toString()) && StringUtils.isNotBlank(params.get("endTime").toString())) {
params.put("dateId", StringUtils.EMPTY);
} else {
params.put("dateId", DateUtils.getBeforeNDay(NumConstant.ONE));
}
} else {
params.put("dateId", DateUtils.getBeforeNDay(NumConstant.ONE));
}
if (params.containsKey("level")) {
if("neighborhood".equals(params.get("level").toString()) || OrgLevelEnum.GRID.getCode().equals(params.get("level").toString())){
list = factNeighborhoodUserHouseDailyService.listExport(params);

80
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectDataDao.xml

@ -269,6 +269,80 @@
ORDER BY
a.CREATED_TIME ASC
</select>
<select id="selectProjectListV2" resultType="com.epmet.dto.screen.ScreenProjectDataDTO">
SELECT
a.ID,
a.CUSTOMER_ID,
a.ORG_TYPE,
a.ORG_ID,
a.PARENT_ID,
a.ORG_NAME,
a.PROJECT_ID,
a.PROJECT_TITLE,
a.PROJECT_CREATE_TIME,
a.LINK_USER_ID,
a.LINK_NAME,
a.LINK_MOBILE,
a.PROJECT_CONTENT,
a.PROJECT_LEVEL,
a.PROJECT_ADDRESS,
a.ALL_CATEGORY_NAME,
a.LONGITUDE,
a.LATITUDE,
a.SATISFACTION_SCORE,
a.PROJECT_STATUS_CODE,
a.CLOSE_CASE_TIME,
a.DATA_END_TIME,
a.ALL_PARENT_IDS,
a.PROJECT_CREATOR,
a.ORIGIN,
a.CATEGORY_CODE,
b.HANDLER_ID AS finishOrg,
b.HANDLER_TYPE AS finishOrgType,
b.ORG_ID_PATH AS orgIdPath,
c.`LEVEL` AS finishOrgLevel
FROM
screen_project_data a
LEFT JOIN (
SELECT
spp.CUSTOMER_ID,
PROJECT_ID,
HANDLER_ID,
HANDLER_TYPE,
ORG_ID_PATH
FROM
screen_project_process spp
WHERE
(( spp.CUSTOMER_ID = '2fe0065f70ca0e23ce4c26fca5f1d933' OR spp.CUSTOMER_ID = '44876154d10d7cb7affd92000f84f833' OR spp.CUSTOMER_ID = '46c55cb862d6d5e6d05d2ab61a1cc07e' )
AND OPERATION = 'closed_case')
OR
(( spp.CUSTOMER_ID != '2fe0065f70ca0e23ce4c26fca5f1d933' AND spp.CUSTOMER_ID != '44876154d10d7cb7affd92000f84f833' AND spp.CUSTOMER_ID != '46c55cb862d6d5e6d05d2ab61a1cc07e' )
AND OPERATION = 'close')
<if test='null != customerId and "" != customerId'>
AND spp.CUSTOMER_ID = #{customerId}
</if>
<if test='null != projectIds and projectIds.size()>0'>
<foreach collection="projectIds" item="projectId" open="AND (" separator=" OR " close=" )">
spp.PROJECT_ID = #{projectId}
</foreach>
</if>
) b ON a.PROJECT_ID = b.PROJECT_ID
LEFT JOIN screen_customer_agency c ON b.HANDLER_ID = c.AGENCY_ID
WHERE a.DEL_FLAG = '0'
AND a.ORG_TYPE = 'grid'
AND a.CATEGORY_CODE IS NOT NULL
AND a.CATEGORY_CODE != ''
<if test='null != customerId and "" != customerId'>
AND a.CUSTOMER_ID = #{customerId}
</if>
<if test='null != projectIds and projectIds.size()>0'>
<foreach collection="projectIds" item="projectId" open="AND (" separator=" OR " close=" )">
a.PROJECT_ID = #{projectId}
</foreach>
</if>
ORDER BY
a.CREATED_TIME ASC
</select>
<!-- 查询网格下的项目分类 -->
<select id="selectGridCategoryProjectCount" resultType="com.epmet.dto.screen.result.GridAndOrgCategoryCountResultDTO">
@ -465,4 +539,10 @@
AND ORG_ID = #{agencyId}
AND ORIGIN = 'agency'
</update>
<select id="getProjectCount" resultType="int">
select count(ID)
from screen_project_data
where customer_id = #{customerId}
and DATA_END_TIME = #{dateId}
</select>
</mapper>

11
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/org/CustomerGridDao.xml

@ -158,8 +158,13 @@
*
FROM
customer_grid
WHERE del_flag = '0'
AND customer_id = #{customerId}
WHERE customer_id = #{customerId}
<if test="delFlag != null and delFlag !=''">
AND del_flag = #{delFlag}
</if>
and CODE is not null
and CODE !=''
and grid_name not like '%专属网格'
<if test="orgIdList != null and orgIdList.size() > 0">
<foreach collection="orgIdList" item="gridId" open="AND id IN (" separator="," close=")">
#{gridId}
@ -176,7 +181,7 @@
cg.`code` code
FROM
customer_staff_grid csg
INNER JOIN customer_grid cg ON csg.grid_id = cg.id
INNER JOIN customer_grid cg ON csg.grid_id = cg.id AND cg.`CODE` != '' AND cg.`CODE` is not null
WHERE
csg.del_flag = '0'
AND csg.customer_id = #{customerId}

8
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/org/StatsCustomerAgencyDao.xml

@ -214,8 +214,12 @@
*
FROM
customer_agency
WHERE del_flag = '0'
AND customer_id = #{customerId}
WHERE customer_id = #{customerId}
and CODE is not null
and CODE !=''
<if test="delFlag != null and delFlag !=''">
AND del_flag = #{delFlag}
</if>
<if test="orgIdList != null and orgIdList.size() > 0">
<foreach collection="orgIdList" item="agencyId" open="AND id IN (" separator="," close=")">
#{agencyId}

2
epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/AreaCodeDTO.java

@ -37,7 +37,7 @@ public class AreaCodeDTO implements Serializable {
/**
* 主键
*/
private Integer id;
private String id;
/**
* 省份code

13
epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/AreaCodeDetailFormDTO.java

@ -0,0 +1,13 @@
package com.epmet.dto.form;
import lombok.Data;
@Data
public class AreaCodeDetailFormDTO {
private String areaCode;
/**
* 省级:province; 市级: city; 区县级: district ;街道:street ;社区级community
*/
private String level;
}

76
epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/result/CustomerTreeDTO.java

@ -0,0 +1,76 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 客户关系表(01.14 add)
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-02-03
*/
@Data
public class CustomerTreeDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 客户id
*/
private String customerId;
/**
* 当前客户级别社区级community
街道:street,
区县级: district,
市级: city
省级:province
*/
private String level;
/**
* 当前客户的地区编码实际就是根组织的area_code
*/
private String areaCode;
/**
* 当前客户的地区名称
*/
private String areaName;
/**
* 当前客户的父节点地区名称
*/
private String parentCode;
/**
* 客户名称
*/
private String customerName;
/**
* 下一级
*/
private List<CustomerTreeDTO> children;
}

22
epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/EpmetCommonServiceOpenFeignClient.java

@ -98,6 +98,28 @@ public interface EpmetCommonServiceOpenFeignClient {
@PostMapping("commonservice/workday/workminutes")
Result<Map<String,Integer>> workMinutes(@RequestBody WorkMinuteFormDTO param);
/**
* 行政地区编码查询
*
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.dto.result.AreaCodeDictResultDTO>>
* @author zhy
* @date 2022/7/6 15:07
*/
@PostMapping("commonservice/areacode/areacodedetail")
Result<AreaCodeResultDTO> areaCodeDetail(@RequestBody AreaCodeDetailFormDTO formDTO);
/**
* 行政地区编码树查询
*
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.dto.result.AreaCodeDictResultDTO>>
* @author zhy
* @date 2022/7/6 15:07
*/
@PostMapping("commonservice/areacode/areacodetree")
Result<List<CustomerTreeDTO>> areaCodeTree(@RequestBody CustomerTreeDTO formDTO);
/**
* @Description 行政地区编码查询
* @Param formDTO

10
epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/fallback/EpmetCommonServiceOpenFeignClientFallback.java

@ -79,6 +79,16 @@ public class EpmetCommonServiceOpenFeignClientFallback implements EpmetCommonSer
return ModuleUtils.feignConError(ServiceConstant.EPMET_COMMON_SERVICE, "workMinutes", param);
}
@Override
public Result<AreaCodeResultDTO> areaCodeDetail(AreaCodeDetailFormDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_COMMON_SERVICE, "areaCodeDetail", formDTO);
}
@Override
public Result<List<CustomerTreeDTO>> areaCodeTree(CustomerTreeDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_COMMON_SERVICE, "areaCodeTree", formDTO);
}
@Override
public Result<List<AreaCodeDictResultDTO>> areaCodeDictTree(AreaCodeDictFormDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_COMMON_SERVICE, "areaCodeDictTree", formDTO);

28
epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/AreaCodeController.java

@ -25,12 +25,10 @@ import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.dto.AreaCodeDTO;
import com.epmet.dto.form.AddAreaCodeDictFormDTO;
import com.epmet.dto.form.AddAreaCodeFormDTO;
import com.epmet.dto.form.AreaCodeDictFormDTO;
import com.epmet.dto.form.AreaCodeFormDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.AreaCodeDictResultDTO;
import com.epmet.dto.result.AreaCodeResultDTO;
import com.epmet.dto.result.CustomerTreeDTO;
import com.epmet.service.AreaCodeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -133,4 +131,26 @@ public class AreaCodeController {
public Result<List<AreaCodeResultDTO>> nextArea(@RequestBody AreaCodeFormDTO formDTO){
return new Result<List<AreaCodeResultDTO>>().ok(areaCodeService.nextArea(formDTO));
}
/**
* @Description 行政地区编码查询
* @Param formDTO
* @author zxc
* @date 2021/1/7 下午1:41
*/
@PostMapping("areacodedetail")
public Result<AreaCodeResultDTO> areaCodeDetail(@RequestBody AreaCodeDetailFormDTO formDTO){
return new Result<AreaCodeResultDTO>().ok(areaCodeService.getAreaCodeDetail(formDTO));
}
/**
* @Description 行政地区编码查询
* @Param formDTO
* @author zxc
* @date 2021/1/7 下午1:41
*/
@PostMapping("areacodetree")
public Result<List<CustomerTreeDTO>> areaCodeTree(@RequestBody CustomerTreeDTO formDTO){
return new Result<List<CustomerTreeDTO>>().ok(areaCodeService.getAreaCodeTree(formDTO));
}
}

18
epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/dao/AreaCodeDao.java

@ -37,19 +37,25 @@ public interface AreaCodeDao extends BaseDao<AreaCodeEntity> {
List<AreaCodeDTO> selectAllArea();
AreaCodeDTO selectByCountyCode(String countyCode);
AreaCodeDTO selectByCountyCode(@Param("countyCode") String countyCode);
AreaCodeDTO selectByCityCode(String cityCode);
AreaCodeDTO selectByCityCode(@Param("cityCode") String cityCode);
AreaCodeDTO selectByProvinceCode(@Param("provinceCode") String provinceCode);
AreaCodeResultDTO selectByStreetCode(@Param("streetCode") String streetCode);
AreaCodeResultDTO selectByCommunityCode(@Param("communityCode") String communityCode);
AreaCodeDTO selectMaxCounty(String cityCode);
List<AreaCodeResultDTO> selectProvince();
List<AreaCodeResultDTO> selectCity(@Param("pCode")String pCode);
List<AreaCodeResultDTO> selectCity(@Param("pCode") String pCode);
List<AreaCodeResultDTO> selectDistrict(@Param("pCode")String pCode);
List<AreaCodeResultDTO> selectDistrict(@Param("pCode") String pCode);
List<AreaCodeResultDTO> selectStreet(@Param("pCode")String pCode);
List<AreaCodeResultDTO> selectStreet(@Param("pCode") String pCode);
List<AreaCodeResultDTO> selectCommunity(@Param("pCode")String pCode);
List<AreaCodeResultDTO> selectCommunity(@Param("pCode") String pCode);
}

10
epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/AreaCodeService.java

@ -20,12 +20,10 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.AreaCodeDTO;
import com.epmet.dto.form.AddAreaCodeDictFormDTO;
import com.epmet.dto.form.AddAreaCodeFormDTO;
import com.epmet.dto.form.AreaCodeDictFormDTO;
import com.epmet.dto.form.AreaCodeFormDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.AreaCodeDictResultDTO;
import com.epmet.dto.result.AreaCodeResultDTO;
import com.epmet.dto.result.CustomerTreeDTO;
import com.epmet.entity.AreaCodeEntity;
import java.util.List;
@ -127,4 +125,8 @@ public interface AreaCodeService extends BaseService<AreaCodeEntity> {
String addAreaCode(AddAreaCodeFormDTO formDTO);
List<AreaCodeResultDTO> nextArea(AreaCodeFormDTO formDTO);
AreaCodeResultDTO getAreaCodeDetail(AreaCodeDetailFormDTO formDTO);
List<CustomerTreeDTO> getAreaCodeTree(CustomerTreeDTO formDTO);
}

321
epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/AreaCodeServiceImpl.java

@ -36,12 +36,10 @@ import com.epmet.dao.AreaCodeChildDao;
import com.epmet.dao.AreaCodeDao;
import com.epmet.dto.AreaCodeChildDTO;
import com.epmet.dto.AreaCodeDTO;
import com.epmet.dto.form.AddAreaCodeDictFormDTO;
import com.epmet.dto.form.AddAreaCodeFormDTO;
import com.epmet.dto.form.AreaCodeDictFormDTO;
import com.epmet.dto.form.AreaCodeFormDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.AreaCodeDictResultDTO;
import com.epmet.dto.result.AreaCodeResultDTO;
import com.epmet.dto.result.CustomerTreeDTO;
import com.epmet.entity.AreaCodeEntity;
import com.epmet.redis.AreaCodeRedis;
import com.epmet.service.AreaCodeChildService;
@ -72,6 +70,7 @@ public class AreaCodeServiceImpl extends BaseServiceImpl<AreaCodeDao, AreaCodeEn
private AreaCodeChildDao childDao;
@Autowired
private AreaCodeChildService areaCodeChildService;
@Override
public PageData<AreaCodeDTO> page(Map<String, Object> params) {
IPage<AreaCodeEntity> page = baseDao.selectPage(
@ -88,8 +87,8 @@ public class AreaCodeServiceImpl extends BaseServiceImpl<AreaCodeDao, AreaCodeEn
return ConvertUtils.sourceToTarget(entityList, AreaCodeDTO.class);
}
private QueryWrapper<AreaCodeEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
private QueryWrapper<AreaCodeEntity> getWrapper(Map<String, Object> params) {
String id = (String) params.get(FieldConstant.ID_HUMP);
QueryWrapper<AreaCodeEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
@ -125,7 +124,7 @@ public class AreaCodeServiceImpl extends BaseServiceImpl<AreaCodeDao, AreaCodeEn
}
/**
* @Description 行政地区编码查询
* @Description 行政地区编码查询
* @Param formDTO
* @author zxc
* @date 2021/1/7 下午1:41
@ -134,14 +133,14 @@ public class AreaCodeServiceImpl extends BaseServiceImpl<AreaCodeDao, AreaCodeEn
public List<AreaCodeDictResultDTO> areaCodeDictTree(AreaCodeDictFormDTO formDTO) {
List<AreaCodeDictResultDTO> tree = new ArrayList<>();
String s = areaCodeRedis.get(AreaCodeConstant.SCREEN_TREE);
if (StringUtils.isNotBlank(s)){
tree = JSON.parseArray(s,AreaCodeDictResultDTO.class);
}else {
if (StringUtils.isNotBlank(s)) {
tree = JSON.parseArray(s, AreaCodeDictResultDTO.class);
} else {
List<AreaCodeDictResultDTO> areaCodeDictResultDTOS = disposeTree(formDTO);
areaCodeRedis.set(AreaCodeConstant.SCREEN_TREE,areaCodeDictResultDTOS);
areaCodeRedis.set(AreaCodeConstant.SCREEN_TREE, areaCodeDictResultDTOS);
tree = areaCodeDictResultDTOS;
}
if (StringUtils.isBlank(formDTO.getRootAreaCode())){
if (StringUtils.isBlank(formDTO.getRootAreaCode())) {
return tree;
}
List<AreaCodeDictResultDTO> treeByRootAreaCode = getTreeByRootAreaCode(tree, formDTO.getRootAreaCode());
@ -149,12 +148,12 @@ public class AreaCodeServiceImpl extends BaseServiceImpl<AreaCodeDao, AreaCodeEn
}
/**
* @Description 行政区树查询
* @Description 行政区树查询
* @Param
* @author zxc
* @date 2021/1/8 上午8:57
*/
public List<AreaCodeDictResultDTO> disposeTree(AreaCodeDictFormDTO formDTO){
public List<AreaCodeDictResultDTO> disposeTree(AreaCodeDictFormDTO formDTO) {
// 查询所有省市区
List<AreaCodeDTO> areaCodeDTOS = baseDao.selectAllArea();
// 查询所有街道、社区
@ -173,8 +172,8 @@ public class AreaCodeServiceImpl extends BaseServiceImpl<AreaCodeDao, AreaCodeEn
dto.setCode(four.getCode());
dto.setName(four.getName());
dto.setParentCode(four.getPCode());
groupByPCode.forEach((pCode,v) -> {
if (dto.getCode().equals(pCode)){
groupByPCode.forEach((pCode, v) -> {
if (dto.getCode().equals(pCode)) {
List<AreaCodeDictResultDTO> fiveResult = new ArrayList<>();
v.forEach(five -> {
AreaCodeDictResultDTO fiveDto = new AreaCodeDictResultDTO();
@ -189,7 +188,7 @@ public class AreaCodeServiceImpl extends BaseServiceImpl<AreaCodeDao, AreaCodeEn
fourResult.add(dto);
});
List<AreaCodeDictResultDTO> fourSort = new ArrayList<>();
if (!CollectionUtils.isEmpty(fourResult)){
if (!CollectionUtils.isEmpty(fourResult)) {
fourSort = fourResult.stream().sorted(Comparator.comparing(AreaCodeDictResultDTO::getCode)).collect(Collectors.toList());
}
@ -209,7 +208,7 @@ public class AreaCodeServiceImpl extends BaseServiceImpl<AreaCodeDao, AreaCodeEn
dto.setName(three.getCountyName());
List<AreaCodeDictResultDTO> fourOnceResult = new ArrayList<>();
finalFourSort.forEach(four -> {
if (dto.getCode().equals(four.getParentCode())){
if (dto.getCode().equals(four.getParentCode())) {
fourOnceResult.add(four);
}
});
@ -220,13 +219,13 @@ public class AreaCodeServiceImpl extends BaseServiceImpl<AreaCodeDao, AreaCodeEn
cityDto.setChildren(threeSort);
cityResult.add(cityDto);
});
groupByProvince.forEach((p,v) -> {
groupByProvince.forEach((p, v) -> {
AreaCodeDictResultDTO dto = new AreaCodeDictResultDTO();
dto.setCode(p);
dto.setName(v.get(NumConstant.ZERO).getProvinceName());
List<AreaCodeDictResultDTO> cityOnceResult = new ArrayList<>();
cityResult.forEach(c -> {
if (dto.getCode().equals(c.getParentCode())){
if (dto.getCode().equals(c.getParentCode())) {
cityOnceResult.add(c);
}
});
@ -239,54 +238,51 @@ public class AreaCodeServiceImpl extends BaseServiceImpl<AreaCodeDao, AreaCodeEn
}
/**
* @Description 根据节点获取组织区域树遍历传参只能是 区级别 暂时这样循环太多了
*
*
* @Description 根据节点获取组织区域树遍历传参只能是 区级别 暂时这样循环太多了
* <p>
* <p>
* 暂时这样==暂时这样==暂时这样==暂时这样==暂时这样==暂时这样==暂时这样==暂时这样==暂时这样==暂时这样
* ==暂时这样==暂时这样==暂时这样==暂时这样==暂时这样==暂时这样==暂时这样==暂时这样==暂时这样==
* 暂时这样==暂时这样==暂时这样==暂时这样==暂时这样==暂时这样==暂时这样==暂时这样==暂时这样
*
*
*
* ==暂时这样==暂时这样==暂时这样==暂时这样==暂时这样==暂时这样==暂时这样==暂时这样==暂时这样==
* 暂时这样==暂时这样==暂时这样==暂时这样==暂时这样==暂时这样==暂时这样==暂时这样==暂时这样
* @Param tree
* @Param rootAreaCode
* @author zxc
* @date 2021/1/8 上午10:02
*/
public List<AreaCodeDictResultDTO> getTreeByRootAreaCode(List<AreaCodeDictResultDTO> tree , String rootAreaCode){
public List<AreaCodeDictResultDTO> getTreeByRootAreaCode(List<AreaCodeDictResultDTO> tree, String rootAreaCode) {
List<AreaCodeDictResultDTO> result = new ArrayList<>();
if (!CollectionUtils.isEmpty(tree)){
if (!CollectionUtils.isEmpty(tree)) {
// 省级获取
for (AreaCodeDictResultDTO dto : tree) {
if (rootAreaCode.equals(dto.getCode())){
if (rootAreaCode.equals(dto.getCode())) {
result.add(dto);
return result;
}
// 市级获取
if (!CollectionUtils.isEmpty(dto.getChildren())){
if (!CollectionUtils.isEmpty(dto.getChildren())) {
for (AreaCodeDictResultDTO child : dto.getChildren()) {
if (rootAreaCode.equals(child.getCode())){
if (rootAreaCode.equals(child.getCode())) {
result.add(child);
return result;
}
// 区级获取
if (!CollectionUtils.isEmpty(child.getChildren())){
if (!CollectionUtils.isEmpty(child.getChildren())) {
for (AreaCodeDictResultDTO threeChild : child.getChildren()) {
if (rootAreaCode.equals(threeChild.getCode())){
if (rootAreaCode.equals(threeChild.getCode())) {
result.add(threeChild);
return result;
}
// 街道获取
if (!CollectionUtils.isEmpty(threeChild.getChildren())){
if (!CollectionUtils.isEmpty(threeChild.getChildren())) {
for (AreaCodeDictResultDTO fourChild : threeChild.getChildren()) {
if (rootAreaCode.equals(fourChild.getCode())){
if (rootAreaCode.equals(fourChild.getCode())) {
result.add(fourChild);
return result;
}
// 社区获取
if (!CollectionUtils.isEmpty(fourChild.getChildren())){
if (!CollectionUtils.isEmpty(fourChild.getChildren())) {
for (AreaCodeDictResultDTO fiveChild : fourChild.getChildren()) {
if (rootAreaCode.equals(fiveChild.getCode())){
if (rootAreaCode.equals(fiveChild.getCode())) {
result.add(fiveChild);
return result;
}
@ -304,40 +300,40 @@ public class AreaCodeServiceImpl extends BaseServiceImpl<AreaCodeDao, AreaCodeEn
}
@Override
public List<AreaCodeDictResultDTO> areaCodeDictTreePlus(AreaCodeDictFormDTO formDTO){
public List<AreaCodeDictResultDTO> areaCodeDictTreePlus(AreaCodeDictFormDTO formDTO) {
List<AreaCodeDictResultDTO> tree = new ArrayList<>();
String s = areaCodeRedis.get(AreaCodeConstant.THREE_SCREEN_TREE);
if (StringUtils.isNotBlank(s)){
tree = JSON.parseArray(s,AreaCodeDictResultDTO.class);
}else {
if (StringUtils.isNotBlank(s)) {
tree = JSON.parseArray(s, AreaCodeDictResultDTO.class);
} else {
List<AreaCodeDictResultDTO> threeTree = beforeThreeTree();
areaCodeRedis.set(AreaCodeConstant.THREE_SCREEN_TREE,threeTree);
areaCodeRedis.set(AreaCodeConstant.THREE_SCREEN_TREE, threeTree);
tree = threeTree;
}
if (StringUtils.isBlank(formDTO.getRootAreaCode())){
if (StringUtils.isBlank(formDTO.getRootAreaCode())) {
return tree;
}
if (StringUtils.isBlank(formDTO.getRootAreaLevel())){
if (StringUtils.isBlank(formDTO.getRootAreaLevel())) {
throw new RenException(AreaCodeConstant.ROOT_AGENCY_LEVEL_IS_LEVEL);
}
// 传参为街道-社区级
if (formDTO.getRootAreaLevel().equals(AreaCodeConstant.STREET) || formDTO.getRootAreaLevel().equals(AreaCodeConstant.COMMUNITY)){
if (formDTO.getRootAreaLevel().equals(AreaCodeConstant.STREET) || formDTO.getRootAreaLevel().equals(AreaCodeConstant.COMMUNITY)) {
tree = disposeAfterTwoLevel(formDTO);
}else if (formDTO.getRootAreaLevel().equals(AreaCodeConstant.PROVINCE) || formDTO.getRootAreaLevel().equals(AreaCodeConstant.CITY) || formDTO.getRootAreaLevel().equals(AreaCodeConstant.DISTRICT)){
tree = disposeBeforeThreeLevelFinal(formDTO,tree);
}else {
throw new RenException(String.format(AreaCodeConstant.LEVEL_ERROR,formDTO.getRootAreaLevel()));
} else if (formDTO.getRootAreaLevel().equals(AreaCodeConstant.PROVINCE) || formDTO.getRootAreaLevel().equals(AreaCodeConstant.CITY) || formDTO.getRootAreaLevel().equals(AreaCodeConstant.DISTRICT)) {
tree = disposeBeforeThreeLevelFinal(formDTO, tree);
} else {
throw new RenException(String.format(AreaCodeConstant.LEVEL_ERROR, formDTO.getRootAreaLevel()));
}
return tree;
}
/**
* @Description 省市区三级联动查询
* @Description 省市区三级联动查询
* @Param
* @author zxc
* @date 2021/1/11 上午9:35
*/
public List<AreaCodeDictResultDTO> beforeThreeTree(){
public List<AreaCodeDictResultDTO> beforeThreeTree() {
// 查询所有省市区
List<AreaCodeDTO> areaCodeDTOS = baseDao.selectAllArea();
Map<String, List<AreaCodeDTO>> groupByCity = areaCodeDTOS.stream().collect(Collectors.groupingBy(AreaCodeDTO::getCityCode));
@ -362,13 +358,13 @@ public class AreaCodeServiceImpl extends BaseServiceImpl<AreaCodeDao, AreaCodeEn
cityDto.setChildren(threeSort);
cityResult.add(cityDto);
});
groupByProvince.forEach((p,v) -> {
groupByProvince.forEach((p, v) -> {
AreaCodeDictResultDTO dto = new AreaCodeDictResultDTO();
dto.setCode(p);
dto.setName(v.get(NumConstant.ZERO).getProvinceName());
List<AreaCodeDictResultDTO> cityOnceResult = new ArrayList<>();
cityResult.forEach(c -> {
if (dto.getCode().equals(c.getParentCode())){
if (dto.getCode().equals(c.getParentCode())) {
cityOnceResult.add(c);
}
});
@ -383,12 +379,12 @@ public class AreaCodeServiceImpl extends BaseServiceImpl<AreaCodeDao, AreaCodeEn
}
/**
* @Description 街道-社区组织树查询
* @Description 街道-社区组织树查询
* @Param
* @author zxc
* @date 2021/1/11 上午9:48
*/
public List<AreaCodeDictResultDTO> afterTwoTree(AreaCodeDictFormDTO form){
public List<AreaCodeDictResultDTO> afterTwoTree(AreaCodeDictFormDTO form) {
// 查询所有街道、社区
List<AreaCodeChildDTO> areaCodeChildDTOS = childDao.selectAllChild(form.getRootAreaCode());
List<AreaCodeDictResultDTO> fourResult = new ArrayList<>();
@ -399,7 +395,7 @@ public class AreaCodeServiceImpl extends BaseServiceImpl<AreaCodeDao, AreaCodeEn
List<AreaCodeChildDTO> levelFive = org.apache.commons.collections4.CollectionUtils.isNotEmpty(groupByLevel.get(NumConstant.FIVE)) ? groupByLevel.get(NumConstant.FIVE) : new ArrayList<>();
Map<String, List<AreaCodeChildDTO>> groupByPCode = CollectionUtils.isEmpty(levelFive) ? new HashMap<>() : levelFive.stream().collect(Collectors.groupingBy(AreaCodeChildDTO::getPCode));
//街道
List<AreaCodeChildDTO> levelFour = org.apache.commons.collections4.CollectionUtils.isNotEmpty(groupByLevel.get(NumConstant.FOUR)) ?groupByLevel.get(NumConstant.FOUR):new ArrayList<>();
List<AreaCodeChildDTO> levelFour = org.apache.commons.collections4.CollectionUtils.isNotEmpty(groupByLevel.get(NumConstant.FOUR)) ? groupByLevel.get(NumConstant.FOUR) : new ArrayList<>();
// 6级
List<AreaCodeChildDTO> levelSix = groupByLevel.get(NumConstant.SIX);
Map<String, List<AreaCodeChildDTO>> groupBySixPCode = CollectionUtils.isEmpty(levelSix) ? new HashMap<>() : levelSix.stream().collect(Collectors.groupingBy(AreaCodeChildDTO::getPCode));
@ -409,8 +405,8 @@ public class AreaCodeServiceImpl extends BaseServiceImpl<AreaCodeDao, AreaCodeEn
dto.setCode(f.getCode());
dto.setName(f.getName());
dto.setParentCode(f.getPCode());
groupBySixPCode.forEach((k,v) -> {
if (dto.getCode().equals(k)){
groupBySixPCode.forEach((k, v) -> {
if (dto.getCode().equals(k)) {
List<AreaCodeDictResultDTO> six = new ArrayList<>();
v.forEach(s -> {
AreaCodeDictResultDTO sixDto = new AreaCodeDictResultDTO();
@ -431,8 +427,8 @@ public class AreaCodeServiceImpl extends BaseServiceImpl<AreaCodeDao, AreaCodeEn
dto.setCode(four.getCode());
dto.setName(four.getName());
dto.setParentCode(four.getPCode());
groupByFivePCode.forEach((pCode,v) -> {
if (dto.getCode().equals(pCode)){
groupByFivePCode.forEach((pCode, v) -> {
if (dto.getCode().equals(pCode)) {
dto.setChildren(v);
}
});
@ -443,28 +439,28 @@ public class AreaCodeServiceImpl extends BaseServiceImpl<AreaCodeDao, AreaCodeEn
}
/**
* @Description 街道-社区组织树处理
* @Description 街道-社区组织树处理
* @Param form
* @author zxc
* @date 2021/1/11 上午9:58
*/
public List<AreaCodeDictResultDTO> disposeAfterTwoLevel(AreaCodeDictFormDTO form){
public List<AreaCodeDictResultDTO> disposeAfterTwoLevel(AreaCodeDictFormDTO form) {
List<AreaCodeDictResultDTO> result = new ArrayList<>();
List<AreaCodeDictResultDTO> areaCodeDictResultDTOS = afterTwoTree(form);
if (CollectionUtils.isEmpty(areaCodeDictResultDTOS)){
if (CollectionUtils.isEmpty(areaCodeDictResultDTOS)) {
return new ArrayList<>();
}
if (form.getRootAreaLevel().equals(AreaCodeConstant.STREET)){
if (form.getRootAreaLevel().equals(AreaCodeConstant.STREET)) {
for (AreaCodeDictResultDTO dto : areaCodeDictResultDTOS) {
if (dto.getCode().equals(form.getRootAreaCode())){
if (dto.getCode().equals(form.getRootAreaCode())) {
result.add(dto);
}
}
}else {
} else {
for (AreaCodeDictResultDTO dto : areaCodeDictResultDTOS) {
if (!CollectionUtils.isEmpty(dto.getChildren())){
if (!CollectionUtils.isEmpty(dto.getChildren())) {
for (AreaCodeDictResultDTO child : dto.getChildren()) {
if (child.getCode().equals(form.getRootAreaCode())){
if (child.getCode().equals(form.getRootAreaCode())) {
result.add(child);
}
}
@ -475,42 +471,42 @@ public class AreaCodeServiceImpl extends BaseServiceImpl<AreaCodeDao, AreaCodeEn
}
/**
* @Description 省市区获取
* @Description 省市区获取
* @Param form
* @Param tree
* @author zxc
* @date 2021/1/12 上午9:22
*/
public List<AreaCodeDictResultDTO> disposeBeforeThreeLevel(AreaCodeDictFormDTO form,List<AreaCodeDictResultDTO> tree){
public List<AreaCodeDictResultDTO> disposeBeforeThreeLevel(AreaCodeDictFormDTO form, List<AreaCodeDictResultDTO> tree) {
List<AreaCodeDictResultDTO> result = new ArrayList<>();
if (CollectionUtils.isEmpty(tree)){
if (CollectionUtils.isEmpty(tree)) {
return new ArrayList<>();
}
if (form.getRootAreaLevel().equals(AreaCodeConstant.PROVINCE)){
if (form.getRootAreaLevel().equals(AreaCodeConstant.PROVINCE)) {
for (AreaCodeDictResultDTO dto : tree) {
if (dto.getCode().equals(form.getRootAreaCode())){
if (dto.getCode().equals(form.getRootAreaCode())) {
result.add(dto);
return result;
}
}
}else if (form.getRootAreaLevel().equals(AreaCodeConstant.CITY)){
} else if (form.getRootAreaLevel().equals(AreaCodeConstant.CITY)) {
for (AreaCodeDictResultDTO dto : tree) {
if (!CollectionUtils.isEmpty(dto.getChildren())){
if (!CollectionUtils.isEmpty(dto.getChildren())) {
for (AreaCodeDictResultDTO city : dto.getChildren()) {
if (city.getCode().equals(form.getRootAreaCode())){
if (city.getCode().equals(form.getRootAreaCode())) {
result.add(city);
return result;
}
}
}
}
}else if (form.getRootAreaLevel().equals(AreaCodeConstant.DISTRICT)){
} else if (form.getRootAreaLevel().equals(AreaCodeConstant.DISTRICT)) {
for (AreaCodeDictResultDTO dto : tree) {
if (!CollectionUtils.isEmpty(dto.getChildren())){
if (!CollectionUtils.isEmpty(dto.getChildren())) {
for (AreaCodeDictResultDTO city : dto.getChildren()) {
if (!CollectionUtils.isEmpty(city.getChildren())){
if (!CollectionUtils.isEmpty(city.getChildren())) {
for (AreaCodeDictResultDTO child : city.getChildren()) {
if (child.getCode().equals(form.getRootAreaCode())){
if (child.getCode().equals(form.getRootAreaCode())) {
result.add(child);
return result;
}
@ -524,29 +520,29 @@ public class AreaCodeServiceImpl extends BaseServiceImpl<AreaCodeDao, AreaCodeEn
}
/**
* @Description 拼接 街道-社区
* @Description 拼接 街道-社区
* @Param form
* @Param tree
* @author zxc
* @date 2021/1/12 上午9:21
*/
public List<AreaCodeDictResultDTO> disposeBeforeThreeLevelFinal(AreaCodeDictFormDTO form,List<AreaCodeDictResultDTO> tree){
public List<AreaCodeDictResultDTO> disposeBeforeThreeLevelFinal(AreaCodeDictFormDTO form, List<AreaCodeDictResultDTO> tree) {
List<AreaCodeDictResultDTO> threeDto = disposeBeforeThreeLevel(form, tree);
List<AreaCodeDictResultDTO> twoDto = afterTwoTree(form);
if (CollectionUtils.isEmpty(threeDto)){
if (CollectionUtils.isEmpty(threeDto)) {
return new ArrayList<>();
}
if (!CollectionUtils.isEmpty(twoDto)){
if (form.getRootAreaLevel().equals(AreaCodeConstant.PROVINCE)){
if (!CollectionUtils.isEmpty(twoDto)) {
if (form.getRootAreaLevel().equals(AreaCodeConstant.PROVINCE)) {
for (AreaCodeDictResultDTO dto : tree) {
if (dto.getCode().equals(form.getRootAreaCode())){
if (!CollectionUtils.isEmpty(dto.getChildren())){
if (dto.getCode().equals(form.getRootAreaCode())) {
if (!CollectionUtils.isEmpty(dto.getChildren())) {
for (AreaCodeDictResultDTO city : dto.getChildren()) {
if (!CollectionUtils.isEmpty(city.getChildren())){
if (!CollectionUtils.isEmpty(city.getChildren())) {
for (AreaCodeDictResultDTO child : city.getChildren()) {
List<AreaCodeDictResultDTO> areaList = new ArrayList<>();
for (AreaCodeDictResultDTO area : twoDto) {
if (child.getCode().equals(area.getParentCode())){
if (child.getCode().equals(area.getParentCode())) {
areaList.add(area);
}
}
@ -557,13 +553,13 @@ public class AreaCodeServiceImpl extends BaseServiceImpl<AreaCodeDao, AreaCodeEn
}
}
}
}else if (form.getRootAreaLevel().equals(AreaCodeConstant.CITY)){
} else if (form.getRootAreaLevel().equals(AreaCodeConstant.CITY)) {
for (AreaCodeDictResultDTO dto : threeDto) {
if (!CollectionUtils.isEmpty(dto.getChildren())){
if (!CollectionUtils.isEmpty(dto.getChildren())) {
for (AreaCodeDictResultDTO child : dto.getChildren()) {
List<AreaCodeDictResultDTO> areaList = new ArrayList<>();
for (AreaCodeDictResultDTO area : twoDto) {
if (child.getCode().equals(area.getParentCode())){
if (child.getCode().equals(area.getParentCode())) {
areaList.add(area);
}
}
@ -571,11 +567,11 @@ public class AreaCodeServiceImpl extends BaseServiceImpl<AreaCodeDao, AreaCodeEn
}
}
}
}else{
} else {
for (AreaCodeDictResultDTO dto : threeDto) {
List<AreaCodeDictResultDTO> areaList = new ArrayList<>();
for (AreaCodeDictResultDTO area : twoDto) {
if (dto.getCode().equals(area.getParentCode())){
if (dto.getCode().equals(area.getParentCode())) {
areaList.add(area);
}
}
@ -677,35 +673,35 @@ public class AreaCodeServiceImpl extends BaseServiceImpl<AreaCodeDao, AreaCodeEn
String areaCode = "";
switch (formDTO.getCurrentAreaLevel()) {
case AreaCodeConstant.DISTRICT:
areaCode = addDistrictAreaCode(formDTO.getParentAreaCode(),formDTO.getName());
areaCode = addDistrictAreaCode(formDTO.getParentAreaCode(), formDTO.getName());
break;
case AreaCodeConstant.STREET:
areaCode = addStreetCommAreaCode(ConvertUtils.sourceToTarget(formDTO,AddAreaCodeDictFormDTO.class));
areaCode = addStreetCommAreaCode(ConvertUtils.sourceToTarget(formDTO, AddAreaCodeDictFormDTO.class));
break;
case AreaCodeConstant.COMMUNITY:
areaCode = addStreetCommAreaCode(ConvertUtils.sourceToTarget(formDTO,AddAreaCodeDictFormDTO.class));
areaCode = addStreetCommAreaCode(ConvertUtils.sourceToTarget(formDTO, AddAreaCodeDictFormDTO.class));
break;
default:
log.info("currentAreaLevel值为"+formDTO.getCurrentAreaLevel());
log.info("currentAreaLevel值为" + formDTO.getCurrentAreaLevel());
}
return areaCode;
}
@Override
public List<AreaCodeResultDTO> nextArea(AreaCodeFormDTO formDTO) {
if(StringUtils.isBlank(formDTO.getParentAreaCode())&&StringUtils.isBlank(formDTO.getParentLevel())){
String pKey=RedisKeys.getNextAreaCodeKey(NumConstant.ZERO_STR);
List<AreaCodeResultDTO> list=areaCodeRedis.getNextAreaCodeKey(pKey);
if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(list)){
if (StringUtils.isBlank(formDTO.getParentAreaCode()) && StringUtils.isBlank(formDTO.getParentLevel())) {
String pKey = RedisKeys.getNextAreaCodeKey(NumConstant.ZERO_STR);
List<AreaCodeResultDTO> list = areaCodeRedis.getNextAreaCodeKey(pKey);
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(list)) {
return list;
}
List<AreaCodeResultDTO> pList=baseDao.selectProvince();
areaCodeRedis.setNextAreaCodeKey(pKey,pList);
List<AreaCodeResultDTO> pList = baseDao.selectProvince();
areaCodeRedis.setNextAreaCodeKey(pKey, pList);
return pList;
}
String key=RedisKeys.getNextAreaCodeKey(formDTO.getParentAreaCode());
List<AreaCodeResultDTO> list=areaCodeRedis.getNextAreaCodeKey(key);
if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(list)){
String key = RedisKeys.getNextAreaCodeKey(formDTO.getParentAreaCode());
List<AreaCodeResultDTO> list = areaCodeRedis.getNextAreaCodeKey(key);
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(list)) {
return list;
}
switch (formDTO.getParentLevel()) {
@ -723,17 +719,116 @@ public class AreaCodeServiceImpl extends BaseServiceImpl<AreaCodeDao, AreaCodeEn
break;
case AreaCodeConstant.COMMUNITY:
log.info("社区无下级");
list=null;
list = null;
break;
default:
log.warn("parentLevel错误:"+formDTO.getParentLevel());
log.warn("parentLevel错误:" + formDTO.getParentLevel());
}
if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(list)){
areaCodeRedis.setNextAreaCodeKey(key,list);
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(list)) {
areaCodeRedis.setNextAreaCodeKey(key, list);
}
return list;
}
@Override
public AreaCodeResultDTO getAreaCodeDetail(AreaCodeDetailFormDTO formDTO) {
AreaCodeResultDTO result = new AreaCodeResultDTO();
switch (formDTO.getLevel()) {
case AreaCodeConstant.PROVINCE:
AreaCodeDTO province = baseDao.selectByProvinceCode(formDTO.getAreaCode());
if (province != null) {
result.setAreaName(province.getProvinceName());
result.setAreaCode(province.getProvinceCode());
result.setParentCode(NumConstant.ZERO_STR);
result.setLevel(AreaCodeConstant.PROVINCE);
}
break;
case AreaCodeConstant.CITY:
AreaCodeDTO city = baseDao.selectByCityCode(formDTO.getAreaCode());
if (city != null) {
result.setAreaName(city.getCityName());
result.setAreaCode(city.getCityName());
result.setParentCode(city.getProvinceCode());
result.setLevel(AreaCodeConstant.CITY);
}
break;
case AreaCodeConstant.DISTRICT:
AreaCodeDTO county = baseDao.selectByCountyCode(formDTO.getAreaCode());
if (county != null) {
result.setAreaName(county.getCountyName());
result.setAreaCode(county.getCountyCode());
result.setParentCode(county.getCityCode());
result.setLevel(AreaCodeConstant.DISTRICT);
}
break;
case AreaCodeConstant.STREET:
result = baseDao.selectByStreetCode(formDTO.getAreaCode());
break;
case AreaCodeConstant.COMMUNITY:
result = baseDao.selectByCommunityCode(formDTO.getAreaCode());
break;
default:
log.warn("Level错误:" + formDTO.getLevel());
}
return result;
}
@Override
public List<CustomerTreeDTO> getAreaCodeTree(CustomerTreeDTO formDTO) {
List<AreaCodeResultDTO> tree = new ArrayList<>();
areaCodeHandle(formDTO.getLevel(), formDTO.getAreaCode(), tree);
return ConvertUtils.sourceToTarget(tree, CustomerTreeDTO.class);
}
private void areaCodeHandle(String level, String areaCode, List<AreaCodeResultDTO> tree) {
AreaCodeResultDTO result = new AreaCodeResultDTO();
switch (level) {
case AreaCodeConstant.PROVINCE:
AreaCodeDTO province = baseDao.selectByProvinceCode(areaCode);
if (province != null) {
result.setAreaName(province.getProvinceName());
result.setAreaCode(province.getProvinceCode());
result.setParentCode(NumConstant.ZERO_STR);
result.setLevel(AreaCodeConstant.PROVINCE);
tree.add(result);
}
break;
case AreaCodeConstant.CITY:
AreaCodeDTO city = baseDao.selectByCityCode(areaCode);
if (city != null) {
result.setAreaName(city.getCityName());
result.setAreaCode(city.getCityCode());
result.setParentCode(city.getProvinceCode());
result.setLevel(AreaCodeConstant.CITY);
tree.add(result);
areaCodeHandle(AreaCodeConstant.PROVINCE, city.getProvinceCode(), tree);
}
break;
case AreaCodeConstant.DISTRICT:
AreaCodeDTO county = baseDao.selectByCountyCode(areaCode);
if (county != null) {
result.setAreaName(county.getCountyName());
result.setAreaCode(county.getCountyCode());
result.setParentCode(county.getCityCode());
result.setLevel(AreaCodeConstant.DISTRICT);
tree.add(result);
areaCodeHandle(AreaCodeConstant.CITY, county.getCityCode(), tree);
}
break;
case AreaCodeConstant.STREET:
result = baseDao.selectByStreetCode(areaCode);
tree.add(result);
areaCodeHandle(AreaCodeConstant.DISTRICT, result.getParentCode(), tree);
break;
case AreaCodeConstant.COMMUNITY:
result = baseDao.selectByCommunityCode(areaCode);
tree.add(result);
areaCodeHandle(AreaCodeConstant.STREET, result.getParentCode(), tree);
break;
default:
log.warn("Level错误:" + level);
}
}
private String addDistrictAreaCode(String cityCode, String countyName) {
AreaCodeDTO city = baseDao.selectByCityCode(cityCode);

10
epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/AreaCodeChildDao.xml

@ -20,6 +20,16 @@
and m.`CODE`=#{code}
</select>
<select id="getByCode" resultType="com.epmet.dto.result.AreaCodeResultDTO">
SELECT
*
FROM
area_code_child m
WHERE
m.DEL_FLAG = '0'
and m.`CODE`= #{code}
</select>
<!-- 根据p_code、name查询社区列表 -->
<select id="selectByPCodeAndName" resultType="com.epmet.dto.AreaCodeChildDTO">
SELECT

31
epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/AreaCodeDao.xml

@ -19,6 +19,13 @@
and ac.CITY_CODE=#{cityCode}
</select>
<select id="selectByProvinceCode" resultType="com.epmet.dto.AreaCodeDTO">
select distinct ac.PROVINCE_CODE,ac.PROVINCE_NAME
from area_code ac
where ac.DEL_FLAG='0'
and ac.PROVINCE_CODE=#{provinceCode}
</select>
<select id="selectMaxCounty" resultType="com.epmet.dto.AreaCodeDTO" parameterType="java.lang.String">
select *
from area_code ac
@ -106,4 +113,28 @@
ORDER BY
ac.`code` ASC
</select>
<select id="selectByStreetCode" resultType="com.epmet.dto.result.AreaCodeResultDTO">
SELECT
ac.`code` AS areaCode,
ac.`name` AS areaName,
ac.p_code AS parentCode,
'street' AS LEVEL
FROM
area_code_child ac
WHERE
ac.DEL_FLAG = '0'
AND ac.`code` = #{streetCode}
</select>
<select id="selectByCommunityCode" resultType="com.epmet.dto.result.AreaCodeResultDTO">
SELECT
ac.`code` AS areaCode,
ac.`name` AS areaName,
ac.p_code AS parentCode,
'street' AS LEVEL
FROM
area_code_child ac
WHERE
ac.DEL_FLAG = '0'
AND ac.`code` = #{communityCode}
</select>
</mapper>

116
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/HeartAttachmentDTO.java

@ -0,0 +1,116 @@
package com.epmet.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* heart库附件表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-07-18
*/
@Data
public class HeartAttachmentDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String id;
/**
* 客户ID
*/
private String customerId;
/**
* 业务id
*/
private String businessId;
/**
* 政策ic_policy;服务ic_service_record_v2
*/
private String attachTo;
/**
* 附件名
*/
private String name;
/**
* 文件格式JPGPNGPDFJPEGBMPMP4WMAM4AMP3DOCDOCXXLS
*/
private String format;
/**
* 附件类型图片 - image 视频 - video 语音 - voice 文档 - doc
*/
private String type;
/**
* 附件地址
*/
private String url;
/**
* 排序字段
*/
private Integer sort;
/**
* 附件状态审核中auditing
auto_passed: 自动通过
review结果不确定需要人工审核
block: 结果违规
rejected人工审核驳回;
approved人工审核通过
现在图片是同步审核的所以图片只有auto_passed一种状态
*/
private String status;
/**
* 失败原因
*/
private String reason;
/**
* 语音或视频时长,
*/
private Integer duration;
/**
* 删除标记 0未删除1已删除
*/
private String delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}

74
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPolicyCategoryDTO.java

@ -0,0 +1,74 @@
package com.epmet.dto;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 政策匹配资源类型
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-07-18
*/
@Data
public class IcPolicyCategoryDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String id;
/**
* 客户ID
*/
private String customerId;
/**
* 政策id
*/
private String icPolicyId;
/**
* 分类编码
*/
private String categoryCode;
/**
* 分类全路径,包含CATEGORY_CODE,英文逗号隔开
*/
private String codePath;
/**
* 删除标记 0未删除1已删除
*/
private String delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}

77
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPolicyDTO.java

@ -0,0 +1,77 @@
package com.epmet.dto;
import com.epmet.commons.tools.dto.form.FileCommonDTO;
import com.epmet.dto.form.policy.IcPolicyRuleFormDTO;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* 政策表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-07-18
*/
@Data
public class IcPolicyDTO implements Serializable {
private static final long serialVersionUID = 1L;
private String policyId;
/**
* 政策创建人所属组织id
*/
private String orgId;
/**
* AGENCY_ID的全路径含agency_id
*/
private String orgIdPath;
/**
* 政策级别0市级1区级2街道级
*/
private String policyLevel;
/**
* 政策级别0市级1区级2街道级
*/
private String policyLevelName;
/**
* 生效起止日期
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date startDate;
/**
* 截止日期
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date endDate;
/**
* 政策标题
*/
private String title;
/**
* 政策内容
*/
private String content;
/**
* 是否过期1已过期0未过期
*/
private String expiredFlag;
//以下三个详情接口返回
private List<IcPolicyCategoryDTO> categoryList;
private List<FileCommonDTO> attachmentList;
private List<IcPolicyRuleFormDTO> ruleList;
}

82
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPolicyRuleDTO.java

@ -0,0 +1,82 @@
package com.epmet.dto;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 政策匹配规则
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-07-18
*/
@Data
public class IcPolicyRuleDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String id;
/**
* 客户ID
*/
private String customerId;
/**
* 政策id
*/
private String icPolicyId;
/**
* 规则名称
*/
private String ruleName;
/**
* 排序字段
*/
private Integer sort;
/**
* 删除标记 0未删除1已删除
*/
@JsonIgnore
private String delFlag;
/**
* 乐观锁
*/
@JsonIgnore
private Integer revision;
/**
* 创建人
*/
@JsonIgnore
private String createdBy;
/**
* 创建时间
*/
@JsonIgnore
private Date createdTime;
/**
* 更新人
*/
@JsonIgnore
private String updatedBy;
/**
* 更新时间
*/
@JsonIgnore
private Date updatedTime;
}

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

Loading…
Cancel
Save