Browse Source

Merge branches 'dev' and 'dev_third_data' of http://git.elinkit.com.cn:7070/r/epmet-cloud into dev_third_data

 Conflicts:
	epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenCustomerAgencyDao.xml
	epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java
	epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java
	epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/ProjectConstant.java
	epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java
	epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectSatisfactionStatisticsDao.java
	epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ProjectSatisfactionStatisticsEntity.java
	epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml
	epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectSatisfactionStatisticsDao.xml
	epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java
	epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java
	epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java
	epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/ResiTopicService.java
	epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java
master
yinzuomei 4 years ago
parent
commit
c371105861
  1. 2
      epmet-auth/src/main/java/com/epmet/service/impl/GovWebServiceImpl.java
  2. 2
      epmet-auth/src/main/java/com/epmet/service/impl/SsoServiceImpl.java
  3. 3
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java
  4. 5
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/ProjectSatisfactionStatisticsDTO.java
  5. 5
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govproject/ProjectSatisfactionStatisticsEntity.java
  6. 10
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/result/screen/CategoryAnalysisResultDTO.java
  7. 3
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/form/IndexScoreFormDTO.java
  8. 3
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/form/ScreenProjectDetailFormDTO.java
  9. 2
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/AdvanceBranchRankResultDTO.java
  10. 1
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/OrgRankDataResultDTO.java
  11. 4
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/SubAgencyIndexRankResultDTO.java
  12. 29
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/CustomerProjectCategoryDTO.java
  13. 3
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/IndexController.java
  14. 4
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/ScreenProjectController.java
  15. 8
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenCustomerAgencyDao.java
  16. 3
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.java
  17. 10
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectDataDao.java
  18. 2
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/AgencyServiceImpl.java
  19. 1
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/GrassrootsPartyDevServiceImpl.java
  20. 2
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/IndexServiceImpl.java
  21. 26
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/PartyMemberLeadServiceImpl.java
  22. 45
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/ScreenProjectServiceImpl.java
  23. 27
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/user/impl/UserAnalysisServiceImpl.java
  24. 1
      epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenCustomerAgencyDao.xml
  25. 14
      epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenIndexDataMonthlyDao.xml
  26. 3
      epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenIndexDataYearlyDao.xml
  27. 6
      epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenOrgRankDataDao.xml
  28. 82
      epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectCategoryOrgDailyDao.xml
  29. 4
      epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectDataDao.xml
  30. 3
      epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectGridDailyDao.xml
  31. 3
      epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectOrgDailyDao.xml
  32. 9
      epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenPublicPartiTotalDataDao.xml
  33. 8
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginTopicMainDailyDao.java
  34. 8
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenCustomerAgencyDao.java
  35. 10
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.java
  36. 25
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginTopicMainDailyServiceImpl.java
  37. 8
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/ScreenCustomerAgencyService.java
  38. 11
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenCustomerAgencyServiceImpl.java
  39. 77
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectCategoryOrgDailyServiceImpl.java
  40. 16
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ShiBeiScreenCollServiceImpl.java
  41. 4
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/util/ModuleConstant.java
  42. 1
      epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.16__add_shiftIssue.sql
  43. 13
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginTopicMainDailyDao.xml
  44. 14
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenCustomerAgencyDao.xml
  45. 13
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.xml
  46. 20
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/group/GroupDataDao.xml
  47. 9
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java
  48. 2
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxLoginServiceImpl.java
  49. 26
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/CanEvaluateProjectCountBatchResultDTO.java
  50. 20
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssueVoteResultDTO.java
  51. 18
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java
  52. 10
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java
  53. 22
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueController.java
  54. 17
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteDetailDao.java
  55. 16
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueService.java
  56. 95
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java
  57. 26
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteDetailDao.xml
  58. 2
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java
  59. 5
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java
  60. 2
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java
  61. 4
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java
  62. 4
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java
  63. 30
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml
  64. 5
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/ProjectSatisfactionStatisticsDTO.java
  65. 5
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ProjectEvaluateFormDTO.java
  66. 24
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ComplementedProjectEvaluateResultDTO.java
  67. 20
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectEvaluateDetailResultDTO.java
  68. 4
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/ProjectConstant.java
  69. 11
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectSatisfactionDetailController.java
  70. 7
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java
  71. 9
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectSatisfactionDetailDao.java
  72. 25
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectSatisfactionStatisticsDao.java
  73. 2
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ProjectSatisfactionStatisticsEntity.java
  74. 26
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/redis/ProjectRedis.java
  75. 7
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectSatisfactionDetailService.java
  76. 100
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectSatisfactionDetailServiceImpl.java
  77. 21
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java
  78. 1
      epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.12__alter_shouldEvaluateCount.sql
  79. 12
      epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml
  80. 16
      epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectSatisfactionDetailDao.xml
  81. 33
      epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectSatisfactionStatisticsDao.xml
  82. 15
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/ResiTopicDTO.java
  83. 15
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/TopicDraftDTO.java
  84. 15
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/CreateTopicFormDTO.java
  85. 9
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/DraftDetailResultDTO.java
  86. 10
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicIncludeIssueDetailResultDTO.java
  87. 20
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/TopicCreatedUserBatchResultDTO.java
  88. 23
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java
  89. 10
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java
  90. 1
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ExitGroupServiceImpl.java
  91. 29
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java
  92. 10
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/ResiGroupMemberService.java
  93. 12
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/GroupMemeberOperationServiceImpl.java
  94. 18
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java
  95. 1
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/notice/service/impl/NoticeReadRecordServiceImpl.java
  96. 23
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java
  97. 15
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/entity/ResiTopicEntity.java
  98. 16
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/entity/TopicDraftEntity.java
  99. 16
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/ResiTopicService.java
  100. 67
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java

2
epmet-auth/src/main/java/com/epmet/service/impl/GovWebServiceImpl.java

