Browse Source

Merge branch 'dev_project_approval' into dev

master
sunyuchao 5 years ago
parent
commit
9bded861b2
  1. 7
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java
  2. 5
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/ProjectDTO.java
  3. 5
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govproject/ProjectEntity.java
  4. 10
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/extract/FactOriginProjectMainDailyDTO.java
  5. 2
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ClosedIncrResultDTO.java
  6. 2
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/EvaluateTotalResultDTO.java
  7. 2
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ProjectIncrResultDTO.java
  8. 2
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ProjectOrgDailyResultDTO.java
  9. 11
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ProjectTotalResultDTO.java
  10. 8
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ResolvedNumResultDTO.java
  11. 2
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/UnClosedTotalResultDTO.java
  12. 7
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectCategoryGridDailyDTO.java
  13. 11
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectOrgDailyDTO.java
  14. 18
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/topic/TopicAttachmentDTO.java
  15. 24
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/topic/result/ResiTopicAndImgResultDTO.java
  16. 3
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/constant/ProjectConstant.java
  17. 31
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java
  18. 8
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectCategoryDailyDao.java
  19. 8
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectLogDailyDao.java
  20. 87
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectMainDailyDao.java
  21. 1
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectOrgDailyDao.java
  22. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectQuantityOrgMonthlyDao.java
  23. 4
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/issue/IssueProjectCategoryDictDao.java
  24. 60
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/topic/TopicDao.java
  25. 10
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/extract/FactOriginProjectMainDailyEntity.java
  26. 5
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/project/ProjectEntity.java
  27. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/Issue/IssueProjectCategoryDictService.java
  28. 6
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/Issue/impl/IssueProjectCategoryDictServiceImpl.java
  29. 58
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/CalGridIndexServiceImpl.java
  30. 8
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectCategoryDailyService.java
  31. 147
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectMainDailyService.java
  32. 15
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectCategoryDailyServiceImpl.java
  33. 3
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectLogDailyServiceImpl.java
  34. 178
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectMainDailyServiceImpl.java
  35. 49
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/ProjectExtractServiceImpl.java
  36. 10
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/ScreenGrassrootsGovernDataAbsorptionService.java
  37. 10
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenExtractServiceImpl.java
  38. 329
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenGrassrootsGovernDataAbsorptionServiceImpl.java
  39. 95
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectCategoryOrgDailyServiceImpl.java
  40. 4
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectGridDailyServiceImpl.java
  41. 184
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectOrgDailyServiceImpl.java
  42. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectQuantityGridMonthlyServiceImpl.java
  43. 188
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectQuantityOrgMonthlyServiceImpl.java
  44. 12
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/TopicService.java
  45. 7
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/impl/TopicServiceImpl.java
  46. 13
      epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.11__add_origin.sql
  47. 47
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectCategoryDailyDao.xml
  48. 22
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectLogDailyDao.xml
  49. 169
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml
  50. 5
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenCustomerAgencyDao.xml
  51. 28
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectOrgDailyDao.xml
  52. 40
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectQuantityOrgMonthlyDao.xml
  53. 7
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/issue/IssueProjectCategoryDictDao.xml
  54. 6
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/project/ProjectDao.xml
  55. 5
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/DimAgencyDao.xml
  56. 37
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/topic/TopicDao.xml
  57. 32
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/CategoryTagListFormDTO.java
  58. 28
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/CategoryTagResultDTO.java
  59. 10
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java
  60. 5
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java
  61. 12
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueProjectCategoryDictController.java
  62. 6
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueProjectCategoryDictDao.java
  63. 7
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueProjectTagDictDao.java
  64. 8
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueProjectCategoryDictService.java
  65. 40
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProjectCategoryDictServiceImpl.java
  66. 17
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectCategoryDictDao.xml
  67. 15
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectTagDictDao.xml
  68. 8
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/StaffListResultDTO.java
  69. 9
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java
  70. 5
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java
  71. 24
      epmet-module/gov-org/gov-org-server/src/main/resources/db/migration/V0.0.4__area_code.sql
  72. 7
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/ProjectDTO.java
  73. 24
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/CategoryOrTagFormDTO.java
  74. 64
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ProjectApprovalFormDTO.java
  75. 6
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ProjectSaveCategoryFormDTO.java
  76. 4
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectDetailResultDTO.java
  77. 8
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/ProjectConstant.java
  78. 27
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectTraceController.java
  79. 7
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ProjectEntity.java
  80. 14
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectTraceService.java
  81. 22
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectCategoryServiceImpl.java
  82. 387
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java
  83. 7
      epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.11__alter_project.sql
  84. 1
      epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml
  85. 7
      epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java
  86. 5
      epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java
  87. 4
      epmet-user/epmet-user-server/src/main/resources/mapper/CustomerStaffDao.xml

7
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java

