Browse Source

Merge branch 'dev_project_approval' into dev_temp

# Conflicts:
#	epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java
master
sunyuchao 5 years ago
parent
commit
f2c489bd69
  1. 5
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/ProjectDTO.java
  2. 5
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govproject/ProjectEntity.java
  3. 10
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/extract/FactOriginProjectMainDailyDTO.java
  4. 2
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/EvaluateTotalResultDTO.java
  5. 2
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ProjectOrgDailyResultDTO.java
  6. 11
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ProjectTotalResultDTO.java
  7. 8
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ResolvedNumResultDTO.java
  8. 3
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/constant/ProjectConstant.java
  9. 5
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java
  10. 8
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectLogDailyDao.java
  11. 33
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectMainDailyDao.java
  12. 10
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/extract/FactOriginProjectMainDailyEntity.java
  13. 5
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/project/ProjectEntity.java
  14. 58
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/CalGridIndexServiceImpl.java
  15. 33
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectMainDailyService.java
  16. 3
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectLogDailyServiceImpl.java
  17. 51
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectMainDailyServiceImpl.java
  18. 49
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/ProjectExtractServiceImpl.java
  19. 4
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectGridDailyServiceImpl.java
  20. 68
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectOrgDailyServiceImpl.java
  21. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectQuantityGridMonthlyServiceImpl.java
  22. 10
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectQuantityOrgMonthlyServiceImpl.java
  23. 5
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectCategoryDailyDao.xml
  24. 22
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectLogDailyDao.xml
  25. 83
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml
  26. 11
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectOrgDailyDao.xml
  27. 10
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectQuantityOrgMonthlyDao.xml
  28. 4
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/project/ProjectDao.xml
  29. 32
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/CategoryTagListFormDTO.java
  30. 28
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/CategoryTagResultDTO.java
  31. 16
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java
  32. 5
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java
  33. 12
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueProjectCategoryDictController.java
  34. 6
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueProjectCategoryDictDao.java
  35. 7
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueProjectTagDictDao.java
  36. 8
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueProjectCategoryDictService.java
  37. 27
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProjectCategoryDictServiceImpl.java
  38. 17
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectCategoryDictDao.xml
  39. 15
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectTagDictDao.xml
  40. 8
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/StaffListResultDTO.java
  41. 9
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java
  42. 5
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java
  43. 7
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/ProjectDTO.java
  44. 24
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/CategoryOrTagFormDTO.java
  45. 61
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ProjectApprovalFormDTO.java
  46. 4
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectDetailResultDTO.java
  47. 8
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/ProjectConstant.java
  48. 25
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectTraceController.java
  49. 7
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ProjectEntity.java
  50. 14
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectTraceService.java
  51. 387
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java
  52. 1
      epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml
  53. 7
      epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java
  54. 5
      epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java
  55. 4
      epmet-user/epmet-user-server/src/main/resources/mapper/CustomerStaffDao.xml

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/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/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;
}

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";
}

5
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);
}

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);
/**
* 根据日期删除数据

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

@ -72,13 +72,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);
@ -229,6 +229,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 +248,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 +266,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

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
*/

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);

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

@ -121,13 +121,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 +275,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 +294,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 +312,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

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

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

@ -135,15 +135,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 +291,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 +316,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 +348,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

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);

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());
}
});

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