@ -73,7 +73,7 @@ public class GovWebServiceImpl implements GovWebService {
form.setMobile(formDTO.getPhone());
Result<GovWebOperLoginResultDTO> result = epmetUserFeignClient.getStaffIdAndPwd(form);
if (!result.success() || null == result.getData() || null == result.getData().getUserId()) {
logger.error("根据手机号查询PC工作端登陆人员信息失败,返回10003账号不存在");
logger.warn("根据手机号查询PC工作端登陆人员信息失败,返回10003账号不存在");
throw new RenException(EpmetErrorCode.ERR10003.getCode());
}
GovWebOperLoginResultDTO resultDTO = result.getData();

2
epmet-auth/src/main/java/com/epmet/service/impl/SsoServiceImpl.java

@ -167,7 +167,7 @@ public class SsoServiceImpl implements SsoService {
//test end
if (!result.success() || null == result.getData() || null == result.getData().getUserId()) {
logger.error("根据手机号查询PC工作端登陆人员信息失败,返回10003账号不存在,param:{}", JSON.toJSONString(form));
logger.warn("根据手机号查询PC工作端登陆人员信息失败,返回10003账号不存在,param:{}", JSON.toJSONString(form));
throw new RenException(EpmetErrorCode.ERR10003.getCode());
}

3
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java

@ -82,5 +82,8 @@ public interface StrConstant {
String MAX="MAX";
//青岛体悟实训客户
String SPECIAL_CUSTOMER = "150282ed25c14ff0785e7e06283b6283";
//平音客户
String PY_CUSTOMER = "6f203e30de1a65aab7e69c058826cd80";
}

5
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/ProjectSatisfactionStatisticsDTO.java

@ -93,4 +93,9 @@ public class ProjectSatisfactionStatisticsDTO implements Serializable {
*/
private String customerId;
/**
* 应评价人数等于实际表决人数
*/
private Integer shouldEvaluateCount;
}

5
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govproject/ProjectSatisfactionStatisticsEntity.java

@ -66,4 +66,9 @@ public class ProjectSatisfactionStatisticsEntity extends BaseEpmetEntity {
@TableField(fill = FieldFill.INSERT)
private String customerId;
/**
* 应评价人数等于实际表决人数
*/
private Integer shouldEvaluateCount;
}

10
epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/result/screen/CategoryAnalysisResultDTO.java

@ -23,4 +23,14 @@ public class CategoryAnalysisResultDTO implements Serializable {
* 项目总数
*/
private Integer projectTotal;
/**
* 数据更新至
*/
private String dateId;
/**
* 分类编码
*/
private String categoryCode;
}

3
epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/form/IndexScoreFormDTO.java

@ -3,7 +3,6 @@ package com.epmet.evaluationindex.screen.dto.form;
import lombok.Data;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
@ -31,6 +30,8 @@ public class IndexScoreFormDTO implements Serializable {
*/
//@NotBlank(message = "月份Id不能为空",groups = {IndexScoreFormDTO.AddUserInternalGroup.class})
private String monthId;
private String customerId;
public interface AddUserInternalGroup {}
}

3
epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/form/ScreenProjectDetailFormDTO.java

@ -16,4 +16,7 @@ public class ScreenProjectDetailFormDTO implements Serializable {
@NotBlank(message = "projectId不能为空")
private String projectId;
@NotBlank(message = "customerId不能为空")
private String customerId;
}

2
epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/AdvanceBranchRankResultDTO.java

@ -55,4 +55,6 @@ public class AdvanceBranchRankResultDTO implements Serializable {
*/
private String parentAgencyName;
private Integer sort;
private String orgId;
}

1
epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/OrgRankDataResultDTO.java

@ -56,4 +56,5 @@ public class OrgRankDataResultDTO implements Serializable {
*/
private String parentAgencyName;
private String orgId;
}

4
epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/SubAgencyIndexRankResultDTO.java

@ -37,4 +37,8 @@ public class SubAgencyIndexRankResultDTO implements Serializable {
* 服务能力
*/
private Double serviceAbility = 0.0;
private String orgId;
private String orgType;
private String areaCode;
}

29
epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/CustomerProjectCategoryDTO.java

@ -0,0 +1,29 @@
package com.epmet.project;
import lombok.Data;
import java.io.Serializable;
/**
* 描述一下
*
* @author yinzuomei@elink-cn.com
* @date 2021/5/12 11:19
*/
@Data
public class CustomerProjectCategoryDTO implements Serializable {
/**
* 客户自己的分类编码
*/
private String categoryCode;
/**
* 客户自己的分类名称
*/
private String categoryName;
/**
* 分类等级12....产品只有2级分类
*/
private Integer level;
}

3
epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/IndexController.java

@ -134,7 +134,8 @@ public class IndexController {
* @author sun
*/
@PostMapping("month/indexscore")
public Result<IndexScoreResultDTO> indexScore(@RequestBody IndexScoreFormDTO formDTO) {
public Result<IndexScoreResultDTO> indexScore(@RequestHeader("CustomerId") String customerId,@RequestBody IndexScoreFormDTO formDTO) {
formDTO.setCustomerId(customerId);
ValidatorUtils.validateEntity(formDTO, IndexScoreFormDTO.AddUserInternalGroup.class);
return new Result<IndexScoreResultDTO>().ok(indexService.indexScore(formDTO));
}

4
epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/ScreenProjectController.java

@ -74,7 +74,9 @@ public class ScreenProjectController {
* @Date 2021/2/24 16:10
*/
@PostMapping("projectdetailv2")
public Result projectDetail(@RequestBody ScreenProjectDetailFormDTO formDTO){
public Result projectDetail(@RequestHeader("CustomerId") String customerId,@RequestBody ScreenProjectDetailFormDTO formDTO){
formDTO.setCustomerId(customerId);
ValidatorUtils.validateEntity(formDTO);
return screenProjectService.projectDistributionDetail(formDTO);
}

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

@ -150,6 +150,14 @@ public interface ScreenCustomerAgencyDao {
**/
List<GridNodeDTO> selectGridList(@Param("areaCode") String areaCode,@Param("agencyId") String agencyId);
/**
* @return java.util.List<java.lang.String>
* @param areaCode
* @param agencyId
* @author yinzuomei
* @description 下一级组织+直属网格
* @Date 2021/5/10 14:02
**/
List<String> getNextAgencyIds(@Param("areaCode")String areaCode,@Param("agencyId")String agencyId);
List<String> selectSubAgencyIds(@Param("areaCode")String areaCode,@Param("agencyId")String agencyId);

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

@ -18,6 +18,7 @@
package com.epmet.datareport.dao.evaluationindex.screen;
import com.epmet.dto.result.screen.CategoryAnalysisResultDTO;
import com.epmet.project.CustomerProjectCategoryDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -39,4 +40,6 @@ public interface ScreenProjectCategoryOrgDailyDao {
* @return java.util.List<com.epmet.dto.result.screen.CategoryAnalysisResultDTO>
*/
List<CategoryAnalysisResultDTO> selectCategoryAnalysis(@Param("agencyId") String agencyId,@Param("customerId")String customerId);
CustomerProjectCategoryDTO selectProjectCategory(@Param("categoryCode")String categoryCode, @Param("customerId")String customerId, @Param("subCustomerIds")List<String> subCustomerIds);
}

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

@ -19,9 +19,13 @@ public interface ScreenProjectDataDao {
List<ScreenProjectDetailResultDTO> projectDistributionDetail(@Param("projectId") String projectId);
List<String> selectProjectImgs(@Param("projectId") String projectId);
List<String> selectProjectImgs(@Param("projectId") String projectId,
@Param("customerId") String customerId);
List<ScreenProjectDetailResultDTO.processDTO> selectProjectProcess(@Param("projectId") String projectId);
List<ScreenProjectDetailResultDTO.processDTO> selectProjectProcess(@Param("projectId") String projectId,
@Param("customerId") String customerId);
List<ScreenProjectDetailResultDTO.processDTO.AttachmentDTO> selectProjectProcessAttachments(@Param("processId") String processId);
List<ScreenProjectDetailResultDTO.processDTO.AttachmentDTO> selectProjectProcessAttachments(@Param("processId") String processId,
@Param("projectId") String projectId,
@Param("customerId") String customerId);
}

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

@ -303,7 +303,7 @@ public class AgencyServiceImpl implements AgencyService {
* @param agencyId
* @return java.util.List<java.lang.String>
* @author yinzuomei
* @description 获取当前组织的下级组织集合
* @description 获取当前组织的下级组织集合:下一级组织+直属网格
* @Date 2021/2/25 16:52
**/
@DataSource(value = DataSourceConstant.EVALUATION_INDEX,datasourceNameFromArg = true)

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

@ -67,6 +67,7 @@ public class GrassrootsPartyDevServiceImpl implements GrassrootsPartyDevService
public PartymemberPercentResultDTO partymemberBaseInfo(ParymemberFormDTO param) {
if(StringUtils.isNotBlank(param.getAreaCode())){
logger.info(String.format("党员基本情况-饼状图概况按照areaCode查询:%s",param.getAreaCode()));
//下一级组织+直属网格
List<String> ids=screenCustomerAgencyService.getNextAgencyIds(param.getAreaCode(),param.getAgencyId());
if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(ids)){
PartymemberPercentResultDTO result = screenUserTotalDataDao.selectAgencyPartymemberPercentByIds(ids);

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

@ -404,6 +404,7 @@ public class IndexServiceImpl implements IndexService {
List<SubAgencyIndexRankResultDTO> streetList = screenIndexDataMonthlyDao.selectSubStreetByAreaCode(formDTO.getCustomerId(),yearId,formDTO.getAreaCode(),formDTO.getTopNum());
// 小数四舍五入
streetList.forEach(indexRank -> {
indexRank.setOrgType("street");
indexRank.setPartyDevAbility(getRound(indexRank.getPartyDevAbility()));
indexRank.setGovernAbility(getRound(indexRank.getGovernAbility()));
indexRank.setServiceAbility(getRound(indexRank.getServiceAbility()));
@ -414,6 +415,7 @@ public class IndexServiceImpl implements IndexService {
List<SubAgencyIndexRankResultDTO> gridList = screenIndexDataMonthlyDao.selectSubGridByAreaCode(formDTO.getCustomerId(),yearId,formDTO.getAreaCode(),formDTO.getTopNum());
// 小数四舍五入
gridList.forEach(indexRank -> {
indexRank.setOrgType("grid");
indexRank.setPartyDevAbility(getRound(indexRank.getPartyDevAbility()));
indexRank.setGovernAbility(getRound(indexRank.getGovernAbility()));
indexRank.setServiceAbility(getRound(indexRank.getServiceAbility()));

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

@ -119,11 +119,17 @@ public class PartyMemberLeadServiceImpl implements PartyMemberLeadService {
@DataSource(value = DataSourceConstant.EVALUATION_INDEX,datasourceNameFromArg = true)
@Override
public ContactMassLineChartResultDTO contactMassLineChart(ContactMassLineChartFormDTO contactMassLineChartFormDTO) {
ContactMassLineChartResultDTO result = new ContactMassLineChartResultDTO();
List<String> subAgencyIdorGridIdList=screenCustomerAgencyService.getNextAgencyIds(contactMassLineChartFormDTO.getAreaCode(),contactMassLineChartFormDTO.getAgencyId());
log.info("当前组织的下级id:"+JSON.toJSONString(subAgencyIdorGridIdList));
ContactMassLineChartResultDTO result = new ContactMassLineChartResultDTO();
if(CollectionUtils.isEmpty(subAgencyIdorGridIdList)){
//如果没有下级组织或者直属网格
result.setXAxis(new ArrayList<>());
result.setGroupMemberData(new ArrayList<>());
result.setGroupData(new ArrayList<>());
return result;
}
// List<ContactMassLineChartResult> contactMassLineChartResults = screenPartyLinkMassesDataDao.selectContactMassLineChart(contactMassLineChartFormDTO.getAgencyId());
//多客户版修改如下:
List<ContactMassLineChartResult> contactMassLineChartResults = screenPartyLinkMassesDataDao.selectContactMassLineChartByAgencyIds(subAgencyIdorGridIdList);
@ -276,12 +282,16 @@ public class PartyMemberLeadServiceImpl implements PartyMemberLeadService {
gridData = screenOrgRankDataDao.selectGridDataMonthlyAreaCode(monthId,param.getAreaCode());
}
if(null == gridData || gridData.isEmpty()) return result;
gridData.forEach( data -> {
int num=1;
for(OrgRankDataResultDTO data:gridData){
AdvanceBranchRankResultDTO o = ConvertUtils.sourceToTarget(data,AdvanceBranchRankResultDTO.class);
o.setClosedProjectRatio(convertPercentStr(data.getClosedProjectRatio()));
o.setSatisfactionRatio(convertPercentStr(data.getSatisfactionRatio()));
o.setSort(num);
o.setOrgId(data.getOrgId());
num++;
result.add(o);
});
};
}else{
List<OrgRankDataResultDTO> gridData =
screenOrgRankDataDao.selectGridDataMonthly(param.getAgencyId(),monthId);
@ -293,12 +303,16 @@ public class PartyMemberLeadServiceImpl implements PartyMemberLeadService {
gridData = screenOrgRankDataDao.selectGridDataMonthly(param.getAgencyId(),monthId);
}
if(null == gridData || gridData.isEmpty()) return result;
gridData.forEach( data -> {
int num=1;
for(OrgRankDataResultDTO data:gridData){
AdvanceBranchRankResultDTO o = ConvertUtils.sourceToTarget(data,AdvanceBranchRankResultDTO.class);
o.setClosedProjectRatio(convertPercentStr(data.getClosedProjectRatio()));
o.setSatisfactionRatio(convertPercentStr(data.getSatisfactionRatio()));
o.setSort(num);
o.setOrgId(data.getOrgId());
num++;
result.add(o);
});
};
}
return result;
}

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

@ -2,6 +2,7 @@ package com.epmet.datareport.service.evaluationindex.screen.impl;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.DataSourceConstant;
import com.epmet.datareport.dao.evaluationindex.screen.ScreenEventDataDao;
@ -17,10 +18,15 @@ import com.epmet.evaluationindex.screen.dto.form.ScreenProjectDistributionFormDT
import com.epmet.evaluationindex.screen.dto.result.ProjectDetailResultDTO;
import com.epmet.evaluationindex.screen.dto.result.ScreenProjectDetailResultDTO;
import com.epmet.evaluationindex.screen.dto.result.ScreenProjectDistributionResultDTO;
import com.epmet.feign.OperCrmOpenFeignClient;
import com.epmet.project.CustomerProjectCategoryDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
/**
@ -29,6 +35,8 @@ import java.util.List;
* @author yinzuomei@elink-cn.com
* @date 2020/8/18 10:23
*/
@Slf4j
@Service
@DataSource(DataSourceConstant.EVALUATION_INDEX)
public class ScreenProjectServiceImpl implements ScreenProjectService {
@ -42,6 +50,8 @@ public class ScreenProjectServiceImpl implements ScreenProjectService {
@Autowired
private ScreenProjectCategoryOrgDailyDao screenProjectCategoryOrgDailyDao;
@Autowired
private OperCrmOpenFeignClient operCrmOpenFeignClient;
/**
* @Description 3项目详情
@ -74,14 +84,15 @@ public class ScreenProjectServiceImpl implements ScreenProjectService {
// 1:红色:为刚提交未做任何响应处理未结案的项目;
// 2:黄色: 至少做过一次响应处理答复但未结案的项目;
// 3:绿色:已经结案的项目。
List<String> areaIds = null;
List<String> orgIds = null;
if (StringUtils.isNotBlank(formDTO.getAreaCode())){
areaIds = screenProjectDataDao.selectIdsByAreaCode(formDTO.getAreaCode());
//所有组织+网格
orgIds = screenProjectDataDao.selectIdsByAreaCode(formDTO.getAreaCode());
}
if (formDTO.getPageSize() == null){
formDTO.setPageSize(NumConstant.TWO_HUNDRED);
}
List<ScreenProjectDistributionResultDTO> resultDTOS = screenProjectDataDao.projectDistribution(formDTO.getAgencyId(),areaIds,formDTO.getLevel(),formDTO.getPageSize());
List<ScreenProjectDistributionResultDTO> resultDTOS = screenProjectDataDao.projectDistribution(formDTO.getAgencyId(),orgIds,formDTO.getLevel(),formDTO.getPageSize());
return resultDTOS;
}
@ -90,13 +101,14 @@ public class ScreenProjectServiceImpl implements ScreenProjectService {
List<ScreenProjectDetailResultDTO> resultDTOS = screenProjectDataDao.projectDistributionDetail(formDTO.getProjectId());
resultDTOS.forEach(item -> {
//项目图片
List<String> imgList = screenProjectDataDao.selectProjectImgs(formDTO.getProjectId());
List<String> imgList = screenProjectDataDao.selectProjectImgs(formDTO.getProjectId(),item.getCustomerId());
item.setImgList(imgList);
//项目处理流程
List<ScreenProjectDetailResultDTO.processDTO> processDTOS = screenProjectDataDao.selectProjectProcess(formDTO.getProjectId());
List<ScreenProjectDetailResultDTO.processDTO> processDTOS = screenProjectDataDao.selectProjectProcess(formDTO.getProjectId(),item.getCustomerId());
//流程附件
processDTOS.forEach(processDTO -> {
List<ScreenProjectDetailResultDTO.processDTO.AttachmentDTO> attachmentDTOS = screenProjectDataDao.selectProjectProcessAttachments(processDTO.getProcessId());
List<ScreenProjectDetailResultDTO.processDTO.AttachmentDTO> attachmentDTOS =
screenProjectDataDao.selectProjectProcessAttachments(processDTO.getProcessId(),formDTO.getProjectId(),item.getCustomerId());
processDTO.setAttachments(attachmentDTOS);
});
item.setProcessList(processDTOS);
@ -116,6 +128,25 @@ public class ScreenProjectServiceImpl implements ScreenProjectService {
@DataSource(value = DataSourceConstant.EVALUATION_INDEX, datasourceNameFromArg = true)
@Override
public List<CategoryAnalysisResultDTO> categoryAnalysis(String customerId, CategoryAnalysisFormDTO formDTO) {
return screenProjectCategoryOrgDailyDao.selectCategoryAnalysis(formDTO.getAgencyId(),customerId);
List<CategoryAnalysisResultDTO> resultDTOList = screenProjectCategoryOrgDailyDao.selectCategoryAnalysis(formDTO.getAgencyId(), customerId);
List<CategoryAnalysisResultDTO> resultList = new ArrayList<>();
if (!CollectionUtils.isEmpty(resultDTOList)) {
Result<List<String>> crmRes = operCrmOpenFeignClient.getAllSubCustomerIds(customerId);
List<String> subCustomerIds = new ArrayList<>();
if (crmRes.success() && !CollectionUtils.isEmpty(crmRes.getData())) {
subCustomerIds = crmRes.getData();
}
for (CategoryAnalysisResultDTO dto : resultDTOList) {
CustomerProjectCategoryDTO projectCategoryDTO = screenProjectCategoryOrgDailyDao.selectProjectCategory(dto.getCategoryCode(), customerId, subCustomerIds);
if (null == projectCategoryDTO || StringUtils.isBlank(projectCategoryDTO.getCategoryName())) {
log.warn(String.format("查询分类名称失败,当前客户:%s, categoryCode:%s", dto.getCategoryCode(), customerId));
continue;
}
CategoryAnalysisResultDTO resultDto = ConvertUtils.sourceToTarget(dto, CategoryAnalysisResultDTO.class);
resultDto.setCategoryName(projectCategoryDTO.getCategoryName());
resultList.add(resultDto);
}
}
return resultList;
}
}

27
epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/user/impl/UserAnalysisServiceImpl.java

@ -199,6 +199,15 @@ public class UserAnalysisServiceImpl implements UserAnalysisService {
for(UserSubAgencyResultDTO m:dimList){
logger.info("机关名:"+m.getName()+",总数="+m.getTotal());
}
//2021.5.25 平音客户热心居民改网格员 sun start
if (StrConstant.PY_CUSTOMER.equals(tokenDto.getCustomerId())) {
dimList.forEach(d->{
if("热心居民".equals(d.getType())){
d.setType("网格员");
}
});
}
//2021.5.25 平音客户热心居民改网格员 sun end
return dimList;
}
@ -323,6 +332,15 @@ public class UserAnalysisServiceImpl implements UserAnalysisService {
for(UserSubGridResultDTO m:dimList){
logger.info("网格名:"+m.getName()+",总数="+m.getTotal());
}
//2021.5.25 平音客户热心居民改网格员 sun start
if (StrConstant.PY_CUSTOMER.equals(tokenDto.getCustomerId())) {
dimList.forEach(d->{
if("热心居民".equals(d.getType())){
d.setType("网格员");
}
});
}
//2021.5.25 平音客户热心居民改网格员 sun end
return dimList;
}
@ -488,6 +506,15 @@ public class UserAnalysisServiceImpl implements UserAnalysisService {
party.setValue(userIncrTrendResDTO.getPartymemberIncr());
resultList.add(party);
}
//2021.5.25 平音客户热心居民改网格员 sun start
if (StrConstant.PY_CUSTOMER.equals(tokenDto.getCustomerId())) {
resultList.forEach(d->{
if("热心居民".equals(d.getType())){
d.setType("网格员");
}
});
}
//2021.5.25 平音客户热心居民改网格员 sun end
return resultList;
}

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

@ -272,6 +272,7 @@
and grid.PARENT_AGENCY_ID=#{agencyId}
</select>
<!-- 下一级组织+直属网格 -->
<select id="getNextAgencyIds" parameterType="map" resultType="java.lang.String">
SELECT
sca.AGENCY_ID as orgId

14
epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenIndexDataMonthlyDao.xml

@ -87,6 +87,9 @@
del_flag = '0'
AND parent_id = #{agencyId}
AND month_id = #{monthId,jdbcType=VARCHAR}
<if test="customerId != null and customerId != ''">
AND CUSTOMER_ID = #{customerId}
</if>
<choose>
<when test="orgType != null and orgType != ''">
AND ORG_TYPE = #{orgType,jdbcType=VARCHAR}
@ -189,6 +192,9 @@
WHERE
del_flag = '0'
AND org_id = #{orgId}
<if test="customerId != null and customerId != ''">
AND customer_id = #{customerId}
</if>
<if test="orgType != null and orgType != '' ">
AND org_type = #{orgType}
</if>
@ -292,7 +298,9 @@
sca.AGENCY_NAME AS NAME,
sy.govern_ablity AS governAbility,
sy.party_dev_ablity AS partyDevAbility,
sy.service_ablity AS serviceAbility
sy.service_ablity AS serviceAbility,
sy.ORG_ID as orgId,
sca.area_code as areaCode
FROM screen_customer_agency sca
left join screen_index_data_yearly sy
on(sca.AGENCY_ID=sy.ORG_ID
@ -313,7 +321,9 @@
scg.GRID_NAME AS NAME,
sy.govern_ablity AS governAbility,
sy.party_dev_ablity AS partyDevAbility,
sy.service_ablity AS serviceAbility
sy.service_ablity AS serviceAbility,
sy.ORG_ID as orgId,
scg.area_code as areaCode
FROM screen_customer_grid scg
left join screen_index_data_yearly sy
on(scg.GRID_ID=sy.ORG_ID

3
epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenIndexDataYearlyDao.xml

@ -35,6 +35,9 @@
del_flag = '0'
AND parent_id = #{agencyId}
AND year_id = YEAR(CURDATE())
<if test="customerId != null and customerId != ''">
AND CUSTOMER_ID = #{customerId}
</if>
<choose>
<when test="orgType != null and orgType != ''">
AND ORG_TYPE = #{orgType,jdbcType=VARCHAR}

6
epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenOrgRankDataDao.xml

@ -13,7 +13,8 @@
rankData.PROJECT_TOTAL AS projectNum,
rankData.CLOSE_PROJECT_RATIO AS closedProjectRatio,
rankData.SATISFACTION_RATIO AS satisfactionRatio,
agency.AGENCY_NAME AS parentAgencyName
agency.AGENCY_NAME AS parentAgencyName,
rankData.ORG_ID as orgId
FROM
screen_org_rank_data rankData
LEFT JOIN screen_customer_agency agency
@ -43,7 +44,8 @@
rankData.PROJECT_TOTAL AS projectNum,
rankData.CLOSE_PROJECT_RATIO AS closedProjectRatio,
rankData.SATISFACTION_RATIO AS satisfactionRatio,
agency.AGENCY_NAME AS parentAgencyName
agency.AGENCY_NAME AS parentAgencyName,
rankData.ORG_ID as orgId
FROM
screen_org_rank_data rankData
left join screen_customer_grid scg on(

82
epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectCategoryOrgDailyDao.xml

@ -5,30 +5,66 @@
<select id="selectCategoryAnalysis" resultType="com.epmet.dto.result.screen.CategoryAnalysisResultDTO">
SELECT D.CATEGORY_NAME AS categoryName,
M.PROJECT_TOTAL AS projectTotal
SELECT '' AS categoryName,
M.PROJECT_TOTAL AS projectTotal,
m.DATE_ID as dateId,
m.CATEGORY_CODE as categoryCode
FROM screen_project_category_org_daily m
left join customer_project_category_dict d
on(m.CATEGORY_CODE=D.CATEGORY_CODE
AND D.DEL_FLAG='0'
and d.CUSTOMER_ID=#{customerId})
WHERE M.DEL_FLAG = '0'
AND M.ORG_ID = #{agencyId}
AND M.DATE_ID = (
select
date_id
from
screen_project_category_org_daily
where
del_flag = '0'
and ORG_ID = #{agencyId}
and CUSTOMER_ID=#{customerId}
order by
date_id desc,
created_time desc
limit 1
)
ORDER BY M.PROJECT_TOTAL desc,D.CATEGORY_NAME asc
limit 20
and m.level='1'
AND M.ORG_ID = #{agencyId}
and M.CUSTOMER_ID=#{customerId}
AND M.DATE_ID = (
select
date_id
from
screen_project_category_org_daily
where
del_flag = '0'
and ORG_ID = #{agencyId}
and CUSTOMER_ID=#{customerId}
order by
date_id desc,
created_time desc
limit 1
)
ORDER BY M.PROJECT_TOTAL desc
</select>
<!-- 平阴的分类编码: 平阴自己的+ 子客户未对照的 -->
<select id="selectProjectCategory" parameterType="map" resultType="com.epmet.project.CustomerProjectCategoryDTO">
SELECT
*
FROM
(
SELECT DISTINCT
m.CATEGORY_CODE,
m.CATEGORY_NAME,
m.`LEVEL`
FROM
customer_project_category_dict m
WHERE
m.DEL_FLAG = '0'
AND m.customer_id = #{customerId}
<if test="subCustomerIds != null and subCustomerIds.size() > 0">
UNION ALL
SELECT DISTINCT
m.CATEGORY_CODE,
m.CATEGORY_NAME,
m.`LEVEL`
FROM
customer_project_category_dict m
WHERE
m.DEL_FLAG = '0'
AND m.EPMET_CATEGORY_CODE IS NULL
AND m.customer_id IN
<foreach item="subCustomerId" collection="subCustomerIds" open="(" separator="," close=")">
#{subCustomerId}
</foreach>
</if>
) temp
WHERE
temp.CATEGORY_CODE = #{categoryCode}
LIMIT 1
</select>
</mapper>

4
epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectDataDao.xml

@ -77,6 +77,7 @@
select PROJECT_IMG_URL from screen_project_img_data
where del_flag = '0'
and project_id = #{projectId}
and CUSTOMER_ID= #{customerId}
order by sort asc
</select>
<select id="selectProjectProcess" resultType="com.epmet.evaluationindex.screen.dto.result.ScreenProjectDetailResultDTO$processDTO">
@ -90,6 +91,7 @@
from screen_project_process
where del_flag = '0'
and project_id = #{projectId}
and CUSTOMER_ID= #{customerId}
order by process_time asc
</select>
<select id="selectProjectProcessAttachments" resultType="com.epmet.evaluationindex.screen.dto.result.ScreenProjectDetailResultDTO$processDTO$AttachmentDTO">
@ -106,6 +108,8 @@
where del_flag = '0'
and file_place = 'public'
AND PROCESS_ID=#{processId}
and project_id = #{projectId}
and CUSTOMER_ID= #{customerId}
order by sort asc
</select>
</mapper>

3
epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectGridDailyDao.xml

@ -4,6 +4,7 @@
<mapper namespace="com.epmet.datareport.dao.evaluationindex.screen.ScreenProjectGridDailyDao">
<!-- 下级网格的效率(解决率)列表 -->
<!-- 排序 +0 是把100排在99上边,不写 '+0'会出现 29 ,28 ,100 -->
<select id="queryGridEfficiencyAnalysis" parameterType="map" resultType="com.epmet.dto.result.screen.EfficiencyAnalysisResultDTO">
SELECT
m.CUSTOMER_ID AS customerId,
@ -20,7 +21,7 @@
m.DEL_FLAG = '0'
AND a.AREA_CODE LIKE concat( #{areaCode}, '%')
AND M.DATE_ID=#{dateId}
order by resolvedRatio desc
order by resolvedRatio+0 desc
</select>
<select id="selectLastDateId" resultType="java.lang.String">

3
epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectOrgDailyDao.xml

@ -29,6 +29,7 @@
</select>
<!-- 下级组织的效率(解决率)列表 -->
<!-- 排序 +0 是把100排在99上边,不写 '+0'会出现 29 ,28 ,100 -->
<select id="queryEfficiencyAnalysis" parameterType="map" resultType="com.epmet.dto.result.screen.EfficiencyAnalysisResultDTO">
SELECT
m.CUSTOMER_ID AS customerId,
@ -51,6 +52,6 @@
order by t1.DATE_ID desc
limit 1
)and m.CUSTOMER_ID=#{customerId}
order by resolvedRatio desc
order by resolvedRatio+0 desc
</select>
</mapper>

9
epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenPublicPartiTotalDataDao.xml

@ -35,6 +35,7 @@
<!-- 查询公众参与各类总数 -->
<!-- 2021-05-26,按照要求,根据注册人数排序 -->
<select id="selectPublicPartiTotalByAreaCode" resultType="com.epmet.evaluationindex.screen.dto.result.PublicPartiRankResultDTO">
SELECT
totalData.ORG_NAME AS NAME,
@ -54,13 +55,7 @@
WHERE
totalData.DEL_FLAG = '0'
AND agency.PARENT_AREA_CODE=#{areaCode}
ORDER BY
(totalData.REG_USER_TOTAL + totalData.JOIN_USER_TOTAL + totalData.TOPIC_TOTAL + totalData.ISSUE_TOTAL + totalData.PROJECT_TOTAL) DESC,
totalData.REG_USER_TOTAL desc,
totalData.JOIN_USER_TOTAL desc,
totalData.TOPIC_TOTAL desc,
totalData.ISSUE_TOTAL desc,
totalData.PROJECT_TOTAL desc
ORDER BY totalData.REG_USER_TOTAL desc
</select>

8
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginTopicMainDailyDao.java

@ -107,6 +107,14 @@ public interface FactOriginTopicMainDailyDao extends BaseDao<FactOriginTopicMain
**/
void updateFactOriginTopicMain(@Param("topicId")String topicId,@Param("topicStatus")String topicStatus,@Param("closedStatus")String closedStatus);
/**
* @Description 修改话题主标的 SHIFT_ISSUE 字段 = 1
* @Param topicIds
* @author zxc
* @date 2021/5/25 3:20 下午
*/
void updateTopicMainStatus(@Param("topicIds") List<String> topicIds);
/**
* @return java.lang.Integer
* @param customerId

8
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenCustomerAgencyDao.java

@ -223,4 +223,12 @@ public interface ScreenCustomerAgencyDao extends BaseDao<ScreenCustomerAgencyEnt
* @date 2021/5/8 9:03 上午
*/
List<AgencyMonthCountResultDTO> selectAllOrgByCustomerId(@Param("customerId")String customerId);
/**
* @Description 查询顶级组织ID
* @Param customerId
* @author zxc
* @date 2021/5/24 9:42 上午
*/
ScreenCustomerAgencyEntity selectTopAgency(@Param("customerId")String customerId);
}

10
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.java

@ -65,4 +65,14 @@ public interface ScreenProjectCategoryOrgDailyDao extends BaseDao<ScreenProjectC
*/
List<CategoryProjectResultDTO> selectOrgCategoryMoreCustomerInfo(@Param("customerIds")List<String> customerIds, @Param("dateId") String dateId,
@Param("level")String level, @Param("customerId")String customerId, @Param("existsStatus")Boolean existsStatus);
/**
* @Description 根据客户ID天ID组织ID删除旧数据
* @Param customerId
* @Param dateId
* @Param orgIds
* @author zxc
* @date 2021/5/21 3:26 下午
*/
int deleteAppointData(@Param("customerId") String customerId, @Param("dateId") String dateId,@Param("orgIds")List<String> orgIds);
}

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

@ -42,6 +42,7 @@ import com.epmet.service.evaluationindex.extract.todata.FactOriginTopicMainDaily
import com.epmet.service.org.CustomerGridService;
import com.epmet.service.topic.TopicService;
import com.epmet.service.user.UserService;
import com.epmet.util.ModuleConstant;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.ListUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -93,6 +94,7 @@ public class FactOriginTopicMainDailyServiceImpl extends BaseServiceImpl<FactOri
Map<String, Object> map = this.constructFactOriginData(topicOriginInfoList, gridMap);
List<FactOriginTopicMainDailyEntity> mainDailyEntityList = (List<FactOriginTopicMainDailyEntity>) map.get("main");
List<FactOriginTopicLogDailyEntity> logDailyEntityList = (List<FactOriginTopicLogDailyEntity>) map.get("log");
List<String> topicIds = (List<String>) map.get(ModuleConstant.NEED_UPDATE_STATUS_TOPIC);
//删除之前统计的数据
deleteFactOriginData(customerId,dateId);
//批量保存主表
@ -101,6 +103,8 @@ public class FactOriginTopicMainDailyServiceImpl extends BaseServiceImpl<FactOri
saveFactOriginTopicLogDailyEntity(logDailyEntityList);
//更新主表的状态状态、关闭状态
updateFactOriginTopicMain(topicService.queryUpdateTopicOriginInfoList(customerId, dateId));
// 更新主表的转议题状态
updateTopicMainStatus(topicIds);
return true;
}
@ -119,6 +123,18 @@ public class FactOriginTopicMainDailyServiceImpl extends BaseServiceImpl<FactOri
});
}
/**
* @Description 修改话题主标的 SHIFT_ISSUE 字段 = 1
* @Param topicIds
* @author zxc
* @date 2021/5/25 3:18 下午
*/
private void updateTopicMainStatus(List<String> topicIds){
if (!CollectionUtils.isEmpty(topicIds)){
baseDao.updateTopicMainStatus(topicIds);
}
}
private Map<String, GridInfoDTO> getGridInfoMap(String customerId) {
Map<String ,GridInfoDTO> map=new HashMap<>();
@ -174,12 +190,13 @@ public class FactOriginTopicMainDailyServiceImpl extends BaseServiceImpl<FactOri
List<String> userIds = topicOriginInfoList.stream().map(topic -> topic.getOperateUserId()).distinct().collect(Collectors.toList());
Map<String,Integer> userIsPartyMap = userService.selectUserIsParty(userIds);
List<String> topicIds = new ArrayList<>();
for(TopicOriginInfoDTO topicOriginInfoDTO:topicOriginInfoList){
GridInfoDTO gridInfoDTO=gridMap.get(topicOriginInfoDTO.getGridId());
if(null==gridInfoDTO){
log.error("没有找到 gridId="+topicOriginInfoDTO.getGridId()+" 的基本信息");
log.warn("没有找到 gridId="+topicOriginInfoDTO.getGridId()+" 的基本信息");
// continue;
throw new RenException("xxxxxx");
throw new RenException("gridInfoDTO is null gridId="+topicOriginInfoDTO.getGridId());
}
// 一年的第几周
String weekId = DateUtils.format(topicOriginInfoDTO.getOriginalBusinessTime(), DateUtils.DATE_PATTERN_YYYY).concat("W").concat(String.valueOf(DateUtils.getWeekOfYear(topicOriginInfoDTO.getOriginalBusinessTime())));
@ -221,9 +238,13 @@ public class FactOriginTopicMainDailyServiceImpl extends BaseServiceImpl<FactOri
logDailyEntity.setOperateUserIsParty(false);
}
logDailyEntityList.add(logDailyEntity);
if (topicOriginInfoDTO.getActionCode().equals(ModuleConstant.TOPIC_STATUS_SHIFT_ISSUE)){
topicIds.add(topicOriginInfoDTO.getTopicId());
}
}
map.put("main",mainDailyEntityList);
map.put("log",logDailyEntityList);
map.put(ModuleConstant.NEED_UPDATE_STATUS_TOPIC,topicIds);
return map;
}

8
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/ScreenCustomerAgencyService.java

@ -106,4 +106,12 @@ public interface ScreenCustomerAgencyService{
* @date 2020/9/24 1:27 下午
*/
List<OrgNameResultDTO> selectOrgNameAgency(List<String> agencyIds);
/**
* @Description 查询顶级组织ID
* @Param customerId
* @author zxc
* @date 2021/5/24 9:42 上午
*/
ScreenCustomerAgencyEntity selectTopAgency(String customerId);
}

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

@ -256,5 +256,16 @@ public class ScreenCustomerAgencyServiceImpl implements ScreenCustomerAgencyServ
return screenCustomerAgencyDao.selectAllAgencyId(customerId);
}
/**
* @Description 查询顶级组织ID
* @Param customerId
* @author zxc
* @date 2021/5/24 9:42 上午
*/
@Override
public ScreenCustomerAgencyEntity selectTopAgency(String customerId) {
return screenCustomerAgencyDao.selectTopAgency(customerId);
}
}

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

@ -36,6 +36,7 @@ import com.epmet.dto.screen.ScreenProjectCategoryOrgDailyDTO;
import com.epmet.dto.screen.result.CategoryProjectResultDTO;
import com.epmet.dto.screencoll.ScreenCollFormDTO;
import com.epmet.entity.crm.CustomerRelationEntity;
import com.epmet.entity.evaluationindex.screen.ScreenCustomerAgencyEntity;
import com.epmet.entity.evaluationindex.screen.ScreenProjectCategoryOrgDailyEntity;
import com.epmet.service.crm.CustomerRelationService;
import com.epmet.service.evaluationindex.extract.todata.FactOriginProjectCategoryDailyService;
@ -179,6 +180,12 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl<Sc
* 1.查自己客户分类标签统计
* 2.查询子级客户分类标签分为 epmet_category_code is null is not nullpid = '0'跟父客户对比同类标签项目数累加不同直接添加到父客户
* 加入直属网格
*
* 2021-05-21新注释
* 1.查询客户自己的分类标签
* 2.查询子客户的分类标签把子客户分类标签一样的累加
* 3.子客户累加后的跟父客户对比 categoryCode一样累加到父客户不一样直接添加到父客户agencyId一并改为父客户的
* 4.父客户数据处理好在存储一套子客户数据
*/
disposeMoreCustomer(customerId,dateId,relationInfo);
}
@ -254,16 +261,19 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl<Sc
});
Map<Boolean, List<CategoryProjectResultDTO>> groupByStatus = categoryProjectGrid.stream().collect(Collectors.groupingBy(CategoryProjectResultDTO::getStatus));
List<CategoryProjectResultDTO> categoryProjectResultDTOS1 = groupByStatus.get(false);
if (!CollectionUtils.isEmpty(categoryProjectResultDTOS1)) categoryProjectResultDTOS.addAll(categoryProjectResultDTOS1);
if (!CollectionUtils.isEmpty(categoryProjectResultDTOS1)) {
categoryProjectResultDTOS.addAll(categoryProjectResultDTOS1);
}
}
}
result = ConvertUtils.sourceToTarget(categoryProjectResultDTOS,ScreenProjectCategoryOrgDailyEntity.class);
}
// 组织项目分类 项目数
List<String> orgIds = new ArrayList<>();
Map<String, List<CustomerAgencyInfoResultDTO>> groupByLevel = agencyIdList.stream().collect(Collectors.groupingBy(CustomerAgencyInfoResultDTO::getLevel));
List<CustomerAgencyInfoResultDTO> levelAgencyInfo = groupByLevel.get(level);
if (!CollectionUtils.isEmpty(levelAgencyInfo)){
List<String> orgIds = levelAgencyInfo.stream().map(m -> m.getAgencyId()).collect(Collectors.toList());
orgIds = levelAgencyInfo.stream().map(m -> m.getAgencyId()).collect(Collectors.toList());
List<ScreenProjectCategoryGridDailyDTO> screenProjectCategory = factOriginProjectCategoryDailyService.selectListProjectCategoryByOrg(orgIds,customerId);
if (!CollectionUtils.isEmpty(result)){
if (!CollectionUtils.isEmpty(screenProjectCategory)){
@ -291,7 +301,7 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl<Sc
result.forEach(r -> {r.setOrgType(level);r.setDateId(dateId);});
}
}
deleteAndInsert(customerId,dateId,result);
deleteAndInsert(customerId,dateId,result,orgIds);
}
/**
@ -349,15 +359,18 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl<Sc
result = ConvertUtils.sourceToTarget(categoryInfos, ScreenProjectCategoryOrgDailyEntity.class);
}
}else {
// 根据客户ID,时间,组织级别查询 分类标签
List<CategoryProjectResultDTO> categoryProjectResultDTOS = baseDao.selectOrgCategoryInfo(customerId, dateId, level);
List<ScreenCustomerGridDTO> belongGridInfos = gridService.selectBelongGridInfo(customerId, level);
if (!CollectionUtils.isEmpty(belongGridInfos)){
// 存在直属网格
List<String> gridIds = belongGridInfos.stream().map(m -> m.getGridId()).collect(Collectors.toList());
// 根据网格ID查询分类标签
List<CategoryProjectResultDTO> categoryProjectGrid = gridDailyDao.selectCategoryInfo(customerId, dateId, level, gridIds);
if (!CollectionUtils.isEmpty(categoryProjectGrid)){
categoryProjectResultDTOS.forEach(agency -> {
categoryProjectGrid.forEach(grid -> {
// 组织ID 和 分类标签code一样时,项目数累加
if (agency.getOrgId().equals(grid.getOrgId()) && agency.getCategoryCode().equals(grid.getCategoryCode())){
agency.setProjectTotal(agency.getProjectTotal() + grid.getProjectTotal());
grid.setStatus(true);
@ -365,17 +378,57 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl<Sc
});
});
Map<Boolean, List<CategoryProjectResultDTO>> groupByStatus = categoryProjectGrid.stream().collect(Collectors.groupingBy(CategoryProjectResultDTO::getStatus));
// 取出分类标签code同agency级别不一样的数据
List<CategoryProjectResultDTO> categoryProjectResultDTOS1 = groupByStatus.get(false);
categoryProjectResultDTOS.addAll(categoryProjectResultDTOS1);
}
}
result = ConvertUtils.sourceToTarget(categoryProjectResultDTOS,ScreenProjectCategoryOrgDailyEntity.class);
/**
* 查询父子客户所有的分类根据分类分组然后把agencyId统一换成父客户的
* 在保存一份子客户自己agencyId的
*/
if (ScreenConstant.DISTRICT.equals(level)){
// 查询 平阴的agencyId
ScreenCustomerAgencyEntity entity = agencyService.selectTopAgency(customerId);
// 子级客户ID
List<String> customerIds = relationInfo.stream().map(m -> m.getCustomerId()).collect(Collectors.toList());
// 父客户存在的分类
List<CategoryProjectResultDTO> categoryProjectExists = baseDao.selectOrgCategoryMoreCustomerInfo(customerIds, dateId, level, customerId, true);
// 父客户不存在的分类
List<CategoryProjectResultDTO> categoryProjectNotExists = baseDao.selectOrgCategoryMoreCustomerInfo(customerIds, dateId, level, customerId, false);
// 子级客户的分类标签数据
List<CategoryProjectResultDTO> sonResult = new ArrayList<>();
if (!CollectionUtils.isEmpty(categoryProjectExists)){
categoryProjectResultDTOS.addAll(categoryProjectExists);
sonResult.addAll(categoryProjectExists);
}
if (!CollectionUtils.isEmpty(categoryProjectNotExists)){
categoryProjectResultDTOS.addAll(categoryProjectNotExists);
sonResult.addAll(categoryProjectNotExists);
}
// 此时的 'categoryProjectResultDTOS' 等于 父子客户所有的分类标签
Map<String, List<CategoryProjectResultDTO>> groupByCategoryCode = categoryProjectResultDTOS.stream().collect(Collectors.groupingBy(CategoryProjectResultDTO::getCategoryCode));
// 这时的result集合要清空,因为被上边使用 【result = ConvertUtils.sourceToTarget(categoryProjectResultDTOS,ScreenProjectCategoryOrgDailyEntity.class);】
result.clear();
List<ScreenProjectCategoryOrgDailyEntity> finalResult = result;
groupByCategoryCode.forEach((code, list) -> {
ScreenProjectCategoryOrgDailyEntity e = new ScreenProjectCategoryOrgDailyEntity();
e.setCustomerId(customerId);
e.setCategoryCode(code);
e.setOrgId(entity.getAgencyId());
e.setProjectTotal(CollectionUtils.isEmpty(list) ? NumConstant.ZERO : list.stream().collect(Collectors.summingInt(CategoryProjectResultDTO::getProjectTotal)));
e.setPid(entity.getPid());
e.setPids(StringUtils.isEmpty(entity.getPids()) ? NumConstant.ZERO_STR : entity.getPids());
// 因为根据categoryCode分组,所以level都一样,取第一条的
e.setLevel(list.get(NumConstant.ZERO).getLevel());
finalResult.add(e);
});
if (!CollectionUtils.isEmpty(sonResult)){
List<ScreenProjectCategoryOrgDailyEntity> entities = ConvertUtils.sourceToTarget(sonResult, ScreenProjectCategoryOrgDailyEntity.class);
result.addAll(entities);
}
/*if (!CollectionUtils.isEmpty(categoryProjectExists)){
result.forEach(r -> {
categoryProjectExists.forEach(c -> {
if (r.getCategoryCode().equals(c.getCategoryCode())){
@ -391,19 +444,19 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl<Sc
result.addAll(f);
}
}
// 父客户不存在的分类
List<CategoryProjectResultDTO> categoryProjectNotExists = baseDao.selectOrgCategoryMoreCustomerInfo(customerIds, dateId, level, customerId, false);
if (!CollectionUtils.isEmpty(categoryProjectNotExists)){
List<ScreenProjectCategoryOrgDailyEntity> notExists = ConvertUtils.sourceToTarget(categoryProjectNotExists, ScreenProjectCategoryOrgDailyEntity.class);
result.addAll(notExists);
}
}*/
}
}
// 目前不考虑计算子客户组织直接创建的项目,只算内部客户
List<String> orgIds = new ArrayList<>();
Map<String, List<CustomerAgencyInfoResultDTO>> groupByLevel = agencyIdList.stream().collect(Collectors.groupingBy(CustomerAgencyInfoResultDTO::getLevel));
List<CustomerAgencyInfoResultDTO> levelAgencyInfo = groupByLevel.get(level);
if (!CollectionUtils.isEmpty(levelAgencyInfo)) {
List<String> orgIds = levelAgencyInfo.stream().map(m -> m.getAgencyId()).collect(Collectors.toList());
orgIds = levelAgencyInfo.stream().map(m -> m.getAgencyId()).collect(Collectors.toList());
// 查询客户下,组织直接立项的,各项目分类下的项目数量【筛选组织创建的项目,fact_origin_project_main_daily表gridId为空】
List<ScreenProjectCategoryGridDailyDTO> screenProjectCategory = factOriginProjectCategoryDailyService.selectListProjectCategoryByOrg(orgIds, customerId);
if (!CollectionUtils.isEmpty(result)) {
if (!CollectionUtils.isEmpty(screenProjectCategory)) {
@ -416,6 +469,7 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl<Sc
});
});
Map<Boolean, List<ScreenProjectCategoryGridDailyDTO>> groupByStatus = screenProjectCategory.stream().collect(Collectors.groupingBy(ScreenProjectCategoryGridDailyDTO::getStatus));
// 取出没有累加过的数据
List<ScreenProjectCategoryGridDailyDTO> screenProjectCategoryNoCal = groupByStatus.get(false);
if (!CollectionUtils.isEmpty(screenProjectCategoryNoCal)) {
List<ScreenProjectCategoryOrgDailyEntity> noCalCategory = ConvertUtils.sourceToTarget(screenProjectCategoryNoCal, ScreenProjectCategoryOrgDailyEntity.class);
@ -434,7 +488,7 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl<Sc
});
}
}
deleteAndInsert(customerId,dateId,result);
deleteAndInsert(customerId,dateId,result,orgIds);
}
/**
@ -445,13 +499,16 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl<Sc
* @date 2021/3/23 上午10:52
*/
@Transactional(rollbackFor = Exception.class)
public void deleteAndInsert(String customerId, String dateId, List<ScreenProjectCategoryOrgDailyEntity> needInsert){
public void deleteAndInsert(String customerId, String dateId, List<ScreenProjectCategoryOrgDailyEntity> needInsert,List<String> orgIds){
if (CollectionUtils.isEmpty(needInsert)){
return;
}
if (CollectionUtils.isEmpty(orgIds)){
return;
}
Integer row = NumConstant.ZERO;
do {
row = baseDao.deleteByDateIdAndCustomerId(customerId, dateId);
row = baseDao.deleteAppointData(customerId, dateId,orgIds);
}while (row > NumConstant.ZERO && row == NumConstant.ONE_THOUSAND);
List<List<ScreenProjectCategoryOrgDailyEntity>> partition = ListUtils.partition(needInsert, NumConstant.ONE_HUNDRED);
partition.forEach(p -> {

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

@ -40,6 +40,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
@ -132,6 +133,9 @@ public class ShiBeiScreenCollServiceImpl implements ShiBeiScreenCollService {
@Override
@Transactional(rollbackFor = Exception.class)
public void insertPartyBranchData(PartyBranchDataListFormDTO formDTO, String customerId) {
if (StringUtils.isEmpty(formDTO.getMonthId()) || formDTO.getMonthId().length() != NumConstant.SIX) {
throw new RenException("monthId格式应为: yyyyMM,当前传入:"+formDTO.getMonthId());
}
if (formDTO.getIsFirst()) {
int deleteNum;
do {
@ -147,6 +151,9 @@ public class ShiBeiScreenCollServiceImpl implements ShiBeiScreenCollService {
@Override
@Transactional(rollbackFor = Exception.class)
public void insertOrgRankData(OrgRankDataListFormDTO formDTO, String customerId) {
if (StringUtils.isEmpty(formDTO.getMonthId()) || formDTO.getMonthId().length() != NumConstant.SIX) {
throw new RenException("monthId格式应为: yyyyMM,当前传入:"+formDTO.getMonthId());
}
if (formDTO.getIsFirst()) {
int deleteNum;
do {
@ -162,6 +169,9 @@ public class ShiBeiScreenCollServiceImpl implements ShiBeiScreenCollService {
@Override
@Transactional(rollbackFor = Exception.class)
public void insertGovernRankData(GovernRankDataListFormDTO formDTO, String customerId) {
if (StringUtils.isEmpty(formDTO.getMonthId()) || formDTO.getMonthId().length() != NumConstant.SIX) {
throw new RenException("monthId格式应为: yyyyMM,当前传入:"+formDTO.getMonthId());
}
if (formDTO.getIsFirst()) {
int deleteNum;
do {
@ -250,6 +260,9 @@ public class ShiBeiScreenCollServiceImpl implements ShiBeiScreenCollService {
@Override
@Transactional(rollbackFor = Exception.class)
public void insertIndexDataMonthly(IndexDataListMonthlyFormDTO formDTO, String customerId) {
if (StringUtils.isEmpty(formDTO.getMonthId()) || formDTO.getMonthId().length() != NumConstant.SIX) {
throw new RenException("monthId格式应为: yyyyMM,当前传入:"+formDTO.getMonthId());
}
if (formDTO.getIsFirst()) {
int deleteNum;
do {
@ -345,6 +358,9 @@ public class ShiBeiScreenCollServiceImpl implements ShiBeiScreenCollService {
@Override
@Transactional(rollbackFor = Exception.class)
public void insertUserJoin(UserJoinListFormDTO formDTO, String customerId) {
if (StringUtils.isEmpty(formDTO.getMonthId()) || formDTO.getMonthId().length() != NumConstant.SIX) {
throw new RenException("monthId格式应为: yyyyMM,当前传入:"+formDTO.getMonthId());
}
if (formDTO.getIsFirst()) {
int deleteNum;
do {

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

@ -39,4 +39,8 @@ public interface ModuleConstant {
String EXCEPTION_DING_INTERCEPTOR_PREFIX_TOPIC_STATISTICAL = "topicStats";
String LOG_WARN_NO_AGENCY_MESSAGE = "没有相应的机关集合";
String TOPIC_STATUS_SHIFT_ISSUE = "shift_issue";
String NEED_UPDATE_STATUS_TOPIC = "needUpdateStatusTopic";
}

1
epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.16__add_shiftIssue.sql

@ -0,0 +1 @@
ALTER TABLE `fact_origin_topic_main_daily` ADD `SHIFT_ISSUE` tinyint(1) NOT NULL default '0' COMMENT '是否转为议题,0:false,1:true' AFTER `CREATE_TOPIC_USER_IS_PARTY`;

13
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginTopicMainDailyDao.xml

@ -139,6 +139,19 @@
where id = #{topicId}
</update>
<!-- 修改话题主标的 SHIFT_ISSUE 字段 = 1 -->
<update id="updateTopicMainStatus">
UPDATE fact_origin_topic_main_daily
SET SHIFT_ISSUE = 1,
UPDATED_TIME = NOW()
WHERE 1=1
AND (
<foreach collection="topicIds" item="topicId" separator=" OR ">
ID = #{topicId}
</foreach>
)
</update>
<!-- 在当前组织下,发布的话题总数,也可以单独筛选党员 -->
<select id="getAgencyPartyTopicTotal" parameterType="map" resultType="java.lang.Integer">
SELECT

14
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenCustomerAgencyDao.xml

@ -427,6 +427,20 @@
(SELECT DEPT_ID AS orgId FROM screen_customer_dept WHERE DEL_FLAG = 0 AND CUSTOMER_ID = #{customerId})
</select>
<!-- 查询顶级组织ID -->
<select id="selectTopAgency" resultType="com.epmet.entity.evaluationindex.screen.ScreenCustomerAgencyEntity">
SELECT
AGENCY_ID,
PID,
PIDS
FROM
screen_customer_agency
WHERE
DEL_FLAG = '0'
AND PID = '0'
AND CUSTOMER_ID = #{customerId}
</select>
<!-- 查询客户下所有的组织的上级组织 -->
<select id="selectAgencyIdAndParentId" resultType="com.epmet.dto.indexcal.AgencyAndParentResultDTO">
SELECT

13
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.xml

@ -9,6 +9,19 @@
limit 1000
</delete>
<!-- 根据客户ID,天ID,组织ID删除旧数据 -->
<delete id="deleteAppointData">
delete from screen_project_category_org_daily
where customer_id = #{customerId}
and date_id = #{dateId}
and (
<foreach collection="orgIds" item="orgId" separator=" OR ">
ORG_ID = #{orgId}
</foreach>
)
limit 1000
</delete>
<!-- 查询组织分类信息 -->
<select id="selectOrgCategoryInfo" resultType="com.epmet.dto.screen.result.CategoryProjectResultDTO">
SELECT

20
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/group/GroupDataDao.xml

@ -26,12 +26,12 @@
COUNT(rgm.id) AS gridGroupPeopleTotal
FROM
resi_group rg
LEFT JOIN resi_group_member rgm ON rgm.resi_group_id = rg.id
LEFT JOIN resi_group_member rgm ON rgm.resi_group_id = rg.id AND rgm.DEL_FLAG = 0
WHERE
rg.DEL_FLAG = 0
AND rg.state = #{state}
AND rg.customer_id = #{customerId}
AND rgm.status != #{status}
AND (rgm.status = 'approved' OR rgm.status = 'silent')
AND DATE_FORMAT(rgm.created_time,'%Y%m%d') <![CDATA[ <= ]]> #{dateId}
GROUP BY rg.grid_id
</select>
@ -45,12 +45,12 @@
COUNT( rgm.id ) AS groupCount
FROM
resi_group rg
LEFT JOIN resi_group_member rgm ON rgm.resi_group_id = rg.id
LEFT JOIN resi_group_member rgm ON rgm.resi_group_id = rg.id AND rgm.DEL_FLAG = 0
WHERE
rg.DEL_FLAG = 0
AND rg.state = #{state}
AND rg.customer_id = #{customerId}
AND rgm.STATUS != #{status}
AND (rgm.status = 'approved' OR rgm.status = 'silent')
AND DATE_FORMAT(rgm.created_time,'%Y%m%d') <![CDATA[ <= ]]> #{dateId}
GROUP BY
rgm.resi_group_id
@ -94,12 +94,12 @@
COUNT(rgm.id) AS gridGroupPeopleTotal
FROM
resi_group rg
LEFT JOIN resi_group_member rgm ON rgm.resi_group_id = rg.id
LEFT JOIN resi_group_member rgm ON rgm.resi_group_id = rg.id AND rgm.DEL_FLAG = 0
WHERE
rg.DEL_FLAG = 0
AND rg.state = 'approved'
AND rg.customer_id = #{customerId}
AND rgm.status != 'removed'
AND (rgm.status = 'approved' OR rgm.status = 'silent')
AND DATE_FORMAT(rgm.created_time,'%Y%m%d') <![CDATA[ <= ]]> #{dateId}
GROUP BY rg.grid_id
</select>
@ -112,12 +112,12 @@
COUNT( rgm.id ) AS groupCount
FROM
resi_group rg
LEFT JOIN resi_group_member rgm ON rgm.resi_group_id = rg.id
LEFT JOIN resi_group_member rgm ON rgm.resi_group_id = rg.id AND rgm.DEL_FLAG = 0
WHERE
rg.DEL_FLAG = 0
AND rg.state = 'approved'
AND rg.customer_id = #{customerId}
AND rgm.STATUS != 'removed'
AND (rgm.status = 'approved' OR rgm.status = 'silent')
AND DATE_FORMAT(rgm.created_time,'%Y%m%d') <![CDATA[ <= ]]> #{dateId}
GROUP BY
rgm.resi_group_id
@ -145,12 +145,12 @@
COUNT( rgm.id ) AS groupCount
FROM
resi_group rg
LEFT JOIN resi_group_member rgm ON rgm.resi_group_id = rg.id
LEFT JOIN resi_group_member rgm ON rgm.resi_group_id = rg.id AND rgm.DEL_FLAG = 0
WHERE
rg.DEL_FLAG = 0
AND rg.state = 'approved'
AND rg.grid_id = #{gridId}
AND rgm.STATUS != 'removed'
AND (rgm.status = 'approved' OR rgm.status = 'silent')
GROUP BY
rgm.resi_group_id
</foreach>

9
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java

@ -779,6 +779,15 @@ public class CodeServiceImpl implements CodeService {
dto.setCreateTime(DateUtils.formatTimestamp(temp.getCreateTime(), DateUtils.DATE_TIME_PATTERN));
resultList.add(dto);
});
//按时间降序
if (resultList.size() > NumConstant.ZERO) {
Collections.sort(resultList, new Comparator<TemplateDraftListResultDTO>() {
@Override
public int compare(TemplateDraftListResultDTO o1, TemplateDraftListResultDTO o2) {
return o2.getCreateTime().compareTo(o1.getCreateTime());
}
});
}
return resultList;
}

2
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxLoginServiceImpl.java

@ -41,6 +41,7 @@ public class WxLoginServiceImpl implements WxLoginService {
@Override
public UserWechatDTO resiAndWorkLogin(String appId, String wxCode, String customerId, String clientType) {
//1.获取用户openid和session_key
logger.info(String.format("wxcode获取微信用户信息,接口入参appId:[%s];wxCode:[%s];customerId:[%s];clientType:[%s]", appId, wxCode, customerId, clientType));
Map<String, Object> map = new HashMap<>();
map.put("appid", appId);
map.put("js_code", wxCode);
@ -62,6 +63,7 @@ public class WxLoginServiceImpl implements WxLoginService {
UserWechatDTO dto = new UserWechatDTO();
dto.setWxOpenId(openid);
dto.setSessionKey(sessionKey);
logger.info("wxcode获取微信用户信息,接口返参UserWechatDTO->" + dto);
/*//2.换取用户基本信息
//小程序access_token

26
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/CanEvaluateProjectCountBatchResultDTO.java

@ -0,0 +1,26 @@
package com.epmet.dto.result;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* @Author zxc
* @DateTime 2021/5/12 11:16 上午
* @DESC
*/
@Data
public class CanEvaluateProjectCountBatchResultDTO implements Serializable {
private static final long serialVersionUID = -3577868520393911786L;
private String issueId;
private List<String> userIds = new ArrayList<>();
@JsonIgnore
private String userId;
}

20
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssueVoteResultDTO.java

@ -0,0 +1,20 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2021/5/12 1:44 下午
* @DESC
*/
@Data
public class IssueVoteResultDTO implements Serializable {
private static final long serialVersionUID = -616467646035136184L;
private String issueId;
private String userId;
}

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

@ -310,6 +310,24 @@ public interface GovIssueOpenFeignClient {
@PostMapping(value = "/gov/issue/issue/getissuelist")
Result<List<IssueDTO>> getIssueList(@RequestParam String customerId);
/**
* @Description 查询可评价项目人数
* @Param issueId
* @author zxc
* @date 2021/5/12 9:31 上午
*/
@PostMapping("/gov/issue/issue/canevaluateprojectcount")
Result<List<String>> canEvaluateProjectCount(@RequestParam("issueId")String issueId);
/**
* @Description 查询可评价项目人数 批量
* @Param issueIds
* @author zxc
* @date 2021/5/12 9:31 上午
*/
@PostMapping("/gov/issue/issue/canevaluateprojectcountbatch")
Result<List<CanEvaluateProjectCountBatchResultDTO>> canEvaluateProjectCountBatch(@RequestParam("issueIds")List<String> issueIds);
/**
* @Description 查询项目分类标签
* @Param list

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

@ -262,6 +262,16 @@ public class GovIssueOpenFeignClientFallBack implements GovIssueOpenFeignClient
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "getIssueList", customerId);
}
@Override
public Result<List<String>> canEvaluateProjectCount(String issueId) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "canEvaluateProjectCount", issueId);
}
@Override
public Result<List<CanEvaluateProjectCountBatchResultDTO>> canEvaluateProjectCountBatch(List<String> issueIds) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "canEvaluateProjectCountBatch", issueIds);
}
@Override
public Result<List<ProjectCategoryDisPoseResultDTO>> getProjectCategory(List<ProjectCategoryDisPoseResultDTO> list) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "getProjectCategory", list);

22
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueController.java

@ -256,5 +256,27 @@ public class IssueController {
return new Result<List<IssueDTO>>().ok(issueService.getIssueList(customerId));
}
/**
* @Description 查询可评价项目人数
* @Param issueId
* @author zxc
* @date 2021/5/11 4:50 下午
*/
@PostMapping("canevaluateprojectcount")
public Result<List<String>> canEvaluateProjectCount(@RequestParam("issueId")String issueId){
return new Result<List<String>>().ok(issueService.canEvaluateProjectCount(issueId));
}
/**
* @Description 查询可评价项目人数批量
* @Param issueId
* @author zxc
* @date 2021/5/11 4:50 下午
*/
@PostMapping("canevaluateprojectcountbatch")
public Result<List<CanEvaluateProjectCountBatchResultDTO>> canEvaluateProjectCountBatch(@RequestParam("issueIds")List<String> issueIds){
return new Result<List<CanEvaluateProjectCountBatchResultDTO>>().ok(issueService.canEvaluateProjectCountBatch(issueIds));
}
}

17
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteDetailDao.java

@ -22,6 +22,7 @@ import com.epmet.dto.IssueVoteDetailDTO;
import com.epmet.dto.form.VoteFormDTO;
import com.epmet.dto.form.VoteRedisFormDTO;
import com.epmet.dto.result.IssueAttitudeCountResultDTO;
import com.epmet.dto.result.IssueVoteResultDTO;
import com.epmet.dto.result.MyPartIssuesResultDTO;
import com.epmet.entity.IssueVoteDetailEntity;
import org.apache.ibatis.annotations.Mapper;
@ -113,4 +114,20 @@ public interface IssueVoteDetailDao extends BaseDao<IssueVoteDetailEntity> {
* @date 2021.03.18 14:58
*/
List<VoteRedisFormDTO> selectBatchVoteCount(@Param("issueIds")Set<String> issueIds);
/**
* @Description 查询议题表决数
* @Param issueId
* @author zxc
* @date 2021/5/11 5:15 下午
*/
List<String> selectIssueVoteCount(@Param("issueId")String issueId);
/**
* @Description 查询议题表决数批量
* @Param issueIds
* @author zxc
* @date 2021/5/12 1:48 下午
*/
List<IssueVoteResultDTO> selectIssueVoteCountBatch(@Param("issueIds")List<String> issueIds);
}

16
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueService.java

@ -325,4 +325,20 @@ public interface IssueService extends BaseService<IssueEntity> {
* @date 2021/4/27 10:23 上午
*/
List<IssueDTO> getIssueList(String customerId);
/**
* @Description 查询可评价项目人数
* @Param issueId
* @author zxc
* @date 2021/5/11 4:50 下午
*/
List<String> canEvaluateProjectCount(String issueId);
/**
* @Description 查询可评价项目人数批量
* @Param issueId
* @author zxc
* @date 2021/5/11 4:50 下午
*/
List<CanEvaluateProjectCountBatchResultDTO> canEvaluateProjectCountBatch(List<String> issueIds);
}

95
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java

@ -27,6 +27,7 @@ import com.epmet.constant.UserMessageConstant;
import com.epmet.dao.IssueDao;
import com.epmet.dao.IssueProcessDao;
import com.epmet.dao.IssueProjectRelationDao;
import com.epmet.dao.IssueVoteDetailDao;
import com.epmet.dto.*;
import com.epmet.dto.form.IssueAuditionFormDTO;
import com.epmet.dto.form.IssueShiftedFromTopicFormDTO;
@ -49,6 +50,7 @@ import com.epmet.resi.group.dto.topic.ResiTopicDTO;
import com.epmet.resi.group.dto.topic.form.GovTopicIssueInfoFormDTO;
import com.epmet.resi.group.dto.topic.form.*;
import com.epmet.resi.group.dto.topic.result.GovTopicIssueInfoResultDTO;
import com.epmet.resi.group.dto.topic.result.TopicCreatedUserBatchResultDTO;
import com.epmet.resi.group.feign.ResiGroupOpenFeignClient;
import com.epmet.send.SendMqMsgUtil;
import com.epmet.service.*;
@ -121,7 +123,8 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
private IssueTagsService issueTagsService;
@Autowired
private IssueProjectTagDictService issueProjectTagDictService;
@Autowired
private IssueVoteDetailDao issueVoteDetailDao;
@Value("${openapi.scan.server.url}")
@ -1408,4 +1411,94 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
return ConvertUtils.sourceToTarget(issueEntities,IssueDTO.class);
}
/**
* @Description 查询可评价项目人数
* @Param issueId
* @author zxc
* @date 2021/5/11 4:50 下午
*/
@Override
public List<String> canEvaluateProjectCount(String issueId) {
List<String> userIds = new ArrayList<>();
IssueEntity issueEntity = baseDao.selectById(issueId);
if(null == issueEntity){
throw new RenException("议题信息不存在");
}
// 议题创建者
userIds.add(issueEntity.getCreatedBy());
// 表决过的人
List<String> votedCount = issueVoteDetailDao.selectIssueVoteCount(issueId);
if (!CollectionUtils.isEmpty(votedCount)){
userIds.addAll(votedCount);
}
// 话题创建者
Result<String> topicCreatedUser = resiGroupOpenFeignClient.topicCreatedUser(issueEntity.getSourceId());
if (!topicCreatedUser.success()){
throw new RenException("【查询话题创建者失败】["+topicCreatedUser.getMsg()+"]");
}
userIds.add(topicCreatedUser.getData());
// 去重
return userIds.stream().distinct().collect(Collectors.toList());
}
/**
* @Description 查询可评价项目人数批量
* @Param issueId
* @author zxc
* @date 2021/5/11 4:50 下午
*/
@Override
public List<CanEvaluateProjectCountBatchResultDTO> canEvaluateProjectCountBatch(List<String> issueIds) {
// 根据议题查询
List<IssueEntity> issueEntities = baseDao.selectBatchIds(issueIds);
if (CollectionUtils.isEmpty(issueEntities)){
throw new RenException("议题信息不存在");
}
List<CanEvaluateProjectCountBatchResultDTO> result = new ArrayList<>();
issueEntities.forEach(i -> {
CanEvaluateProjectCountBatchResultDTO r = new CanEvaluateProjectCountBatchResultDTO();
r.setIssueId(i.getId());
r.setUserId(i.getCreatedBy());
result.add(r);
});
// 所有议题表决
List<IssueVoteResultDTO> issueVoteResult = issueVoteDetailDao.selectIssueVoteCountBatch(issueIds);
Map<String, List<IssueVoteResultDTO>> groupByIssue = new HashMap<>(16);
if (!CollectionUtils.isEmpty(issueVoteResult)){
// 根据议题分组
groupByIssue = issueVoteResult.stream().collect(Collectors.groupingBy(IssueVoteResultDTO::getIssueId));
}
Map<String, List<IssueVoteResultDTO>> finalGroupByIssue = groupByIssue;
boolean empty = finalGroupByIssue.isEmpty();
Result<List<TopicCreatedUserBatchResultDTO>> topicCreatedUserBatch = resiGroupOpenFeignClient.topicCreatedUserBatch(issueEntities.stream().map(m -> m.getSourceId()).collect(Collectors.toList()));
if (!topicCreatedUserBatch.success()){
throw new RenException("【查询话题创建者失败】["+topicCreatedUserBatch.getMsg()+"]");
}
List<TopicCreatedUserBatchResultDTO> topicCreatedUserBatchData = topicCreatedUserBatch.getData();
result.forEach(r -> {
List<String> userIds = new ArrayList<>();
// 议题创建者
userIds.add(r.getUserId());
if (!empty){
// 实际表决人数
finalGroupByIssue.forEach((issueId, list) -> {
if (r.getIssueId().equals(issueId)){
List<String> votePeople = list.stream().map(m -> m.getUserId()).collect(Collectors.toList());
userIds.addAll(votePeople);
}
});
}
// 话题创建者
if (!CollectionUtils.isEmpty(topicCreatedUserBatchData)){
topicCreatedUserBatchData.forEach(t -> {
if (r.getIssueId().equals(t.getIssueId())){
userIds.add(t.getUserId());
}
});
}
r.setUserIds(userIds.stream().distinct().collect(Collectors.toList()));
});
return result;
}
}

26
epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteDetailDao.xml

@ -155,4 +155,30 @@
</select>
<select id="selectIssueVoteCount" resultType="java.lang.String">
SELECT
CREATED_BY
FROM
issue_vote_detail
WHERE
DEL_FLAG = '0'
AND ISSUE_ID = #{issueId}
</select>
<!-- 查询议题表决数【批量】 -->
<select id="selectIssueVoteCountBatch" resultType="com.epmet.dto.result.IssueVoteResultDTO">
SELECT
CREATED_BY AS userId,
ISSUE_ID
FROM
issue_vote_detail
WHERE
DEL_FLAG = '0'
AND (
<foreach collection="issueIds" item="issueId" separator=" OR ">
ISSUE_ID = #{issueId}
</foreach>
)
</select>
</mapper>

2
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java

@ -99,7 +99,7 @@ public class AgencyController {
ValidatorUtils.validateEntity(formDTO, AddAgencyV2FormDTO.AreaCodeGroup.class);
}
//当前客户下,同级组织中,组织名称不允许重复
customerAgencyService.checkAgencyName(formDTO.getAgencyName(),tokenDTO.getCustomerId(),formDTO.getLevel(),null);
customerAgencyService.checkAgencyName(formDTO.getAgencyName(),tokenDTO.getCustomerId(),null,formDTO.getParentAgencyId());
return new Result<AddAgencyResultDTO>().ok(agencyService.addAgencyV2(formDTO));
}

5
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java

@ -58,6 +58,7 @@ public interface CustomerAgencyDao extends BaseDao<CustomerAgencyEntity> {
* @Description 组织首页-下级机关列表
**/
List<SubListResultDTO> selectSubAgencyById(@Param("pId") String pId, @Param("agencyNum") Integer agencyNum);
List<SubListResultDTO> selectSubAgencyByAgencyId(@Param("pId") String pId);
/**
* @param pId
@ -230,6 +231,6 @@ public interface CustomerAgencyDao extends BaseDao<CustomerAgencyEntity> {
List<CustomerAgencyEntity> checkAgencyName(@Param("agencyName") String agencyName,
@Param("customerId") String customerId,
@Param("level") String level,
@Param("agencyId") String agencyId);
@Param("agencyId") String agencyId,
@Param("parentAgencyId") String parentAgencyId);
}

2
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java

@ -235,5 +235,5 @@ public interface CustomerAgencyService extends BaseService<CustomerAgencyEntity>
**/
OrganizeTreeResultDTO organizeTree(String agencyId);
void checkAgencyName(String agencyName,String customerId,String level,String agencyId);
void checkAgencyName(String agencyName,String customerId,String agencyId,String parentAgencyId);
}

4
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java

@ -134,7 +134,7 @@ public class AgencyServiceImpl implements AgencyService {
Result result = new Result();
CustomerAgencyEntity originalEntity = customerAgencyDao.selectById(formDTO.getAgencyId());
//当前客户下,同级组织中,组织名称不允许重复
customerAgencyService.checkAgencyName(formDTO.getAgencyName(),originalEntity.getCustomerId(),originalEntity.getLevel(),originalEntity.getId());
customerAgencyService.checkAgencyName(formDTO.getAgencyName(),originalEntity.getCustomerId(),originalEntity.getId(),originalEntity.getPid());
originalEntity.setOrganizationName(formDTO.getAgencyName());
//1:更新当前组织信息
if (customerAgencyDao.updateById(originalEntity) < NumConstant.ONE) {
@ -300,7 +300,7 @@ public class AgencyServiceImpl implements AgencyService {
public Result<SubAgencyResultDTO> subAgencyList(SubAgencyFormDTO formDTO) {
SubAgencyResultDTO subAgencyResultDTO = new SubAgencyResultDTO();
//1:根据当前机关Id查询直属下一级机关列表,只返回前十条
List<SubListResultDTO> agencyList = customerAgencyDao.selectSubAgencyById(formDTO.getAgencyId(),formDTO.getAgencyNum());
List<SubListResultDTO> agencyList = customerAgencyDao.selectSubAgencyByAgencyId(formDTO.getAgencyId());
if (null == agencyList || agencyList.size() < NumConstant.ONE) {
subAgencyResultDTO.setAgencyList(new ArrayList<SubListResultDTO>());
subAgencyResultDTO.setSubAgencyCount(NumConstant.ZERO);

4
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java

@ -1060,8 +1060,8 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl<CustomerAgencyDao
}
@Override
public void checkAgencyName(String agencyName,String customerId,String level,String agencyId) {
List<CustomerAgencyEntity> entityList = baseDao.checkAgencyName(agencyName,customerId,level,agencyId);
public void checkAgencyName(String agencyName,String customerId,String agencyId,String parentAgencyId) {
List<CustomerAgencyEntity> entityList = baseDao.checkAgencyName(agencyName,customerId,agencyId,parentAgencyId);
if (CollectionUtils.isNotEmpty(entityList)) {
throw new RenException(EpmetErrorCode.AGENCY_NAME_ALREADY_EXISTS.getCode(), EpmetErrorCode.AGENCY_NAME_ALREADY_EXISTS.getMsg());
}

30
epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml

@ -70,6 +70,16 @@
ORDER BY created_time DESC
LIMIT #{agencyNum}
</select>
<select id="selectSubAgencyByAgencyId" resultType="com.epmet.dto.result.SubListResultDTO">
SELECT
id AS 'agencyId',
organization_name AS 'agencyName',
`level` AS 'agencyLevel'
FROM customer_agency
WHERE del_flag = '0'
AND pid = #{pId}
ORDER BY created_time DESC
</select>
<select id="selectAgencyList" resultType="com.epmet.dto.result.AgencyListResultDTO">
SELECT
@ -415,16 +425,18 @@
<select id="checkAgencyName" parameterType="map" resultType="com.epmet.entity.CustomerAgencyEntity">
SELECT
ca.id
ca.id
FROM
customer_agency ca
customer_agency ca
WHERE
ca.DEL_FLAG = '0'
AND ca.CUSTOMER_ID = #{customerId}
AND ca.ORGANIZATION_NAME = #{agencyName}
AND ca.`LEVEL` = #{level}
<if test='agencyId != "" and agencyId != null'>
AND ca.id !=#{agencyId}
</if>
ca.DEL_FLAG = '0'
AND ca.CUSTOMER_ID = #{customerId}
AND ca.ORGANIZATION_NAME = #{agencyName}
<if test='agencyId != "" and agencyId != null'>
AND ca.id !=#{agencyId}
</if>
<if test='parentAgencyId != "" and parentAgencyId != null'>
AND ca.pid =#{parentAgencyId}
</if>
</select>
</mapper>

5
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/ProjectSatisfactionStatisticsDTO.java

@ -93,4 +93,9 @@ public class ProjectSatisfactionStatisticsDTO implements Serializable {
*/
private String customerId;
/**
* 应评价人数等于实际表决人数
*/
private Integer shouldEvaluateCount;
}

5
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ProjectEvaluateFormDTO.java

@ -33,5 +33,10 @@ public class ProjectEvaluateFormDTO implements Serializable {
*/
private String userId;
/**
* 客户ID
*/
private String customerId;
}

24
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ComplementedProjectEvaluateResultDTO.java

@ -0,0 +1,24 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2021/5/12 10:24 上午
* @DESC
*/
@Data
public class ComplementedProjectEvaluateResultDTO implements Serializable {
private static final long serialVersionUID = -300492311961684245L;
private String projectId;
private String issueId;
private String customerId;
private Boolean disposeStatus = false;
}

20
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectEvaluateDetailResultDTO.java

@ -0,0 +1,20 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2021/5/12 4:34 下午
* @DESC
*/
@Data
public class ProjectEvaluateDetailResultDTO implements Serializable {
private static final long serialVersionUID = -6651646333040235330L;
private String projectId;
private String satisfaction;
}

4
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/ProjectConstant.java

@ -175,6 +175,10 @@ public interface ProjectConstant {
String EXTERNAL_SYSTEM = "third_platform_project_send";
String EVALUATE_GOOD = "good";
String EVALUATE_BAD = "bad";
String EVALUATE_PERFECT = "perfect";
/**
* 三个月六个月12个月
*/

11
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectSatisfactionDetailController.java

@ -127,4 +127,15 @@ public class ProjectSatisfactionDetailController {
return new Result<List<ProjectEvaluationListResultDTO>>().ok(projectSatisfactionDetailService.projectEvaluationList(formDTO));
}
/**
* @Description 补全项目评价统计
* @author zxc
* @date 2021/5/12 10:04 上午
*/
@PostMapping("complementedprojectevaluate")
public Result complementedProjectEvaluate(){
projectSatisfactionDetailService.complementedProjectEvaluate();
return new Result();
}
}

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

@ -148,6 +148,13 @@ public interface ProjectDao extends BaseDao<ProjectEntity> {
ProjectInfoDTO queryProjectInfoByProjectId(String projectId);
/**
* @Description 查询所以已关闭的项目项目来源为 'issue'
* @author zxc
* @date 2021/5/12 10:29 上午
*/
List<ComplementedProjectEvaluateResultDTO> selectAllClosedProject();
/**
* @Description 查询时间段内的项目ID
* @Param agencyId

9
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectSatisfactionDetailDao.java

@ -20,6 +20,7 @@ package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.form.ProjectEvaluationListFormDTO;
import com.epmet.dto.form.ProjectInitEvaluationFormDTO;
import com.epmet.dto.result.ProjectEvaluateDetailResultDTO;
import com.epmet.dto.result.ProjectEvaluateInfoResultDTO;
import com.epmet.dto.result.EvaluationListResultDTO;
import com.epmet.dto.result.ProjectEvaluationListResultDTO;
@ -60,4 +61,12 @@ public interface ProjectSatisfactionDetailDao extends BaseDao<ProjectSatisfactio
*/
List<ProjectEvaluationListResultDTO> projectEvaluationList(ProjectEvaluationListFormDTO formDTO);
/**
* @Description 查询项目的评价人
* @Param projectIds
* @author zxc
* @date 2021/5/12 4:42 下午
*/
List<ProjectEvaluateDetailResultDTO> selectProjectEvaluateDetail(@Param("projectIds")List<String> projectIds);
}

25
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectSatisfactionStatisticsDao.java

@ -35,6 +35,31 @@ import java.util.List;
@Mapper
public interface ProjectSatisfactionStatisticsDao extends BaseDao<ProjectSatisfactionStatisticsEntity> {
/**
* @Description 校验此项目是否存在
* @Param projectId
* @author zxc
* @date 2021/5/10 4:35 下午
*/
Integer checkProjectExists(@Param("projectId")String projectId);
/**
* @Description 更新项目评价数据
* @Param projectId
* @Param evalType
* @author zxc
* @date 2021/5/10 4:57 下午
*/
void updateEvaluateData(@Param("projectId")String projectId,@Param("evalType")String evalType);
/**
* @Description 查询已经存在的记录
* @author zxc
* @date 2021/5/12 10:35 上午
*/
List<String> selectExistsProject();
/**
* @Description 根据项目ID查询此项目评价信息
* @Param projectId

2
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ProjectSatisfactionStatisticsEntity.java

@ -72,10 +72,12 @@ public class ProjectSatisfactionStatisticsEntity extends BaseEpmetEntity {
@TableField(fill = FieldFill.INSERT)
private String customerId;
public ProjectSatisfactionStatisticsEntity() {
this.goodCount = NumConstant.ZERO;
this.perfectCount = NumConstant.ZERO;
this.badCount = NumConstant.ZERO;
this.shouldEvaluateCount = NumConstant.ZERO;
}
}

26
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/redis/ProjectRedis.java

@ -17,10 +17,17 @@
package com.epmet.redis;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.dto.form.VoteRedisFormDTO;
import com.epmet.issue.constant.IssueConstant;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Map;
import static com.epmet.commons.tools.utils.ConvertUtils.mapToEntity;
/**
* 项目表
*
@ -29,6 +36,9 @@ import org.springframework.stereotype.Component;
*/
@Component
public class ProjectRedis {
private final static String issueVoteKey = "epmet:issue:";
@Autowired
private RedisUtils redisUtils;
@ -44,4 +54,20 @@ public class ProjectRedis {
return null;
}
/**
* @Description 获取议题表决详情
* @Param issueId
* @author zxc
* @date 2021/5/11 1:51 下午
*/
public VoteRedisFormDTO getIssueVoteDetail(String issueId){
String key = issueVoteKey + issueId;
Map<String, Object> stringObjectMap = redisUtils.hGetAll(key);
if (stringObjectMap.size()== NumConstant.ZERO || stringObjectMap == null){
return new VoteRedisFormDTO();
}
VoteRedisFormDTO voteRedisFormDTO = mapToEntity(stringObjectMap, VoteRedisFormDTO.class);
return voteRedisFormDTO;
}
}

7
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectSatisfactionDetailService.java

@ -129,4 +129,11 @@ public interface ProjectSatisfactionDetailService extends BaseService<ProjectSat
* @author zxc
*/
List<ProjectEvaluationListResultDTO> projectEvaluationList(@RequestBody ProjectEvaluationListFormDTO formDTO);
/**
* @Description 补全项目评价统计
* @author zxc
* @date 2021/5/12 10:04 上午
*/
void complementedProjectEvaluate();
}

100
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectSatisfactionDetailServiceImpl.java

@ -20,6 +20,7 @@ package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.distributedlock.DistributedLock;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.constant.FieldConstant;
@ -32,21 +33,30 @@ import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.ScanContentUtils;
import com.epmet.constant.ProjectConstant;
import com.epmet.dao.ProjectDao;
import com.epmet.dao.ProjectSatisfactionDetailDao;
import com.epmet.dao.ProjectSatisfactionStatisticsDao;
import com.epmet.dto.ProjectSatisfactionDetailDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.entity.ProjectEntity;
import com.epmet.entity.ProjectSatisfactionDetailEntity;
import com.epmet.entity.ProjectSatisfactionStatisticsEntity;
import com.epmet.feign.EpmetUserFeignClient;
import com.epmet.feign.GovIssueOpenFeignClient;
import com.epmet.redis.ProjectRedis;
import com.epmet.redis.ProjectSatisfactionDetailRedis;
import com.epmet.service.ProjectSatisfactionDetailService;
import com.epmet.service.ProjectSatisfactionStatisticsService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.redisson.api.RLock;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.*;
import java.util.stream.Collectors;
@ -69,6 +79,18 @@ public class ProjectSatisfactionDetailServiceImpl extends BaseServiceImpl<Projec
private String scanApiUrl;
@Value("${openapi.scan.method.textSyncScan}")
private String textSyncScanMethod;
@Autowired
private DistributedLock distributedLock;
@Autowired
private ProjectSatisfactionStatisticsDao statisticsDao;
@Autowired
private ProjectDao projectDao;
@Autowired
private ProjectRedis projectRedis;
@Autowired
private GovIssueOpenFeignClient govIssueOpenFeignClient;
@Autowired
private ProjectSatisfactionStatisticsService projectSatisfactionStatisticsService;
@Override
public PageData<ProjectSatisfactionDetailDTO> page(Map<String, Object> params) {
@ -216,6 +238,8 @@ public class ProjectSatisfactionDetailServiceImpl extends BaseServiceImpl<Projec
throw new RenException(EpmetErrorCode.ALREADY_EVALUATE.getCode());
}
baseDao.insert(entity);
// 更新
statisticsDao.updateEvaluateData(formDTO.getProjectId(), formDTO.getSatisfaction());
}
/**
@ -230,4 +254,80 @@ public class ProjectSatisfactionDetailServiceImpl extends BaseServiceImpl<Projec
return baseDao.projectEvaluationList(formDTO);
}
/**
* @Description 补全项目评价统计
* @author zxc
* @date 2021/5/12 10:04 上午
*/
@Override
public void complementedProjectEvaluate() {
// 查询所有已关闭的项目【醒目来源为'issue'】
List<ComplementedProjectEvaluateResultDTO> allProjects = projectDao.selectAllClosedProject();
if (CollectionUtils.isEmpty(allProjects)){
log.warn("不存在可补全的数据");
return;
}
// 查询已存在的项目记录
List<String> existsProjects = statisticsDao.selectExistsProject();
List<ComplementedProjectEvaluateResultDTO> projects = new ArrayList<>();
// 要是 评价统计库没有记录,所有的项目都得插入
if (CollectionUtils.isEmpty(existsProjects)){
projects = allProjects;
}else {
// 把 评价统计库存在的 标记为true,
allProjects.forEach(a -> {
existsProjects.forEach(p -> {
if (a.getProjectId().equals(p)){
a.setDisposeStatus(true);
}
});
});
Map<Boolean, List<ComplementedProjectEvaluateResultDTO>> groupByStatus = allProjects.stream().collect(Collectors.groupingBy(ComplementedProjectEvaluateResultDTO::getDisposeStatus));
// 去除存在记录的项目
projects = groupByStatus.get(false);
}
List<ProjectSatisfactionStatisticsEntity> needAdd = new ArrayList<>();
if (!CollectionUtils.isEmpty(projects)){
List<String> projectIds = projects.stream().map(m -> m.getProjectId()).collect(Collectors.toList());
List<String> issueIds = projects.stream().map(m -> m.getIssueId()).collect(Collectors.toList());
// 根据项目ID查询 项目的评价细节
List<ProjectEvaluateDetailResultDTO> projectEvaluateDetailResult = baseDao.selectProjectEvaluateDetail(projectIds);
// 根据项目ID分组
Map<String, List<ProjectEvaluateDetailResultDTO>> groupByProject = projectEvaluateDetailResult.stream().collect(Collectors.groupingBy(ProjectEvaluateDetailResultDTO::getProjectId));
boolean empty = groupByProject.isEmpty();
// 项目应评价人数 = 话题创建者 + 议题发起者 + 议题表决人 【去重】
Result<List<CanEvaluateProjectCountBatchResultDTO>> canEvaluateProjectCountBatch = govIssueOpenFeignClient.canEvaluateProjectCountBatch(issueIds);
if (!canEvaluateProjectCountBatch.success()){
throw new RenException("【查询项目应评价人数失败】,【"+canEvaluateProjectCountBatch.getMsg()+"】");
}
projects.forEach(p -> {
ProjectSatisfactionStatisticsEntity e = new ProjectSatisfactionStatisticsEntity();
e.setCustomerId(p.getCustomerId());
e.setProjectId(p.getProjectId());
if (!empty){
groupByProject.forEach((projectId,list) -> {
if (p.getProjectId().equals(projectId)){
Map<String, List<ProjectEvaluateDetailResultDTO>> groupByS = list.stream().collect(Collectors.groupingBy(ProjectEvaluateDetailResultDTO::getSatisfaction));
e.setBadCount(CollectionUtils.isEmpty(groupByS.get(ProjectConstant.EVALUATE_BAD)) ? NumConstant.ZERO : groupByS.get(ProjectConstant.EVALUATE_BAD).size());
e.setGoodCount(CollectionUtils.isEmpty(groupByS.get(ProjectConstant.EVALUATE_GOOD)) ? NumConstant.ZERO : groupByS.get(ProjectConstant.EVALUATE_GOOD).size());
e.setPerfectCount(CollectionUtils.isEmpty(groupByS.get(ProjectConstant.EVALUATE_PERFECT)) ? NumConstant.ZERO : groupByS.get(ProjectConstant.EVALUATE_PERFECT).size());
}
});
}
if (!CollectionUtils.isEmpty(canEvaluateProjectCountBatch.getData())){
canEvaluateProjectCountBatch.getData().forEach(ep -> {
if (p.getIssueId().equals(ep.getIssueId())){
e.setShouldEvaluateCount(ep.getUserIds().size());
}
});
}
needAdd.add(e);
});
}
if (!CollectionUtils.isEmpty(needAdd)){
projectSatisfactionStatisticsService.insertBatch(needAdd);
}
}
}

21
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java

@ -36,6 +36,7 @@ import com.epmet.constant.SmsTemplateConstant;
import com.epmet.constant.UserMessageConstant;
import com.epmet.dao.ProjectDao;
import com.epmet.dao.ProjectOrgRelationDao;
import com.epmet.dao.ProjectSatisfactionStatisticsDao;
import com.epmet.dto.*;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
@ -132,6 +133,8 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
private ProjectTraceService projectTraceService;
@Autowired
private ResiGroupOpenFeignClient resiGroupOpenFeignClient;
@Autowired
private ProjectSatisfactionStatisticsDao statisticsDao;
private final static String ONE_DAY = "<1";
@ -712,6 +715,24 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
if (!msgResult) {
log.error("项目实时统计消息发送失败");
}
// 项目评价初始化信息插入
// 应评价数 = 话题创建者 + 议题发起者 + 议题表决人 【去重】
// 议题发起者 和 议题表决人 和 话题创建者 查询
Result<List<String>> canEvaluateProjectCount = govIssueOpenFeignClient.canEvaluateProjectCount(projectEntity.getOriginId());
if (!canEvaluateProjectCount.success()){
throw new RenException("【查询项目应评价人数失败】,【"+canEvaluateProjectCount.getMsg()+"】");
}
List<String> userIds = canEvaluateProjectCount.getData();
ProjectSatisfactionStatisticsEntity entity1 = new ProjectSatisfactionStatisticsEntity();
entity1.setShouldEvaluateCount(userIds.size());
entity1.setCustomerId(projectEntity.getCustomerId());
entity1.setProjectId(fromDTO.getProjectId());
entity1.setBadCount(NumConstant.ZERO);
entity1.setGoodCount(NumConstant.ZERO);
entity1.setPerfectCount(NumConstant.ZERO);
// 新添一条记录
statisticsDao.insert(entity1);
}
@Override

1
epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.12__alter_shouldEvaluateCount.sql

@ -0,0 +1 @@
ALTER TABLE `project_satisfaction_statistics` ADD `SHOULD_EVALUATE_COUNT` int(11) NOT NULL COMMENT '应评价人数【等于实际表决人数】';

12
epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml

@ -270,6 +270,18 @@
AND p.id=#{projectId}
</select>
<!-- 查询所以已关闭的项目【项目来源为 'issue'】 -->
<select id="selectAllClosedProject" resultType="com.epmet.dto.result.ComplementedProjectEvaluateResultDTO">
SELECT
ID AS projectId,
ORIGIN_ID AS issueId,
CUSTOMER_ID
FROM project
WHERE DEL_FLAG = '0'
AND ORIGIN = 'issue'
AND `STATUS` = 'closed'
</select>
<!-- 查询时间段内的项目ID -->
<select id="selectProjectIdByTime" resultType="com.epmet.dto.result.MassesDiscontentResultDTO">
SELECT

16
epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectSatisfactionDetailDao.xml

@ -59,4 +59,20 @@
LIMIT #{pageNo},#{pageSize}
</select>
<!-- 查询项目的评价人 -->
<select id="selectProjectEvaluateDetail" resultType="com.epmet.dto.result.ProjectEvaluateDetailResultDTO">
SELECT
SATISFACTION AS satisfaction,
PROJECT_ID
FROM
project_satisfaction_detail
WHERE
DEL_FLAG = '0'
AND (
<foreach collection="projectIds" item="projectId" separator=" OR ">
PROJECT_ID = #{projectId}
</foreach>
)
</select>
</mapper>

33
epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectSatisfactionStatisticsDao.xml

@ -3,6 +3,39 @@
<mapper namespace="com.epmet.dao.ProjectSatisfactionStatisticsDao">
<!-- 更新项目评价数据 -->
<update id="updateEvaluateData">
UPDATE project_satisfaction_statistics
SET
<if test="evalType == 'bad' ">
BAD_COUNT = BAD_COUNT + 1,
</if>
<if test="evalType == 'good' ">
GOOD_COUNT = GOOD_COUNT + 1,
</if>
<if test="evalType == 'perfect' ">
PERFECT_COUNT = PERFECT_COUNT + 1,
</if>
UPDATED_TIME = NOW()
WHERE DEL_FLAG = '0'
AND PROJECT_ID = #{projectId}
</update>
<!-- 校验此项目是否存在 -->
<select id="checkProjectExists" resultType="java.lang.Integer">
SELECT
COUNT( 1 )
FROM
project_satisfaction_statistics
WHERE
del_flag = '0'
AND PROJECT_ID = #{projectId}
</select>
<!-- 查询已经存在的记录 -->
<select id="selectExistsProject" resultType="java.lang.String">
SELECT PROJECT_ID FROM project_satisfaction_statistics WHERE DEL_FLAG = '0'
</select>
<!-- 根据项目ID查询此项目评价信息 -->
<select id="selectInfoByProjectId" resultType="com.epmet.entity.ProjectSatisfactionStatisticsEntity">
select * from project_satisfaction_statistics where DEL_FLAG = '0' AND PROJECT_ID = #{projectId}

15
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/ResiTopicDTO.java

@ -88,6 +88,21 @@ public class ResiTopicDTO implements Serializable {
*/
private String dimension;
/**
* 定位地址
* */
private String locateAddress;
/**
* 定位经度
* */
private String locateLongitude;
/**
* 定位纬度
* */
private String locateDimension;
/**
* 删除标记 0未删除1已删除
*/

15
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/TopicDraftDTO.java

@ -103,6 +103,21 @@ public class TopicDraftDTO implements Serializable {
*/
private String dimension;
/**
* 定位地址
* */
private String locateAddress;
/**
* 定位经度
* */
private String locateLongitude;
/**
* 定位纬度
* */
private String locateDimension;
/**
* 发布成功后的话题id
*/

15
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/CreateTopicFormDTO.java

@ -44,6 +44,21 @@ public class CreateTopicFormDTO implements Serializable {
@NotBlank(message = "地址信息不能为空")
private String address;
/**
* 经度
* */
private String locateLongitude;
/**
* 纬度
* */
private String locateDimension;
/**
* 地址
* */
private String locateAddress;
/**
* 省份
* */

9
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/DraftDetailResultDTO.java

@ -42,6 +42,15 @@ public class DraftDetailResultDTO implements Serializable {
* 发布地址
*/
private String releaseAddress;
/**
* 经度
*/
private String longitude;
/**
* 维度
*/
private String dimension;
/**
* 驳回理由
*/

10
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicIncludeIssueDetailResultDTO.java

@ -41,6 +41,16 @@ public class ResiTopicIncludeIssueDetailResultDTO implements Serializable {
* */
private String releaseAddress;
/**
* 经度
*/
private String longitude;
/**
* 维度
*/
private String dimension;
/**
* 话题内容
* */

20
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/TopicCreatedUserBatchResultDTO.java

@ -0,0 +1,20 @@
package com.epmet.resi.group.dto.topic.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2021/5/12 2:25 下午
* @DESC
*/
@Data
public class TopicCreatedUserBatchResultDTO implements Serializable {
private static final long serialVersionUID = 3742119092028478772L;
private String issueId;
private String userId;
}

23
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java

@ -15,10 +15,7 @@ import com.epmet.resi.group.feign.fallback.ResiGroupOpenFeignClientFallback;
import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
@ -255,6 +252,24 @@ public interface ResiGroupOpenFeignClient {
@PostMapping("resi/group/group/groupPointDetail/{groupId}")
Result<GroupPointDetailResultDTO> groupPointDetail(@PathVariable String groupId);
/**
* @Description 查询话题的创建者
* @Param topicId
* @author zxc
* @date 2021/5/12 9:16 上午
*/
@PostMapping("/resi/group/topic/topiccreateduser")
Result<String> topicCreatedUser(@RequestParam("topicId")String topicId);
/**
* @Description 查询话题的创建者批量
* @Param topicId
* @author zxc
* @date 2021/5/12 9:16 上午
*/
@PostMapping("/resi/group/topic/topiccreateduserbatch")
Result<List<TopicCreatedUserBatchResultDTO>> topicCreatedUserBatch(@RequestParam("topicIds")List<String> topicIds);
/**
* @Description 查询话题信息
* @Param issueIds

10
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java

@ -200,6 +200,16 @@ public class ResiGroupOpenFeignClientFallback implements ResiGroupOpenFeignClien
return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "groupPointDetail", groupId);
}
@Override
public Result<String> topicCreatedUser(String topicId) {
return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "topicCreatedUser", topicId);
}
@Override
public Result<List<TopicCreatedUserBatchResultDTO>> topicCreatedUserBatch(List<String> topicIds) {
return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "topicCreatedUserBatch", topicIds);
}
@Override
public Result<List<TopicInfoResultDTO>> getTopicInfos(List<String> issueIds) {
return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "getTopicInfos", issueIds);

1
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ExitGroupServiceImpl.java

@ -232,7 +232,6 @@ public class ExitGroupServiceImpl implements ExitGroupService {
}
//3.修改组成员出入群记录表数据状态、删除组成员关系表数据、新增退群记录表数据
//3.1.修改组成员出入群记录表数据状态 group_memeber_operation
// TODO ???
GroupMemeberOperationDTO lastRec=groupMemeberOperationService.selectLatestRecord(formDTO.getGroupId(),formDTO.getUserId());
GroupMemeberOperationDTO operationDTO = new GroupMemeberOperationDTO();
operationDTO.setCustomerId(formDTO.getCustomerId());

29
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java

@ -598,22 +598,35 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
public Result agreeApplyGroup(AgreeApplyGroupFormDTO agreeApplyGroupFormDTO) {
//1、更新组的状态
ResiGroupDTO resiGroupDTO = this.get(agreeApplyGroupFormDTO.getGroupId());
if (null == resiGroupDTO) {
throw new RenException("小组信息不存在");
}
if (GroupStateConstant.GROUP_APPROVED.equals(resiGroupDTO.getState())) {
logger.warn("当前小组已审核通过,groupId=" + agreeApplyGroupFormDTO.getGroupId());
return new Result();
}
resiGroupDTO.setState(GroupStateConstant.GROUP_APPROVED);
this.update(resiGroupDTO);
//2、更新组的申请记录改为已通过
ResiGroupOperationDTO resiGroupOperation = resiGroupOperationDao.selectGroupApplyRecord(agreeApplyGroupFormDTO.getGroupId());
resiGroupOperation.setState(GroupStateConstant.GROUP_APPROVED);
resiGroupOperation.setOperateUserId(agreeApplyGroupFormDTO.getUserId());
resiGroupOperationService.update(resiGroupOperation);
if (null != resiGroupOperation) {
resiGroupOperation.setState(GroupStateConstant.GROUP_APPROVED);
resiGroupOperation.setOperateUserId(agreeApplyGroupFormDTO.getUserId());
resiGroupOperationService.update(resiGroupOperation);
}
//3、将群主在群成员的状态改为已通过
ResiGroupMemberDTO resiGroupMemberDTO = resiGroupMemberDao.selectLeaderMember(agreeApplyGroupFormDTO.getGroupId());
resiGroupMemberDTO.setStatus(MemberStateConstant.APPROVED);
resiGroupMemberService.update(resiGroupMemberDTO);
if (null != resiGroupMemberDTO) {
resiGroupMemberDTO.setStatus(MemberStateConstant.APPROVED);
resiGroupMemberService.update(resiGroupMemberDTO);
}
//4、更新群主的出入群记录改为已通过
GroupMemeberOperationDTO groupMemeberOperationDTO = groupMemeberOperationDao.selectLeaderRecord(agreeApplyGroupFormDTO.getGroupId());
groupMemeberOperationDTO.setOperateStatus(MemberStateConstant.APPROVED);
groupMemeberOperationDTO.setOperateUserId(agreeApplyGroupFormDTO.getUserId());
groupMemeberOperationService.update(groupMemeberOperationDTO);
if (null != groupMemeberOperationDTO) {
groupMemeberOperationDTO.setOperateStatus(MemberStateConstant.APPROVED);
groupMemeberOperationDTO.setOperateUserId(agreeApplyGroupFormDTO.getUserId());
groupMemeberOperationService.update(groupMemeberOperationDTO);
}
//4-1.2020.11.17 sun 添加小组审核通过后生成小组的二维码图片逻辑 start
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
@Override

10
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/ResiGroupMemberService.java

@ -252,4 +252,14 @@ public interface ResiGroupMemberService extends BaseService<ResiGroupMemberEntit
* @Date 2021/4/19 19:14
**/
List<ResiGroupMemberDTO> getMemberList(String groupId);
/**
* 查询小组人员信息
* @author zhaoqifeng
* @date 2021/5/8 15:17
* @param groupId
* @param userId
* @return com.epmet.resi.group.dto.member.ResiGroupMemberDTO
*/
ResiGroupMemberDTO getMemberInfo(String groupId, String userId);
}

12
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/GroupMemeberOperationServiceImpl.java

@ -247,8 +247,8 @@ public class GroupMemeberOperationServiceImpl extends BaseServiceImpl<GroupMemeb
throw new RenException("没有找到邀请人Id");
}
//查询是否在群内
ResiGroupMemberDTO groupMember = resiGroupMemberDao.selectGroupMemberInfo(groupId, param.getUserId());
if (null != groupMember && !MemberStateConstant.REMOVED.equals(groupMember.getStatus())) {
ResiGroupMemberDTO groupMember = memberService.getMemberInfo(groupId, param.getUserId());
if (null != groupMember && MemberStateConstant.APPROVED.equals(groupMember.getStatus())) {
log.info("已经在群内,直接返回成功,但是不发送积分事件");
result.setStatus("entered");
return result;
@ -341,7 +341,7 @@ public class GroupMemeberOperationServiceImpl extends BaseServiceImpl<GroupMemeb
}
}
if(StringUtils.isNotBlank(inviter)){
if(StringUtils.isNotBlank(inviter) && null == groupMember){
CommonGridIdFormDTO dataFilterParam = new CommonGridIdFormDTO();
dataFilterParam.setGridId(resiGroupDTO.getGridId());
@ -397,15 +397,15 @@ public class GroupMemeberOperationServiceImpl extends BaseServiceImpl<GroupMemeb
//直接加入群成员关系表
//如果是之前被移除的,则修改resi_group_member记录
ResiGroupMemberDTO resiGroupMemberDTO = new ResiGroupMemberDTO();
ResiGroupMemberDTO resiGroupMember = resiGroupMemberDao.selectGroupMemberInfo(groupId, param.getUserId());
if (null != resiGroupMember) {
resiGroupMemberDTO.setId(resiGroupMember.getId());
if (null != groupMember) {
resiGroupMemberDTO.setId(groupMember.getId());
}
resiGroupMemberDTO.setCustomerUserId(groupMemeberOperation.getCustomerUserId());
resiGroupMemberDTO.setResiGroupId(groupMemeberOperation.getGroupId());
resiGroupMemberDTO.setGroupLeaderFlag(LeaderFlagConstant.GROUP_MEMBER);
resiGroupMemberDTO.setEnterGroupType(groupMemeberOperation.getEnterGroupType());
resiGroupMemberDTO.setStatus(MemberStateConstant.APPROVED);
resiGroupMemberDTO.setDelFlag(NumConstant.ZERO_STR);
resiGroupMemberDTO.setCreatedBy(groupMemeberOperation.getCustomerUserId());
memberService.saveOrUpdate(resiGroupMemberDTO);
//修改群统计值

18
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java

@ -383,6 +383,24 @@ public class ResiGroupMemberServiceImpl extends BaseServiceImpl<ResiGroupMemberD
return baseDao.getMemberList(groupId);
}
/**
* 查询小组人员信息
*
* @param groupId
* @param userId
* @return com.epmet.resi.group.dto.member.ResiGroupMemberDTO
* @author zhaoqifeng
* @date 2021/5/8 15:17
*/
@Override
public ResiGroupMemberDTO getMemberInfo(String groupId, String userId) {
QueryWrapper<ResiGroupMemberEntity> wrapper = new QueryWrapper<>();
wrapper.eq("RESI_GROUP_ID", groupId)
.eq("CUSTOMER_USER_ID", userId);
ResiGroupMemberEntity entity = baseDao.selectOne(wrapper);
return ConvertUtils.sourceToTarget(entity, ResiGroupMemberDTO.class);
}
/**
* @param groupMemberListFormDTO
* @return com.epmet.commons.tools.utils.Result

1
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/notice/service/impl/NoticeReadRecordServiceImpl.java

@ -161,6 +161,7 @@ public class NoticeReadRecordServiceImpl extends BaseServiceImpl<NoticeReadRecor
reafdRecord.setNoticeId(notice.getId());
reafdRecord.setUserId(formDTO.getUserId());
reafdRecord.setReadFlag(ReadFlagConstant.READ);
reafdRecord.setViewDetail(ReadFlagConstant.READ);
insert(reafdRecord);
} else {
//4.根据是否过期判断已存在记录且是已读状态不在修改

23
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java

@ -486,6 +486,29 @@ public class ResiTopicController {
return new Result<List<AllMessagesResultDTO>>().ok(topicService.allMessages(formDTO));
}
/**
* @Description 查询话题的创建者
* @Param topicId
* @author zxc
* @date 2021/5/12 9:16 上午
*/
@PostMapping("topiccreateduser")
public Result<String> topicCreatedUser(@RequestParam("topicId")String topicId){
return new Result<String>().ok(topicService.topicCreatedUser(topicId));
}
/**
* @Description 查询话题的创建者
* @Param topicId
* @author zxc
* @date 2021/5/12 9:16 上午
*/
@PostMapping("topiccreateduserbatch")
public Result<List<TopicCreatedUserBatchResultDTO>> topicCreatedUserBatch(@RequestParam("topicIds")List<String> topicIds){
return new Result<List<TopicCreatedUserBatchResultDTO>>().ok(topicService.topicCreatedUserBatch(topicIds));
}
/**
* @Description 查询话题信息
* @Param issueIds

15
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/entity/ResiTopicEntity.java

@ -90,6 +90,21 @@ public class ResiTopicEntity extends BaseEpmetEntity {
*/
private String dimension;
/**
* 定位地址
* */
private String locateAddress;
/**
* 定位经度
* */
private String locateLongitude;
/**
* 定位纬度
* */
private String locateDimension;
/**
* 议题Id
*/

16
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/entity/TopicDraftEntity.java

@ -103,6 +103,22 @@ public class TopicDraftEntity extends BaseEpmetEntity {
*/
private String dimension;
/**
* 定位地址
* */
private String locateAddress;
/**
* 定位经度
* */
private String locateLongitude;
/**
* 定位纬度
* */
private String locateDimension;
/**
* 发布成功后的话题id
*/

16
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/ResiTopicService.java

@ -390,6 +390,22 @@ public interface ResiTopicService extends BaseService<ResiTopicEntity> {
*/
List<AllMessagesResultDTO> allMessages(AllMessagesFormDTO formDTO);
/**
* @Description 查询话题的创建者
* @Param topicId
* @author zxc
* @date 2021/5/12 9:16 上午
*/
String topicCreatedUser(String topicId);
/**
* @Description 查询话题的创建者批量
* @Param topicId
* @author zxc
* @date 2021/5/12 9:16 上午
*/
List<TopicCreatedUserBatchResultDTO> topicCreatedUserBatch(List<String> topicIds);
/**
* @Description 查询话题信息
* @Param issueIds

67
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java

@ -29,6 +29,7 @@ import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.form.mq.MqBaseMsgDTO;
import com.epmet.commons.tools.dto.form.mq.eventmsg.BasePointEventMsg;
import com.epmet.commons.tools.enums.AchievementTypeEnum;
import com.epmet.commons.tools.enums.EventEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
@ -55,7 +56,6 @@ import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.modules.constant.GroupMemberConstant;
import com.epmet.modules.constant.ResiGroupRedisKeys;
import com.epmet.modules.constant.WxmpSubscribeConstant;
import com.epmet.commons.tools.enums.AchievementTypeEnum;
import com.epmet.modules.feign.EpmetUserFeignClient;
import com.epmet.modules.feign.GovIssueFeignClient;
import com.epmet.modules.feign.GovOrgFeignClient;
@ -119,7 +119,6 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.validation.constraints.NotBlank;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@ -2699,7 +2698,32 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
if (groupType.equals(ModuleConstant.GROUP_TYPE_BRANCH)){
ui.setReleaseUserName(u.getStreet() + "-" + u.getRealName());
}else {
ui.setReleaseUserName(u.getShowName());
if (StringUtils.isBlank(u.getGender())) {
//性别为空,默认为未知
u.setGender(NumConstant.ZERO_STR);
}
String gender = ModuleConstant.GENDER_NO;
switch (u.getGender()) {
case NumConstant.ONE_STR:
gender = ModuleConstant.GENDER_ONE;
break;
case NumConstant.TWO_STR:
gender = ModuleConstant.GENDER_TWO;
break;
default:
gender = ModuleConstant.GENDER_NO;
}
String name = StrConstant.EPMETY_STR;
if (StringUtils.isNotBlank(u.getSurname())) {
name = u.getSurname().concat(gender);
}
String street = StringUtils.isNotBlank(u.getStreet()) ? u.getStreet() : StrConstant.EPMETY_STR;
if (StringUtils.isNotBlank(street) && StringUtils.isNotBlank(name)) {
ui.setReleaseUserName(u.getStreet().concat("-").concat(name));
} else {
log.warn(String.format("当前userId:%s,缓存信息缺失姓、街道等信息.....;群成员暂时显示昵称", u.getUserId()));
ui.setReleaseUserName(u.getNickname());
}
}
result.add(ui);
});
@ -2759,6 +2783,43 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
return allMessages;
}
/**
* @Description 查询话题的创建者
* @Param topicId
* @author zxc
* @date 2021/5/12 9:16 上午
*/
@Override
public String topicCreatedUser(String topicId) {
ResiTopicEntity resiTopicEntity = baseDao.selectById(topicId);
if (null == resiTopicEntity){
throw new RenException("话题信息不存在");
}
return resiTopicEntity.getCreatedBy();
}
/**
* @Description 查询话题的创建者批量
* @Param topicId
* @author zxc
* @date 2021/5/12 9:16 上午
*/
@Override
public List<TopicCreatedUserBatchResultDTO> topicCreatedUserBatch(List<String> topicIds) {
if (CollectionUtils.isEmpty(topicIds)){
return new ArrayList<>();
}
List<ResiTopicEntity> resiTopicEntities = baseDao.selectBatchIds(topicIds);
List<TopicCreatedUserBatchResultDTO> result = new ArrayList<>();
resiTopicEntities.forEach(r -> {
TopicCreatedUserBatchResultDTO t = new TopicCreatedUserBatchResultDTO();
t.setIssueId(r.getIssueId());
t.setUserId(r.getCreatedBy());
result.add(t);
});
return result;
}
/**
* @Description 查询话题信息
* @Param issueIds

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

Loading…
Cancel
Save