@ -164,7 +164,12 @@ public enum RequirePermissionEnum {
MORE_BADGE_MANAGE_LIST("more_badge_manage_list","更多:徽章:徽章管理:列表","徽章列表"),
MORE_BADGE_MANAGE_CREATE("more_badge_manage_create","更多:徽章:徽章管理:添加","添加徽章"),
MORE_BADGE_MANAGE_EDIT("more_badge_manage_edit","更多:徽章:徽章管理:编辑","编辑徽章"),
MORE_BADGE_MANAGE_DELETE("more_badge_manage_delete","更多:徽章:徽章管理:删除","删除徽章");
MORE_BADGE_MANAGE_DELETE("more_badge_manage_delete","更多:徽章:徽章管理:删除","删除徽章"),
/**
* 项目立项
*/
WORK_PROJECT_APPROVAL("work_project_approval","政务管理:项目立项","项目立项");
private String key;
private String name;

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

@ -65,6 +65,11 @@ public class ProjectDTO implements Serializable {
*/
private String title;
/**
* 项目背景
*/
private String backGround;
/**
* 状态:待处理 pending结案closed
*/

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

@ -63,6 +63,11 @@ public class ProjectEntity extends BaseEpmetEntity {
*/
private String title;
/**
* 项目背景
*/
private String backGround;
/**
* 状态:待处理 pending结案closed
*/

10
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/extract/FactOriginProjectMainDailyDTO.java

@ -103,6 +103,16 @@ public class FactOriginProjectMainDailyDTO implements Serializable {
*/
private String agencyId;
/**
* 来源议题issue
*/
private String origin;
/**
* 来源ID
*/
private String originId;
/**
* 状态
*/

2
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ClosedIncrResultDTO.java

@ -16,4 +16,6 @@ public class ClosedIncrResultDTO implements Serializable {
private String gridId;
private Integer closedIncr;
private String orgId;
}

2
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/EvaluateTotalResultDTO.java

@ -17,4 +17,6 @@ public class EvaluateTotalResultDTO implements Serializable {
private String orgId;
private Integer evaluateCount = NumConstant.ZERO;
private String areaCode;
}

2
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ProjectIncrResultDTO.java

@ -16,4 +16,6 @@ public class ProjectIncrResultDTO implements Serializable {
private String gridId;
private Integer projectIncr;
private String orgId;
}

2
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ProjectOrgDailyResultDTO.java

@ -44,6 +44,8 @@ public class ProjectOrgDailyResultDTO implements Serializable {
*/
private Integer badTotal;
private String orgId;
public ProjectOrgDailyResultDTO() {
this.projectTotal = NumConstant.ZERO;
this.resolvedNum = NumConstant.ZERO;

11
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ProjectTotalResultDTO.java

@ -13,6 +13,15 @@ public class ProjectTotalResultDTO implements Serializable {
private static final long serialVersionUID = 6071988402600005617L;
private String gridId;
private String orgId;
/**
* 项目总数
*/
private Integer projectTotal;
/**
* 行政区域编码
*/
private String areaCode;
}

8
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ResolvedNumResultDTO.java

@ -13,6 +13,12 @@ public class ResolvedNumResultDTO implements Serializable {
private static final long serialVersionUID = 607198840261205617L;
private String gridId;
private String orgId;
/**
* 已解决的项目总数
*/
private Integer resolvedNum;
private String areaCode;
}

2
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/UnClosedTotalResultDTO.java

@ -16,4 +16,6 @@ public class UnClosedTotalResultDTO implements Serializable {
private String gridId;
private Integer projectCount;
private String orgId;
}

7
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectCategoryGridDailyDTO.java

@ -108,4 +108,11 @@ public class ScreenProjectCategoryGridDailyDTO implements Serializable {
*/
private Date updatedTime;
private String orgId;
/**
* 用在 项目分类 org 统计中记录本记录是否被计数
*/
private Boolean status = false;
}

11
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectOrgDailyDTO.java

@ -17,6 +17,7 @@
package com.epmet.dto.screen;
import com.epmet.commons.tools.constant.NumConstant;
import lombok.Data;
import java.io.Serializable;
@ -144,4 +145,14 @@ public class ScreenProjectOrgDailyDTO implements Serializable {
*/
private String areaCode;
public ScreenProjectOrgDailyDTO() {
this.projectTotal = NumConstant.ZERO;
this.resolvedNum = NumConstant.ZERO;
this.resolvedRatio = NumConstant.ZERO_DECIMAL;
this.evaluateTotal = NumConstant.ZERO;
this.goodTotal = NumConstant.ZERO;
this.badTotal = NumConstant.ZERO;
this.goodRatio = NumConstant.ZERO_DECIMAL;
this.badRatio = NumConstant.ZERO_DECIMAL;
}
}

18
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/topic/TopicAttachmentDTO.java

@ -0,0 +1,18 @@
package com.epmet.dto.topic;
import lombok.Data;
/**
* desc:
*
* @author: LiuJanJun
* @date: 2021/4/13 5:33 下午
* @version: 1.0
*/
@Data
public class TopicAttachmentDTO {
private Integer sort;
private String attachmentUrl;
}

24
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/topic/result/ResiTopicAndImgResultDTO.java

@ -0,0 +1,24 @@
package com.epmet.dto.topic.result;
import com.epmet.dto.topic.TopicAttachmentDTO;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @author liujianjun
* @Description -话题对象
* @ClassName ResiGroupTopicResultDTO
* @Auth wangc
* @Date 2020-06-20 17:23
*/
@Data
public class ResiTopicAndImgResultDTO implements Serializable {
private String topicId;
private String topicContent;
private List<TopicAttachmentDTO> topicImgList;
}

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

@ -64,4 +64,7 @@ public interface ProjectConstant {
String XIA_JI = "xiaji";
String GRID_ID = "GRID_ID";
String AGENCY_ID = "AGENCY_ID";
String ISSUE = "issue";
}

31
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java

@ -569,10 +569,7 @@ public class DemoController {
}
@PostMapping("gridgovern")
public void gridGovern(){
String customerId = "45687aa479955f9d06204d415238f7cc";
// String customerId = "epmettest";
String monthId = "202009";
public void gridGovern(@RequestParam("customerId")String customerId,@RequestParam("monthId")String monthId){
calGridIndexService.calGridIndexGovernAbility(customerId,monthId);
}
@ -725,10 +722,10 @@ public class DemoController {
/**
* @return com.epmet.commons.tools.utils.Result
* @param
* @param
* @author yinzuomei
* @description screen_index_data_monthly 赋值ALL_PARENT_IDS
* @Date 2020/10/10 17:59
* @Date 2020/10/10 17:59
**/
@DataSource(DataSourceConstant.EVALUATION_INDEX)
@PostMapping("updateDeptIndexMonthly")
@ -813,15 +810,6 @@ public class DemoController {
return new Result();
}
/*@Autowired
private ScreenGrassrootsGovernDataAbsorptionService ndddYhjfService;
@PostMapping("diff")
public Result diff(@RequestBody ScreenCentralZoneDataFormDTO param){
ndddYhjfService.difficultyDataHub(param);
return new Result();
}*/
@PostMapping("project-test")
public Result project(@RequestBody ScreenCentralZoneDataFormDTO param){
screenProjectSettleService.extractScreenData(param);
@ -869,4 +857,17 @@ public class DemoController {
return new Result();
}
@Autowired
private ScreenGrassrootsGovernDataAbsorptionService ndddYhjfService;
@PostMapping("diffOld")
public Result diff(@RequestBody ScreenCentralZoneDataFormDTO param){
ndddYhjfService.difficultyDataHub(param);
return new Result();
}
@PostMapping("testDiffNew")
public Result testDiff(@RequestBody ScreenCentralZoneDataFormDTO param){
return new Result().ok(ndddYhjfService.difficultyDataExtract(param));
}
}

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

@ -43,4 +43,12 @@ public interface FactOriginProjectCategoryDailyDao extends BaseDao<FactOriginPro
* @Date 2021/3/23 9:58
**/
List<ScreenProjectCategoryGridDailyDTO> selectListProjectCategoryGridDailyDTO(@Param("customerId") String customerId);
/**
* @Description 查询客户下组织直接立项的各项目分类下的项目数量筛选组织创建的项目fact_origin_project_main_daily表gridId为空
* @Param orgIds
* @author zxc
* @date 2021/4/13 下午4:36
*/
List<ScreenProjectCategoryGridDailyDTO> selectListProjectCategoryByOrg(@Param("orgIds")List<String> orgIds,@Param("customerId") String customerId);
}

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

@ -74,6 +74,14 @@ public interface FactOriginProjectLogDailyDao extends BaseDao<FactOriginProjectL
* @date 2020/9/18 5:25 下午
*/
List<AutoNoMyResultDTO> selectProjectAutoNoMy(@Param("customerId") String customerId,@Param("monthId") String monthId);
/**
* @Description 网格项目自治率查询 最新版
* @Param customerId
* @Param monthId
* @author zxc
* @date 2021/4/12 上午10:46
*/
List<AutoNoMyResultDTO> selectProjectAutoNoMyPlus(@Param("customerId") String customerId,@Param("monthId") String monthId);
/**
* 根据日期删除数据

87
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectMainDailyDao.java

@ -27,6 +27,7 @@ import com.epmet.dto.pingyin.result.*;
import com.epmet.dto.screen.ScreenProjectDataDTO;
import com.epmet.dto.screen.form.ProjectSourceMapFormDTO;
import com.epmet.entity.evaluationindex.extract.FactOriginProjectMainDailyEntity;
import com.epmet.entity.evaluationindex.extract.FactOriginProjectOrgPeriodDailyEntity;
import com.epmet.entity.evaluationindex.screen.ScreenDifficultyDataEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -72,13 +73,13 @@ public interface FactOriginProjectMainDailyDao extends BaseDao<FactOriginProject
/**
* @Description 网格办结项目数
* @param customerId
* @param gridIds
* @param monthId
* @param status
* @author zxc
* @date 2020/9/18 2:06 下午
*/
List<GridProjectClosedTotalResultDTO> selectGridClosedProject(@Param("customerId") String customerId,@Param("monthId") String monthId,@Param("status") String status);
List<GridProjectClosedTotalResultDTO> selectGridClosedProject(@Param("gridIds") List<String> gridIds,@Param("monthId") String monthId,@Param("status") String status);
List<TransferRightRatioResultDTO> selectTransferRightRatio(@Param("customerId")String customerId, @Param("monthId")String monthId);
@ -188,7 +189,7 @@ public interface FactOriginProjectMainDailyDao extends BaseDao<FactOriginProject
* @date 2020.09.28 10:19
*/
List<ScreenDifficultyDataEntity> selectDifficultyBaseInfo(@Param("customerId")String customerId,@Param("thresholdValue") Integer thresholdValue);
/**
* @Description 查询评价周期内新立的项目是为了增量新增难点赌点的图片库
* @param customerId
@ -229,6 +230,16 @@ public interface FactOriginProjectMainDailyDao extends BaseDao<FactOriginProject
*/
List<ProjectTotalResultDTO> selectProjectTotal(@Param("customerId")String customerId, @Param("dateId")String dateId, @Param("monthId")String monthId);
/**
* @Description 组织查询项目总数
* @Param orgIds
* @Param dateId
* @Param monthId
* @author zxc
* @date 2021/4/13 上午9:31
*/
List<ProjectTotalResultDTO> selectProjectTotalByOrg(@Param("orgIds")List<String> orgIds, @Param("dateId")String dateId, @Param("monthId")String monthId);
/**
* @Description 查询已解决项目数
* @Param customerId
@ -238,6 +249,15 @@ public interface FactOriginProjectMainDailyDao extends BaseDao<FactOriginProject
*/
List<ResolvedNumResultDTO> selectResolvedNum(@Param("customerId")String customerId, @Param("dateId")String dateId);
/**
* @Description 组织查询已解决项目数
* @Param orgIds
* @Param dateId
* @author zxc
* @date 2021/4/13 上午9:41
*/
List<ResolvedNumResultDTO> selectResolvedNumByOrg(@Param("orgIds")List<String> orgIds, @Param("dateId")String dateId);
/**
* @Description 查询 满意度评价次数
* @Param customerId
@ -247,6 +267,16 @@ public interface FactOriginProjectMainDailyDao extends BaseDao<FactOriginProject
*/
List<EvaluateTotalResultDTO> selectEvaluateCount(@Param("customerId")String customerId, @Param("dateId")String dateId, @Param("activeCodes") List<String> activeCodes);
/**
* @Description 组织 查询 满意度评价次数
* @Param orgIds
* @Param dateId
* @Param activeCodes
* @author zxc
* @date 2021/4/13 上午9:56
*/
List<EvaluateTotalResultDTO> selectEvaluateCountByOrg(@Param("orgIds")List<String> orgIds, @Param("dateId")String dateId, @Param("activeCodes")List<String> activeCodes);
/**
* @Description 查询本月新增项目数
* @Param customerId
@ -256,6 +286,15 @@ public interface FactOriginProjectMainDailyDao extends BaseDao<FactOriginProject
*/
List<ProjectIncrResultDTO> selectProjectIncr(@Param("customerId")String customerId, @Param("monthId")String monthId);
/**
* @Description 组织查询本月新增项目数
* @Param orgIds
* @Param monthId
* @author zxc
* @date 2021/4/16 上午9:21
*/
List<ProjectIncrResultDTO> selectProjectIncrByOrg(@Param("orgIds") List<String> orgIds, @Param("monthId")String monthId);
/**
* @Description 根据状态查询项目数
* @Param customerId
@ -266,6 +305,16 @@ public interface FactOriginProjectMainDailyDao extends BaseDao<FactOriginProject
*/
List<UnClosedTotalResultDTO> selectProjectCount(@Param("customerId")String customerId, @Param("monthId")String monthId, @Param("status") String status);
/**
* @Description 组织根据状态查询项目数
* @Param orgIds
* @Param monthId
* @Param status
* @author zxc
* @date 2021/4/16 上午9:26
*/
List<UnClosedTotalResultDTO> selectProjectCountByOrg(@Param("orgIds") List<String> orgIds, @Param("monthId")String monthId, @Param("status") String status);
/**
* @Description 本月新增结案项目数
* @Param customerId
@ -275,6 +324,15 @@ public interface FactOriginProjectMainDailyDao extends BaseDao<FactOriginProject
*/
List<ClosedIncrResultDTO> selectClosedIncr(@Param("customerId")String customerId, @Param("monthId")String monthId);
/**
* @Description 组织本月新增结案项目数
* @Param orgIds
* @Param monthId
* @author zxc
* @date 2021/4/16 上午9:35
*/
List<ClosedIncrResultDTO> selectClosedIncrByOrg(@Param("orgIds") List<String> orgIds, @Param("monthId")String monthId);
/**
* @Description 初始化screen_project_data数据
* 如果是dateId不为空则查询前一天的数据
@ -289,4 +347,25 @@ public interface FactOriginProjectMainDailyDao extends BaseDao<FactOriginProject
*/
List<ScreenProjectDataDTO> initNewScreenProjectData(@Param("customerId")String customerId,@Param("dateId") String dateId,@Param("dataEndTime")String dataEndTime);
}
/**
* desc: 获取难点堵点项目数据
*
* @param customerId
* @param dateId
* @return java.util.List<com.epmet.entity.evaluationindex.extract.FactOriginProjectMainDailyEntity>
* @author LiuJanJun
* @date 2021/4/12 1:35 下午
*/
List<FactOriginProjectMainDailyEntity> getProjectForDiff(@Param("customerId") String customerId, @Param("dateId") String dateId);
/**
* desc: 获取难点堵点项目数据耗时
*
* @param customerId
* @param dateId
* @return java.util.List<com.epmet.entity.evaluationindex.extract.FactOriginProjectOrgPeriodDailyEntity>
* @author LiuJanJun
* @date 2021/4/12 1:35 下午
*/
List<FactOriginProjectOrgPeriodDailyEntity> getProjectPeriodForDiff(@Param("customerId") String customerId, @Param("dateId") String dateId);
}

1
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectOrgDailyDao.java

@ -47,4 +47,5 @@ public interface ScreenProjectOrgDailyDao extends BaseDao<ScreenProjectOrgDailyE
* @date 2021/2/1 下午3:51
*/
List<ProjectOrgDailyResultDTO> selectOrgProject(@Param("agencyInfos") List<ScreenProjectOrgDailyDTO> agencyInfos, @Param("dateId") String dateId);
List<ProjectOrgDailyResultDTO> selectOrgProjectByAgency(@Param("agencyInfos") List<ScreenProjectOrgDailyDTO> agencyInfos, @Param("dateId") String dateId);
}

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectQuantityOrgMonthlyDao.java

@ -49,6 +49,7 @@ public interface ScreenProjectQuantityOrgMonthlyDao extends BaseDao<ScreenProjec
* @date 2021/2/2 上午11:09
*/
List<ProjectOrgMonthlyResultDTO> selectQuantityOrgMonthly(@Param("agencyInfos") List<ScreenProjectQuantityOrgMonthlyDTO> agencyInfos, @Param("monthId") String monthId);
List<ProjectOrgMonthlyResultDTO> selectQuantityOrgMonthlyByAgency(@Param("agencyInfos") List<ScreenProjectQuantityOrgMonthlyDTO> agencyInfos, @Param("monthId") String monthId);
/**
* @Description 项目(事件)数量查询本月之前的累计
@ -58,6 +59,7 @@ public interface ScreenProjectQuantityOrgMonthlyDao extends BaseDao<ScreenProjec
* @date 2021/2/2 下午3:03
*/
List<ProjectOrgMonthlyResultDTO> selectQuantityGrandOrgMonthly(@Param("agencyInfos") List<ScreenProjectQuantityOrgMonthlyDTO> agencyInfos, @Param("monthId") String monthId);
List<ProjectOrgMonthlyResultDTO> selectQuantityGrandOrgMonthlyByAgency(@Param("agencyInfos") List<ScreenProjectQuantityOrgMonthlyDTO> agencyInfos, @Param("monthId") String monthId);
}

4
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/issue/IssueProjectCategoryDictDao.java

@ -37,5 +37,7 @@ public interface IssueProjectCategoryDictDao {
List<IssueProjectCategoryDictEntity> listByUpdatedTime(@Param("start") Date start, @Param("end") Date end);
IssueProjectCategoryDictEntity getById(@Param("customerId")String customerId, @Param("id")String id);;
IssueProjectCategoryDictEntity getById(@Param("customerId") String customerId, @Param("id") String id);
List<IssueProjectCategoryDictEntity> getAllByCId(@Param("customerId") String customerId);
}

60
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/topic/TopicDao.java

@ -15,6 +15,7 @@ import com.epmet.dto.topic.ResiTopicDTO;
import com.epmet.dto.extract.result.TopicInfoResultDTO;
import com.epmet.dto.topic.TopicOriginInfoDTO;
import com.epmet.dto.topic.result.ResiGroupTopicResultDTO;
import com.epmet.dto.topic.result.ResiTopicAndImgResultDTO;
import com.epmet.dto.topic.result.ResiTopicOperationResultDTO;
import com.epmet.entity.evaluationindex.screen.ScreenDifficultyImgDataEntity;
import org.apache.ibatis.annotations.Mapper;
@ -27,115 +28,118 @@ import java.util.List;
public interface TopicDao {
/**
* @Description 将组按照网格Id排序
* @param targetDate
* @param customerId
* @return List<ResiGroupTopicResultDTO>
* @Description 将组按照网格Id排序
* @author wangc
* @date 2020.06.22 11:05
**/
List<ResiGroupTopicResultDTO> selectGroupOrderByGrid(@Param("targetDate")Date targetDate, @Param("customerId")String customerId);
**/
List<ResiGroupTopicResultDTO> selectGroupOrderByGrid(@Param("targetDate") Date targetDate, @Param("customerId") String customerId);
/**
* @Description 查询话题的操作记录如果返回结果中没有对应Id的话题说明当日话题没有操作记录
* @param targetDate
* @return List<ResiTopicOperationResultDTO>
* @Description 查询话题的操作记录如果返回结果中没有对应Id的话题说明当日话题没有操作记录
* @author wangc
* @date 2020.06.22 11:07
**/
List<ResiTopicOperationResultDTO> selectTopicOperationRecord(@Param("targetDate")Date targetDate);
**/
List<ResiTopicOperationResultDTO> selectTopicOperationRecord(@Param("targetDate") Date targetDate);
/**
* @Description 将组按照网格Id排序
* @param
* @param customerId
* @return List<ResiGroupTopicResultDTO>
* @Description 将组按照网格Id排序
* @author wangc
* @date 2020.06.22 11:05
**/
List<ResiGroupTopicResultDTO> selectGroupOrderByGridBetweenTimeRange(@Param("startDate")Date startDate, @Param("endDate")Date endDate, @Param("customerId")String customerId);
List<ResiGroupTopicResultDTO> selectGroupOrderByGridBetweenTimeRange(@Param("startDate") Date startDate, @Param("endDate") Date endDate, @Param("customerId") String customerId);
/**
* @Description 查询话题的操作记录如果返回结果中没有对应Id的话题说明当日话题没有操作记录
* @param
* @return List<ResiTopicOperationResultDTO>
* @Description 查询话题的操作记录如果返回结果中没有对应Id的话题说明当日话题没有操作记录
* @author wangc
* @date 2020.06.22 11:07
**/
List<ResiTopicOperationResultDTO> selectTopicOperationRecordBetweenTimeRange(@Param("startDate")Date startDate, @Param("endDate")Date endDate);
List<ResiTopicOperationResultDTO> selectTopicOperationRecordBetweenTimeRange(@Param("startDate") Date startDate, @Param("endDate") Date endDate);
/**
* 根据ids获取话题信息
* @author zhaoqifeng
* @date 2020/9/15 17:33
*
* @param ids
* @return java.util.List<com.epmet.dto.topic.ResiTopicDTO>
* @author zhaoqifeng
* @date 2020/9/15 17:33
*/
List<ResiTopicDTO> selectTopicByIds(@Param("ids") List<String> ids);
/**
* @Description 查询话题创建者信息
* @param topicIds
* @Description 查询话题创建者信息
* @author zxc
* @date 2020/9/15 4:55 下午
*/
List<TopicInfoResultDTO> selectTopicInfo(@Param("topicIds")List<String> topicIds);
List<TopicInfoResultDTO> selectTopicInfo(@Param("topicIds") List<String> topicIds);
/**
* @return java.util.List<com.epmet.dto.topic.TopicOriginInfoDTO>
* @param customerId
* @param dateId yyyyMMdd
* @param dateId yyyyMMdd
* @return java.util.List<com.epmet.dto.topic.TopicOriginInfoDTO>
* @author yinzuomei
* @description 根据日期查询resi_topic_operation返回当前日期这一天内所有话题相关的操作记录
* @description 根据日期查询resi_topic_operation返回当前日期这一天内所有话题相关的操作记录
* @Date 2020/9/15 18:14
**/
List<TopicOriginInfoDTO> selectListTopicOriginInfo(@Param("customerId")String customerId, @Param("dateId")String dateId);
List<TopicOriginInfoDTO> selectListTopicOriginInfo(@Param("customerId") String customerId, @Param("dateId") String dateId);
/**
* @return java.util.List<com.epmet.dto.topic.TopicOriginInfoDTO>
* @param customerId
* @param dateId
* @return java.util.List<com.epmet.dto.topic.TopicOriginInfoDTO>
* @author yinzuomei
* @description 查询在这一天发生变化的话题记录
* @Date 2020/9/23 17:52
**/
List<TopicOriginInfoDTO> queryUpdateTopicOriginInfoList(@Param("customerId")String customerId, @Param("dateId")String dateId);
List<TopicOriginInfoDTO> queryUpdateTopicOriginInfoList(@Param("customerId") String customerId, @Param("dateId") String dateId);
/**
* @Description 查询话题的图片
* @param list
* @return java.util.List<com.epmet.entity.evaluationindex.screen.ScreenDifficultyImgDataEntity>
* @Description 查询话题的图片
* @author wangc
* @date 2020.09.28 15:40
*/
List<ScreenDifficultyImgDataEntity> selectTopicImgs(@Param("list") List<ProjectSourceMapFormDTO> list);
/**
* @Description 得到话题项目内容
* @param list
* @return java.util.Map<java.lang.String,java.lang.String>
* @return java.util.Map<java.lang.String, java.lang.String>
* @Description 得到话题项目内容
* @author wangc
* @date 2020.09.28 16:28
*/
List<TopicContentResultDTO> selectTopicContent(@Param("list") List<ProjectSourceMapFormDTO> list);
/**
* @Description 根据话题Id查询大屏项目的相关信息
* @param list
* @return java.util.List<com.epmet.dto.screen.ScreenProjectDataDTO>
* @Description 根据话题Id查询大屏项目的相关信息
* @author wangc
* @date 2021.03.08 17:13
*/
*/
List<ScreenProjectDataDTO> selectScreenProjectData(@Param("list") List<ScreenProjectDataDTO> list);
/**
* @Description 初始化指定项目的图片
* @param customerId
* @param list
* @return java.util.List<com.epmet.dto.screen.ScreenProjectImgDataDTO>
* @Description 初始化指定项目的图片
* @author wangc
* @date 2021.03.09 14:19
*/
List<ScreenProjectImgDataDTO> initNewScreenProjectImgData(@Param("customerId")String customerId,@Param("list") List<ScreenProjectDataDTO> list);
*/
List<ScreenProjectImgDataDTO> initNewScreenProjectImgData(@Param("customerId") String customerId, @Param("list") List<ScreenProjectDataDTO> list);
ResiTopicAndImgResultDTO getTopicAndImgs(@Param("topicId") String topicId);
}

10
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/extract/FactOriginProjectMainDailyEntity.java

@ -103,6 +103,16 @@ public class FactOriginProjectMainDailyEntity extends BaseEpmetEntity {
*/
private String agencyId;
/**
* 来源议题issue
*/
private String origin;
/**
* 来源ID
*/
private String originId;
/**
* 状态
*/

5
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/project/ProjectEntity.java

@ -60,6 +60,11 @@ public class ProjectEntity extends BaseEpmetEntity {
*/
private String title;
/**
* 项目背景
*/
private String backGround;
/**
* 状态:待处理 pending结案closed
*/

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/Issue/IssueProjectCategoryDictService.java

@ -36,4 +36,6 @@ public interface IssueProjectCategoryDictService{
List<IssueProjectCategoryDictEntity> listByUpdatedTime(Date start, Date end);
IssueProjectCategoryDictEntity getById(String customerId,String id);
List<IssueProjectCategoryDictEntity> getAllByCId(String customerId);
}

6
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/Issue/impl/IssueProjectCategoryDictServiceImpl.java

@ -5,7 +5,6 @@ import com.epmet.constant.DataSourceConstant;
import com.epmet.dao.issue.IssueProjectCategoryDictDao;
import com.epmet.entity.issue.IssueProjectCategoryDictEntity;
import com.epmet.service.Issue.IssueProjectCategoryDictService;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -39,4 +38,9 @@ public class IssueProjectCategoryDictServiceImpl implements IssueProjectCategory
return issueProjectCategoryDictDao.getById(customerId,id);
}
@Override
public List<IssueProjectCategoryDictEntity> getAllByCId(String customerId) {
return issueProjectCategoryDictDao.getAllByCId(customerId);
}
}

58
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/CalGridIndexServiceImpl.java

@ -243,7 +243,7 @@ public class CalGridIndexServiceImpl implements CalGridIndexService {
}
//网格总议题数目,网格人均议题数目
List<GridIssueCountResultDTO> gridIssueTotalList = issueExtractService.selectIssueTotal(customerId, monthId);
//网格总项目数
//网格总项目数 从议题根据状态获取
List<GridProjectCountResultDTO> gridProjectTotalList = issueExtractService.selectGridProjectCount(customerId, monthId, ExtractConstant.SHIFT_PROJECT);
//网格议题转项目率
List<GridIssueCountResultDTO> gridIssueCountList = issueExtractService.selectIssueTotalTwoMonth(customerId, monthId, DateUtils.minusMonthId(monthId));
@ -254,38 +254,20 @@ public class CalGridIndexServiceImpl implements CalGridIndexService {
if (!CollectionUtils.isEmpty(projectAutoNoMyList)){
Map<String, List<AutoNoMyResultDTO>> groupByGrid = projectAutoNoMyList.stream().collect(Collectors.groupingBy(AutoNoMyResultDTO::getGridId));
groupByGrid.forEach((gridId,projectList) -> {
Map<String, List<AutoNoMyResultDTO>> groupByProject = projectList.stream().collect(Collectors.groupingBy(AutoNoMyResultDTO::getProjectId));
AtomicReference<Boolean> autoSelf = new AtomicReference<>(true);
AtomicReference<Integer> count = new AtomicReference<>(NumConstant.ZERO);
groupByProject.forEach((projectId,projects) -> {
String disposeGrid = projects.get(NumConstant.ZERO).getGridId();
projects.forEach(p -> {
if (!disposeGrid.equals(p.getGridId())){
autoSelf.set(false);
}
});
if (autoSelf.get()) {
count.getAndSet(count.get() + NumConstant.ONE);
}
});
autoMap.put(gridId,count.get());
autoMap.put(gridId,projectList.size());
});
}
//网格办结项目数
List<GridProjectClosedTotalResultDTO> gridProjectClosedTotalList = projectMainService.selectGridClosedProject(customerId, monthId, ExtractConstant.CLOSED);
List<GridProjectClosedTotalResultDTO> gridProjectClosedTotalList = projectMainService.selectGridClosedProject(result.stream().map(m -> m.getGridId()).collect(Collectors.toList()), monthId, ExtractConstant.CLOSED);
//网格吹哨部门准确率 【没被退回的项目数/项目总数 】
List<TransferRightRatioResultDTO> transferRightRatioResultDTOS = projectMainService.selectTransferRightRatio(customerId, monthId);
List<TransferRightRatioResultDTO> transferRightRatioResultDTOS1 = projectLogService.selectNotReturn(customerId, monthId);
if (!CollectionUtils.isEmpty(transferRightRatioResultDTOS1)){
transferRightRatioResultDTOS.forEach(r -> {
transferRightRatioResultDTOS1.forEach(t -> {
r.setStatus(r.getProjectId().equals(t.getProjectId()) ? true : false);
});
});
transferRightRatioResultDTOS.forEach(r -> transferRightRatioResultDTOS1.forEach(t -> {
r.setStatus(r.getProjectId().equals(t.getProjectId()));
}));
}else {
transferRightRatioResultDTOS.forEach(r -> {
r.setStatus(false);
});
transferRightRatioResultDTOS.forEach(r -> r.setStatus(false));
}
Map<String, List<TransferRightRatioResultDTO>> groupByGridProject = transferRightRatioResultDTOS.stream().collect(Collectors.groupingBy(TransferRightRatioResultDTO::getGridId));
Map<String,BigDecimal> notReturnMap = new HashMap<>(16);
@ -303,9 +285,11 @@ public class CalGridIndexServiceImpl implements CalGridIndexService {
List<ProjectEvaluateResultDTO> projectEvaluateList = projectLogService.selectProjectEvaluate(customerId, monthId);
Map<String,BigDecimal> resultSatisfactionScore = new HashMap<>(16);
if (!CollectionUtils.isEmpty(projectEvaluateList)){
// 根据网格分组
Map<String, List<ProjectEvaluateResultDTO>> groupByGrid = projectEvaluateList.stream().collect(Collectors.groupingBy(ProjectEvaluateResultDTO::getGridId));
groupByGrid.forEach((gridId,projectEvaluateInfoList) -> {
Map<String,Integer> scoreMap = new HashMap<>(16);
// 根据项目分组
Map<String, List<ProjectEvaluateResultDTO>> groupByProject = projectEvaluateInfoList.stream().collect(Collectors.groupingBy(ProjectEvaluateResultDTO::getProjectId));
groupByProject.forEach((projectId,projectList) -> {
projectList.forEach(project -> {
@ -374,17 +358,21 @@ public class CalGridIndexServiceImpl implements CalGridIndexService {
});
}
// 5. 网格内解决的项目的满意度
resultSatisfactionScore.forEach((k, v) -> {
if (r.getGridId().equals(k)) {
r.setSatisfactionRatio(v);
}
});
if (!CollectionUtils.isEmpty(resultSatisfactionScore)){
resultSatisfactionScore.forEach((k, v) -> {
if (r.getGridId().equals(k)) {
r.setSatisfactionRatio(v);
}
});
}
// 6. 网格自治项目数
autoMap.forEach((k, v) -> {
if (r.getGridId().equals(k)) {
r.setSelfSolveProjectCount(v);
}
});
if (!CollectionUtils.isEmpty(autoMap)){
autoMap.forEach((k, v) -> {
if (r.getGridId().equals(k)) {
r.setSelfSolveProjectCount(v);
}
});
}
});
delGovernAbility(customerId, monthId);
List<List<GovernAbilityGridMonthlyFormDTO>> resultList = ListUtils.partition(result, NumConstant.ONE_HUNDRED);

8
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectCategoryDailyService.java

@ -47,4 +47,12 @@ public interface FactOriginProjectCategoryDailyService extends BaseService<FactO
* @Date 2021/3/23 9:56
**/
List<ScreenProjectCategoryGridDailyDTO> selectListProjectCategoryGridDailyDTO(String customerId);
/**
* @Description 查询客户下组织直接立项的各项目分类下的项目数量筛选组织创建的项目fact_origin_project_main_daily表gridId为空
* @Param orgIds
* @author zxc
* @date 2021/4/13 下午4:36
*/
List<ScreenProjectCategoryGridDailyDTO> selectListProjectCategoryByOrg(List<String> orgIds,String customerId);
}

147
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectMainDailyService.java

@ -18,7 +18,6 @@
package com.epmet.service.evaluationindex.extract.todata;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.extract.FactOriginProjectMainDailyDTO;
import com.epmet.dto.extract.result.GridProjectClosedTotalResultDTO;
import com.epmet.dto.extract.result.OrgStatisticsResultDTO;
@ -27,11 +26,12 @@ import com.epmet.dto.indexcollect.result.CpcIndexCommonDTO;
import com.epmet.dto.pingyin.result.*;
import com.epmet.dto.screen.ScreenProjectDataDTO;
import com.epmet.dto.screen.form.ProjectSourceMapFormDTO;
import com.epmet.dto.screen.form.ScreenCentralZoneDataFormDTO;
import com.epmet.entity.evaluationindex.extract.FactOriginProjectMainDailyEntity;
import com.epmet.entity.evaluationindex.extract.FactOriginProjectOrgPeriodDailyEntity;
import com.epmet.entity.evaluationindex.screen.ScreenDifficultyDataEntity;
import java.util.List;
import java.util.Map;
/**
* 项目主表_日统计
@ -41,66 +41,6 @@ import java.util.Map;
*/
public interface FactOriginProjectMainDailyService extends BaseService<FactOriginProjectMainDailyEntity> {
/**
* 默认分页
*
* @param params
* @return PageData<FactOriginProjectMainDailyDTO>
* @author generator
* @date 2020-09-16
*/
PageData<FactOriginProjectMainDailyDTO> page(Map<String, Object> params);
/**
* 默认查询
*
* @param params
* @return java.util.List<FactOriginProjectMainDailyDTO>
* @author generator
* @date 2020-09-16
*/
List<FactOriginProjectMainDailyDTO> list(Map<String, Object> params);
/**
* 单条查询
*
* @param id
* @return FactOriginProjectMainDailyDTO
* @author generator
* @date 2020-09-16
*/
FactOriginProjectMainDailyDTO get(String id);
/**
* 默认保存
*
* @param dto
* @return void
* @author generator
* @date 2020-09-16
*/
void save(FactOriginProjectMainDailyDTO dto);
/**
* 默认更新
*
* @param dto
* @return void
* @author generator
* @date 2020-09-16
*/
void update(FactOriginProjectMainDailyDTO dto);
/**
* 批量删除
*
* @param ids
* @return void
* @author generator
* @date 2020-09-16
*/
void delete(String[] ids);
/**
* 获取客户下项目
* @author zhaoqifeng
@ -121,13 +61,13 @@ public interface FactOriginProjectMainDailyService extends BaseService<FactOrigi
/**
* @Description 网格办结项目数
* @param customerId
* @param gridIds
* @param monthId
* @param status
* @author zxc
* @date 2020/9/18 2:06 下午
*/
List<GridProjectClosedTotalResultDTO> selectGridClosedProject(String customerId,String monthId,String status);
List<GridProjectClosedTotalResultDTO> selectGridClosedProject(List<String> gridIds,String monthId,String status);
List<TransferRightRatioResultDTO> selectTransferRightRatio(String customerId,String monthId);
@ -275,6 +215,16 @@ public interface FactOriginProjectMainDailyService extends BaseService<FactOrigi
*/
List<ProjectTotalResultDTO> selectProjectTotal(String customerId,String dateId,String monthId);
/**
* @Description 组织查询项目总数
* @Param orgIds
* @Param dateId
* @Param monthId
* @author zxc
* @date 2021/4/12 下午5:12
*/
List<ProjectTotalResultDTO> selectProjectTotalByOrg(List<String> orgIds,String dateId,String monthId);
/**
* @Description 查询已解决项目数
* @Param customerId
@ -284,6 +234,15 @@ public interface FactOriginProjectMainDailyService extends BaseService<FactOrigi
*/
List<ResolvedNumResultDTO> selectResolvedNum(String customerId, String dateId);
/**
* @Description 组织查询已解决项目数
* @Param orgIds
* @Param dateId
* @author zxc
* @date 2021/4/13 上午9:28
*/
List<ResolvedNumResultDTO> selectResolvedNumByOrg(List<String> orgIds, String dateId);
/**
* @Description 查询 满意度评价次数
* @Param customerId
@ -293,6 +252,16 @@ public interface FactOriginProjectMainDailyService extends BaseService<FactOrigi
*/
List<EvaluateTotalResultDTO> selectEvaluateCount(String customerId, String dateId,List<String> activeCodes);
/**
* @Description 组织 查询 满意度评价次数
* @Param customerId
* @Param dateId
* @Param activeCodes
* @author zxc
* @date 2021/4/13 上午9:52
*/
List<EvaluateTotalResultDTO> selectEvaluateCountByOrg(List<String> orgIds, String dateId,List<String> activeCodes);
/**
* @Description 查询本月新增项目数
* @Param customerId
@ -302,6 +271,15 @@ public interface FactOriginProjectMainDailyService extends BaseService<FactOrigi
*/
List<ProjectIncrResultDTO> selectProjectIncr(String customerId, String monthId);
/**
* @Description 组织查询本月新增项目数
* @Param orgIds
* @Param monthId
* @author zxc
* @date 2021/4/16 上午9:19
*/
List<ProjectIncrResultDTO> selectProjectIncrByOrg(List<String> orgIds, String monthId);
/**
* @Description 根据状态查询项目数
* @Param customerId
@ -312,6 +290,16 @@ public interface FactOriginProjectMainDailyService extends BaseService<FactOrigi
*/
List<UnClosedTotalResultDTO> selectProjectCount(String customerId, String monthId, String status);
/**
* @Description 组织根据状态查询项目数
* @Param orgIds
* @Param monthId
* @Param status
* @author zxc
* @date 2021/4/16 上午9:24
*/
List<UnClosedTotalResultDTO> selectProjectCountByOrg(List<String> orgIds, String monthId, String status);
/**
* @Description 本月新增结案项目数
* @Param customerId
@ -321,6 +309,15 @@ public interface FactOriginProjectMainDailyService extends BaseService<FactOrigi
*/
List<ClosedIncrResultDTO> selectClosedIncr(String customerId, String monthId);
/**
* @Description 组织本月新增结案项目数
* @Param orgIds
* @Param monthId
* @author zxc
* @date 2021/4/16 上午9:33
*/
List<ClosedIncrResultDTO> selectClosedIncrByOrg(List<String> orgIds, String monthId);
/**
* @Description 初始化screen_project_data数据
* 如果是dateId不为空则查询前一天的数据
@ -340,4 +337,24 @@ public interface FactOriginProjectMainDailyService extends BaseService<FactOrigi
void computerIfExceed(List<ScreenProjectDataDTO> list,Integer exceedLimit,Integer about2exceedLimit);
}
/**
* desc: 条件获取项目数据
*
* @param param
* @return java.util.List<com.epmet.dto.extract.FactOriginProjectMainDailyEntity>
* @author LiuJanJun
* @date 2021/4/12 11:07 上午
*/
List<FactOriginProjectMainDailyEntity> getProjectForDiff(ScreenCentralZoneDataFormDTO param);
/**
* desc: 根据项目数据 获取相关连的项目耗时
*
* @param param
* @return java.util.List<com.epmet.dto.extract.FactOriginProjectOrgPeriodDailyEntity>
* @author LiuJanJun
* @date 2021/4/12 1:53 下午
*/
List<FactOriginProjectOrgPeriodDailyEntity> getProjectPeriod(ScreenCentralZoneDataFormDTO param);
}

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

@ -32,6 +32,7 @@ import com.epmet.service.Issue.IssueProjectCategoryDictService;
import com.epmet.service.evaluationindex.extract.todata.FactOriginProjectCategoryDailyService;
import com.epmet.service.project.ProjectService;
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.transaction.annotation.Transactional;
@ -119,4 +120,18 @@ public class FactOriginProjectCategoryDailyServiceImpl extends BaseServiceImpl<F
List<ScreenProjectCategoryGridDailyDTO> list=baseDao.selectListProjectCategoryGridDailyDTO(customerId);
return list;
}
/**
* @Description 查询客户下组织直接立项的各项目分类下的项目数量筛选组织创建的项目fact_origin_project_main_daily表gridId为空
* @Param orgIds
* @author zxc
* @date 2021/4/13 下午4:36
*/
@Override
public List<ScreenProjectCategoryGridDailyDTO> selectListProjectCategoryByOrg(List<String> orgIds,String customerId) {
if (!CollectionUtils.isEmpty(orgIds)){
return new ArrayList<>();
}
return baseDao.selectListProjectCategoryByOrg(orgIds,customerId);
}
}

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

@ -156,7 +156,8 @@ public class FactOriginProjectLogDailyServiceImpl extends BaseServiceImpl<FactOr
*/
@Override
public List<AutoNoMyResultDTO> selectProjectAutoNoMy(String customerId, String monthId) {
return baseDao.selectProjectAutoNoMy(customerId, monthId);
// return baseDao.selectProjectAutoNoMy(customerId, monthId);
return baseDao.selectProjectAutoNoMyPlus(customerId, monthId);
}
@Override

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

@ -17,14 +17,9 @@
package com.epmet.service.evaluationindex.extract.todata.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.DataSourceConstant;
@ -39,17 +34,22 @@ import com.epmet.dto.pingyin.result.*;
import com.epmet.dto.result.CostDayResultDTO;
import com.epmet.dto.screen.ScreenProjectDataDTO;
import com.epmet.dto.screen.form.ProjectSourceMapFormDTO;
import com.epmet.dto.screen.form.ScreenCentralZoneDataFormDTO;
import com.epmet.entity.evaluationindex.extract.FactOriginProjectMainDailyEntity;
import com.epmet.entity.evaluationindex.extract.FactOriginProjectOrgPeriodDailyEntity;
import com.epmet.entity.evaluationindex.screen.ScreenDifficultyDataEntity;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.service.evaluationindex.extract.todata.FactOriginProjectMainDailyService;
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.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.*;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
@ -58,6 +58,7 @@ import java.util.stream.Collectors;
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-09-16
*/
@Slf4j
@Service
@DataSource(DataSourceConstant.STATS)
public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl<FactOriginProjectMainDailyDao, FactOriginProjectMainDailyEntity> implements FactOriginProjectMainDailyService {
@ -66,57 +67,6 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl<FactO
private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient;
@Autowired
private FactOriginProjectOrgPeriodDailyDao periodDao;
@Override
public PageData<FactOriginProjectMainDailyDTO> page(Map<String, Object> params) {
IPage<FactOriginProjectMainDailyEntity> page = baseDao.selectPage(
getPage(params, FieldConstant.CREATED_TIME, false),
getWrapper(params)
);
return getPageData(page, FactOriginProjectMainDailyDTO.class);
}
@Override
public List<FactOriginProjectMainDailyDTO> list(Map<String, Object> params) {
List<FactOriginProjectMainDailyEntity> entityList = baseDao.selectList(getWrapper(params));
return ConvertUtils.sourceToTarget(entityList, FactOriginProjectMainDailyDTO.class);
}
private QueryWrapper<FactOriginProjectMainDailyEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
QueryWrapper<FactOriginProjectMainDailyEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
return wrapper;
}
@Override
public FactOriginProjectMainDailyDTO get(String id) {
FactOriginProjectMainDailyEntity entity = baseDao.selectById(id);
return ConvertUtils.sourceToTarget(entity, FactOriginProjectMainDailyDTO.class);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void save(FactOriginProjectMainDailyDTO dto) {
FactOriginProjectMainDailyEntity entity = ConvertUtils.sourceToTarget(dto, FactOriginProjectMainDailyEntity.class);
insert(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(FactOriginProjectMainDailyDTO dto) {
FactOriginProjectMainDailyEntity entity = ConvertUtils.sourceToTarget(dto, FactOriginProjectMainDailyEntity.class);
updateById(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(String[] ids) {
// 逻辑删除(@TableLogic 注解)
baseDao.deleteBatchIds(Arrays.asList(ids));
}
@Override
public List<FactOriginProjectMainDailyDTO> getProjectByCustomer(String customerId) {
@ -135,15 +85,18 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl<FactO
/**
* @Description 网格办结项目数
* @param customerId
* @param gridIds
* @param monthId
* @param status
* @author zxc
* @date 2020/9/18 2:06 下午
*/
@Override
public List<GridProjectClosedTotalResultDTO> selectGridClosedProject(String customerId, String monthId, String status) {
return baseDao.selectGridClosedProject(customerId, monthId,status);
public List<GridProjectClosedTotalResultDTO> selectGridClosedProject(List<String> gridIds, String monthId, String status) {
if (CollectionUtils.isEmpty(gridIds)){
return new ArrayList<>();
}
return baseDao.selectGridClosedProject(gridIds, monthId,status);
}
@Override
@ -288,6 +241,15 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl<FactO
return new ArrayList<>();
}
@Override
public List<ProjectTotalResultDTO> selectProjectTotalByOrg(List<String> orgIds, String dateId, String monthId) {
if (!CollectionUtils.isEmpty(orgIds)){
List<ProjectTotalResultDTO> projectTotalResultDTOS = baseDao.selectProjectTotalByOrg(orgIds, dateId, monthId);
return projectTotalResultDTOS;
}
return new ArrayList<>();
}
/**
* @Description 查询已解决项目数
* @Param customerId
@ -304,6 +266,22 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl<FactO
return new ArrayList<>();
}
/**
* @Description 组织查询已解决项目数
* @Param orgIds
* @Param dateId
* @author zxc
* @date 2021/4/13 上午9:29
*/
@Override
public List<ResolvedNumResultDTO> selectResolvedNumByOrg(List<String> orgIds, String dateId) {
if (!CollectionUtils.isEmpty(orgIds)){
List<ResolvedNumResultDTO> resolvedNumResultDTOS = baseDao.selectResolvedNumByOrg(orgIds, dateId);
return resolvedNumResultDTOS;
}
return new ArrayList<>();
}
/**
* @Description 查询 满意度评价次数
* @Param customerId
@ -320,6 +298,23 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl<FactO
return new ArrayList<>();
}
/**
* @Description 组织 查询 满意度评价次数
* @Param customerId
* @Param dateId
* @Param activeCodes
* @author zxc
* @date 2021/4/13 上午9:54
*/
@Override
public List<EvaluateTotalResultDTO> selectEvaluateCountByOrg(List<String> orgIds, String dateId, List<String> activeCodes) {
if (!CollectionUtils.isEmpty(orgIds)){
List<EvaluateTotalResultDTO> evaluateTotalResultDTOS = baseDao.selectEvaluateCountByOrg(orgIds, dateId, activeCodes);
return evaluateTotalResultDTOS;
}
return new ArrayList<>();
}
/**
* @Description 查询本月新增项目数
* @Param customerId
@ -336,6 +331,22 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl<FactO
return new ArrayList<>();
}
/**
* @Description 组织查询本月新增项目数
* @Param orgIds
* @Param monthId
* @author zxc
* @date 2021/4/16 上午9:19
*/
@Override
public List<ProjectIncrResultDTO> selectProjectIncrByOrg(List<String> orgIds, String monthId) {
if (!CollectionUtils.isEmpty(orgIds) && StringUtils.isNotBlank(monthId)){
List<ProjectIncrResultDTO> projectIncrResultDTOS = baseDao.selectProjectIncrByOrg(orgIds, monthId);
return projectIncrResultDTOS;
}
return new ArrayList<>();
}
/**
* @Description 根据状态查询项目数
* @Param customerId
@ -353,6 +364,23 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl<FactO
return new ArrayList<>();
}
/**
* @Description 组织根据状态查询项目数
* @Param orgIds
* @Param monthId
* @Param status
* @author zxc
* @date 2021/4/16 上午9:24
*/
@Override
public List<UnClosedTotalResultDTO> selectProjectCountByOrg(List<String> orgIds, String monthId, String status) {
if (!CollectionUtils.isEmpty(orgIds) && StringUtils.isNotBlank(monthId)){
List<UnClosedTotalResultDTO> resultDTOS = baseDao.selectProjectCountByOrg(orgIds, monthId, status);
return resultDTOS;
}
return new ArrayList<>();
}
/**
* @Description 本月新增结案项目数
* @Param customerId
@ -369,6 +397,22 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl<FactO
return new ArrayList<>();
}
/**
* @Description 组织本月新增结案项目数
* @Param orgIds
* @Param monthId
* @author zxc
* @date 2021/4/16 上午9:33
*/
@Override
public List<ClosedIncrResultDTO> selectClosedIncrByOrg(List<String> orgIds, String monthId) {
if (!CollectionUtils.isEmpty(orgIds) && StringUtils.isNotBlank(monthId)){
List<ClosedIncrResultDTO> result = baseDao.selectClosedIncrByOrg(orgIds, monthId);
return result;
}
return new ArrayList<>();
}
/**
* @Description 初始化screen_project_data数据
* 如果是dateId不为空则查询前一天的数据
@ -387,7 +431,8 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl<FactO
@Override
public List<ScreenProjectDataDTO> initNewScreenProjectData(String customerId,Integer rows , String dateId,Integer exceedLimit,Integer about2exceedLimit) {
boolean ifBeforeYesterday = true;
if(Integer.parseInt(DateUtils.getBeforeNDay(NumConstant.ONE)) > Integer.parseInt(dateId)){
int beforeDate = Integer.parseInt(DateUtils.getBeforeNDay(NumConstant.ONE));
if(beforeDate > Integer.parseInt(dateId)){
ifBeforeYesterday = false;
}
List<ScreenProjectDataDTO> projects = baseDao.initNewScreenProjectData(customerId, rows <= NumConstant.ZERO ? "" : dateId, dateId);
@ -421,6 +466,15 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl<FactO
}
}
@Override
public List<FactOriginProjectMainDailyEntity> getProjectForDiff(ScreenCentralZoneDataFormDTO param) {
return baseDao.getProjectForDiff(param.getCustomerId(),param.getDateId());
}
@Override
public List<FactOriginProjectOrgPeriodDailyEntity> getProjectPeriod(ScreenCentralZoneDataFormDTO param) {
return baseDao.getProjectPeriodForDiff(param.getCustomerId(),param.getDateId());
}
}

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

@ -128,7 +128,8 @@ public class ProjectExtractServiceImpl implements ProjectExtractService {
factOriginProjectMainDailyService.deleteByDate(customerId, dateString);
if (!CollectionUtils.isEmpty(projectList)) {
//提取议题ID
List<String> issueIds = projectList.stream().map(ProjectDTO::getOriginId).collect(Collectors.toList());
List<String> issueIds =
projectList.stream().filter(item -> ProjectConstant.ISSUE.equals(item.getOrigin())).map(ProjectDTO::getOriginId).collect(Collectors.toList());
//获取议题信息
List<IssueDTO> issueList = issueService.getIssueInfoByIds(issueIds);
//提取话题ID
@ -144,18 +145,28 @@ public class ProjectExtractServiceImpl implements ProjectExtractService {
FactOriginProjectMainDailyEntity entity = new FactOriginProjectMainDailyEntity();
entity.setId(project.getId());
entity.setAgencyId(project.getAgencyId());
entity.setOrigin(project.getOrigin());
entity.setOriginId(project.getOriginId());
entity.setCustomerId(customerId);
entity.setYearId(dimId.getYearId());
entity.setQuarterId(dimId.getQuarterId());
entity.setMonthId(dimId.getMonthId());
entity.setWeekId(dimId.getWeekId());
entity.setDateId(dimId.getDateId());
entity.setIssueId(project.getOriginId());
if (ProjectConstant.ISSUE.equals(project.getOrigin())) {
entity.setIssueId(project.getOriginId());
} else {
entity.setIssueId("");
}
entity.setProjectStatus(project.getStatus());
entity.setIsResolved(project.getClosedStatus());
entity.setCreatedTime(project.getCreatedTime());
entity.setUpdatedTime(project.getUpdatedTime());
entity.setPids(project.getOrgIdPath());
entity.setIssueCreatorId("");
entity.setTopicId("");
entity.setTopicCreatorId("");
entity.setGridId("");
String[] pIds = project.getOrgIdPath().split(StrConstant.COLON);
if (pIds.length > 1) {
entity.setPid(pIds[pIds.length - 2]);
@ -168,17 +179,23 @@ public class ProjectExtractServiceImpl implements ProjectExtractService {
entity.setIsOverdue(NumConstant.ZERO_STR);
return entity;
}).collect(Collectors.toList());
list.forEach(entity -> issueList.stream().filter(issueDTO -> issueDTO.getId().equals(entity.getIssueId())).forEach(issue -> {
entity.setIssueCreatorId(issue.getCreatedBy());
entity.setTopicId(issue.getSourceId());
}));
list.forEach(entity -> topicList.stream().filter(topicDTO -> topicDTO.getId().equals(entity.getTopicId())).forEach(topic -> {
entity.setTopicCreatorId(topic.getCreatedBy());
entity.setGridId(topic.getGridId());
}));
list.forEach(entity -> partyMemberList.stream().filter(partyMemberDTO -> partyMemberDTO.getGridId().equals(entity.getGridId()) && partyMemberDTO.getUserId().equals(entity.getTopicCreatorId())).forEach(partyMember -> {
entity.setIsParty(NumConstant.ONE_STR);
}));
if (CollectionUtils.isNotEmpty(issueList)) {
list.forEach(entity -> issueList.stream().filter(issueDTO -> issueDTO.getId().equals(entity.getIssueId())).forEach(issue -> {
entity.setIssueCreatorId(issue.getCreatedBy());
entity.setTopicId(issue.getSourceId());
}));
}
if (CollectionUtils.isNotEmpty(topicList)) {
list.forEach(entity -> topicList.stream().filter(topicDTO -> topicDTO.getId().equals(entity.getTopicId())).forEach(topic -> {
entity.setTopicCreatorId(topic.getCreatedBy());
entity.setGridId(topic.getGridId());
}));
}
if (CollectionUtils.isNotEmpty(partyMemberList)) {
list.forEach(entity -> partyMemberList.stream().filter(partyMemberDTO -> partyMemberDTO.getGridId().equals(entity.getGridId()) && partyMemberDTO.getUserId().equals(entity.getTopicCreatorId())).forEach(partyMember -> {
entity.setIsParty(NumConstant.ONE_STR);
}));
}
list.forEach(entity -> finishOrgList.stream().filter(finish -> entity.getId().equals(finish.getProjectId())).forEach(dto -> {
String[] orgIds = dto.getPIdPath().split(StrConstant.COLON);
String org = "";
@ -228,6 +245,8 @@ public class ProjectExtractServiceImpl implements ProjectExtractService {
entity.setOrgId(process.getGridId());
entity.setPid(process.getAgencyId());
}else{
entity.setOrgType(OrgTypeConstant.AGENCY);
entity.setOrgId(process.getAgencyId());
if(!process.getPids().contains(StrConstant.COLON)){
entity.setPids("");
entity.setPid(NumConstant.ZERO_STR);
@ -278,6 +297,8 @@ public class ProjectExtractServiceImpl implements ProjectExtractService {
entity.setOrgId(process.getGridId());
entity.setPid(process.getAgencyId());
} else {
entity.setOrgType(OrgTypeConstant.AGENCY);
entity.setOrgId(process.getAgencyId());
if (!process.getPids().contains(StrConstant.COLON)) {
entity.setPids("");
entity.setPid(NumConstant.ZERO_STR);
@ -358,6 +379,8 @@ public class ProjectExtractServiceImpl implements ProjectExtractService {
entity.setOrgId(process.getGridId());
entity.setPid(process.getAgencyId());
}else{
entity.setOrgType(OrgTypeConstant.AGENCY);
entity.setOrgId(process.getAgencyId());
if(!process.getPids().contains(StrConstant.COLON)){
entity.setPids("");
entity.setPid(NumConstant.ZERO_STR);

10
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/ScreenGrassrootsGovernDataAbsorptionService.java

@ -26,4 +26,14 @@ public interface ScreenGrassrootsGovernDataAbsorptionService {
* @date 2020.09.25 10:00
**/
void difficultyDataHub(ScreenCentralZoneDataFormDTO param);
/**
* desc: 新的难点堵点抽取
*
* @param param
* @return boolean
* @author LiuJanJun
* @date 2021/4/9 6:05 下午
*/
boolean difficultyDataExtract(ScreenCentralZoneDataFormDTO param);
}

10
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenExtractServiceImpl.java

@ -171,7 +171,8 @@ public class ScreenExtractServiceImpl implements ScreenExtractService {
}
ScreenCentralZoneDataFormDTO param = new ScreenCentralZoneDataFormDTO();
param.setCustomerId(customerId);param.setDateId(dateId);
param.setCustomerId(customerId);
param.setDateId(dateId);
//中央区 screen_user_total_data
try {
screenCentralZoneDataAbsorptionService.centralZoneDataHub(param);
@ -181,7 +182,12 @@ public class ScreenExtractServiceImpl implements ScreenExtractService {
//基层治理- 难点赌点 screen_difficulty_data | screen_difficulty_img_data
try {
log.info("【难点赌点数据上报开始------】 当前客户Id{}",param.getCustomerId());
screenGrassrootsGovernDataAbsorptionService.difficultyDataHub(param);
//screenGrassrootsGovernDataAbsorptionService.difficultyDataHub(param);
ScreenCentralZoneDataFormDTO param2 = new ScreenCentralZoneDataFormDTO();
param2.setCustomerId(customerId);
param2.setDateId(null);
screenGrassrootsGovernDataAbsorptionService.difficultyDataExtract(param2);
log.info("【难点赌点数据上报结束------】 当前客户Id{}",param.getCustomerId());
}catch (Exception e){
log.error("基层治理-难点赌点抽取到大屏失败,customerId为:"+customerId+"dateId为:"+dateId, e);

329
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenGrassrootsGovernDataAbsorptionServiceImpl.java

@ -4,13 +4,22 @@ import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.constant.ProjectConstant;
import com.epmet.dto.ProjectCategoryDTO;
import com.epmet.dto.ProjectDTO;
import com.epmet.dto.org.GridInfoDTO;
import com.epmet.dto.project.result.ProjectLatestOperationResultDTO;
import com.epmet.dto.screen.form.ProjectSourceMapFormDTO;
import com.epmet.dto.screen.form.ScreenCentralZoneDataFormDTO;
import com.epmet.dto.topic.result.ResiTopicAndImgResultDTO;
import com.epmet.entity.evaluationindex.extract.FactOriginProjectMainDailyEntity;
import com.epmet.entity.evaluationindex.extract.FactOriginProjectOrgPeriodDailyEntity;
import com.epmet.entity.evaluationindex.screen.ScreenDifficultyDataEntity;
import com.epmet.entity.evaluationindex.screen.ScreenDifficultyImgDataEntity;
import com.epmet.entity.evaluationindex.screen.ScreenPartyUserRankDataEntity;
import com.epmet.entity.issue.IssueProjectCategoryDictEntity;
import com.epmet.entity.stats.DimAgencyEntity;
import com.epmet.service.Issue.IssueProjectCategoryDictService;
import com.epmet.service.evaluationindex.extract.todata.FactOriginProjectMainDailyService;
import com.epmet.service.evaluationindex.extract.toscreen.ScreenGrassrootsGovernDataAbsorptionService;
import com.epmet.service.evaluationindex.indexcal.CpcIndexCalculateService;
@ -20,6 +29,7 @@ import com.epmet.service.org.CustomerGridService;
import com.epmet.service.point.UserPointService;
import com.epmet.service.project.ProjectProcessService;
import com.epmet.service.project.ProjectService;
import com.epmet.service.stats.DimAgencyService;
import com.epmet.service.topic.TopicService;
import com.epmet.service.user.UserService;
import lombok.extern.slf4j.Slf4j;
@ -49,6 +59,8 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr
@Autowired
private CustomerGridService customerGridService;
@Autowired
private DimAgencyService dimAgencyService;
@Autowired
private UserPointService userPointService;
@Autowired
private CpcIndexCalculateService cpcIndexCalculateService;
@ -64,10 +76,13 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr
private TopicService topicService;
@Autowired
private ProjectService projectService;
@Autowired
private IssueProjectCategoryDictService issueProjectCategoryDictService;
/**
* @Description 用户积分党员分值数据中转站
* @param param
* @return
* @Description 用户积分党员分值数据中转站
* @author wangc
* @date 2020.09.25 09:53
**/
@ -79,16 +94,16 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr
//2.查询出客户下网格的相关信息
List<GridInfoDTO> gridList = customerGridService.queryGridInfoList(param.getCustomerId());
// list 转 map,以gridId为key,a = gridList,作为value,(o,n)->o 是遇到相同的gridId舍弃,(o,n)->n 是覆盖原来的gridId
Map<String,GridInfoDTO> gridMap = gridList.stream().collect(Collectors.toMap(GridInfoDTO :: getGridId,a -> a,(o, n) -> o));
Map<String, GridInfoDTO> gridMap = gridList.stream().collect(Collectors.toMap(GridInfoDTO::getGridId, a -> a, (o, n) -> o));
//3.查询出客户下用户的累计积分(累计值,没有时间概念,否则需要查询积分明细计算出评价周期末的得分)
Map<String,Integer> pointMap = userPointService.getUserPointMap(param.getCustomerId());
Map<String, Integer> pointMap = userPointService.getUserPointMap(param.getCustomerId());
//4.查询出客户下党员的分值
String dateId = param.getDateId();
if(StringUtils.isEmpty(dateId)){
if (StringUtils.isEmpty(dateId)) {
//如果没有传月份,则使用当前时间的上一个月
dateId = DateUtils.getBeforeNMonth(NumConstant.ONE);
}else{
} else {
String dateType = DateUtils.identifyTimeDimension(dateId);
if (StringUtils.isEmpty(dateType) || !StringUtils.equalsAny(dateType, "date", "month")) {
dateId = DateUtils.getBeforeNMonth(NumConstant.ONE);
@ -98,21 +113,21 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr
}
final String finalDateId = dateId;
// 查询党员积分
Map<String, BigDecimal> scoreMap = cpcIndexCalculateService.getCpcScore(param.getCustomerId(),dateId);
Map<String, BigDecimal> scoreMap = cpcIndexCalculateService.getCpcScore(param.getCustomerId(), dateId);
//剔除垃圾数据
registeredUsers.removeIf(user -> null == gridMap.get(user.getGridId()));
//5.整合数据
if(!CollectionUtils.isEmpty(registeredUsers)){
if (!CollectionUtils.isEmpty(registeredUsers)) {
registeredUsers.forEach(user -> {
GridInfoDTO gridInfo = gridMap.get(user.getGridId());
if(null != gridInfo){
if (null != gridInfo) {
user.setGridName(gridInfo.getGridName());
user.setOrgId(gridInfo.getAgencyId());
user.setOrgName(gridInfo.getOrgName());
//原始数据Pid使用英文:隔开,大屏数据要求按照英文,隔开
user.setAllParentIds(gridInfo.getPids().replaceAll(StrConstant.COLON,StrConstant.COMMA));
user.setAllParentIds(gridInfo.getPids().replaceAll(StrConstant.COLON, StrConstant.COMMA));
}
Integer point = pointMap.get(user.getUserId());
BigDecimal score = scoreMap.get(user.getUserId());
@ -127,21 +142,23 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr
}
/**
* @Description 难点赌点数据中转站
* @param param
* @return
* @Description 难点赌点数据中转站
* @author wangc
* @date 2020.09.25 10:00
**/
@Override
public void difficultyDataHub(ScreenCentralZoneDataFormDTO param) {
//查询数据
List<ScreenDifficultyDataEntity> difficulties = factOriginProjectMainDailyService.getDifficultyBaseInfo(param.getCustomerId(),projectService.getOvertimeProjectByParameter(param.getCustomerId()));
if(CollectionUtils.isEmpty(difficulties)) return;
List<ScreenDifficultyDataEntity> difficulties = factOriginProjectMainDailyService.getDifficultyBaseInfo(param.getCustomerId(), projectService.getOvertimeProjectByParameter(param.getCustomerId()));
if (CollectionUtils.isEmpty(difficulties)) {
return;
}
//2.查询出客户下网格的相关信息
List<GridInfoDTO> gridList = customerGridService.queryGridInfoList(param.getCustomerId());
Map<String,GridInfoDTO> gridMap = gridList.stream().collect(Collectors.toMap(GridInfoDTO :: getGridId,a -> a,(o, n) -> o));
Map<String, GridInfoDTO> gridMap = gridList.stream().collect(Collectors.toMap(GridInfoDTO::getGridId, a -> a, (o, n) -> o));
//剔除垃圾数据(本次需要更新的数据集)
//for(Iterator<ScreenDifficultyDataEntity> iter = difficulties.iterator(); iter.hasNext();){
@ -150,33 +167,36 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr
// iter.remove();
// }
//}
difficulties.removeIf( diff -> null == gridMap.get(diff.getOrgId()));
difficulties.removeIf(diff -> null == gridMap.get(diff.getOrgId()));
List<String> projectIds = difficulties.stream().map(ScreenDifficultyDataEntity :: getEventId).distinct().collect(Collectors.toList());
List<String> projectIds = difficulties.stream().map(ScreenDifficultyDataEntity::getEventId).distinct().collect(Collectors.toList());
//最近一次操作
Map<String, ProjectLatestOperationResultDTO> latestOperationMap = projectProcessService.getLatestOperation(projectIds,param.getCustomerId());
Map<String, ProjectLatestOperationResultDTO> latestOperationMap = projectProcessService.getLatestOperation(projectIds, param.getCustomerId());
//图片
List<ProjectSourceMapFormDTO> projectSourceMap = difficulties.stream().map(diff->{
ProjectSourceMapFormDTO map = new ProjectSourceMapFormDTO();map.setProjectId(diff.getEventId());map.setSourceId(diff.getEventImgUrl());return map;
List<ProjectSourceMapFormDTO> projectSourceMap = difficulties.stream().map(diff -> {
ProjectSourceMapFormDTO map = new ProjectSourceMapFormDTO();
map.setProjectId(diff.getEventId());
map.setSourceId(diff.getEventImgUrl());
return map;
}).collect(Collectors.toList());
//factOriginProjectMainDailyService.getNewProject(param.getCustomerId(),projectIds);
Map<String,List<ScreenDifficultyImgDataEntity>> imgMap = topicService.getTopicImgs(projectSourceMap);
Map<String, List<ScreenDifficultyImgDataEntity>> imgMap = topicService.getTopicImgs(projectSourceMap);
Map<String,String> contentMap = topicService.getTopicContent(projectSourceMap);
Map<String, String> contentMap = topicService.getTopicContent(projectSourceMap);
difficulties.forEach( diff -> {
difficulties.forEach(diff -> {
List<ScreenDifficultyImgDataEntity> figureList = CollectionUtils.isEmpty(imgMap) ? null : imgMap.get(diff.getEventId());
diff.setEventImgUrl(CollectionUtils.isEmpty(figureList) ? "" : figureList.get(NumConstant.ZERO).getEventImgUrl());
List<ScreenDifficultyImgDataEntity> figureList = CollectionUtils.isEmpty(imgMap) ? null : imgMap.get(diff.getEventId());
diff.setEventImgUrl(CollectionUtils.isEmpty(figureList) ? "" : figureList.get(NumConstant.ZERO).getEventImgUrl());
if(!CollectionUtils.isEmpty(contentMap)) {
if (!CollectionUtils.isEmpty(contentMap)) {
diff.setEventContent(contentMap.get(diff.getEventId()));
}
if(! CollectionUtils.isEmpty(latestOperationMap)){
if (!CollectionUtils.isEmpty(latestOperationMap)) {
ProjectLatestOperationResultDTO oper = latestOperationMap.get(diff.getEventId());
if(null != oper){
if (null != oper) {
diff.setLatestOperateDesc(oper.getOperationName());
diff.setEventTitle(oper.getTitle());
diff.setEventCostTime(oper.getCostTime());
@ -196,4 +216,261 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr
screenDifficultyDataService.dataClean(param.getCustomerId(),difficulties,imgList);
log.info("【大屏数据抽取-难点赌点执行完毕】 客户Id{} 难点赌点数据{}",param.getCustomerId(),JSON.toJSONString(difficulties));
}
@Override
public boolean difficultyDataExtract(ScreenCentralZoneDataFormDTO param) {
//1.根据客户Id 获取所有项目数据
List<FactOriginProjectMainDailyEntity> difficultyBaseList = factOriginProjectMainDailyService.getProjectForDiff(param);
if (CollectionUtils.isEmpty(difficultyBaseList)) {
log.warn("difficultyDataExtract customerId:{} have any project", param.getCustomerId());
return false;
}
//获取业务库项目标题
List<ProjectDTO> bizProjectInfoList = projectService.getProjectInfo(param.getCustomerId(), null);
if (CollectionUtils.isEmpty(bizProjectInfoList)) {
log.warn("difficultyDataExtract customerId:{} have any project", param.getCustomerId());
return false;
}
Map<String, ProjectDTO> bizProjectInfoMap = bizProjectInfoList.stream().collect(Collectors.toMap(ProjectDTO::getId, o -> o, (o1, o2) -> o1));
//获取agency维度
List<DimAgencyEntity> agencyList = dimAgencyService.getAgencyListByCustomerId(param.getCustomerId());
Map<String, DimAgencyEntity> agencyMap = agencyList.stream().collect(Collectors.toMap(DimAgencyEntity::getId, o -> o, (o1, o2) -> o1));
//获取grid维度
List<GridInfoDTO> gridList = customerGridService.queryGridInfoList(param.getCustomerId());
Map<String, GridInfoDTO> gridMap = gridList.stream().collect(Collectors.toMap(GridInfoDTO::getGridId, o -> o, (o1, o2) -> o1));
//获取客户下所有项目分类
List<IssueProjectCategoryDictEntity> categoryList = issueProjectCategoryDictService.getAllByCId(param.getCustomerId());
//项目分类数据 todo 暂时查询所有
List<ProjectCategoryDTO> projectCategoryData = projectService.getProjectCategoryData(param.getCustomerId(), null);
//key projectId:categoryCode Set
Map<String, List<String>> projectCategoryMap = projectCategoryData.stream()
.collect(Collectors.groupingBy(ProjectCategoryDTO::getProjectId, Collectors.mapping(ProjectCategoryDTO::getCategoryCode, Collectors.toList())));
//2.获取项目的所有节点耗时数据
List<FactOriginProjectOrgPeriodDailyEntity> projectPeriodList = factOriginProjectMainDailyService.getProjectPeriod(param);
//处理部门数去重(只要流转到就算)
Map<String, Set<String>> orgCountMap = new HashMap<>();
//被处理次数
Map<String, Integer> handleCountMap = new HashMap<>();
Set<String> valideProjectIdSet = fillAnyCountAndValidProject(param, projectPeriodList, orgCountMap, handleCountMap);
List<ScreenDifficultyDataEntity> diffList = new ArrayList<>();
List<ScreenDifficultyImgDataEntity> imgDataEntities = new ArrayList<>();
for (FactOriginProjectMainDailyEntity project : difficultyBaseList) {
if (agencyMap.get(project.getAgencyId()) == null || bizProjectInfoMap.get(project.getId()) == null) {
log.warn("未获取到相关的项目信息或者项目的所属组织信息,agencyId:{},projectId:{}",project.getAgencyId(),project.getId());
continue;
}
//判断是否符合难点堵点条件
if (!valideProjectIdSet.contains(project.getId())) {
continue;
}
ScreenDifficultyDataEntity diffEntity = buildBaseDiffEntity(project, agencyMap, gridMap, bizProjectInfoMap);
Set<String> regCount = orgCountMap.get(project.getId());
if (regCount != null) {
diffEntity.setEventReOrg(regCount.size());
} else {
diffEntity.setEventReOrg(0);
}
Integer handleOrgCount = handleCountMap.get(project.getId());
if (handleOrgCount != null) {
diffEntity.setEventHandledCount(handleOrgCount);
} else {
diffEntity.setEventHandledCount(0);
}
diffEntity.setDataEndTime(StringUtils.isBlank(param.getDateId())?DateUtils.getBeforeNDay(NumConstant.ONE):param.getDateId());
setCategoryInfo(diffEntity, project.getId(), categoryList, projectCategoryMap);
if (StringUtils.isNotBlank(project.getTopicId())) {
//获取图片及话题内容
ResiTopicAndImgResultDTO topicInfo = topicService.getTopicAndImgs(project.getTopicId(), "image");
if (topicInfo != null) {
diffEntity.setEventImgUrl(topicInfo.getTopicImgList().get(NumConstant.ZERO).getAttachmentUrl());
diffEntity.setEventContent(topicInfo.getTopicContent());
topicInfo.getTopicImgList().forEach(img -> {
ScreenDifficultyImgDataEntity imgData = new ScreenDifficultyImgDataEntity();
imgData.setEventId(project.getId());
imgData.setEventImgUrl(img.getAttachmentUrl());
imgData.setSort(img.getSort());
imgDataEntities.add(imgData);
imgData.setCustomerId(param.getCustomerId());
});
log.info("projectId:{} imgs:{}", project.getId(), imgDataEntities.stream().filter(o -> o.getEventId().equals(project.getId())).count());
}
}
diffList.add(diffEntity);
}
List<ScreenDifficultyDataEntity> collect = diffList.stream().filter(o -> o.getEventCostTime() < 5 * 24 * 60).collect(Collectors.toList());
log.info("========:" + JSON.toJSONString(collect));
log.info("========:" + JSON.toJSONString(diffList));
log.info("========:" + JSON.toJSONString(imgDataEntities));
screenDifficultyDataService.dataClean(param.getCustomerId(),diffList,imgDataEntities);
log.info("【大屏数据抽取-难点赌点执行完毕】 客户Id{} 难点赌点数据{}", param.getCustomerId(), JSON.toJSONString(diffList));
//3.获取项目的最后操作记录
return true;
}
/**
* desc:筛选出符合条件的的项目超过超期时间的为超期项目和处理的部门数及处理次数
* @param param
* @param projectPeriodList
* @param orgCountMap
* @param handleCountMap
* @return
*/
private Set<String> fillAnyCountAndValidProject(ScreenCentralZoneDataFormDTO param, List<FactOriginProjectOrgPeriodDailyEntity> projectPeriodList, Map<String, Set<String>> orgCountMap, Map<String, Integer> handleCountMap) {
//已经结案的项目的结案时间
Set<String> valideProjectIdSet = new HashSet<>();
Map<String, Date> closeProjectDateMap = projectPeriodList.stream().filter(o -> ProjectConstant.CLOSE.equals(o.getOperation()))
.collect(Collectors.toMap(FactOriginProjectOrgPeriodDailyEntity::getProjectId, FactOriginProjectOrgPeriodDailyEntity::getHandledDate, (o1, o2) -> o1));
//超期项目阈值
Integer overtimeConfig = projectService.getOvertimeProjectByParameter(param.getCustomerId());
projectPeriodList.forEach(period -> {
Set<String> orgCount = orgCountMap.get(period.getProjectId());
if (orgCount == null) {
orgCount = new HashSet<>();
}
orgCount.add(period.getOrgId());
orgCountMap.put(period.getProjectId(), orgCount);
if (ProjectConstant.RESOLVED.equals(period.getIsResolved())) {
Integer handleCount = handleCountMap.getOrDefault(period.getProjectId(), 0);
handleCountMap.put(period.getProjectId(), ++handleCount);
}
//筛选出 项目的结案时间 未结案的为当前时间(结案只有一条记录)
if (period.getHandledDate() != null) {
if (period.getHandledDate().getTime() - period.getInformedDate().getTime() > overtimeConfig * 1000 * 60 * 60 * 24) {
valideProjectIdSet.add(period.getProjectId());
}
} else {
Date finishDate = closeProjectDateMap.getOrDefault(period.getProjectId(), new Date());
if (finishDate.getTime() - period.getInformedDate().getTime() > overtimeConfig * 1000 * 60 * 60 * 24) {
valideProjectIdSet.add(period.getProjectId());
}
}
});
return valideProjectIdSet;
}
/**
* desc设置项目类别
* @param diffEntity
* @param projectId
* @param categoryList
* @param projectCategoryMap
*/
private void setCategoryInfo(ScreenDifficultyDataEntity diffEntity, String projectId, List<IssueProjectCategoryDictEntity> categoryList, Map<String, List<String>> projectCategoryMap) {
List<String> categorySet = projectCategoryMap.get(projectId);
if (CollectionUtils.isEmpty(categorySet)) {
return;
}
projectCategoryMap.forEach((k, v) -> {
StringBuilder code = new StringBuilder();
StringBuilder name = new StringBuilder();
v.forEach(categoryCode -> {
List<IssueProjectCategoryDictEntity> childCategory = new ArrayList<>();
getParentNode(childCategory, categoryList, categoryCode);
String categoryCodes = childCategory.stream().map(IssueProjectCategoryDictEntity::getCategoryCode).collect(Collectors.joining(StrConstant.HYPHEN));
String categoryNames = childCategory.stream().map(IssueProjectCategoryDictEntity::getCategoryName).collect(Collectors.joining(StrConstant.HYPHEN));
code.append(categoryCodes).append(StrConstant.COMMA_ZH);
name.append(categoryNames).append(StrConstant.COMMA_ZH);
});
code.deleteCharAt(code.length() - NumConstant.ONE);
name.deleteCharAt(name.length() - NumConstant.ONE);
diffEntity.setEventCategoryCode(code.toString());
diffEntity.setEventCategoryName(name.toString());
log.info("code:{}",code.toString());
log.info("name:{}",name.toString());
});
}
/**
* desc:构建难点堵点基础数据
* @param project
* @param agencyMap
* @param gridMap
* @param bizProjectInfoMap
* @return
*/
private ScreenDifficultyDataEntity buildBaseDiffEntity(FactOriginProjectMainDailyEntity project, Map<String, DimAgencyEntity> agencyMap,
Map<String, GridInfoDTO> gridMap, Map<String, ProjectDTO> bizProjectInfoMap) {
ProjectDTO projectDTO = bizProjectInfoMap.get(project.getId());
ScreenDifficultyDataEntity diff = new ScreenDifficultyDataEntity();
diff.setCustomerId(project.getCustomerId());
//大屏的是逗号隔开的
String allPIds = project.getPids().replaceAll(StrConstant.COLON, StrConstant.COMMA);
DimAgencyEntity agencyInfoDTO = agencyMap.get(project.getAgencyId());
diff.setEventTitle(projectDTO.getTitle());
if (StringUtils.isBlank(project.getGridId())) {
diff.setOrgType("agency");
diff.setOrgId(project.getAgencyId());
diff.setParentId(project.getPid());
diff.setAllParentIds(allPIds.replace(StrConstant.COMMA + project.getAgencyId(), StrConstant.EPMETY_STR));
diff.setOrgName(agencyInfoDTO.getAgencyName());
if (StringUtils.isNotBlank(agencyInfoDTO.getAllParentName())) {
diff.setEventSource(agencyInfoDTO.getAllParentName().concat(StrConstant.HYPHEN.concat(diff.getOrgName())));
} else {
diff.setEventSource(agencyInfoDTO.getAgencyName());
}
//如果是组织的则 设置背景为内容
diff.setEventContent(projectDTO.getBackGround());
} else {
diff.setOrgType("grid");
diff.setOrgId(project.getGridId());
diff.setParentId(project.getAgencyId());
//所有上级id 即包含agencyId在内的所有pids
diff.setAllParentIds(allPIds);
GridInfoDTO gridInfoDTO = gridMap.get(project.getGridId());
diff.setOrgName(gridInfoDTO.getGridName());
String agencyAndGridName = agencyInfoDTO.getAgencyName().concat(StrConstant.HYPHEN.concat(diff.getOrgName()));
if (StringUtils.isNotBlank(agencyInfoDTO.getAllParentName())) {
diff.setEventSource(agencyInfoDTO.getAllParentName().concat(StrConstant.HYPHEN).concat(agencyAndGridName));
} else {
diff.setEventSource(agencyAndGridName);
}
}
diff.setEventId(project.getId());
String projectStatus = project.getProjectStatus();
diff.setEventStatusCode(projectStatus);
if (ProjectConstant.PENDING.equals(projectStatus)) {
diff.setEventStatusDesc("处理中");
//项目耗时 当前时间-项目创建时间
diff.setEventCostTime((int) ((System.currentTimeMillis() - projectDTO.getCreatedTime().getTime()) / 1000 / 60));
} else {
diff.setEventStatusDesc("已结案");
//项目耗时 更新时间-项目创建时间
diff.setEventCostTime((int) ((projectDTO.getUpdatedTime().getTime() - projectDTO.getCreatedTime().getTime()) / 1000 / 60));
}
//暂时不放内容 用不到
diff.setLatestOperateDesc("");
return diff;
}
/**
* 递归查询父节点
*
* @param childCategory
* @param categoryList
* @param categoryCode
*/
private void getParentNode(List<IssueProjectCategoryDictEntity> childCategory, List<IssueProjectCategoryDictEntity> categoryList, String categoryCode) {
categoryList.stream()
.filter(item -> Objects.nonNull(categoryCode) && Objects.equals(categoryCode, item.getCategoryCode()))
.forEach(menu -> {
getParentNode(childCategory, categoryList, menu.getParentCategoryCode());
childCategory.add(menu);
});
}
}

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

@ -31,12 +31,14 @@ import com.epmet.dao.evaluationindex.screen.ScreenProjectCategoryGridDailyDao;
import com.epmet.dao.evaluationindex.screen.ScreenProjectCategoryOrgDailyDao;
import com.epmet.dto.ScreenCustomerGridDTO;
import com.epmet.dto.extract.result.CustomerAgencyInfoResultDTO;
import com.epmet.dto.screen.ScreenProjectCategoryGridDailyDTO;
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.ScreenProjectCategoryOrgDailyEntity;
import com.epmet.service.crm.CustomerRelationService;
import com.epmet.service.evaluationindex.extract.todata.FactOriginProjectCategoryDailyService;
import com.epmet.service.evaluationindex.screen.ScreenCustomerAgencyService;
import com.epmet.service.evaluationindex.screen.ScreenCustomerGridService;
import com.epmet.service.evaluationindex.screen.ScreenProjectCategoryOrgDailyService;
@ -74,6 +76,8 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl<Sc
private ScreenProjectCategoryGridDailyDao gridDailyDao;
@Autowired
private ScreenCustomerGridService gridService;
@Autowired
private FactOriginProjectCategoryDailyService factOriginProjectCategoryDailyService;
@Override
public PageData<ScreenProjectCategoryOrgDailyDTO> page(Map<String, Object> params) {
@ -194,23 +198,23 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl<Sc
Map<String, List<CustomerAgencyInfoResultDTO>> groupByLevel = agencyIdList.stream().collect(Collectors.groupingBy(CustomerAgencyInfoResultDTO::getLevel));
if (groupByLevel.containsKey(ScreenConstant.COMMUNITY)){
// 社区级别
disposeOneCustomerSub(ScreenConstant.COMMUNITY,true,customerId,dateId);
disposeOneCustomerSub(ScreenConstant.COMMUNITY,true,customerId,dateId,agencyIdList);
}
if (groupByLevel.containsKey(ScreenConstant.STREET)){
// 街道级别
disposeOneCustomerSub(ScreenConstant.STREET,false,customerId,dateId);
disposeOneCustomerSub(ScreenConstant.STREET,false,customerId,dateId,agencyIdList);
}
if (groupByLevel.containsKey(ScreenConstant.DISTRICT)){
// 区级
disposeOneCustomerSub(ScreenConstant.DISTRICT,false,customerId,dateId);
disposeOneCustomerSub(ScreenConstant.DISTRICT,false,customerId,dateId,agencyIdList);
}
if (groupByLevel.containsKey(ScreenConstant.CITY)){
// 市级
disposeOneCustomerSub(ScreenConstant.CITY,false,customerId,dateId);
disposeOneCustomerSub(ScreenConstant.CITY,false,customerId,dateId,agencyIdList);
}
if (groupByLevel.containsKey(ScreenConstant.PROVINCE)){
// 省级
disposeOneCustomerSub(ScreenConstant.PROVINCE,false,customerId,dateId);
disposeOneCustomerSub(ScreenConstant.PROVINCE,false,customerId,dateId,agencyIdList);
}
}
}
@ -224,7 +228,7 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl<Sc
* @author zxc
* @date 2021/3/25 上午10:44
*/
public void disposeOneCustomerSub(String level, Boolean isGrid, String customerId, String dateId){
public void disposeOneCustomerSub(String level, Boolean isGrid, String customerId, String dateId,List<CustomerAgencyInfoResultDTO> agencyIdList){
List<ScreenProjectCategoryOrgDailyEntity> result = new ArrayList<>();
if (isGrid){
// 是社区级别
@ -255,6 +259,38 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl<Sc
}
result = ConvertUtils.sourceToTarget(categoryProjectResultDTOS,ScreenProjectCategoryOrgDailyEntity.class);
}
// 组织项目分类 项目数
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());
List<ScreenProjectCategoryGridDailyDTO> screenProjectCategory = factOriginProjectCategoryDailyService.selectListProjectCategoryByOrg(orgIds,customerId);
if (!CollectionUtils.isEmpty(result)){
if (!CollectionUtils.isEmpty(screenProjectCategory)){
result.forEach(r -> {
screenProjectCategory.forEach(pc -> {
if (r.getOrgId().equals(pc.getOrgId()) && r.getCategoryCode().equals(pc.getCategoryCode())){
pc.setStatus(true);
r.setProjectTotal(r.getProjectTotal() + pc.getProjectTotal());
}
});
});
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);
result.addAll(noCalCategory);
}
}
}else {
if (!CollectionUtils.isEmpty(screenProjectCategory)){
result = ConvertUtils.sourceToTarget(screenProjectCategory, ScreenProjectCategoryOrgDailyEntity.class);
}
}
if (!CollectionUtils.isEmpty(result)){
result.forEach(r -> {r.setOrgType(level);r.setDateId(dateId);});
}
}
deleteAndInsert(customerId,dateId,result);
}
@ -273,23 +309,23 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl<Sc
Map<String, List<CustomerAgencyInfoResultDTO>> groupByLevel = agencyIdList.stream().collect(Collectors.groupingBy(CustomerAgencyInfoResultDTO::getLevel));
if (groupByLevel.containsKey(ScreenConstant.COMMUNITY)){
// 社区级别
disposeMoreCustomerSub(ScreenConstant.COMMUNITY,true,customerId,dateId,relationInfo);
disposeMoreCustomerSub(ScreenConstant.COMMUNITY,true,customerId,dateId,relationInfo,agencyIdList);
}
if (groupByLevel.containsKey(ScreenConstant.STREET)){
// 街道级别
disposeMoreCustomerSub(ScreenConstant.STREET,false,customerId,dateId,relationInfo);
disposeMoreCustomerSub(ScreenConstant.STREET,false,customerId,dateId,relationInfo,agencyIdList);
}
if (groupByLevel.containsKey(ScreenConstant.DISTRICT)){
// 区级
disposeMoreCustomerSub(ScreenConstant.DISTRICT,false,customerId,dateId,relationInfo);
disposeMoreCustomerSub(ScreenConstant.DISTRICT,false,customerId,dateId,relationInfo,agencyIdList);
}
if (groupByLevel.containsKey(ScreenConstant.CITY)){
// 市级
disposeMoreCustomerSub(ScreenConstant.CITY,false,customerId,dateId,relationInfo);
disposeMoreCustomerSub(ScreenConstant.CITY,false,customerId,dateId,relationInfo,agencyIdList);
}
if (groupByLevel.containsKey(ScreenConstant.PROVINCE)){
// 省级
disposeMoreCustomerSub(ScreenConstant.PROVINCE,false,customerId,dateId,relationInfo);
disposeMoreCustomerSub(ScreenConstant.PROVINCE,false,customerId,dateId,relationInfo,agencyIdList);
}
}
}
@ -304,7 +340,7 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl<Sc
* @author zxc
* @date 2021/3/25 下午1:29
*/
private void disposeMoreCustomerSub(String level,Boolean isGrid,String customerId, String dateId, List<CustomerRelationEntity> relationInfo){
private void disposeMoreCustomerSub(String level,Boolean isGrid,String customerId, String dateId, List<CustomerRelationEntity> relationInfo,List<CustomerAgencyInfoResultDTO> agencyIdList){
List<ScreenProjectCategoryOrgDailyEntity> result = new ArrayList<>();
if (isGrid){
// community级别走这
@ -363,6 +399,41 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl<Sc
}
}
}
// 目前不考虑计算子客户组织直接创建的项目,只算内部客户
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());
List<ScreenProjectCategoryGridDailyDTO> screenProjectCategory = factOriginProjectCategoryDailyService.selectListProjectCategoryByOrg(orgIds, customerId);
if (!CollectionUtils.isEmpty(result)) {
if (!CollectionUtils.isEmpty(screenProjectCategory)) {
result.forEach(r -> {
screenProjectCategory.forEach(pc -> {
if (r.getOrgId().equals(pc.getOrgId()) && r.getCategoryCode().equals(pc.getCategoryCode())) {
pc.setStatus(true);
r.setProjectTotal(r.getProjectTotal() + pc.getProjectTotal());
}
});
});
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);
result.addAll(noCalCategory);
}
}
} else {
if (!CollectionUtils.isEmpty(screenProjectCategory)) {
result = ConvertUtils.sourceToTarget(screenProjectCategory, ScreenProjectCategoryOrgDailyEntity.class);
}
}
if (!CollectionUtils.isEmpty(result)) {
result.forEach(r -> {
r.setOrgType(level);
r.setDateId(dateId);
});
}
}
deleteAndInsert(customerId,dateId,result);
}

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

@ -172,7 +172,7 @@ public class ScreenProjectGridDailyServiceImpl extends BaseServiceImpl<ScreenPro
// 项目总数赋值
if (!CollectionUtils.isEmpty(projectTotal)){
projectTotal.forEach(pt -> {
if (g.getGridId().equals(pt.getGridId())){
if (g.getGridId().equals(pt.getOrgId())){
g.setProjectTotal(pt.getProjectTotal());
}
});
@ -180,7 +180,7 @@ public class ScreenProjectGridDailyServiceImpl extends BaseServiceImpl<ScreenPro
// 项目解决数赋值
if (!CollectionUtils.isEmpty(resolvedNum)){
resolvedNum.forEach(rn -> {
if (g.getGridId().equals(rn.getGridId())){
if (g.getGridId().equals(rn.getOrgId())){
g.setResolvedNum(rn.getResolvedNum());
}
});

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

@ -29,12 +29,17 @@ import com.epmet.constant.DataSourceConstant;
import com.epmet.constant.PingYinConstants;
import com.epmet.dao.evaluationindex.screen.ScreenCustomerAgencyDao;
import com.epmet.dao.evaluationindex.screen.ScreenProjectOrgDailyDao;
import com.epmet.dto.pingyin.result.EvaluateTotalResultDTO;
import com.epmet.dto.pingyin.result.ProjectOrgDailyResultDTO;
import com.epmet.dto.pingyin.result.ProjectTotalResultDTO;
import com.epmet.dto.pingyin.result.ResolvedNumResultDTO;
import com.epmet.dto.screen.ScreenProjectOrgDailyDTO;
import com.epmet.dto.screencoll.ScreenCollFormDTO;
import com.epmet.entity.crm.CustomerRelationEntity;
import com.epmet.entity.evaluationindex.screen.ScreenProjectOrgDailyEntity;
import com.epmet.entity.org.CustomerAgencyEntity;
import com.epmet.service.crm.CustomerRelationService;
import com.epmet.service.evaluationindex.extract.todata.FactOriginProjectMainDailyService;
import com.epmet.service.evaluationindex.screen.ScreenProjectOrgDailyService;
import com.epmet.service.org.CustomerAgencyService;
import com.google.common.collect.Lists;
@ -51,6 +56,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 项目(事件)分析按组织_按天统计
@ -69,6 +75,8 @@ public class ScreenProjectOrgDailyServiceImpl extends BaseServiceImpl<ScreenProj
private CustomerRelationService customerRelationService;
@Autowired
private CustomerAgencyService customerAgencyService;
@Autowired
private FactOriginProjectMainDailyService projectMainDailyService;
@Override
public PageData<ScreenProjectOrgDailyDTO> page(Map<String, Object> params) {
@ -146,7 +154,7 @@ public class ScreenProjectOrgDailyServiceImpl extends BaseServiceImpl<ScreenProj
}
/**
* @Description 数据抽取机关-
* @Description 数据抽取机关-目前单客户和多客户处理是一样的只是查询sql不一样现在分开为了以后修改方便
* @Param customerId
* @Param dateId
* @author zxc
@ -154,31 +162,88 @@ public class ScreenProjectOrgDailyServiceImpl extends BaseServiceImpl<ScreenProj
*/
@Override
public void extractionProjectOrgDaily(String customerId, String dateId) {
List<ScreenProjectOrgDailyDTO> agencyInfos = new ArrayList<>();
//如果有子客户要按照跟组织的area_code查询组织列表
if(customerRelationService.haveSubCustomer(customerId)){
//
CustomerAgencyEntity rootAgency=customerAgencyService.getRootAgencyInfo(customerId);
agencyInfos=agencyDao.selectAgencyByAreaCode(rootAgency.getAreaCode());
// 多客户处理
extractionProjectOrgDailyMoreCustomer(customerId,dateId);
}else{
agencyInfos=agencyDao.selectAgencyByCustomer(customerId);
// 单客户处理
extractionProjectOrgDailyOneCustomer(customerId, dateId);
}
}
/**
* @Description 单客户处理
* @Param customerId
* @Param dateId
* @author zxc
* @date 2021/4/15 上午9:09
*/
public void extractionProjectOrgDailyOneCustomer(String customerId, String dateId){
List<ScreenProjectOrgDailyDTO> agencyInfos = agencyDao.selectAgencyByCustomer(customerId);
if (CollectionUtils.isEmpty(agencyInfos)){
log.warn(String.format(PingYinConstants.AGENCY_INFO_IS_ZERO,customerId));
return;
}
List<ProjectOrgDailyResultDTO> projectOrgDaily = baseDao.selectOrgProject(agencyInfos, dateId);
List<ProjectOrgDailyResultDTO> projectOrgDaily = baseDao.selectOrgProjectByAgency(agencyInfos, dateId);
if (CollectionUtils.isEmpty(projectOrgDaily)){
log.info(String.format(PingYinConstants.SELECT_GRID_INFO_BY_ORG_IS_NULL,customerId));
return;
}
projectOrgDaily.forEach(p -> {
p.setBadTotal(null == p.getBadTotal() ? NumConstant.ZERO : p.getBadTotal());
p.setEvaluateTotal(null == p.getEvaluateTotal() ? NumConstant.ZERO : p.getEvaluateTotal());
p.setGoodTotal(null == p.getGoodTotal() ? NumConstant.ZERO : p.getGoodTotal());
p.setProjectTotal(null == p.getProjectTotal() ? NumConstant.ZERO : p.getProjectTotal());
p.setResolvedNum(null == p.getResolvedNum() ? NumConstant.ZERO : p.getResolvedNum());
log.info(projectOrgDaily.toString());
List<ScreenProjectOrgDailyDTO> createProjects = disposeCreateProject(agencyInfos, dateId);
agencyInfos.forEach(a -> {
a.setDateId(dateId);
projectOrgDaily.forEach(p -> {
if (a.getAreaCode().equals(p.getAreaCode())){
a.setResolvedRatio(getRatio(p.getResolvedNum(),p.getProjectTotal()));
a.setBadRatio(getRatio(p.getBadTotal(),p.getEvaluateTotal()));
a.setGoodRatio(getRatio(p.getGoodTotal(),p.getEvaluateTotal()));
a.setBadTotal(p.getBadTotal());
a.setEvaluateTotal(p.getEvaluateTotal());
a.setGoodTotal(p.getGoodTotal());
a.setProjectTotal(p.getProjectTotal());
a.setResolvedNum(p.getResolvedNum());
}
});
});
agencyInfos.forEach(a -> {
createProjects.forEach(p -> {
if (a.getOrgId().equals(p.getOrgId())){
a.setBadTotal(p.getBadTotal() + a.getBadTotal());
a.setEvaluateTotal(p.getEvaluateTotal() + a.getEvaluateTotal());
a.setGoodTotal(p.getGoodTotal() + a.getGoodTotal());
a.setProjectTotal(p.getProjectTotal() + a.getProjectTotal());
a.setResolvedNum(p.getResolvedNum() + a.getResolvedNum());
a.setResolvedRatio(getRatio(a.getResolvedNum(),a.getProjectTotal()));
a.setBadRatio(getRatio(a.getBadTotal(),a.getEvaluateTotal()));
a.setGoodRatio(getRatio(a.getGoodTotal(),a.getEvaluateTotal()));
}
});
});
log.info(agencyInfos.toString());
del(customerId, dateId);
insert(agencyInfos,customerId,dateId);
}
/**
* @Description 有子客户处理
* @Param customerId
* @Param dateId
* @author zxc
* @date 2021/4/16 上午9:15
*/
public void extractionProjectOrgDailyMoreCustomer(String customerId, String dateId){
CustomerAgencyEntity rootAgency=customerAgencyService.getRootAgencyInfo(customerId);
List<ScreenProjectOrgDailyDTO> agencyInfos = agencyDao.selectAgencyByAreaCode(rootAgency.getAreaCode());
if (CollectionUtils.isEmpty(agencyInfos)){
log.warn(String.format(PingYinConstants.AGENCY_INFO_IS_ZERO,customerId));
return;
}
List<ProjectOrgDailyResultDTO> projectOrgDaily = baseDao.selectOrgProject(agencyInfos, dateId);
if (CollectionUtils.isEmpty(projectOrgDaily)){
log.info(String.format(PingYinConstants.SELECT_GRID_INFO_BY_ORG_IS_NULL,customerId));
return;
}
log.info(projectOrgDaily.toString());
agencyInfos.forEach(a -> {
a.setDateId(dateId);
@ -195,11 +260,102 @@ public class ScreenProjectOrgDailyServiceImpl extends BaseServiceImpl<ScreenProj
}
});
});
// 父子客户只需处理父客户数据,暂时不管子客户
List<ScreenProjectOrgDailyDTO> parentAgencyInfos = agencyDao.selectAgencyByCustomer(customerId);
List<ScreenProjectOrgDailyDTO> createProjects = disposeCreateProject(parentAgencyInfos, dateId);
agencyInfos.forEach(a -> {
createProjects.forEach(p -> {
if (a.getOrgId().equals(p.getOrgId())){
a.setBadTotal(p.getBadTotal() + a.getBadTotal());
a.setEvaluateTotal(p.getEvaluateTotal() + a.getEvaluateTotal());
a.setGoodTotal(p.getGoodTotal() + a.getGoodTotal());
a.setProjectTotal(p.getProjectTotal() + a.getProjectTotal());
a.setResolvedNum(p.getResolvedNum() + a.getResolvedNum());
a.setResolvedRatio(getRatio(a.getResolvedNum(),a.getProjectTotal()));
a.setBadRatio(getRatio(a.getBadTotal(),a.getEvaluateTotal()));
a.setGoodRatio(getRatio(a.getGoodTotal(),a.getEvaluateTotal()));
}
});
});
log.info(agencyInfos.toString());
del(customerId, dateId);
insert(agencyInfos,customerId,dateId);
}
/**
* @Description 组织直接立项处理
* @Param agencyInfos
* @Param dateId
* @author zxc
* @date 2021/4/16 上午9:15
*/
public List<ScreenProjectOrgDailyDTO> disposeCreateProject(List<ScreenProjectOrgDailyDTO> agencyInfos,String dateId){
List<String> orgIds = agencyInfos.stream().map(m -> m.getOrgId()).collect(Collectors.toList());
List<ProjectTotalResultDTO> projectTotal = projectMainDailyService.selectProjectTotalByOrg(orgIds, dateId, null);
List<ResolvedNumResultDTO> resolvedNum = projectMainDailyService.selectResolvedNumByOrg(orgIds, dateId);
//查询 参与满意度评价的总次数
String[] activeCodesAll = {PingYinConstants.EVALUATE_BAD,PingYinConstants.EVALUATE_GOOD,PingYinConstants.EVALUATE_PERFECT};
List<EvaluateTotalResultDTO> evaluateTotal = projectMainDailyService.selectEvaluateCountByOrg(orgIds, dateId, getActiveCode(activeCodesAll));
//查询 满意+非常满意的总次数
String[] activeCodesGood = {PingYinConstants.EVALUATE_GOOD,PingYinConstants.EVALUATE_PERFECT};
List<EvaluateTotalResultDTO> evaluateGood = projectMainDailyService.selectEvaluateCountByOrg(orgIds, dateId, getActiveCode(activeCodesGood));
agencyInfos.forEach(a -> {
// 项目总数
if (!CollectionUtils.isEmpty(projectTotal)){
projectTotal.forEach(p -> {
if (a.getOrgId().equals(p.getOrgId())){
a.setProjectTotal(p.getProjectTotal());
}
});
}
// 未解决项目数
if (!CollectionUtils.isEmpty(resolvedNum)){
resolvedNum.forEach(r -> {
if (a.getOrgId().equals(r.getOrgId())){
a.setResolvedNum(r.getResolvedNum());
}
});
}
// 参与满意度评价的总次数
if (!CollectionUtils.isEmpty(evaluateTotal)){
evaluateTotal.forEach(e -> {
if (a.getOrgId().equals(e.getOrgId())){
a.setEvaluateTotal(e.getEvaluateCount());
}
});
}
// 满意+非常满意的总次数
if (!CollectionUtils.isEmpty(evaluateGood)){
evaluateGood.forEach(e -> {
if (a.getOrgId().equals(e.getOrgId())){
a.setGoodTotal(e.getEvaluateCount());
}
});
}
// 解决率
a.setResolvedRatio(getRatio(a.getResolvedNum(),a.getProjectTotal()));
// 不满意总次数
a.setBadTotal(a.getEvaluateTotal()==NumConstant.ZERO ? NumConstant.ZERO : a.getEvaluateTotal() - a.getGoodTotal());
// 满意率
a.setGoodRatio(getRatio(a.getGoodTotal(),a.getEvaluateTotal()));
// 不满意率
a.setBadRatio(getRatio(a.getBadTotal(),a.getEvaluateTotal()));
});
return agencyInfos;
}
/**
* @Description activeCode处理
* @Param actCode
* @author zxc
* @date 2021/4/13 上午10:06
*/
public List<String> getActiveCode(String[] actCode){
List<String> activeCodes = Arrays.asList(actCode);
return activeCodes;
}
/**
* @Description
* @Param a

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

@ -183,7 +183,7 @@ public class ScreenProjectQuantityGridMonthlyServiceImpl extends BaseServiceImpl
// 截止到当前月份:累计项目总数
if (!CollectionUtils.isEmpty(projectTotal)){
projectTotal.forEach(p -> {
if (g.getGridId().equals(p.getGridId())){
if (g.getGridId().equals(p.getOrgId())){
g.setProjectTotal(p.getProjectTotal());
}
});

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

@ -29,13 +29,14 @@ import com.epmet.constant.DataSourceConstant;
import com.epmet.constant.PingYinConstants;
import com.epmet.dao.evaluationindex.screen.ScreenCustomerAgencyDao;
import com.epmet.dao.evaluationindex.screen.ScreenProjectQuantityOrgMonthlyDao;
import com.epmet.dto.pingyin.result.ProjectOrgMonthlyResultDTO;
import com.epmet.dto.pingyin.result.*;
import com.epmet.dto.screen.ScreenProjectOrgDailyDTO;
import com.epmet.dto.screen.ScreenProjectQuantityOrgMonthlyDTO;
import com.epmet.dto.screencoll.ScreenCollFormDTO;
import com.epmet.entity.evaluationindex.screen.ScreenProjectQuantityOrgMonthlyEntity;
import com.epmet.entity.org.CustomerAgencyEntity;
import com.epmet.service.crm.CustomerRelationService;
import com.epmet.service.evaluationindex.extract.todata.FactOriginProjectMainDailyService;
import com.epmet.service.evaluationindex.screen.ScreenProjectQuantityOrgMonthlyService;
import com.epmet.service.org.CustomerAgencyService;
import com.google.common.collect.Lists;
@ -51,6 +52,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 项目(事件)数量分析按组织_按月统计
@ -69,6 +71,9 @@ public class ScreenProjectQuantityOrgMonthlyServiceImpl extends BaseServiceImpl<
private CustomerRelationService customerRelationService;
@Autowired
private CustomerAgencyService customerAgencyService;
@Autowired
private FactOriginProjectMainDailyService projectMainDailyService;
@Override
public PageData<ScreenProjectQuantityOrgMonthlyDTO> page(Map<String, Object> params) {
IPage<ScreenProjectQuantityOrgMonthlyEntity> page = baseDao.selectPage(
@ -144,7 +149,7 @@ public class ScreenProjectQuantityOrgMonthlyServiceImpl extends BaseServiceImpl<
}
/**
* @Description 数据抽取组织-
* @Description 数据抽取组织-目前单客户和多客户处理是一样的只是查询sql不一样现在分开为了以后修改方便
* @Param customerId
* @Param monthId
* @author zxc
@ -152,14 +157,95 @@ public class ScreenProjectQuantityOrgMonthlyServiceImpl extends BaseServiceImpl<
*/
@Override
public void extractionProjectOrgMonthly(String customerId, String monthId) {
List<ScreenProjectOrgDailyDTO> screenProjectOrgDailyDTOS = new ArrayList<>();
//如果有子客户要按照跟组织的area_code查询组织列表
if(customerRelationService.haveSubCustomer(customerId)){
CustomerAgencyEntity rootAgency=customerAgencyService.getRootAgencyInfo(customerId);
screenProjectOrgDailyDTOS=agencyDao.selectAgencyByAreaCode(rootAgency.getAreaCode());
// 多客户处理
extractionProjectOrgMonthlyMoreCustomer(customerId, monthId);
}else{
screenProjectOrgDailyDTOS=agencyDao.selectAgencyByCustomer(customerId);
// 单客户处理
extractionProjectOrgMonthlyOneCustomer(customerId, monthId);
}
}
/**
* @Description 单客户处理
* @Param customerId
* @Param monthId
* @author zxc
* @date 2021/4/15 下午2:18
*/
public void extractionProjectOrgMonthlyOneCustomer(String customerId,String monthId){
List<ScreenProjectOrgDailyDTO> screenProjectOrgDailyDTOS=agencyDao.selectAgencyByCustomer(customerId);
if (CollectionUtils.isEmpty(screenProjectOrgDailyDTOS)){
log.warn(String.format(PingYinConstants.AGENCY_INFO_IS_ZERO,customerId));
return;
}
List<ScreenProjectQuantityOrgMonthlyDTO> agencyInfos = ConvertUtils.sourceToTarget(screenProjectOrgDailyDTOS, ScreenProjectQuantityOrgMonthlyDTO.class);
List<ProjectOrgMonthlyResultDTO> projectOrg = baseDao.selectQuantityOrgMonthlyByAgency(agencyInfos, monthId);
if (!CollectionUtils.isEmpty(projectOrg)){
projectOrg.forEach(p -> {
p.setClosedIncr(p.getClosedIncr());
p.setProjectIncr(p.getProjectIncr());
});
}
List<ProjectOrgMonthlyResultDTO> projectGrandOrg = baseDao.selectQuantityGrandOrgMonthly(agencyInfos, monthId);
if (!CollectionUtils.isEmpty(projectGrandOrg)){
projectGrandOrg.forEach(p -> {
p.setClosedTotal(p.getClosedTotal());
p.setProjectTotal(p.getProjectTotal());
p.setUnClosedTotal(p.getUnClosedTotal());
});
}
agencyInfos.forEach(a -> {
a.setMonthId(monthId);
if (!CollectionUtils.isEmpty(projectOrg)){
projectOrg.forEach(p -> {
if (a.getAreaCode().equals(p.getAreaCode())){
a.setClosedIncr(null == p.getClosedIncr() ? NumConstant.ZERO : p.getClosedIncr());
a.setProjectIncr(null == p.getProjectIncr() ? NumConstant.ZERO : p.getProjectIncr());
a.setProjectIncr(null == p.getProjectIncr() ? NumConstant.ZERO : p.getProjectIncr());
}
});
}
if (!CollectionUtils.isEmpty(projectGrandOrg)){
projectGrandOrg.forEach(p -> {
if (a.getAreaCode().equals(p.getAreaCode())){
a.setClosedTotal(null == p.getClosedTotal() ? NumConstant.ZERO : p.getClosedTotal());
a.setProjectTotal(null == p.getProjectTotal() ? NumConstant.ZERO : p.getProjectTotal());
a.setUnClosedTotal(null == p.getUnClosedTotal() ? NumConstant.ZERO : p.getUnClosedTotal());
a.setProjectIncr(null == p.getProjectIncr() ? NumConstant.ZERO : p.getProjectIncr());
}
});
}
});
// 直接立项处理
List<ScreenProjectQuantityOrgMonthlyDTO> agencyCreateProject = agencyCreateProject(agencyInfos, monthId);
agencyInfos.forEach(a -> {
agencyCreateProject.forEach(p -> {
if (a.getOrgId().equals(p.getOrgId())){
a.setProjectIncr(a.getProjectIncr() + p.getProjectIncr());
a.setProjectTotal(a.getProjectTotal() + p.getProjectTotal());
a.setUnClosedTotal(a.getUnClosedTotal() + p.getUnClosedTotal());
a.setClosedTotal(a.getClosedTotal() + p.getClosedTotal());
a.setClosedIncr(a.getClosedIncr() + p.getClosedIncr());
}
});
});
log.info(agencyInfos.toString());
del(customerId, monthId);
insert(agencyInfos,customerId,monthId);
}
/**
* @Description 多客户处理
* @Param customerId
* @Param monthId
* @author zxc
* @date 2021/4/15 下午2:18
*/
public void extractionProjectOrgMonthlyMoreCustomer(String customerId,String monthId){
CustomerAgencyEntity rootAgency=customerAgencyService.getRootAgencyInfo(customerId);
List<ScreenProjectOrgDailyDTO> screenProjectOrgDailyDTOS=agencyDao.selectAgencyByAreaCode(rootAgency.getAreaCode());
if (CollectionUtils.isEmpty(screenProjectOrgDailyDTOS)){
log.warn(String.format(PingYinConstants.AGENCY_INFO_IS_ZERO,customerId));
return;
@ -169,16 +255,16 @@ public class ScreenProjectQuantityOrgMonthlyServiceImpl extends BaseServiceImpl<
List<ProjectOrgMonthlyResultDTO> projectOrg = baseDao.selectQuantityOrgMonthly(agencyInfos, monthId);
if (!CollectionUtils.isEmpty(projectOrg)){
projectOrg.forEach(p -> {
p.setClosedIncr(null == p.getClosedIncr() ? NumConstant.ZERO : p.getClosedIncr());
p.setProjectIncr(null == p.getProjectIncr() ? NumConstant.ZERO : p.getProjectIncr());
p.setClosedIncr(p.getClosedIncr());
p.setProjectIncr(p.getProjectIncr());
});
}
List<ProjectOrgMonthlyResultDTO> projectGrandOrg = baseDao.selectQuantityGrandOrgMonthly(agencyInfos, monthId);
if (!CollectionUtils.isEmpty(projectGrandOrg)){
projectGrandOrg.forEach(p -> {
p.setClosedTotal(null == p.getClosedTotal() ? NumConstant.ZERO : p.getClosedTotal());
p.setProjectTotal(null == p.getProjectTotal() ? NumConstant.ZERO : p.getProjectTotal());
p.setUnClosedTotal(null == p.getUnClosedTotal() ? NumConstant.ZERO : p.getUnClosedTotal());
p.setClosedTotal(p.getClosedTotal());
p.setProjectTotal(p.getProjectTotal());
p.setUnClosedTotal(p.getUnClosedTotal());
});
}
agencyInfos.forEach(a -> {
@ -203,11 +289,89 @@ public class ScreenProjectQuantityOrgMonthlyServiceImpl extends BaseServiceImpl<
});
}
});
List<ScreenProjectOrgDailyDTO> parentAgency = agencyDao.selectAgencyByCustomer(customerId);
List<ScreenProjectQuantityOrgMonthlyDTO> parentAgencyInfos = ConvertUtils.sourceToTarget(parentAgency, ScreenProjectQuantityOrgMonthlyDTO.class);
List<ScreenProjectQuantityOrgMonthlyDTO> agencyCreateProject = agencyCreateProject(parentAgencyInfos, monthId);
agencyInfos.forEach(a -> {
agencyCreateProject.forEach(p -> {
if (a.getOrgId().equals(p.getOrgId())){
a.setProjectIncr(a.getProjectIncr() + p.getProjectIncr());
a.setProjectTotal(a.getProjectTotal() + p.getProjectTotal());
a.setUnClosedTotal(a.getUnClosedTotal() + p.getUnClosedTotal());
a.setClosedTotal(a.getClosedTotal() + p.getClosedTotal());
a.setClosedIncr(a.getClosedIncr() + p.getClosedIncr());
}
});
});
log.info(agencyInfos.toString());
del(customerId, monthId);
insert(agencyInfos,customerId,monthId);
}
/**
* @Description 组织直接立项处理
* @Param agencyInfos
* @Param monthId
* @author zxc
* @date 2021/4/16 上午10:03
*/
public List<ScreenProjectQuantityOrgMonthlyDTO> agencyCreateProject(List<ScreenProjectQuantityOrgMonthlyDTO> agencyInfos, String monthId){
List<String> orgIds = agencyInfos.stream().map(m -> m.getOrgId()).collect(Collectors.toList());
// 本月新增的项目数量 转项目日期在当前月份内
List<ProjectIncrResultDTO> projectIncr = projectMainDailyService.selectProjectIncrByOrg(orgIds, monthId);
// 截止到当前月份:累计项目总数
List<ProjectTotalResultDTO> projectTotal = projectMainDailyService.selectProjectTotalByOrg(orgIds, null, monthId);
// 截止到当前月份:累计未结项目总数
List<UnClosedTotalResultDTO> projectUnClosed = projectMainDailyService.selectProjectCountByOrg(orgIds, monthId, PingYinConstants.UN_CLOSED);
// 截止到当前月份:累计已结项目
List<UnClosedTotalResultDTO> projectClosed = projectMainDailyService.selectProjectCountByOrg(orgIds, monthId, PingYinConstants.CLOSED);
// 本月新增结案项目数
List<ClosedIncrResultDTO> closedIncr = projectMainDailyService.selectClosedIncrByOrg(orgIds, monthId);
agencyInfos.forEach(a -> {
a.setMonthId(monthId);
if (!CollectionUtils.isEmpty(projectIncr)){
projectIncr.forEach(p -> {
if (a.getOrgId().equals(p.getOrgId())){
a.setProjectIncr(p.getProjectIncr());
}
});
}
// 截止到当前月份:累计项目总数
if (!CollectionUtils.isEmpty(projectTotal)){
projectTotal.forEach(p -> {
if (a.getOrgId().equals(p.getOrgId())){
a.setProjectTotal(p.getProjectTotal());
}
});
}
// 截止到当前月份:累计未结项目总数
if (!CollectionUtils.isEmpty(projectUnClosed)){
projectUnClosed.forEach(p -> {
if (a.getOrgId().equals(p.getOrgId())){
a.setUnClosedTotal(p.getProjectCount());
}
});
}
// 截止到当前月份:累计已结项目
if (!CollectionUtils.isEmpty(projectClosed)){
projectClosed.forEach(p -> {
if (a.getOrgId().equals(p.getOrgId())){
a.setClosedTotal(p.getProjectCount());
}
});
}
// 本月新增结案项目数
if (!CollectionUtils.isEmpty(closedIncr)){
closedIncr.forEach(p -> {
if (a.getOrgId().equals(p.getOrgId())){
a.setClosedIncr(p.getClosedIncr());
}
});
}
});
return agencyInfos;
}
@Transactional(rollbackFor = Exception.class)
public void del(String customerId,String monthId){
Integer flag;

12
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/TopicService.java

@ -9,6 +9,7 @@ import com.epmet.dto.stats.DimTopicStatusDTO;
import com.epmet.dto.stats.topic.result.TopicStatisticalData;
import com.epmet.dto.topic.ResiTopicDTO;
import com.epmet.dto.topic.TopicOriginInfoDTO;
import com.epmet.dto.topic.result.ResiTopicAndImgResultDTO;
import com.epmet.entity.evaluationindex.screen.ScreenDifficultyImgDataEntity;
import com.epmet.util.DimIdGenerator;
@ -104,4 +105,15 @@ public interface TopicService {
* @date 2021.03.09 13:59
*/
List<ScreenProjectImgDataDTO> buildNewScreenProjectImgData(List<ScreenProjectDataDTO> list);
/**
* desc: 根据话题ID获取 话题内容及附件列表
*
* @param topicId
* @param attachmentType
* @return com.epmet.dto.topic.result.ResiTopicAndImgResultDTO
* @author LiuJanJun
* @date 2021/4/13 5:39 下午
*/
ResiTopicAndImgResultDTO getTopicAndImgs(String topicId,String attachmentType);
}

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

@ -18,6 +18,7 @@ import com.epmet.dto.stats.topic.result.TopicStatisticalData;
import com.epmet.dto.topic.ResiTopicDTO;
import com.epmet.dto.topic.TopicOriginInfoDTO;
import com.epmet.dto.topic.result.ResiGroupTopicResultDTO;
import com.epmet.dto.topic.result.ResiTopicAndImgResultDTO;
import com.epmet.dto.topic.result.ResiTopicOperationResultDTO;
import com.epmet.dto.topic.result.ResiTopicResultDTO;
import com.epmet.entity.evaluationindex.screen.ScreenDifficultyImgDataEntity;
@ -35,7 +36,6 @@ import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.text.NumberFormat;
import java.util.*;
import java.util.stream.Collector;
import java.util.stream.Collectors;
/**
@ -232,6 +232,11 @@ public class TopicServiceImpl implements TopicService {
)).collect(Collectors.toList());
}
@Override
public ResiTopicAndImgResultDTO getTopicAndImgs(String topicId,String attachmentType) {
return topicDao.getTopicAndImgs(topicId);
}
/**
* @Description 初始化机关-所有下级网格Map
* @param pid - 固定一个机关Id

13
epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.11__add_origin.sql

@ -0,0 +1,13 @@
ALTER TABLE `fact_origin_project_main_daily`
ADD COLUMN `ORIGIN` varchar(32) NULL COMMENT '项目来源 来源:议题issue 组织agency' AFTER `AGENCY_ID`,
MODIFY COLUMN `GRID_ID` varchar(32) DEFAULT '' COMMENT '网格ID(立项时的网格Id)' AFTER `TOPIC_ID`,
ADD COLUMN `ORIGIN_ID` varchar(64) NULL COMMENT '项目来源ID' AFTER `ORIGIN`;
UPDATE fact_origin_project_main_daily t1
INNER JOIN ( SELECT ID, ISSUE_ID FROM fact_origin_project_main_daily ) t2 ON t1.ID = t2.ID
SET t1.ORIGIN = 'issue',
t1.ORIGIN_ID = t2.ISSUE_ID;
UPDATE fact_origin_project_log_daily t1
INNER JOIN ( SELECT ID, AGENCY_ID FROM fact_origin_project_log_daily ) t2 ON t1.ID = t2.ID AND t1.ORG_TYPE IS NULL
SET t1.ORG_TYPE = 'agency',
t1.ORG_ID = t2.AGENCY_ID;

47
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectCategoryDailyDao.xml

@ -27,11 +27,12 @@
count(1)as projectTotal
FROM
fact_origin_project_category_daily c
LEFT JOIN fact_origin_project_main_daily p ON ( c.PROJECT_Id = p.id and p.del_flag='0')
LEFT JOIN fact_origin_project_main_daily p ON ( c.PROJECT_Id = p.id and p.del_flag='0' AND p.GRID_ID != '')
WHERE
c.DEL_FLAG = '0'
AND c.CUSTOMER_ID = #{customerId}
AND c.`LEVEL` = '2'
GROUP BY
c.CUSTOMER_ID,
c.CATEGORY_CODE,
@ -50,7 +51,7 @@
count(distinct c.project_id)as projectTotal
FROM
fact_origin_project_category_daily c
LEFT JOIN fact_origin_project_main_daily p ON ( c.PROJECT_Id = p.id and p.del_flag='0')
LEFT JOIN fact_origin_project_main_daily p ON ( c.PROJECT_Id = p.id and p.del_flag='0' AND p.GRID_ID != '')
WHERE
c.DEL_FLAG = '0'
AND c.CUSTOMER_ID = #{customerId}
@ -62,4 +63,46 @@
p.AGENCY_ID,
P.PIDS
</select>
<!-- 查询客户下,组织直接立项的,各项目分类下的项目数量 -->
<select id="selectListProjectCategoryByOrg" resultType="com.epmet.dto.screen.ScreenProjectCategoryGridDailyDTO">
SELECT
c.CUSTOMER_ID,
c.CATEGORY_CODE,
c.`LEVEL`,
p.AGENCY_ID AS orgId,
p.PID AS PID,
P.PIDS,
COUNT(DISTINCT p.ID) AS projectTotal
FROM fact_origin_project_main_daily p
LEFT JOIN fact_origin_project_category_daily c ON ( c.PROJECT_Id = p.id AND p.del_flag='0' AND p.GRID_ID = '')
WHERE c.DEL_FLAG = '0'
AND c.CUSTOMER_ID = #{customerId}
AND (
<foreach collection="orgIds" item="orgId" separator=" OR ">
p.AGENCY_ID = #{orgId}
</foreach>
)
AND c.`LEVEL` = '2'
GROUP BY c.CUSTOMER_ID, c.CATEGORY_CODE, c.`LEVEL`, p.AGENCY_ID, p.PID, P.PIDS
UNION ALL
SELECT
c.CUSTOMER_ID,
left(c.CATEGORY_CODE, 4) AS CATEGORY_CODE,
'1' AS `LEVEL`,
p.AGENCY_ID AS orgId,
p.PID AS PID,
P.PIDS,
COUNT(distinct p.ID) AS projectTotal
FROM fact_origin_project_main_daily p
LEFT JOIN fact_origin_project_category_daily c ON ( c.PROJECT_Id = p.id AND p.del_flag='0' AND p.GRID_ID = '')
WHERE c.DEL_FLAG = '0'
AND c.CUSTOMER_ID = #{customerId}
AND (
<foreach collection="orgIds" item="orgId" separator=" OR ">
p.AGENCY_ID = #{orgId}
</foreach>
)
GROUP BY c.CUSTOMER_ID, left(c.CATEGORY_CODE, 4), c.`LEVEL`, p.PID, p.AGENCY_ID, P.PIDS
</select>
</mapper>

22
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectLogDailyDao.xml

@ -388,6 +388,7 @@
WHERE fm.CUSTOMER_ID = #{customerId}
AND fm.MONTH_ID = #{monthId}
AND fm.PROJECT_STATUS = 'closed'
AND fm.GRID_ID != ''
) a
GROUP BY
GRID_ID
@ -530,4 +531,25 @@
AND CUSTOMER_ID = #{customerId}
AND MONTH_ID = #{monthId}
</select>
<!-- 网格项目自治率查询 最新版 -->
<select id="selectProjectAutoNoMyPlus" resultType="com.epmet.dto.extract.result.AutoNoMyResultDTO">
SELECT
l.ACTION_CODE,
l.ORG_ID AS gridId,
l.PROJECT_ID
FROM fact_origin_project_log_daily l
WHERE l.DEL_FLAG = 0
AND l.CUSTOMER_ID = #{customerId}
AND (
l.ACTION_CODE = 'response'
OR l.ACTION_CODE = 'close'
OR l.ACTION_CODE = 'transfer'
OR l.ACTION_CODE = 'resolved'
OR l.ACTION_CODE = 'unresolved'
OR l.ACTION_CODE = 'created')
AND l.PROJECT_ID IN (SELECT ID FROM fact_origin_project_main_daily WHERE DEL_FLAG = 0 AND PROJECT_STATUS = 'closed' AND MONTH_ID = #{monthId})
GROUP BY PROJECT_ID
HAVING COUNT(DISTINCT(ORG_ID)) = 1
</select>
</mapper>

169
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml

@ -92,15 +92,20 @@
<select id="selectGridClosedProject" resultType="com.epmet.dto.extract.result.GridProjectClosedTotalResultDTO">
SELECT
COUNT(ID) AS resolveProjectCount,
GRID_ID
SUBSTRING_INDEX(FINISH_ORG_IDS,':',-1) AS gridId
FROM
fact_origin_project_main_daily
WHERE
DEL_FLAG = 0
AND PROJECT_STATUS = #{status}
AND CUSTOMER_ID = #{customerId}
AND MONTH_ID = #{monthId}
GROUP BY GRID_ID
AND GRID_ID != ''
AND PROJECT_STATUS = #{status}
AND MONTH_ID = #{monthId}
AND (
<foreach collection="gridIds" item="gridId" separator=" OR ">
FINISH_ORG_IDS LIKE concat('%',#{gridId})
</foreach>
)
GROUP BY GRID_ID
</select>
<delete id="deleteByDate">
DELETE FROM
@ -121,6 +126,7 @@
fact_origin_project_main_daily t1
WHERE
t1.DEL_FLAG = '0'
AND t1.TOPIC_CREATOR_ID != ''
AND t1.CUSTOMER_ID = #{customerId}
AND t1.MONTH_ID = #{monthId}
AND ISNULL(T1.TOPIC_CREATOR_ID)=0
@ -269,6 +275,7 @@
fact_origin_project_main_daily fm
WHERE
fm.PROJECT_STATUS = 'close'
AND fm.GRID_ID != ''
AND fm.CUSTOMER_ID = #{customerId}
AND fm.MONTH_ID = #{monthId}
GROUP BY
@ -281,6 +288,7 @@
fact_origin_project_main_daily fm
WHERE
fm.PROJECT_STATUS = 'close'
AND fm.GRID_ID != ''
AND fm.CUSTOMER_ID = #{customerId}
AND fm.MONTH_ID = #{monthId}
AND fm.IS_RESOLVED = 'resolved'
@ -297,6 +305,7 @@
1=1
AND CUSTOMER_ID = #{customerId}
AND MONTH_ID = #{monthId}
AND GRID_ID != ''
GROUP BY GRID_ID
</select>
<select id="getOrgProjectCount" resultType="com.epmet.dto.extract.result.OrgStatisticsResultDTO">
@ -450,11 +459,12 @@
<!-- 查询项目总数 -->
<select id="selectProjectTotal" resultType="com.epmet.dto.pingyin.result.ProjectTotalResultDTO">
SELECT
GRID_ID,
GRID_ID AS orgId,
COUNT(ID) AS projectTotal
FROM fact_origin_project_main_daily
WHERE DEL_FLAG = 0
AND CUSTOMER_ID = #{customerId}
AND GRID_ID != ''
<if test="dateId != null and dateId != '' ">
AND DATE_ID <![CDATA[ <= ]]> #{dateId}
</if>
@ -467,7 +477,7 @@
<!-- 查询已解决项目数 -->
<select id="selectResolvedNum" resultType="com.epmet.dto.pingyin.result.ResolvedNumResultDTO">
SELECT
GRID_ID,
GRID_ID AS orgId,
COUNT(ID) AS resolvedNum
FROM fact_origin_project_main_daily
WHERE DEL_FLAG = 0
@ -475,6 +485,7 @@
AND DATE_ID <![CDATA[ <= ]]> #{dateId}
AND PROJECT_STATUS = 'closed'
AND IS_RESOLVED = 'resolved'
AND GRID_ID != ''
GROUP BY GRID_ID
</select>
@ -506,6 +517,7 @@
WHERE DEL_FLAG = 0
AND CUSTOMER_ID = #{customerId}
AND MONTH_ID = #{monthId}
AND GRID_ID != ''
GROUP BY GRID_ID
</select>
@ -518,6 +530,7 @@
WHERE DEL_FLAG = 0
AND CUSTOMER_ID = #{customerId}
AND MONTH_ID <![CDATA[ <= ]]> #{monthId}
AND GRID_ID != ''
<if test="status == 'unClosed' ">
AND PROJECT_STATUS != 'closed'
</if>
@ -538,6 +551,7 @@
AND CUSTOMER_ID = #{customerId}
AND MONTH_ID = #{monthId}
AND PROJECT_STATUS = 'closed'
AND GRID_ID != ''
GROUP BY GRID_ID
</select>
@ -574,5 +588,146 @@
</otherwise>
</choose>
</select>
<!--获取难点堵点项目数据-->
<select id="getProjectForDiff" resultType="com.epmet.entity.evaluationindex.extract.FactOriginProjectMainDailyEntity">
SELECT
id, date_id, customer_id, issue_id, topic_id, grid_id, pid, pids, agency_id, project_status, is_resolved,
topic_creator_id, is_party, is_overdue, finish_org_ids
FROM fact_origin_project_main_daily
WHERE
CUSTOMER_ID = #{customerId}
<if test="dateId != null and dateId != ''">
AND DATE_ID = #{dateId,jdbcType=VARCHAR}
</if>
</select>
<select id="getProjectPeriodForDiff" resultType="com.epmet.entity.evaluationindex.extract.FactOriginProjectOrgPeriodDailyEntity">
SELECT
t.ID, t.CUSTOMER_ID, t.PROJECT_ID, t.ORG_ID, t.ORG_TYPE, t.PID,t. PIDS, t.INFORMED_DATE, t.HANDLED_DATE, t.TOTAL_PERIOD, t.PERIOD_TILL_REPLY_FIRSTLY, t.OPERATION, t.IS_RESOLVED
FROM fact_origin_project_org_period_daily t
WHERE CUSTOMER_ID = #{customerId}
</select>
<!-- 组织查询项目总数 -->
<select id="selectProjectTotalByOrg" resultType="com.epmet.dto.pingyin.result.ProjectTotalResultDTO">
SELECT
m.AGENCY_ID AS orgId,
IFNULL(COUNT(m.ID),0) AS projectTotal
FROM fact_origin_project_main_daily m
WHERE m.DEL_FLAG = 0
AND m.GRID_ID = ''
AND (
<foreach collection="orgIds" item="orgId" separator=" OR ">
m.AGENCY_ID = #{orgId}
</foreach>
)
<if test="dateId != null and dateId != '' ">
AND m.DATE_ID <![CDATA[ <= ]]> #{dateId}
</if>
<if test="monthId != null and monthId != '' ">
AND m.MONTH_ID <![CDATA[ <= ]]> #{monthId}
</if>
GROUP BY m.AGENCY_ID
</select>
<!-- 组织查询已解决项目数 -->
<select id="selectResolvedNumByOrg" resultType="com.epmet.dto.pingyin.result.ResolvedNumResultDTO">
SELECT
AGENCY_ID AS orgId,
IFNULL(COUNT(ID),0) AS resolvedNum
FROM fact_origin_project_main_daily
WHERE DEL_FLAG = 0
AND DATE_ID <![CDATA[ <= ]]> #{dateId}
AND PROJECT_STATUS = 'closed'
AND IS_RESOLVED = 'resolved'
AND (
<foreach collection="orgIds" item="orgId" separator=" OR ">
AGENCY_ID = #{orgId}
</foreach>
)
AND GRID_ID = ''
GROUP BY AGENCY_ID
</select>
<!-- 组织 查询 满意度评价次数 -->
<select id="selectEvaluateCountByOrg" resultType="com.epmet.dto.pingyin.result.EvaluateTotalResultDTO">
SELECT
ORG_ID,
IFNULL(COUNT(PROJECT_ID),0) AS evaluateCount
FROM fact_origin_project_log_daily
WHERE DEL_FLAG = 0
AND ORG_TYPE = 'agency'
AND DATE_ID <![CDATA[ <= ]]> #{dateId}
AND (
<foreach collection="orgIds" item="orgId" separator=" OR ">
org_id = #{orgId}
</foreach>
)
AND IS_ACTIVE = 1
AND (
<foreach collection="activeCodes" item="code" separator=" OR ">
ACTION_CODE = #{code}
</foreach>
)
GROUP BY ORG_ID
</select>
<!-- 组织查询本月新增项目数 -->
<select id="selectProjectIncrByOrg" resultType="com.epmet.dto.pingyin.result.ProjectIncrResultDTO">
SELECT
AGENCY_ID AS orgId,
COUNT(ID) AS projectIncr
FROM fact_origin_project_main_daily
WHERE DEL_FLAG = 0
AND (
<foreach collection="orgIds" item="orgId" separator=" OR ">
AGENCY_ID = #{orgId}
</foreach>
)
AND MONTH_ID = #{monthId}
AND GRID_ID = ''
GROUP BY AGENCY_ID
</select>
<!-- 组织根据状态查询项目数 -->
<select id="selectProjectCountByOrg" resultType="com.epmet.dto.pingyin.result.UnClosedTotalResultDTO">
SELECT
AGENCY_ID AS orgId,
COUNT(ID) AS projectCount
FROM fact_origin_project_main_daily
WHERE DEL_FLAG = 0
AND MONTH_ID <![CDATA[ <= ]]> #{monthId}
AND GRID_ID = ''
AND (
<foreach collection="orgIds" item="orgId" separator=" OR ">
AGENCY_ID = #{orgId}
</foreach>
)
<if test="status == 'unClosed' ">
AND PROJECT_STATUS != 'closed'
</if>
<if test="status == 'closed' ">
AND PROJECT_STATUS = 'closed'
</if>
GROUP BY AGENCY_ID
</select>
<!-- 组织本月新增结案项目数 -->
<select id="selectClosedIncrByOrg" resultType="com.epmet.dto.pingyin.result.ClosedIncrResultDTO">
SELECT
AGENCY_ID,
COUNT( ID ) AS closedIncr
FROM fact_origin_project_main_daily
WHERE
DEL_FLAG = '0'
AND (
<foreach collection="orgIds" item="orgId" separator=" OR ">
AGENCY_ID = #{orgId}
</foreach>
)
AND MONTH_ID = #{monthId}
AND PROJECT_STATUS = 'closed'
AND GRID_ID = ''
GROUP BY AGENCY_ID
</select>
</mapper>

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

@ -410,10 +410,13 @@
(
select m.PARENT_AREA_CODE from screen_customer_agency m
where m.AGENCY_ID=#{agencyId}
and m.DEL_FLAG = '0'
)
and sca.DEL_FLAG = '0'
</select>
<select id="selectAgencyId" resultType="java.lang.String">
select sca.AGENCY_ID from screen_customer_agency sca
where sca.AREA_CODE= #{areaCode}
where sca.DEL_FLAG = '0'
and sca.AREA_CODE= #{areaCode}
</select>
</mapper>

28
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectOrgDailyDao.xml

@ -112,11 +112,12 @@
<foreach collection="agencyInfos" item="a" separator=" UNION ">
SELECT
#{a.areaCode} AS areaCode,
SUM(PROJECT_TOTAL) AS projectTotal,
SUM(RESOLVED_NUM) AS resolvedNum,
SUM(EVALUATE_TOTAL) AS evaluateTotal ,
SUM(GOOD_TOTAL) AS goodTotal,
SUM(BAD_TOTAL) AS badTotal
#{a.orgId} AS orgId,
IFNULL(SUM(PROJECT_TOTAL),0) AS projectTotal,
IFNULL(SUM(RESOLVED_NUM),0) AS resolvedNum,
IFNULL(SUM(EVALUATE_TOTAL),0) AS evaluateTotal ,
IFNULL(SUM(GOOD_TOTAL),0) AS goodTotal,
IFNULL(SUM(BAD_TOTAL),0) AS badTotal
FROM screen_project_grid_daily g
LEFT JOIN screen_customer_grid cg ON cg.GRID_ID = g.GRID_ID
WHERE g.DEL_FLAG = 0
@ -124,6 +125,23 @@
AND g.DATE_ID <![CDATA[ = ]]> #{dateId}
</foreach>
</select>
<select id="selectOrgProjectByAgency" resultType="com.epmet.dto.pingyin.result.ProjectOrgDailyResultDTO">
<foreach collection="agencyInfos" item="a" separator=" UNION ">
SELECT
#{a.areaCode} AS areaCode,
#{a.orgId} AS orgId,
IFNULL(SUM(PROJECT_TOTAL),0) AS projectTotal,
IFNULL(SUM(RESOLVED_NUM),0) AS resolvedNum,
IFNULL(SUM(EVALUATE_TOTAL),0) AS evaluateTotal ,
IFNULL(SUM(GOOD_TOTAL),0) AS goodTotal,
IFNULL(SUM(BAD_TOTAL),0) AS badTotal
FROM screen_project_grid_daily g
LEFT JOIN screen_customer_grid cg ON cg.GRID_ID = g.GRID_ID
WHERE g.DEL_FLAG = 0
AND cg.PARENT_AGENCY_ID = #{a.orgId}
AND g.DATE_ID <![CDATA[ = ]]> #{dateId}
</foreach>
</select>
</mapper>

40
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectQuantityOrgMonthlyDao.xml

@ -101,8 +101,8 @@
<foreach collection="agencyInfos" item="a" separator=" UNION ">
SELECT
#{a.areaCode} AS areaCode,
SUM(g.PROJECT_INCR) AS projectIncr,
SUM(g.CLOSED_INCR) AS closedIncr
IFNULL(SUM(g.PROJECT_INCR),0) AS projectIncr,
IFNULL(SUM(g.CLOSED_INCR),0) AS closedIncr
FROM screen_project_quantity_grid_monthly g
LEFT JOIN screen_customer_grid cg ON cg.GRID_ID = g.GRID_ID
WHERE g.DEL_FLAG = 0
@ -116,9 +116,9 @@
<foreach collection="agencyInfos" item="a" separator=" UNION ">
SELECT
#{a.areaCode} AS areaCode,
SUM(g.PROJECT_TOTAL) AS projectTotal,
SUM(g.UN_CLOSED_TOTAL) AS unClosedTotal,
SUM(g.CLOSED_TOTAL) AS closedTotal
IFNULL(SUM(g.PROJECT_TOTAL),0) AS projectTotal,
IFNULL(SUM(g.UN_CLOSED_TOTAL),0) AS unClosedTotal,
IFNULL(SUM(g.CLOSED_TOTAL),0) AS closedTotal
FROM screen_project_quantity_grid_monthly g
LEFT JOIN screen_customer_grid cg ON cg.GRID_ID = g.GRID_ID
WHERE g.DEL_FLAG = 0
@ -127,5 +127,35 @@
</foreach>
</select>
<select id="selectQuantityOrgMonthlyByAgency" resultType="com.epmet.dto.pingyin.result.ProjectOrgMonthlyResultDTO">
<foreach collection="agencyInfos" item="a" separator=" UNION ">
SELECT
#{a.areaCode} AS areaCode,
IFNULL(SUM(g.PROJECT_TOTAL),0) AS projectTotal,
IFNULL(SUM(g.UN_CLOSED_TOTAL),0) AS unClosedTotal,
IFNULL(SUM(g.CLOSED_TOTAL),0) AS closedTotal
FROM screen_project_quantity_grid_monthly g
LEFT JOIN screen_customer_grid cg ON cg.GRID_ID = g.GRID_ID
WHERE g.DEL_FLAG = 0
AND cg.PARENT_AGENCY_ID = #{a.orgId}
AND g.MONTH_ID <![CDATA[ = ]]> #{monthId}
</foreach>
</select>
<select id="selectQuantityGrandOrgMonthlyByAgency" resultType="com.epmet.dto.pingyin.result.ProjectOrgMonthlyResultDTO">
<foreach collection="agencyInfos" item="a" separator=" UNION ">
SELECT
#{a.areaCode} AS areaCode,
IFNULL(SUM(g.PROJECT_TOTAL),0) AS projectTotal,
IFNULL(SUM(g.UN_CLOSED_TOTAL),0) AS unClosedTotal,
IFNULL(SUM(g.CLOSED_TOTAL),0) AS closedTotal
FROM screen_project_quantity_grid_monthly g
LEFT JOIN screen_customer_grid cg ON cg.GRID_ID = g.GRID_ID
WHERE g.DEL_FLAG = 0
AND cg.PARENT_AGENCY_ID = #{a.orgId}
AND g.MONTH_ID <![CDATA[ = ]]> #{monthId}
</foreach>
</select>
</mapper>

7
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/issue/IssueProjectCategoryDictDao.xml

@ -48,4 +48,11 @@
and customer_id = #{customerId}
and id = #{id}
</select>
<select id="getAllByCId" resultType="com.epmet.entity.issue.IssueProjectCategoryDictEntity">
SELECT
ID, CUSTOMER_ID, PID, PIDS, PARENT_CATEGORY_CODE, CATEGORY_CODE, CATEGORY_NAME
FROM issue_project_category_dict
where del_flag = '0'
and customer_id = #{customerId}
</select>
</mapper>

6
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/project/ProjectDao.xml

@ -24,7 +24,6 @@
FROM project
WHERE
DEL_FLAG = '0'
AND ORIGIN = 'issue'
AND STATUS = 'closed'
AND CUSTOMER_ID = #{customerId}
AND DATE_FORMAT(UPDATED_TIME, '%Y-%m-%d') <![CDATA[ <= ]]> #{date}
@ -41,7 +40,6 @@
FROM project
WHERE
DEL_FLAG = '0'
AND ORIGIN = 'issue'
AND STATUS = 'closed'
AND CUSTOMER_ID = #{customerId}
AND DATE_FORMAT(UPDATED_TIME, '%Y-%m-%d') = #{date}
@ -81,7 +79,10 @@
ID,
CUSTOMER_ID,
AGENCY_ID,
ORIGIN,
ORIGIN_ID,
TITLE,
BACK_GROUND,
STATUS,
CLOSED_STATUS,
ORG_ID_PATH,
@ -90,7 +91,6 @@
FROM project
WHERE
DEL_FLAG = '0'
AND ORIGIN = 'issue'
AND CUSTOMER_ID = #{customerId}
<if test="date != null and date.trim() != ''">
AND DATE_FORMAT(CREATED_TIME, '%Y%m%d') = #{date}

5
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/DimAgencyDao.xml

@ -129,7 +129,8 @@
CUSTOMER_ID,
PID,
AGENCY_NAME,
LEVEL
LEVEL,
ALL_PARENT_NAME
FROM
dim_agency
WHERE
@ -332,4 +333,4 @@
AND LEVEL = #{level}
</select>
</mapper>
</mapper>

37
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/topic/TopicDao.xml

@ -15,6 +15,15 @@
<id property="incrFlag" column="incrFlag" />
</collection>
</resultMap>
<!--获取话题内容及图片信息-->
<resultMap id="topicImgResultMap" type="com.epmet.dto.topic.result.ResiTopicAndImgResultDTO">
<id property="topicId" column="ID" />
<result property="topicContent" column="TOPIC_CONTENT" />
<collection property="topicImgList" ofType="com.epmet.dto.topic.TopicAttachmentDTO">
<id property="sort" column="SORT"/>
<id property="attachmentUrl" column="ATTACHMENT_URL" />
</collection>
</resultMap>
<!-- 将组按照网格Id排序,并取出组Id、话题Id等相关信息,incrFlag代表是否是在当日创建 -->
<select id="selectGroupOrderByGrid" resultMap="groupTopic">
@ -272,4 +281,30 @@
TOPIC_ID = #{project.topicId}
</foreach>
</select>
</mapper>
<select id="getTopicAttachment" resultType="com.epmet.dto.topic.TopicAttachmentDTO">
SELECT
ATTACHMENT_URL AS eventImgUrl,
SORT
FROM
`resi_topic_attachment`
WHERE
del_flag = '0'
<!-- AND ATTACHMENT_TYPE = #{attachmentType}-->
AND ATTACHMENT_TYPE = 'image'
and TOPIC_ID = #{topicId}
</select>
<select id="getTopicAndImgs" resultMap="topicImgResultMap">
SELECT
t.ID,
t.TOPIC_CONTENT,
a.ATTACHMENT_URL,
a.SORT
from resi_topic t
LEFT JOIN resi_topic_attachment a ON t.ID = a.TOPIC_ID
WHERE
t.del_flag = '0'
AND ATTACHMENT_TYPE = 'image'
and TOPIC_ID = #{topicId}
</select>
</mapper>

32
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/CategoryTagListFormDTO.java

@ -0,0 +1,32 @@
package com.epmet.dto.form;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 根据分类标签Id集合查询对应数据信息--接口入参
* @Author sun
*/
@Data
public class CategoryTagListFormDTO implements Serializable {
private static final long serialVersionUID = 2599592072265715951L;
/**
* 客户ID
*/
private String customerId;
/**
* 分类Id
*/
private List<String> categoryIdList;
/**
* 标签Id
*/
private List<String> tagIdList;
}

28
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/CategoryTagResultDTO.java

@ -0,0 +1,28 @@
package com.epmet.dto.result;
import com.epmet.dto.IssueProjectCategoryDictDTO;
import com.epmet.dto.IssueProjectTagDictDTO;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Description 根据分类标签Id集合查询对应数据信息--接口返参
* @Author sun
*/
@Data
public class CategoryTagResultDTO implements Serializable {
private static final long serialVersionUID = 5957826616179876849L;
/**
* 分类对象
*/
private List<IssueProjectCategoryDictDTO> categoryList;
/**
* 标签对象
*/
private List<IssueProjectTagDictDTO> tagList;
}

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

@ -222,7 +222,7 @@ public interface GovIssueOpenFeignClient {
* @author sun
**/
@PostMapping(value = "/gov/issue/issueprojectcategorydict/getprojectandcategoryinfo")
Result<ProjectIssueCategoryResultDTO> getProjectAndCategoryInfo(ProjectSaveCategoryFormDTO formDTO);
Result<ProjectIssueCategoryResultDTO> getProjectAndCategoryInfo(@RequestBody ProjectSaveCategoryFormDTO formDTO);
/**
* @Description 更新标签热度 数据库/缓存
@ -293,4 +293,12 @@ public interface GovIssueOpenFeignClient {
@PostMapping(value = "/gov/issue/manage/votingissuedetail")
Result<GovIssueDetailResultDTO> votingissuedetail(@RequestBody IssueDetailFormDTO issueDetail);
/**
* @param formDTO
* @Description 根据分类标签Id集合查询对应数据信息
* @Author sun
**/
@PostMapping(value = "/gov/issue/issueprojectcategorydict/getcategorytaglist")
Result<CategoryTagResultDTO> getCategoryTagList(@RequestBody CategoryTagListFormDTO formDTO);
}

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

@ -251,4 +251,9 @@ public class GovIssueOpenFeignClientFallBack implements GovIssueOpenFeignClient
public Result<GovIssueDetailResultDTO> votingissuedetail(IssueDetailFormDTO issueDetail) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "votingissuedetail", issueDetail);
}
@Override
public Result<CategoryTagResultDTO> getCategoryTagList(CategoryTagListFormDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "getCategoryTagList", formDTO);
}
}

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

@ -32,6 +32,7 @@ import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.dto.IssueProjectCategoryDictDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.CategoryTagResultDTO;
import com.epmet.dto.result.CustomerCategoryListResultDTO;
import com.epmet.dto.result.CustomerCategoryResultDTO;
import com.epmet.dto.result.ProjectIssueCategoryResultDTO;
@ -256,5 +257,16 @@ public class IssueProjectCategoryDictController {
}
return new Result<List<CustomerCategoryResultDTO>>().ok(issueProjectCategoryDictService.customerCategoryList(map.get(FieldConstant.CUSTOMER_ID_HUMP)));
}
/**
* @param formDTO
* @Description 根据分类标签Id集合查询对应数据信息
* @Author sun
**/
@PostMapping("getcategorytaglist")
public Result<CategoryTagResultDTO> getCategoryTagList(@RequestBody CategoryTagListFormDTO formDTO) {
return new Result<CategoryTagResultDTO>().ok(issueProjectCategoryDictService.getCategoryTagList(formDTO));
}
}

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

@ -167,4 +167,10 @@ public interface IssueProjectCategoryDictDao extends BaseDao<IssueProjectCategor
* @Date 09:53 2021-03-30
**/
int updateIssueProjectCategoryDict(IssueProjectCategoryDictEntity entity);
/**
* @Description 批量查询客户分类信息
* @Author sun
**/
List<IssueProjectCategoryDictDTO> getCategoryList(@Param("customerId") String customerId, @Param("categoryIdList") List<String> categoryIdList);
}

7
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueProjectTagDictDao.java

@ -18,6 +18,7 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.IssueProjectTagDictDTO;
import com.epmet.dto.form.IsDisableCategoryFormDTO;
import com.epmet.dto.form.IssueTagFormDTO;
import com.epmet.dto.result.IssueCategoryTagResultDTO;
@ -140,4 +141,10 @@ public interface IssueProjectTagDictDao extends BaseDao<IssueProjectTagDictEntit
* @author sun
*/
int updateCustomerTag(IsDisableCategoryFormDTO formDTO);
/**
* @Description 批量查询客户分类信息
* @Author sun
**/
List<IssueProjectTagDictDTO> getTagList(@Param("customerId") String customerId, @Param("tagIdList") List<String> tagIdList);
}

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

@ -22,6 +22,7 @@ import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.IssueProjectCategoryDictDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.CategoryTagResultDTO;
import com.epmet.dto.result.CustomerCategoryListResultDTO;
import com.epmet.dto.result.CustomerCategoryResultDTO;
import com.epmet.dto.result.ProjectIssueCategoryResultDTO;
@ -208,4 +209,11 @@ public interface IssueProjectCategoryDictService extends BaseService<IssueProjec
* @Date 16:30 2021-03-23
**/
List<CustomerCategoryResultDTO> customerCategoryList(String customerId);
/**
* @param formDTO
* @Description 根据分类标签Id集合查询对应数据信息
* @Author sun
**/
CategoryTagResultDTO getCategoryTagList(CategoryTagListFormDTO formDTO);
}

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

@ -31,10 +31,7 @@ import com.epmet.dao.IssueCategoryDao;
import com.epmet.dao.IssueProjectCategoryDictDao;
import com.epmet.dao.IssueProjectRelationDao;
import com.epmet.dao.IssueProjectTagDictDao;
import com.epmet.dto.IssueCategoryDTO;
import com.epmet.dto.IssueDTO;
import com.epmet.dto.IssueProjectCategoryDictDTO;
import com.epmet.dto.ProjectCategoryDTO;
import com.epmet.dto.*;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.entity.IssueProjectCategoryDictEntity;
@ -168,12 +165,15 @@ public class IssueProjectCategoryDictServiceImpl extends BaseServiceImpl<IssuePr
@Override
public ProjectIssueCategoryResultDTO getProjectAndCategoryInfo(ProjectSaveCategoryFormDTO formDTO) {
ProjectIssueCategoryResultDTO resultDTO = new ProjectIssueCategoryResultDTO();
//1.根据项目id查询对应的议题基本信息
IssueDTO dto = issueProjectRelationDao.selectProjectToIssue(formDTO.getProjectId());
if (null == dto) {
throw new RenException(String.format("保存项目分类信息,获取项目对应的议题基本信息失败,projectId->%s", formDTO.getProjectId()));
ProjectIssueDTOResultDTO issueDTO = new ProjectIssueDTOResultDTO();
if("issue".equals(formDTO.getOrigin())){
//1.根据项目id查询对应的议题基本信息
IssueDTO dto = issueProjectRelationDao.selectProjectToIssue(formDTO.getProjectId());
if (null == dto) {
throw new RenException(String.format("保存项目分类信息,获取项目对应的议题基本信息失败,projectId->%s", formDTO.getProjectId()));
}
issueDTO = ConvertUtils.sourceToTarget(dto,ProjectIssueDTOResultDTO.class);
}
ProjectIssueDTOResultDTO issueDTO = ConvertUtils.sourceToTarget(dto,ProjectIssueDTOResultDTO.class);
resultDTO.setIssueDTO(issueDTO);
//2.批量查询分类信息
List<String> categoryIdList = formDTO.getCategoryList().stream().map(SaveIssueCategoryFormDTO::getId).collect(Collectors.toList());
@ -450,4 +450,26 @@ public class IssueProjectCategoryDictServiceImpl extends BaseServiceImpl<IssuePr
}
return parentCategoryDict;
}
/**
* @param formDTO
* @Description 根据分类标签Id集合查询对应数据信息
* @Author sun
**/
@Override
public CategoryTagResultDTO getCategoryTagList(CategoryTagListFormDTO formDTO) {
CategoryTagResultDTO resultDTO = new CategoryTagResultDTO();
//1.批量查询客户分类信息
if (!org.springframework.util.CollectionUtils.isEmpty(formDTO.getCategoryIdList())) {
List<IssueProjectCategoryDictDTO> categoryList = baseDao.getCategoryList(formDTO.getCustomerId(), formDTO.getCategoryIdList());
resultDTO.setCategoryList(categoryList);
}
//2.批量查询客户标签信息
if (!org.springframework.util.CollectionUtils.isEmpty(formDTO.getTagIdList())) {
List<IssueProjectTagDictDTO> tagList = issueProjectTagDictDao.getTagList(formDTO.getCustomerId(), formDTO.getTagIdList());
resultDTO.setTagList(tagList);
}
return resultDTO;
}
}

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

@ -213,6 +213,23 @@
ORDER BY SORT, CATEGORY_CODE ASC
</select>
<select id="getCategoryList" resultType="com.epmet.dto.IssueProjectCategoryDictDTO">
SELECT
*
FROM
issue_project_category_dict
WHERE
del_flag = '0'
AND customer_id = #{customerId}
<if test="categoryIdList != null and categoryIdList.size() > 0">
<foreach collection="categoryIdList" item="id" open="AND( " separator=" OR " index="index" close=")">
id = #{id}
</foreach>
</if>
ORDER BY
sort ASC
</select>
<update id="updateIssueProjectCategoryDict">
UPDATE issue_project_category_dict
SET

15
epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectTagDictDao.xml

@ -203,6 +203,21 @@
</if>
</select>
<select id="getTagList" resultType="com.epmet.dto.IssueProjectTagDictDTO">
SELECT
*
FROM
issue_project_tag_dict
WHERE
del_flag = '0'
AND customer_id = #{customerId}
<if test="null != tagIdList and tagIdList.size() > 0">
<foreach collection="tagIdList" item="tagId" open=" AND (" separator=" OR " close=" )">
id = #{tagId}
</foreach>
</if>
</select>
<update id="updateCustomerTag">
UPDATE issue_project_tag_dict
SET is_disable = #{type},

8
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/StaffListResultDTO.java

@ -12,6 +12,10 @@ import java.io.Serializable;
public class StaffListResultDTO implements Serializable {
private static final long serialVersionUID = 5957826616179876849L;
/**
* 客户Id
*/
private String customerId="";
/**
* 人员Id
*/
@ -32,5 +36,9 @@ public class StaffListResultDTO implements Serializable {
* 角色名称(机关领导部门领导网格长)
*/
private String roleName="";
/**
* 工作人员手机号
*/
private String mobile="";
}

9
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java

@ -324,4 +324,13 @@ public interface GovOrgOpenFeignClient {
**/
@GetMapping("/gov/org/customergrid/getGridIdsInCommunity/{gridId}")
Result<List<String>> getGridIdsInCommunity(@PathVariable("gridId") String gridId);
/**
* @param agencyId
* @return
* @Author sun
* @Description 根据当前组织ID查询上两级组织当前组织和所有下级(迭代)组织
**/
@PostMapping(value = "/gov/org/customeragency/getprocessorlist/{agencyId}")
Result<ProcessorListResultDTO> getProcessorList(@PathVariable("agencyId") String agencyId);
}

5
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java

@ -187,4 +187,9 @@ public class GovOrgOpenFeignClientFallback implements GovOrgOpenFeignClient {
public Result<List<String>> getGridIdsInCommunity(String gridId) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "getGridIdsInCommunity", gridId);
}
@Override
public Result<ProcessorListResultDTO> getProcessorList(String agencyId) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "getProcessorList", agencyId);
}
}

24
epmet-module/gov-org/gov-org-server/src/main/resources/db/migration/V0.0.4__area_code.sql

@ -0,0 +1,24 @@
drop table if EXISTS customer_org_parameter;
CREATE TABLE `customer_org_parameter` (
`ID` varchar(32) NOT NULL COMMENT '主键ID',
`CUSTOMER_ID` varchar(32) NOT NULL COMMENT '客户ID',
`PARAMETER_KEY` varchar(32) NOT NULL COMMENT '参数键 eg:area_code_switch',
`PARAMETER_NAME` varchar(32) NOT NULL COMMENT '参数名 eg:是否开启区域编码',
`PARAMETER_VALUE` varchar(32) NOT NULL COMMENT '参数值 eg:开启:open;关闭:closed ',
`DESCRIPTION` varchar(512) NOT NULL COMMENT '参数说明 eg:open:当前客户新增组织需要选择areaCode;closed: 无需选择区域编码',
`DEL_FLAG` varchar(1) NOT NULL DEFAULT '0' COMMENT '删除标志 0:未删除,1:已删除',
`REVISION` int(11) NOT NULL DEFAULT '0' COMMENT '乐观锁',
`CREATED_BY` varchar(32) NOT NULL COMMENT '创建人',
`CREATED_TIME` datetime NOT NULL COMMENT '创建时间',
`UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人',
`UPDATED_TIME` datetime NOT NULL COMMENT '更新时间',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='客户组织相关参数表';
alter table customer_agency MODIFY COLUMN PROVINCE VARCHAR(32) COMMENT '区域编码字典中的【省份】名称';
alter table customer_agency MODIFY COLUMN CITY VARCHAR(32) COMMENT '区域编码字典中的【城市】名称';
alter table customer_agency MODIFY COLUMN DISTRICT VARCHAR(64) COMMENT '区域编码字典中的【区县】名称';
alter table customer_agency add COLUMN STREET varchar(64) comment '区域编码字典中的【街道】名称0409' AFTER DISTRICT;
alter table customer_agency add COLUMN COMMUNITY varchar(64) comment '区域编码字典中的【社区】名称0409'AFTER STREET;
alter table customer_department add COLUMN AREA_CODE VARCHAR(64) comment '部门所属的行政地区编码:实际就是所属组织的地区编码' AFTER TOTAL_USER;

7
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/ProjectDTO.java

@ -51,7 +51,7 @@ public class ProjectDTO implements Serializable {
private String agencyId;
/**
* 来源议题issue
* 来源议题issue 项目立项:agency
*/
private String origin;
@ -65,6 +65,11 @@ public class ProjectDTO implements Serializable {
*/
private String title;
/**
* 项目背景
*/
private String backGround;
/**
* 状态:待处理 pending结案closed
*/

24
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/CategoryOrTagFormDTO.java

@ -0,0 +1,24 @@
package com.epmet.dto.form;
import lombok.Data;
import java.io.Serializable;
/**
* 项目立项-分类标签信息-接口入参
* @Author sun
*/
@Data
public class CategoryOrTagFormDTO implements Serializable {
private static final long serialVersionUID = 2599592072265715951L;
/**
* 分类Id
*/
private String id;
/**
* 分类名称
*/
private String name;
}

64
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ProjectApprovalFormDTO.java

@ -0,0 +1,64 @@
package com.epmet.dto.form;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.List;
/**
* @Description 项目立项-接口入参
* @Author sun
*/
@Data
public class ProjectApprovalFormDTO implements Serializable {
private static final long serialVersionUID = 4859779755214502427L;
public interface ApprovalCategory{}
@NotBlank(message = "项目标题不能为空",groups = {ApprovalCategory.class})
@Length(max=20,message = "项目标题不能超过20位")
private String title;
@NotBlank(message = "项目背景不能为空",groups = {ApprovalCategory.class})
@Length(max=1000,message = "项目背景不能超过1000位")
private String backGround;
@NotBlank(message = "项目方案不能为空",groups = {ApprovalCategory.class})
@Length(max=1000,message = "项目方案不能超过1000位")
private String publicReply;
@NotBlank(message = "内部备注不能为空",groups = {ApprovalCategory.class})
@Length(max=1000,message = "内部备注不能超过1000位")
private String internalRemark;
/**
* 吹哨勾选的工作人员信息集合,不可为空
*/
@Valid
private List<TickStaffFormDTO> staffList;
/**
* 公开答复对应文件集合
*/
private List<FileDTO> publicFile;
/**
* 内部备注对应文件集合
*/
private List<FileDTO> internalFile;
/**
* 项目所选分类集合不可为空
*/
@Valid
private List<CategoryOrTagFormDTO> categoryList;
/**
* 项目所选标签集合
*/
private List<CategoryOrTagFormDTO> tagList;
private String customerId;
private String app;
private String client;
private String userId;
}

6
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ProjectSaveCategoryFormDTO.java

@ -23,11 +23,15 @@ public class ProjectSaveCategoryFormDTO implements Serializable {
* 议题分类集合
*/
private List<SaveIssueCategoryFormDTO> categoryList;
/**
* 客户Id
*/
private String customerId;
/**
* 来源议题issue 项目立项:agency
*/
private String origin;
public interface SaveCategory{}

4
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectDetailResultDTO.java

@ -31,6 +31,10 @@ public class ProjectDetailResultDTO implements Serializable {
* 项目标题
*/
private String projectTitle;
/**
* 项目背景
*/
private String backGround;
/**
* 项目方案
*/

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

@ -10,6 +10,10 @@ public interface ProjectConstant {
* 项目来源-议题
*/
String ISSUE = "issue";
/**
* 项目来源-组织(项目立项)
*/
String AGENCY = "agency";
/**
* 状态-待处理
*/
@ -67,6 +71,10 @@ public interface ProjectConstant {
* 处理名-退回
*/
String OPERATION_RESPONSES_NAME = "处理/响应";
/**
* 处理名-项目立项
*/
String OPERATION_PROJECT_APPROVAL = "项目立项";
/**
* 是否处理-未处理

27
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectTraceController.java

@ -335,5 +335,32 @@ public class ProjectTraceController {
return new Result();
}
/**
* @param tokenDTO
* @Author sun
* @Description 项目立项组织树查询--查询当前工作人员所属组织上两级组织所有下级组织
**/
@PostMapping("approvalagencylist")
public Result<ProcessorListResultDTO> approvalAgencyList(@LoginUser TokenDto tokenDTO) {
return new Result<ProcessorListResultDTO>().ok(projectTraceService.approvalAgencyList(tokenDTO));
}
/**
* @param tokenDTO formDTO
* @Author sun
* @Description 项目立项
**/
@PostMapping("projectapproval")
@RequirePermission(requirePermission = RequirePermissionEnum.WORK_PROJECT_APPROVAL)
public Result projectApproval(@LoginUser TokenDto tokenDTO, @RequestBody ProjectApprovalFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO,ProjectApprovalFormDTO.ApprovalCategory.class);
formDTO.setCustomerId(tokenDTO.getCustomerId());
formDTO.setApp(tokenDTO.getApp());
formDTO.setClient(tokenDTO.getClient());
formDTO.setUserId(tokenDTO.getUserId());
projectTraceService.projectApproval(formDTO);
return new Result();
}
}

7
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ProjectEntity.java

@ -49,7 +49,7 @@ public class ProjectEntity extends BaseEpmetEntity {
private String agencyId;
/**
* 来源议题issue
* 来源议题issue 项目立项:agency
*/
private String origin;
@ -63,6 +63,11 @@ public class ProjectEntity extends BaseEpmetEntity {
*/
private String title;
/**
* 项目背景
*/
private String backGround;
/**
* 状态:待处理 pending结案closed
*/

14
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectTraceService.java

@ -159,4 +159,18 @@ public interface ProjectTraceService {
* @return void
*/
void sendTo(TokenDto tokenDto, SendToFormDTO formDTO);
/**
* @param tokenDTO
* @Author sun
* @Description 项目立项组织树查询--查询当前工作人员所属组织上两级组织所有下级组织
**/
ProcessorListResultDTO approvalAgencyList(TokenDto tokenDTO);
/**
* @param formDTO
* @Author sun
* @Description 项目立项
**/
void projectApproval(ProjectApprovalFormDTO formDTO);
}

22
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectCategoryServiceImpl.java

@ -27,6 +27,7 @@ import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dao.ProjectCategoryDao;
import com.epmet.dao.ProjectDao;
import com.epmet.dao.ProjectTagsDao;
import com.epmet.dto.ProjectCategoryDTO;
import com.epmet.dto.form.DelCategoryFormDTO;
@ -34,6 +35,7 @@ import com.epmet.dto.form.ProjectCategoryTagListFormDTO;
import com.epmet.dto.form.ProjectSaveCategoryFormDTO;
import com.epmet.dto.result.*;
import com.epmet.entity.ProjectCategoryEntity;
import com.epmet.entity.ProjectEntity;
import com.epmet.feign.GovIssueOpenFeignClient;
import com.epmet.redis.ProjectCategoryRedis;
import com.epmet.service.ProjectCategoryService;
@ -62,6 +64,8 @@ public class ProjectCategoryServiceImpl extends BaseServiceImpl<ProjectCategoryD
private ProjectTagsDao projectTagsDao;
@Autowired
private GovIssueOpenFeignClient govIssueOpenFeignClient;
@Autowired
private ProjectDao projectDao;
@Override
public PageData<ProjectCategoryDTO> page(Map<String, Object> params) {
@ -157,6 +161,14 @@ public class ProjectCategoryServiceImpl extends BaseServiceImpl<ProjectCategoryD
baseDao.delByProjectId(formDTO.getProjectId());
return;
}
//2021.4.14 sun 兼容项目立项的项目保存分类逻辑 这类项目来源不属于议题
ProjectEntity projectEntity = projectDao.selectById(formDTO.getProjectId());
if (null == projectEntity) {
throw new RenException(String.format("保存项目分类,获取项目信息失败,projiectId->%s", formDTO.getProjectId()));
}
formDTO.setOrigin(projectEntity.getOrigin());
//end
//1.查询项目所属客户和所属网格信息以及分类对应的分类信息
Result<ProjectIssueCategoryResultDTO> result = govIssueOpenFeignClient.getProjectAndCategoryInfo(formDTO);
if (!result.success()) {
@ -165,12 +177,12 @@ public class ProjectCategoryServiceImpl extends BaseServiceImpl<ProjectCategoryD
ProjectIssueDTOResultDTO issue = result.getData().getIssueDTO();
List<ProjectCategoryDTOResultDTO> categoryList = result.getData().getCategoryList();
//2.汇总批量新增数据
//2.汇总批量新增项目分类数据
List<ProjectCategoryEntity> entityList = new ArrayList<>();
formDTO.getCategoryList().forEach(ca -> {
ProjectCategoryEntity entity = new ProjectCategoryEntity();
entity.setCustomerId(issue.getCustomerId());
entity.setGridId(issue.getGridId());
entity.setCustomerId(formDTO.getCustomerId());
if("issue".equals(formDTO.getOrigin())){ entity.setGridId(issue.getGridId()); }
entity.setProjectId(formDTO.getProjectId());
entity.setCategoryId(ca.getId());
categoryList.forEach(cl -> {
@ -182,10 +194,10 @@ public class ProjectCategoryServiceImpl extends BaseServiceImpl<ProjectCategoryD
entityList.add(entity);
});
//3.根据议题Id删除可能存在的分类信息
//3.根据项目Id删除可能存在的分类信息
baseDao.delByProjectId(formDTO.getProjectId());
//4.批量保存议题分类信息
//4.批量保存项目分类信息
if (!insertBatch(entityList)) {
throw new RenException(String.format("项目分类信息保存失败"));
}

387
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java

@ -1,26 +1,44 @@
package com.epmet.service.impl;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.scan.param.TextScanParamDTO;
import com.epmet.commons.tools.scan.param.TextTaskDTO;
import com.epmet.commons.tools.scan.result.SyncScanResult;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.ScanContentUtils;
import com.epmet.constant.ProjectConstant;
import com.epmet.constant.ReadFlagConstant;
import com.epmet.constant.SmsTemplateConstant;
import com.epmet.constant.UserMessageConstant;
import com.epmet.dao.ProjectOrgRelationDao;
import com.epmet.dao.ProjectProcessAttachmentDao;
import com.epmet.dao.ProjectProcessDao;
import com.epmet.dto.CustomerStaffDTO;
import com.epmet.dto.IssueProjectCategoryDictDTO;
import com.epmet.dto.IssueProjectTagDictDTO;
import com.epmet.dto.ProjectStaffDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.entity.ProjectStaffEntity;
import com.epmet.feign.GovOrgFeignClient;
import com.epmet.entity.*;
import com.epmet.feign.*;
import com.epmet.service.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
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 org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -30,7 +48,8 @@ import java.util.stream.Collectors;
*/
@Service
@Slf4j
public class ProjectTraceServiceImpl implements ProjectTraceService {
public class ProjectTraceServiceImpl<ProjectTagService> implements ProjectTraceService {
private Logger logger = LogManager.getLogger(ProjectTraceServiceImpl.class);
@Autowired
private ProjectService projectService;
@Autowired
@ -45,6 +64,26 @@ public class ProjectTraceServiceImpl implements ProjectTraceService {
private ProjectProcessAttachmentDao attachmentDao;
@Autowired
private ProjectSubProcessService projectSubProcessService;
@Autowired
private EpmetUserOpenFeignClient epmetUserOpenFeignClient;
@Autowired
private GovOrgOpenFeignClient govOrgOpenFeignClient;
@Value("${openapi.scan.server.url}")
private String scanApiUrl;
@Value("${openapi.scan.method.textSyncScan}")
private String textSyncScanMethod;
@Autowired
private ProjectOrgRelationDao relationDao;
@Autowired
private ProjectCategoryService projectCategoryService;
@Autowired
private ProjectTagsService projectTagsService;
@Autowired
private GovIssueOpenFeignClient govIssueOpenFeignClient;
@Autowired
private EpmetUserFeignClient epmetUserFeignClient;
@Autowired
private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient;
@Override
public List<PendProjectListResultDTO> getPendProjectList(TokenDto tokenDto, ProjectListFromDTO fromDTO) {
@ -213,4 +252,340 @@ public class ProjectTraceServiceImpl implements ProjectTraceService {
projectService.sendTo(formDTO);
}
/**
* @param tokenDTO
* @Author sun
* @Description 项目立项组织树查询--查询当前工作人员所属组织上两级组织所有下级组织
**/
@Override
public ProcessorListResultDTO approvalAgencyList(TokenDto tokenDTO) {
//1.获取token用户所属组织信息
LoginUserDetailsFormDTO dto = new LoginUserDetailsFormDTO();
dto.setApp(tokenDTO.getApp());
dto.setClient(tokenDTO.getClient());
dto.setUserId(tokenDTO.getUserId());
Result<LoginUserDetailsResultDTO> resultDto = epmetUserOpenFeignClient.getLoginUserDetails(dto);
if (!resultDto.success() || StringUtils.isEmpty(resultDto.getData().getAgencyId())) {
throw new RenException(String.format("调用user服务查询用户数据失败,userId->", tokenDTO.getUserId()));
}
//2.根据组织Id查询当前组织上两级组织、本级组织、所有下级组织信息
Result<ProcessorListResultDTO> result = govOrgOpenFeignClient.getProcessorList(resultDto.getData().getAgencyId());
if (!resultDto.success()) {
throw new RenException(String.format("调用org服务查询用户数据失败,userId->", tokenDTO.getUserId()));
}
return result.getData();
}
/**
* @param formDTO
* @Author sun
* @Description 项目立项
* 内容安全校验项目|节点|人员|附件|分类|标签|统计业务数据新增站内信|微信|短信消息推送
**/
@Override
@Transactional(rollbackFor = Exception.class)
public void projectApproval(ProjectApprovalFormDTO formDTO) {
List<TickStaffFormDTO> staffList = formDTO.getStaffList();
//1.文字内容安全校验
List<String> list = new ArrayList<>();
list.add(formDTO.getTitle());list.add(formDTO.getBackGround());list.add(formDTO.getPublicReply());list.add(formDTO.getInternalRemark());
safetyCheck(list);
//2.数据准备,查询需要用到的数据
//2-1.获取token用户所属组织信息
LoginUserDetailsFormDTO dto = new LoginUserDetailsFormDTO();
dto.setApp(formDTO.getApp());
dto.setClient(formDTO.getClient());
dto.setUserId(formDTO.getUserId());
Result<LoginUserDetailsResultDTO> resultDto = epmetUserOpenFeignClient.getLoginUserDetails(dto);
if (!resultDto.success() || StringUtils.isEmpty(resultDto.getData().getAgencyId())) {
throw new RenException(String.format("项目立项调用user服务查询用户数据失败,userId->", formDTO.getUserId()));
}
LoginUserDetailsResultDTO loginUser = resultDto.getData();
//2-2.调用gov-org服务,获取所有勾选人员以及议题数据对应的组织信息、部门信息、网格信息用于对处理部门和ORG_ID_PATH字段的赋值使用
List<String> agencyIdList = staffList.stream().map(TickStaffFormDTO::getAgencyId).collect(Collectors.toList());
agencyIdList.add(loginUser.getAgencyId());
agencyIdList = new ArrayList<String>(new LinkedHashSet<>(agencyIdList));agencyIdList.removeAll(Collections.singleton(""));
List<String> deptIdList = staffList.stream().map(TickStaffFormDTO::getDepartmentId).collect(Collectors.toList());
deptIdList = new ArrayList<String>(new LinkedHashSet<>(deptIdList));deptIdList.removeAll(Collections.singleton(""));
List<String> gridIdList = staffList.stream().map(TickStaffFormDTO::getGridId).collect(Collectors.toList());
gridIdList = new ArrayList<String>(new LinkedHashSet<>(gridIdList));gridIdList.removeAll(Collections.singleton(""));
AgencyDeptGridFormDTO agencyDeptGridFormDTO = new AgencyDeptGridFormDTO();
agencyDeptGridFormDTO.setAgencyIdList(agencyIdList);
agencyDeptGridFormDTO.setDeptIdList(deptIdList);
agencyDeptGridFormDTO.setGridIdList(gridIdList);
Result<AgencyDeptGridResultDTO> resultDTO = govOrgFeignClient.getAgencyDeptGridList(agencyDeptGridFormDTO);
if (!resultDTO.success() || null == resultDTO.getData()) {
throw new RenException(ProjectConstant.SELECT_GOV_ORG_EXCEPTION);
}
AgencyDeptGridResultDTO agencyDeptGrid = resultDTO.getData();
//2-3.调用issue服务,查询分类、标签数据信息
CategoryTagListFormDTO categoryTag = new CategoryTagListFormDTO();
List<String> categoryIdList = formDTO.getCategoryList().stream().map(CategoryOrTagFormDTO::getId).collect(Collectors.toList());
List<String> tagIdList = formDTO.getTagList().stream().map(CategoryOrTagFormDTO::getId).collect(Collectors.toList());
categoryTag.setCustomerId(formDTO.getCustomerId());
categoryTag.setCategoryIdList(categoryIdList);
categoryTag.setTagIdList(tagIdList);
Result<CategoryTagResultDTO> resultDTOResult = govIssueOpenFeignClient.getCategoryTagList(categoryTag);
if(!resultDTOResult.success()){
throw new RenException("项目立项,调用issue服务查询分类、标签基础信息失败");
}
List<IssueProjectCategoryDictDTO> categoryList = resultDTOResult.getData().getCategoryList();
List<IssueProjectTagDictDTO> tagList = resultDTOResult.getData().getTagList();
//2-4.批量查询被勾选工作人员基础信息
List<String> staffIdList = staffList.stream().map(TickStaffFormDTO::getStaffId).collect(Collectors.toList());
staffIdList.add(formDTO.getUserId());
staffIdList = new ArrayList<String>(new LinkedHashSet<>(staffIdList));
Result<CustomerStaffListResultDTO> resultStaff = epmetUserOpenFeignClient.getCustomerStaffList(staffIdList);
if (!resultStaff.success() || null == resultStaff.getData()) {
throw new RenException("项目立项,调用user服务获取被勾选工作人员基本信息失败");
}
List<StaffListResultDTO> staffInfoList = resultStaff.getData().getStaffList();
//3.封装保存业务数据
//3-1.项目主表新增数据
ProjectEntity projectEntity = new ProjectEntity();
projectEntity.setCustomerId(formDTO.getCustomerId());
projectEntity.setAgencyId(loginUser.getAgencyId());
projectEntity.setOrigin(ProjectConstant.AGENCY);
projectEntity.setOriginId(loginUser.getAgencyId());
projectEntity.setTitle(formDTO.getTitle());
projectEntity.setBackGround(formDTO.getBackGround());
projectEntity.setStatus(ProjectConstant.PENDING);
projectEntity.setOrgIdPath(loginUser.getOrgIdPath());
projectService.insert(projectEntity);
//3-2.项目进展表新增第一个节点数据
ProjectProcessEntity processEntity = new ProjectProcessEntity();
processEntity.setProjectId(projectEntity.getId());
processEntity.setCustomerId(formDTO.getCustomerId());
processEntity.setStaffId(formDTO.getUserId());
processEntity.setOperation(ProjectConstant.OPERATION_CREATED);
processEntity.setOperationName(ProjectConstant.OPERATION_PROJECT_APPROVAL);
processEntity.setPublicReply(formDTO.getPublicReply());
processEntity.setInternalRemark(formDTO.getInternalRemark());
agencyDeptGrid.getAgencyList().forEach(agency -> {
if (loginUser.getAgencyId().equals(agency.getId())) {
processEntity.setDepartmentName(agency.getOrganizationName());
processEntity.setAgencyId(agency.getId());
if(org.apache.commons.lang3.StringUtils.isBlank(agency.getPids()) || org.apache.commons.lang3.StringUtils.equals(NumConstant.ZERO_STR,agency.getPids().trim()) || "".equals(agency.getPids().trim())){
processEntity.setOrgIdPath(agency.getId());
}else{
processEntity.setOrgIdPath(agency.getPids().concat(":").concat(agency.getId()));
}
}
});
projectProcessService.insert(processEntity);
//3-3.项目人员表批量新增数据
List<ProjectStaffEntity> entityList = new ArrayList<>();
staffList.forEach(ts -> {
ProjectStaffEntity entity = ConvertUtils.sourceToTarget(ts, ProjectStaffEntity.class);
entity.setOrgId(ts.getAgencyId());
entity.setProjectId(projectEntity.getId());
entity.setProcessId(processEntity.getId());
entity.setIsHandle(ProjectConstant.UNHANDLED);
agencyDeptGrid.getAgencyList().forEach(agency -> {
if (ts.getAgencyId().equals(agency.getId())) {
entity.setCustomerId(agency.getCustomerId());
entity.setOrgIdPath(("".equals(agency.getPids()) ? "" : agency.getPids() + ":") + agency.getId());
entity.setDepartmentName(agency.getOrganizationName());
}
});
if (org.apache.commons.lang3.StringUtils.isNotBlank(ts.getDepartmentId())) {
agencyDeptGrid.getDeptList().forEach(dept -> {
if (ts.getDepartmentId().equals(dept.getId())) {
entity.setDepartmentName(entity.getDepartmentName() + "-" + dept.getDepartmentName());
}
});
}
if (org.apache.commons.lang3.StringUtils.isNotBlank(ts.getGridId())) {
agencyDeptGrid.getGridList().forEach(grid -> {
if (ts.getGridId().equals(grid.getId())) {
entity.setDepartmentName(entity.getDepartmentName() + "-" + grid.getGridName());
}
});
}
entityList.add(entity);
});
projectStaffService.insertBatch(entityList);
//3-4.项目附件表新增数据
if ((null != formDTO.getPublicFile() && formDTO.getPublicFile().size() > NumConstant.ZERO)
|| (null != formDTO.getInternalFile() && formDTO.getInternalFile().size() > NumConstant.ZERO)) {
projectService.saveFile(formDTO.getPublicFile(), formDTO.getInternalFile(), formDTO.getCustomerId(), projectEntity.getId(), processEntity.getId());
}
//3-5.项目分类表新增数据
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(formDTO.getCategoryList())) {
List<ProjectCategoryEntity> categoryEntityList = new ArrayList<>();
formDTO.getCategoryList().forEach(item -> {
categoryList.forEach(ca->{
if(item.getId().equals(ca.getId())){
ProjectCategoryEntity entity = new ProjectCategoryEntity();
entity.setCustomerId(formDTO.getCustomerId());
entity.setProjectId(projectEntity.getId());
entity.setCategoryId(item.getId());
entity.setCategoryPids(ca.getPids());
entity.setCategoryCode(ca.getCategoryCode());
categoryEntityList.add(entity);
}
});
});
projectCategoryService.insertBatch(categoryEntityList);
}
//3-6.项目标签表新增数据
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(formDTO.getTagList())) {
List<ProjectTagsEntity> tagEntityList = new ArrayList<>();
formDTO.getTagList().forEach(item -> {
tagList.forEach(ta->{
if(item.getId().equals(ta.getId())){
ProjectTagsEntity entity = new ProjectTagsEntity();
entity.setCustomerId(formDTO.getCustomerId());
entity.setProjectId(projectEntity.getId());
entity.setTagId(item.getId());
entity.setTagName(ta.getTagName());
tagEntityList.add(entity);
}
});
});
projectTagsService.insertBatch(tagEntityList);
}
//3-7:初始化机关-项目时间关联数据
Date current = new Date();
List<String> projectStaffIds = entityList.stream().map(ProjectStaffEntity::getId).distinct().collect(Collectors.toList());
if(!org.apache.commons.collections4.CollectionUtils.isEmpty(projectStaffIds)){
List<ProjectOrgRelationEntity> container = new LinkedList<>();
projectStaffIds.forEach(o -> {
ProjectOrgRelationEntity period = new ProjectOrgRelationEntity();
period.setProjectStaffId(o);
period.setInformedDate(current);
period.setSourceOperation(ProjectConstant.OPERATION_CREATED);
period.setCreatedBy(formDTO.getUserId());
container.add(period);
});
relationDao.insertBatch(container);
}
//4.推送站内信、微信、短信消息
//4-1.调用epmet-message服务,给工作端勾选的工作人员发送消息
if (!shiftProjectMessage(formDTO).success()) {
throw new RenException("项目立项,推送站内信失败");
}
//4-2.以及政府端调用epmet-message服务,给工作端工作人员推送微信订阅消息
if (!wxmpShiftProjectMessage(formDTO).success()) {
logger.error("项目立项,推送微信订阅消息失败!");
}
//4-3.吹哨短信消息
List<ProjectSendMsgFormDTO> smsList = new ArrayList<>();
staffList.forEach(staff -> {
staffInfoList.forEach(st->{
if(staff.getStaffId().equals(st.getStaffId())){
ProjectSendMsgFormDTO sms = new ProjectSendMsgFormDTO();
sms.setCustomerId(st.getCustomerId());
sms.setMobile(st.getMobile());
sms.setAliyunTemplateCode(SmsTemplateConstant.PROJECT_TRANSFER);
sms.setParameterKey("send_msg");
smsList.add(sms);
}
});
});
Result result = epmetMessageOpenFeignClient.projectSendMsg(smsList);
if (!result.success()) {
logger.error("项目吹哨,发送手机短信失败" + JSON.toJSONString(result));
}
}
/**
* @param list
* @Author sun
* @Description 文字内容安全校验
**/
private void safetyCheck(List<String> list){
if(!CollectionUtils.isEmpty(list)){
list.forEach(l->{
if (com.alibaba.nacos.client.utils.StringUtils.isNotBlank(l)) {
TextScanParamDTO textScanParamDTO = new TextScanParamDTO();
TextTaskDTO taskDTO = new TextTaskDTO();
taskDTO.setDataId(UUID.randomUUID().toString().replace("-", ""));
taskDTO.setContent(l);
textScanParamDTO.getTasks().add(taskDTO);
Result<SyncScanResult> textSyncScanResult = ScanContentUtils.textSyncScan(scanApiUrl.concat(textSyncScanMethod), textScanParamDTO);
if (!textSyncScanResult.success()) {
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode());
} else {
if (!textSyncScanResult.getData().isAllPass()) {
throw new RenException(EpmetErrorCode.TEXT_SCAN_FAILED.getCode());
}
}
}
});
}
}
/**
* @Description 项目立项给勾选的工作人员推送站内信消息
* @author sun
*/
private Result shiftProjectMessage(ProjectApprovalFormDTO formDTO) {
List<UserMessageFormDTO> msgList = new ArrayList<>();
//1.创建项目工作人员消息对象
String projectStaffMessage = String.format(UserMessageConstant.PROJECT_RESOLVED_MSG, formDTO.getTitle());
//所选人员如果即在部门下又在网格下则只发一条消息
Map<String,String> map = new HashMap<>();
formDTO.getStaffList().forEach(staff->{
if(!map.containsKey(staff.getStaffId())){
UserMessageFormDTO msg = new UserMessageFormDTO();
msg.setCustomerId(formDTO.getCustomerId());
msg.setGridId("*");
msg.setApp(AppClientConstant.APP_GOV);
msg.setTitle(UserMessageConstant.PROJECT_TITLE);
msg.setMessageContent(projectStaffMessage);
msg.setReadFlag(ReadFlagConstant.UN_READ);
msg.setUserId(staff.getStaffId());
msgList.add(msg);
map.put(staff.getStaffId(),staff.getStaffId());
}
});
return epmetMessageOpenFeignClient.saveUserMessageList(msgList);
}
/**
* @Description 项目立项给勾选的工作人员推送微信订阅消息
* @author sun
*/
private Result wxmpShiftProjectMessage(ProjectApprovalFormDTO formDTO) {
List<WxSubscribeMessageFormDTO> msgList = new ArrayList<>();
//1.创建项目工作人员消息对象
String projectStaffMessage = String.format(UserMessageConstant.PROJECT_RESOLVED_MSG, formDTO.getTitle());
//所选人员如果即在部门下又在网格下则只发一条消息
Map<String,String> map = new HashMap<>();
formDTO.getStaffList().forEach(staff->{
if(!map.containsKey(staff.getStaffId())){
WxSubscribeMessageFormDTO msg = new WxSubscribeMessageFormDTO();
msg.setCustomerId(formDTO.getCustomerId());
msg.setClientType(AppClientConstant.APP_GOV);
msg.setUserId(staff.getStaffId());
msg.setBehaviorType("项目消息");
msg.setMessageContent(projectStaffMessage);
msg.setMessageTime(new Date());
msg.setGridId("*");
msgList.add(msg);
map.put(staff.getStaffId(),staff.getStaffId());
}
});
logger.info("项目立项,推送微信订阅消息");
return epmetMessageOpenFeignClient.sendWxSubscribeMessage(msgList);
}
}

7
epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.11__alter_project.sql

@ -0,0 +1,7 @@
ALTER TABLE `project`
ADD COLUMN `BACK_GROUND` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '项目背景' AFTER `TITLE`;
ALTER TABLE `project`
MODIFY COLUMN `ORIGIN` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '来源:议题issue 项目立项:agency' AFTER `AGENCY_ID`;

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

@ -124,6 +124,7 @@
SELECT
p.ID AS "projectId",
p.TITLE AS "projectTitle",
p.BACK_GROUND AS "backGround",
p.ORIGIN AS "origin",
p.ORIGIN_ID AS "originId",
p.STATUS AS "projectStatus",

7
epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java

@ -505,4 +505,11 @@ public interface EpmetUserOpenFeignClient {
**/
@PostMapping(value = "/epmetuser/userrole/getuserroleinfo")
Result<List<UserRoleResultDTO>> getUserRoleInfo(@RequestBody UserRoleFormDTO userRoleFormDTO);
/**
* @Author sun
* @Description 根据staffId集合查询工作人员基础信息
**/
@PostMapping(value = "/epmetuser/customerstaff/getcustomerstafflist")
Result<CustomerStaffListResultDTO> getCustomerStaffList(@RequestBody List<String> staffIdList);
}

5
epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java

@ -358,4 +358,9 @@ public class EpmetUserOpenFeignClientFallback implements EpmetUserOpenFeignClien
public Result<List<UserRoleResultDTO>> getUserRoleInfo(UserRoleFormDTO userRoleFormDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "getUserRoleInfo", userRoleFormDTO);
}
@Override
public Result<CustomerStaffListResultDTO> getCustomerStaffList(List<String> staffIdList) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "getCustomerStaffList", staffIdList);
}
}

4
epmet-user/epmet-user-server/src/main/resources/mapper/CustomerStaffDao.xml

@ -181,10 +181,12 @@
<select id="selectStaffByIds" resultType="com.epmet.dto.result.StaffListResultDTO">
SELECT
CUSTOMER_ID AS customerId,
user_id AS staffId,
IFNULL(real_name,"") AS staffName,
IFNULL(head_photo,"") AS staffHeadPhoto ,
IFNULL(gender,0) AS gender
IFNULL(gender,0) AS gender,
IFNULL(mobile,"") AS mobile
FROM
customer_staff
WHERE

Loading…
Cancel
Save