@ -29,12 +29,16 @@ 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.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 +55,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 项目(事件)分析按组织_按天统计
@ -69,6 +74,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) {
@ -172,12 +179,52 @@ public class ScreenProjectOrgDailyServiceImpl extends BaseServiceImpl<ScreenProj
log.info(String.format(PingYinConstants.SELECT_GRID_INFO_BY_ORG_IS_NULL,customerId));
return;
}
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));
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());
// 参与满意度评价的总次数
if (!CollectionUtils.isEmpty(evaluateTotal)){
evaluateTotal.forEach(e -> {
if (p.getOrgId().equals(e.getOrgId())){
p.setEvaluateTotal(p.getEvaluateTotal() + e.getEvaluateCount());
}
});
}
// 满意+非常满意的总次数
if (!CollectionUtils.isEmpty(evaluateGood)){
evaluateGood.forEach(e -> {
if (p.getOrgId().equals(e.getOrgId())){
p.setGoodTotal(p.getGoodTotal() + e.getEvaluateCount());
}
});
}
// 项目总数
if (!CollectionUtils.isEmpty(projectTotal)) {
projectTotal.forEach(t -> {
if (p.getOrgId().equals(t.getOrgId())){
p.setProjectTotal(p.getProjectTotal() + t.getProjectTotal());
}
});
}
// 已解决的项目总数
if (!CollectionUtils.isEmpty(resolvedNum)){
resolvedNum.forEach(r -> {
if (p.getOrgId().equals(r.getOrgId())){
p.setResolvedNum(p.getResolvedNum() + r.getResolvedNum());
}
});
}
// 不满意总次数
p.setBadTotal(p.getEvaluateTotal() - p.getGoodTotal());
});
log.info(projectOrgDaily.toString());
agencyInfos.forEach(a -> {
@ -200,6 +247,17 @@ public class ScreenProjectOrgDailyServiceImpl extends BaseServiceImpl<ScreenProj
insert(agencyInfos,customerId,dateId);
}
/**
* @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());
}
});

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

@ -169,16 +169,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 -> {

5
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}

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>

83
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">
@ -455,6 +464,7 @@
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>
@ -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>
@ -575,4 +589,63 @@
</choose>
</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 IS NULL
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 GRID_ID IS NULL
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>
</mapper>

11
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

10
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

4
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,6 +79,7 @@
ID,
CUSTOMER_ID,
AGENCY_ID,
ORIGIN,
ORIGIN_ID,
STATUS,
CLOSED_STATUS,
@ -90,7 +89,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}

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;
}

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

@ -225,7 +225,7 @@ public interface GovIssueOpenFeignClient {
* @author sun
**/
@PostMapping(value = "/gov/issue/issueprojectcategorydict/getprojectandcategoryinfo")
Result<ProjectIssueCategoryResultDTO> getProjectAndCategoryInfo(ProjectSaveCategoryFormDTO formDTO);
Result<ProjectIssueCategoryResultDTO> getProjectAndCategoryInfo(@RequestBody ProjectSaveCategoryFormDTO formDTO);
/**
* @Description 更新标签热度 数据库/缓存
@ -275,9 +275,6 @@ public interface GovIssueOpenFeignClient {
@PostMapping("/gov/issue/issue/detail")
Result<IssueResultDTO> queryIssueDetail(@RequestBody IssueDetailFormDTO formDTO);
@PostMapping(value = "/gov/issue/manage/votingissuedetail")
Result<GovIssueDetailResultDTO> votingissuedetail(@RequestBody IssueDetailFormDTO issueDetail);
/**
* 获取客户 分类字典 信息
*
@ -296,4 +293,15 @@ public interface GovIssueOpenFeignClient {
*/
@PostMapping("/gov/issue/issueapplication/notissuetotopicids")
Result<List<String>> notIssueToTopicIds(@RequestBody List<String> topicIdList);
@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

@ -254,4 +254,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);
}

27
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;
@ -450,4 +447,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);
}
}

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;
}

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

@ -0,0 +1,61 @@
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;
@NotBlank(message = "项目标题不能为空")
private String title;
@NotBlank(message = "项目背景不能为空")
@Length(max=1000,message = "项目背景不能超过1000位")
private String backGround;
@NotBlank(message = "项目方案不能为空")
@Length(max=1000,message = "项目方案不能超过1000位")
private String publicReply;
@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;
}

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 = "项目立项";
/**
* 是否处理-未处理

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

@ -335,5 +335,30 @@ 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")
public Result projectApproval(@LoginUser TokenDto tokenDTO, @RequestBody ProjectApprovalFormDTO formDTO) {
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);
}

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());
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);
}
}

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