Browse Source

治理能力排行数据

feature/screenDataPush
zhangyuan 4 years ago
parent
commit
54d4f906f1
  1. 16
      esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/EpmetConstant.java
  2. 10
      esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/DateUtils.java
  3. 141
      esua-epdc/epdc-module/epdc-analysis/epdc-analysis-client/src/main/java/com/elink/esua/epdc/dto/screen/result/ScreenAgencyGovernDailyResultDTO.java
  4. 106
      esua-epdc/epdc-module/epdc-analysis/epdc-analysis-client/src/main/java/com/elink/esua/epdc/dto/screen/result/ScreenGovernRankDataDailyResultDTO.java
  5. 14
      esua-epdc/epdc-module/epdc-analysis/epdc-analysis-client/src/main/java/com/elink/esua/epdc/dto/screen/result/ScreenGovernanceResultDTO.java
  6. 156
      esua-epdc/epdc-module/epdc-analysis/epdc-analysis-client/src/main/java/com/elink/esua/epdc/dto/screen/result/ScreenGridGovernDailyResultDTO.java
  7. 70
      esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/screen/controller/ScreenGovernanceController.java
  8. 73
      esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/screen/dao/ScreenGovernanceDao.java
  9. 44
      esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/screen/service/ScreenGovernanceService.java
  10. 150
      esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/screen/service/impl/ScreenGovernanceServiceImpl.java
  11. 874
      esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/screen/ScreenGovernanceDao.xml
  12. 33
      esua-epdc/epdc-module/epdc-job/epdc-job-client/src/main/java/com/elink/esua/epdc/dto/ScreenGovernanceParamDTO.java
  13. 34
      esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/feign/AnalysisFeignClient.java
  14. 15
      esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/feign/fallback/AnalysisFeignClientFallback.java
  15. 21
      esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/task/screen/ScreenGovernancePushTask.java
  16. 97
      esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/task/screen/ScreenGovernancePushTaskImpl.java

16
esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/EpmetConstant.java

@ -404,4 +404,20 @@ public interface EpmetConstant {
*/
String EPMET_SCREEN_STATS_USER_GRID_MANAGER_UPLOAD_DATA = "/data/stats/statsuser/gm-uploaddata";
// 治理能力排行数据
/**
* 01治理能力排行数据(按日统计)数据
*/
String EPMET_SCREEN_GOV_RANK_DATA = "/data/stats/governance/governrankdatadaily";
/**
* 02网格治理指数
*/
String EPMET_SCREEN_GOV_GRID_GOV_DATA = "/data/stats/governance/gridgoverndaily";
/**
* 03组织治理指数
*/
String EPMET_SCREEN_GOV_AGENCY_GOV_DATA = "/data/stats/governance/agencygoverndaily";
}

10
esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/DateUtils.java

@ -34,6 +34,8 @@ public class DateUtils {
public final static String DATE_PATTERN_YEAR_MONTH2 = "yyyyMM";
/** 时间格式(yyyy-MM-dd) */
public final static String DATE_PATTERN = "yyyy-MM-dd";
/** 时间格式(yyyyMMdd) */
public final static String DATE_PATTERN_NO_SPLIT = "yyyyMMdd";
/** 时间格式(yyyy-MM-dd HH:mm:ss) */
public final static String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
@ -46,6 +48,14 @@ public class DateUtils {
return format(date, DATE_PATTERN);
}
/**
* 日期格式化 日期格式为yyyyMMdd
* @param date 日期
* @return 返回yyyyMMdd格式日期
*/
public static String formatNoSplit(Date date) {
return format(date, DATE_PATTERN_NO_SPLIT);
}
/**
* 日期格式化 日期格式为yyyy-MM-dd
* @param date 日期

141
esua-epdc/epdc-module/epdc-analysis/epdc-analysis-client/src/main/java/com/elink/esua/epdc/dto/screen/result/ScreenAgencyGovernDailyResultDTO.java

@ -0,0 +1,141 @@
package com.elink.esua.epdc.dto.screen.result;
import lombok.Data;
import java.io.Serializable;
/**
* 组织治理指数
*
* @author zhy
* @date 2021/6/28 9:28
*/
@Data
public class ScreenAgencyGovernDailyResultDTO implements Serializable {
private static final long serialVersionUID = -4035893591086943602L;
/**
* 组织Id
*/
private String agencyId;
/**
* agency_id所属的机关级别社区级community 街道:street, 区县级: district, 市级: city 省级:province
*/
private String level;
/**
* 上级组织Id
*/
private String pid;
/**
* 网格所有上级id
*/
private String pids;
/**
* 日期ID
*/
private String dateId;
/**
* 界面展示问题解决总数=1+2+3+4+5+6+7+8
*/
private Integer problemResolvedCount;
/**
* 界面展示党群自治占比=9+10/PROBLEM_RESOLVED_COUNT; 此列存储的是小数
*/
private String groupSelfGovernRatio;
/**
* 界面展示网格自治占比=GRID_SELF_GOVERN_PROJECT_TOTAL/PROBLEM_RESOLVED_COUNT此列存储的是小数
*/
private String gridSelfGovernRatio;
/**
* 界面展示社区解决占比=COMMUNITY_CLOSED_COUNT/PROBLEM_RESOLVED_COUNT此列存储的是小数
*/
private String communityClosedRatio;
/**
* 界面展示街道解决占比=STREET_CLOSED_COUNT/PROBLEM_RESOLVED_COUNT此列存储的是小数
*/
private String streetClosedRatio;
/**
* 界面展示区直部门解决占比=DISTRICT_DEPT_CLOSED_COUNT/PROBLEM_RESOLVED_COUNT此列存储的是小数
*/
private String districtDeptClosedRatio;
/**
* 1当前组织内话题关闭已解决数
*/
private Integer topicResolvedCount;
/**
* 2当前组织内话题关闭无需解决数
*/
private Integer topicUnResolvedCount;
/**
* 3当前组织内议题关闭已解决数
*/
private Integer issueResolvedCount;
/**
* 4当前组织内议题关闭无需解决数
*/
private Integer issueUnResolvedCount;
/**
* 5当前组织内来源于议题的项目结案已解决数
*/
private Integer issueProjectResolvedCount;
/**
* 6当前组织内来源于议题的项目结案无需解决数
*/
private Integer issueProjectUnResolvedCount;
/**
* 7当前组织内项目立项结案已解决数默认为0
*/
private Integer approvalProjectResolvedCount;
/**
* 8当前组织内项目立项结案无需解决数默认为0
*/
private Integer approvalProjectUnResolvedCount;
/**
* 9当前组织内未出小组即未转议题的话题关闭已解决数
*/
private Integer inGroupTopicResolvedCount;
/**
* 10当前组织内未出小组即未转议题的话题关闭无需解决数
*/
private Integer inGroupTopicUnResolvedCount;
/**
* 11未出当前组织的结案项目数
*/
private Integer gridSelfGovernProjectTotal;
/**
* 当前组织内出来的项目由社区结案(已解决+未解决)的项目总数
*/
private Integer communityClosedCount;
/**
* 当前组织内出来的项目由街道结案(已解决+未解决)的项目总数
*/
private Integer streetClosedCount;
/**
* 当前组织内出来的项目由区直部门(已解决+未解决)结案的项目总数
*/
private Integer districtDeptClosedCount;
}

106
esua-epdc/epdc-module/epdc-analysis/epdc-analysis-client/src/main/java/com/elink/esua/epdc/dto/screen/result/ScreenGovernRankDataDailyResultDTO.java

@ -0,0 +1,106 @@
package com.elink.esua.epdc.dto.screen.result;
import lombok.Data;
import java.io.Serializable;
/**
* 治理能力排行数据(按日统计)数据
*
* @author zhy
* @date 2021/6/28 9:28
*/
@Data
public class ScreenGovernRankDataDailyResultDTO implements Serializable {
private static final long serialVersionUID = -4035893591086943602L;
/**
* 组织Id 可以为网格机关id
*/
private String orgId;
/**
* 组织类别 agency组织部门department网格grid
*/
private String orgType;
/**
* 上级组织Id
*/
private String parentId;
/**
* 组织名称
*/
private String orgName;
/**
* 日期ID
*/
private String dateId;
/**
* 月ID
*/
private String monthId;
/**
* 年ID
*/
private String yearId;
/**
* 响应率最大值100保留小数点后4位
*/
private String responseRatio;
/**
* 响应数
*/
private Integer responseCount;
/**
* 项目转入次数
*/
private Integer transferCount;
/**
* 解决率 最大值100保留小数点后4位
*/
private String resolvedRatio;
/**
* 解决项目数
*/
private Integer resolvedCount;
/**
* 已关闭项目数
*/
private Integer closedCount;
/**
* 自治率 最大值100保留小数点后4位
*/
private String governRatio;
/**
* 自治项目数
*/
private Integer governCount;
/**
* 满意率最大值100保留小数点后四位
*/
private String satisfactionRatio;
/**
* 满意项目数
*/
private Integer satisfactionCount;
/**
* 已关闭项目由议题转的项目
*/
private Integer closedProjectCount;
}

14
esua-epdc/epdc-module/epdc-analysis/epdc-analysis-client/src/main/java/com/elink/esua/epdc/dto/screen/result/ScreenGovernanceResultDTO.java

@ -0,0 +1,14 @@
package com.elink.esua.epdc.dto.screen.result;
import lombok.Data;
import java.io.Serializable;
/**
* @author zhy
* @date 2021/6/28 14:12
*/
@Data
public class ScreenGovernanceResultDTO implements Serializable {
private static final long serialVersionUID = -4696640703716250973L;
}

156
esua-epdc/epdc-module/epdc-analysis/epdc-analysis-client/src/main/java/com/elink/esua/epdc/dto/screen/result/ScreenGridGovernDailyResultDTO.java

@ -0,0 +1,156 @@
package com.elink.esua.epdc.dto.screen.result;
import lombok.Data;
import java.io.Serializable;
/**
* 网格治理指数
*
* @author zhy
* @date 2021/6/28 9:28
*/
@Data
public class ScreenGridGovernDailyResultDTO implements Serializable {
private static final long serialVersionUID = -4035893591086943602L;
/**
* 组织Id 可以为网格机关id
*/
private String gridId;
/**
* 上级组织Id
*/
private String pid;
/**
* 网格所有上级id
*/
private String pids;
/**
* 日期ID
*/
private String dateId;
/**
* 界面展示问题解决总数=1+2+3+4+5+6+7+8
*/
private Integer problemResolvedCount;
/**
* 界面展示党群自治占比=9+10/PROBLEM_RESOLVED_COUNT; 此列存储的是小数
*/
private String groupSelfGovernRatio;
/**
* 界面展示网格自治占比=GRID_SELF_GOVERN_PROJECT_TOTAL/PROBLEM_RESOLVED_COUNT此列存储的是小数
*/
private String gridSelfGovernRatio;
/**
* 界面展示社区解决占比=COMMUNITY_CLOSED_COUNT/PROBLEM_RESOLVED_COUNT此列存储的是小数
*/
private String communityClosedRatio;
/**
* 界面展示街道解决占比=STREET_CLOSED_COUNT/PROBLEM_RESOLVED_COUNT此列存储的是小数
*/
private String streetClosedRatio;
/**
* 界面展示区直部门解决占比=DISTRICT_DEPT_CLOSED_COUNT/PROBLEM_RESOLVED_COUNT此列存储的是小数
*/
private String districtDeptClosedRatio;
/**
* 1当前网格内话题关闭已解决数
*/
private Integer topicResolvedCount;
/**
* 2当前网格内话题关闭无需解决数
*/
private Integer topicUnResolvedCount;
/**
* 3当前网格内议题关闭已解决数
*/
private Integer issueResolvedCount;
/**
* 4当前网格内议题关闭无需解决数
*/
private Integer issueUnResolvedCount;
/**
* 5当前网格内来源于议题的项目结案已解决数
*/
private Integer issueProjectResolvedCount;
/**
* 6当前网格内来源于议题的项目结案无需解决数
*/
private Integer issueProjectUnResolvedCount;
/**
* 7当前网格内项目立项结案已解决数默认为0
*/
private Integer approvalProjectResolvedCount;
/**
* 8当前网格内项目立项结案无需解决数默认为0
*/
private Integer approvalProjectUnResolvedCount;
/**
* 9当前网格内未出小组即未转议题的话题关闭已解决数
*/
private Integer inGroupTopicResolvedCount;
/**
* 10当前网格内未出小组即未转议题的话题关闭无需解决数
*/
private Integer inGroupTopicUnResolvedCount;
/**
* 11来源于议题的项目未出网格结案并且已解决的项目数
*/
private Integer fromIssueResolvedInGridCount;
/**
* 12来源于议题的项目未出网格结案并且无需解决的项目数
*/
private Integer fromIssueUnResolvedInGridCount;
/**
* 13来源于项目立项的项目未出网格结案并且已解决的项目数因现在网格不能立项所以此列默认为0
*/
private Integer fromAgencyResolvedInGridCount;
/**
* 14来源于项目立项的项目未出网格结案并且无需解决的项目数因现在网格不能立项所以此列默认为0
*/
private Integer fromAgencyUnResolvedInGridCount;
/**
* 15未出当前网格的结案项目数=11+12+13+14
*/
private Integer gridSelfGovernProjectTotal;
/**
* 当前网格内出来的项目由社区结案(已解决+未解决)的项目总数
*/
private Integer communityClosedCount;
/**
* 当前网格内出来的项目由街道结案(已解决+未解决)的项目总数
*/
private Integer streetClosedCount;
/**
* 当前网格内出来的项目由区直部门(已解决+未解决)结案的项目总数
*/
private Integer districtDeptClosedCount;
}

70
esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/screen/controller/ScreenGovernanceController.java

@ -0,0 +1,70 @@
package com.elink.esua.epdc.modules.screen.controller;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.screen.form.ScreenJobFormDTO;
import com.elink.esua.epdc.modules.screen.service.ScreenGovernanceService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 治理能力数据推送
*
* @author zhy
* @date 2021/6/28 11:07
*/
@Slf4j
@RestController
@RequestMapping("data/stats/governance")
public class ScreenGovernanceController {
@Autowired
private ScreenGovernanceService screenGovernanceService;
/**
* 01治理能力排行数据(按日统计)数据
*
* @param
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @author zhy
* @date 2021/6/28 11:05
*/
@PostMapping("governrankdatadaily")
public Result governrankdatadaily(@RequestBody ScreenJobFormDTO formDto) {
log.info("<governrankdatadaily|治理能力排行数据(按日统计)数据>定时任务执行");
return screenGovernanceService.governrankdatadaily(formDto);
}
/**
* 02网格治理指数
*
* @param
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @author zhy
* @date 2021/6/28 11:05
*/
@PostMapping("gridgoverndaily")
public Result gridgoverndaily(@RequestBody ScreenJobFormDTO formDto) {
log.info("<governrankdatadaily|网格治理指数(天)>定时任务执行");
return screenGovernanceService.gridgoverndaily(formDto);
}
/**
* 03组织治理指数
*
* @param
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @author zhy
* @date 2021/6/28 11:05
*/
@PostMapping("agencygoverndaily")
public Result agencygoverndaily(@RequestBody ScreenJobFormDTO formDto) {
log.info("<agencygoverndaily|组织治理指数(天)>定时任务执行");
return screenGovernanceService.agencygoverndaily(formDto);
}
}

73
esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/screen/dao/ScreenGovernanceDao.java

@ -0,0 +1,73 @@
package com.elink.esua.epdc.modules.screen.dao;
import com.elink.esua.epdc.commons.mybatis.dao.BaseDao;
import com.elink.esua.epdc.dto.screen.result.ScreenAgencyGovernDailyResultDTO;
import com.elink.esua.epdc.dto.screen.result.ScreenGovernRankDataDailyResultDTO;
import com.elink.esua.epdc.dto.screen.result.ScreenGovernanceResultDTO;
import com.elink.esua.epdc.dto.screen.result.ScreenGridGovernDailyResultDTO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @author zhy
* @date 2021/6/28 14:04
*/
@Mapper
public interface ScreenGovernanceDao extends BaseDao<ScreenGovernanceResultDTO> {
/**
* 治理能力排行数据(按日统计)数据
* 网格统计
*
* @param
* @return java.util.List<com.elink.esua.epdc.dto.screen.result.ScreenGovernRankDataDailyResultDTO>
* @author zhy
* @date 2021/6/28 14:06
*/
List<ScreenGovernRankDataDailyResultDTO> governrankdatadaily();
/**
* 治理能力排行数据(按日统计)数据
* 组织统计
*
* @param
* @return java.util.List<com.elink.esua.epdc.dto.screen.result.ScreenGovernRankDataDailyResultDTO>
* @author zhy
* @date 2021/6/28 14:06
*/
List<ScreenGovernRankDataDailyResultDTO> governrankdatadailyAgency();
/**
* 治理能力排行数据(按日统计)数据
* 未响应数
*
* @param
* @return java.util.List<com.elink.esua.epdc.dto.screen.result.ScreenGovernRankDataDailyResultDTO>
* @author zhy
* @date 2021/6/28 14:06
*/
List<ScreenGovernRankDataDailyResultDTO> governrankdatadailyNoResp();
/**
* 网格治理指数
*
* @param
* @return java.util.List<com.elink.esua.epdc.dto.screen.result.ScreenGridGovernDailyResultDTO>
* @author zhy
* @date 2021/8/13 17:55
*/
List<ScreenGridGovernDailyResultDTO> gridgoverndaily();
/**
* 组织治理指数
*
* @param
* @return java.util.List<com.elink.esua.epdc.dto.screen.result.ScreenGridGovernDailyResultDTO>
* @author zhy
* @date 2021/8/13 17:55
*/
List<ScreenAgencyGovernDailyResultDTO> agencygoverndaily();
}

44
esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/screen/service/ScreenGovernanceService.java

@ -0,0 +1,44 @@
package com.elink.esua.epdc.modules.screen.service;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.screen.form.ScreenJobFormDTO;
/**
* 治理能力数据推送
*
* @author zhy
* @date 2021/6/28 13:51
*/
public interface ScreenGovernanceService {
/**
* 01治理能力排行数据(按日统计)数据
*
* @param
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @author zhy
* @date 2021/6/28 13:47
*/
Result governrankdatadaily(ScreenJobFormDTO formDto);
/**
* 02网格治理指数
*
* @param
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @author zhy
* @date 2021/6/28 13:47
*/
Result gridgoverndaily(ScreenJobFormDTO formDto);
/**
* 03组织治理指数
*
* @param
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @author zhy
* @date 2021/6/28 13:47
*/
Result agencygoverndaily(ScreenJobFormDTO formDto);
}

150
esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/screen/service/impl/ScreenGovernanceServiceImpl.java

@ -0,0 +1,150 @@
package com.elink.esua.epdc.modules.screen.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl;
import com.elink.esua.epdc.commons.tools.constant.EpmetConstant;
import com.elink.esua.epdc.commons.tools.utils.DateUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.screen.form.ScreenJobFormDTO;
import com.elink.esua.epdc.dto.screen.result.ScreenAgencyGovernDailyResultDTO;
import com.elink.esua.epdc.dto.screen.result.ScreenGovernRankDataDailyResultDTO;
import com.elink.esua.epdc.dto.screen.result.ScreenGovernanceResultDTO;
import com.elink.esua.epdc.dto.screen.result.ScreenGridGovernDailyResultDTO;
import com.elink.esua.epdc.modules.screen.dao.ScreenGovernanceDao;
import com.elink.esua.epdc.modules.screen.service.ScreenGovernanceService;
import com.elink.esua.epdc.utils.EpmetUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.text.DecimalFormat;
import java.util.Date;
import java.util.List;
import java.util.Optional;
/**
* 治理能力数据推送
*
* @author zhy
* @date 2021/6/28 13:51
*/
@Service
public class ScreenGovernanceServiceImpl extends BaseServiceImpl<ScreenGovernanceDao, ScreenGovernanceResultDTO> implements ScreenGovernanceService {
@Autowired
private EpmetUtils epmetUtils;
@Value("${epmet.config.customerId}")
private String EPMET_CONFIG_CUSTOMER_ID;
/**
* 锦水街道DEPT_ID
*/
private final String STREET_ID = "1215437824174608386";
@Override
public Result governrankdatadaily(ScreenJobFormDTO formDto) {
String yearMonthDay = DateUtils.formatNoSplit(DateUtils.addDateDays(new Date(), -1));
if (formDto.getYearMonth() != null && StringUtils.isNotBlank(formDto.getYearMonth())) {
yearMonthDay = formDto.getYearMonth();
}
List<ScreenGovernRankDataDailyResultDTO> data = baseDao.governrankdatadaily();
List<ScreenGovernRankDataDailyResultDTO> agencyData = baseDao.governrankdatadailyAgency();
List<ScreenGovernRankDataDailyResultDTO> noRespData = baseDao.governrankdatadailyNoResp();
// 处理未响应和项目转入次数
noRespHandle(data, noRespData);
noRespHandle(agencyData, noRespData);
// 社区数据需要在本身基础上再加上网格的合计
data.forEach(item -> {
Optional<ScreenGovernRankDataDailyResultDTO> agencyOptional = agencyData.stream().filter(agency -> agency.getOrgId().equals(item.getParentId())).findFirst();
if (agencyOptional.isPresent()) {
ScreenGovernRankDataDailyResultDTO agencyResult = agencyOptional.get();
agencyResult.setResponseCount(agencyResult.getResponseCount() + item.getResponseCount());
agencyResult.setTransferCount(agencyResult.getTransferCount() + item.getTransferCount());
}
});
// 街道数据需要在本身基础上再加上社区的合计
Optional<ScreenGovernRankDataDailyResultDTO> agencyOptional = agencyData.stream().filter(agency -> agency.getOrgId().equals(STREET_ID)).findFirst();
if (agencyOptional.isPresent()) {
ScreenGovernRankDataDailyResultDTO agencyResult = agencyOptional.get();
Integer responseCount = agencyResult.getResponseCount() + agencyData.stream().filter(agency -> agency.getParentId().equals(STREET_ID)).mapToInt(ScreenGovernRankDataDailyResultDTO::getResponseCount).sum();
Integer transferCount = agencyResult.getTransferCount() + agencyData.stream().filter(agency -> agency.getParentId().equals(STREET_ID)).mapToInt(ScreenGovernRankDataDailyResultDTO::getTransferCount).sum();
agencyResult.setResponseCount(responseCount);
agencyResult.setTransferCount(transferCount);
}
// 合并网格社区街道数据
data.addAll(agencyData);
// 计算响应率
data.forEach(item -> {
if (0 == item.getTransferCount() || 0 == item.getResponseCount()) {
item.setResponseRatio("0.0000");
} else {
DecimalFormat df = new DecimalFormat("0.0000");
item.setResponseRatio(df.format((float) item.getResponseCount() / item.getTransferCount()));
}
});
JSONObject jsonObject = new JSONObject();
jsonObject.put("isFirst", true);
jsonObject.put("dateId", yearMonthDay);
jsonObject.put("dataList", data);
epmetUtils.httpPost(EpmetConstant.EPMET_SCREEN_GOV_RANK_DATA, JSONObject.toJSONString(jsonObject));
return new Result();
}
@Override
public Result gridgoverndaily(ScreenJobFormDTO formDto) {
String yearMonthDay = DateUtils.formatNoSplit(DateUtils.addDateDays(new Date(), -1));
if (formDto.getYearMonth() != null && StringUtils.isNotBlank(formDto.getYearMonth())) {
yearMonthDay = formDto.getYearMonth();
}
List<ScreenGridGovernDailyResultDTO> data = baseDao.gridgoverndaily();
JSONObject jsonObject = new JSONObject();
jsonObject.put("isFirst", true);
jsonObject.put("dataList", data);
jsonObject.put("dateId", yearMonthDay);
epmetUtils.httpPost(EpmetConstant.EPMET_SCREEN_GOV_GRID_GOV_DATA, JSONObject.toJSONString(jsonObject));
return new Result();
}
@Override
public Result agencygoverndaily(ScreenJobFormDTO formDto) {
String yearMonthDay = DateUtils.formatNoSplit(DateUtils.addDateDays(new Date(), -1));
if (formDto.getYearMonth() != null && StringUtils.isNotBlank(formDto.getYearMonth())) {
yearMonthDay = formDto.getYearMonth();
}
List<ScreenAgencyGovernDailyResultDTO> data = baseDao.agencygoverndaily();
JSONObject jsonObject = new JSONObject();
jsonObject.put("isFirst", true);
jsonObject.put("dateId", yearMonthDay);
jsonObject.put("dataList", data);
epmetUtils.httpPost(EpmetConstant.EPMET_SCREEN_GOV_AGENCY_GOV_DATA, JSONObject.toJSONString(jsonObject));
return new Result();
}
/**
* 追加未响应数据
*
* @param data
* @param noRespData
* @return void
* @author zhy
* @date 2021/8/13 14:48
*/
private void noRespHandle(List<ScreenGovernRankDataDailyResultDTO> data, List<ScreenGovernRankDataDailyResultDTO> noRespData) {
data.forEach(item -> {
Optional<ScreenGovernRankDataDailyResultDTO> noDataOptional = noRespData.stream().filter(agency -> agency.getOrgId().equals(item.getOrgId())).findFirst();
// 如果有未响应的,项目转入次数 = 响应数 + 未响应数,否则,项目转入次数 = 响应数
if (noDataOptional.isPresent()) {
ScreenGovernRankDataDailyResultDTO agencyResult = noDataOptional.get();
item.setTransferCount(agencyResult.getResponseCount() + item.getResponseCount());
} else {
item.setTransferCount(item.getResponseCount());
}
});
}
}

874
esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/screen/ScreenGovernanceDao.xml

@ -0,0 +1,874 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.elink.esua.epdc.modules.screen.dao.ScreenGovernanceDao">
<select id="governrankdatadaily" resultType="com.elink.esua.epdc.dto.screen.result.ScreenGovernRankDataDailyResultDTO">
SELECT
DATE_FORMAT(
date_add(now(), INTERVAL - 1 DAY),
'%Y%m%d'
) AS dateId,
DATE_FORMAT(
STR_TO_DATE(
DATE_FORMAT(
date_add(now(), INTERVAL - 1 DAY),
'%Y-%m-%d'
),
'%Y'
),
'%Y'
) AS yearId,
DATE_FORMAT(
STR_TO_DATE(
DATE_FORMAT(
date_add(now(), INTERVAL - 1 DAY),
'%Y-%m-%d'
),
'%Y-%m'
),
'%Y%m'
) AS monthId,
'grid' AS orgType,
sd.id AS orgId,
sd.pid AS parentId,
sd. NAME AS orgName,
IFNULL(count(hp.id), 0) AS responseCount,
IFNULL(st.ITEM_SETTLE_TOTAL, 0) AS resolvedCount,
IFNULL(st.ITEM_CLOSED_TOTAL, 0) AS closedCount,
IFNULL(st.ITEM_CLOSED_TOTAL, 0) AS closedProjectCount,
IFNULL(
ROUND(
(
st.ITEM_SETTLE_TOTAL + st.ITEM_CLOSED_TOTAL
) / st.ITEM_TOTAL,
4
),
0
) AS resolvedRatio,
IFNULL(hs.BYSELF_TOTAL, 0) AS governCount,
IFNULL(
ROUND(
hs.BYSELF_TOTAL / hs.ITEM_TOTAL,
4
),
0
) AS governRatio,
IFNULL(
hs.EVA_GOOD_TOTAL + hs.EVA_VERYGOOD_TOTAL,
0
) AS satisfactionCount,
IFNULL(
ROUND(
(
hs.EVA_GOOD_TOTAL + hs.EVA_VERYGOOD_TOTAL
) / hs.ITEM_TOTAL,
4
),
0
) AS satisfactionRatio
FROM
esua_epdc_admin.sys_dept sd
LEFT JOIN esua_epdc_events.epdc_item_handle_process hp ON hp.HANDLER_DEPT_ID = sd.id
AND hp.DEL_FLAG = '0'
AND DATE_FORMAT(hp.CREATED_TIME, '%Y-%m-%d') &lt;= DATE_FORMAT(
date_add(now(), INTERVAL - 1 DAY),
'%Y-%m-%d'
)
LEFT JOIN esua_epdc_analysis.epdc_issue_item_statistics st ON st.GRID_ID = sd.id
LEFT JOIN esua_epdc_analysis.epdc_grid_handle_statistics hs ON hs.DEPT_ID = sd.id
WHERE
sd.del_flag = '0'
AND sd.type_key = 'grid_party'
AND sd.id NOT IN (
SELECT
t.dept_id
FROM
esua_epdc_admin.sys_dept_config t
WHERE
t.del_flag = '0'
)
GROUP BY
sd.id
</select>
<select id="governrankdatadailyAgency" resultType="com.elink.esua.epdc.dto.screen.result.ScreenGovernRankDataDailyResultDTO">
SELECT
DATE_FORMAT(
date_add(now(), INTERVAL - 1 DAY),
'%Y%m%d'
) AS dateId,
DATE_FORMAT(
STR_TO_DATE(
DATE_FORMAT(
date_add(now(), INTERVAL - 1 DAY),
'%Y-%m-%d'
),
'%Y'
),
'%Y'
) AS yearId,
DATE_FORMAT(
STR_TO_DATE(
DATE_FORMAT(
date_add(now(), INTERVAL - 1 DAY),
'%Y-%m-%d'
),
'%Y-%m'
),
'%Y%m'
) AS monthId,
'agency' AS orgType,
sd.id AS orgId,
sd.pid AS parentId,
sd. NAME AS orgName,
IFNULL(count(hp.id), 0) AS responseCount,
IFNULL(st.ITEM_SETTLE_TOTAL, 0) AS resolvedCount,
IFNULL(st.ITEM_CLOSED_TOTAL, 0) AS closedCount,
IFNULL(st.ITEM_CLOSED_TOTAL, 0) AS closedProjectCount,
IFNULL(
ROUND(
(
st.ITEM_SETTLE_TOTAL + st.ITEM_CLOSED_TOTAL
) / st.ITEM_TOTAL,
4
),
0
) AS resolvedRatio,
IFNULL(hs.BYSELF_TOTAL, 0) AS governCount,
IFNULL(
ROUND(
hs.BYSELF_TOTAL / hs.ITEM_TOTAL,
4
),
0
) AS governRatio,
IFNULL(
hs.EVA_GOOD_TOTAL + hs.EVA_VERYGOOD_TOTAL,
0
) AS satisfactionCount,
IFNULL(
ROUND(
(
hs.EVA_GOOD_TOTAL + hs.EVA_VERYGOOD_TOTAL
) / hs.ITEM_TOTAL,
4
),
0
) AS satisfactionRatio
FROM
esua_epdc_admin.sys_dept sd
LEFT JOIN esua_epdc_events.epdc_item_handle_process hp ON hp.HANDLER_DEPT_ID = sd.id
AND hp.DEL_FLAG = '0'
AND DATE_FORMAT(hp.CREATED_TIME, '%Y-%m-%d') &lt;= DATE_FORMAT(
date_add(now(), INTERVAL - 1 DAY),
'%Y-%m-%d'
)
LEFT JOIN esua_epdc_analysis.epdc_issue_item_statistics st ON st.GRID_ID = sd.id
LEFT JOIN esua_epdc_analysis.epdc_grid_handle_statistics hs ON hs.DEPT_ID = sd.id
WHERE
sd.del_flag = '0'
AND sd.id NOT IN (
SELECT
t.dept_id
FROM
esua_epdc_admin.sys_dept_config t
WHERE
t.del_flag = '0'
)
AND sd.type_key IN (
'community_party',
'street_party'
)
GROUP BY
sd.id
</select>
<select id="governrankdatadailyNoResp" resultType="com.elink.esua.epdc.dto.screen.result.ScreenGovernRankDataDailyResultDTO">
SELECT
d.DEPT_ID AS orgId,
COUNT(0) AS responseCount
FROM
esua_epdc_events.epdc_item_dept d
LEFT JOIN esua_epdc_events.epdc_item i ON i.ID = d.ITEM_ID
WHERE
d.ITEM_HANDLE_ID IS NOT NULL
AND d.DEL_FLAG = '0'
AND i.DEL_FLAG = '0'
AND i.ITEM_STATE = '0'
AND DATE_FORMAT(d.CREATED_TIME, '%Y-%m-%d') &lt;= DATE_FORMAT(
date_add(now(), INTERVAL - 1 DAY),
'%Y-%m-%d'
)
GROUP BY
d.DEPT_ID
</select>
<select id="gridgoverndaily" resultType="com.elink.esua.epdc.dto.screen.result.ScreenGridGovernDailyResultDTO">
SELECT
info.*, IFNULL(
(
info.inGroupTopicResolvedCount + info.inGroupTopicUnResolvedCount
) / info.problemResolvedCount,
0
) AS groupSelfGovernRatio,
IFNULL(
info.gridSelfGovernProjectTotal / info.problemResolvedCount,
0
) AS gridSelfGovernRatio,
IFNULL(
info.communityClosedCount / info.problemResolvedCount,
0
) AS communityClosedRatio,
IFNULL(
info.streetClosedCount / info.problemResolvedCount,
0
) AS streetClosedRatio,
0 AS districtDeptClosedRatio
FROM
(
SELECT
DATE_FORMAT(
date_add(now(), INTERVAL - 1 DAY),
'%Y%m%d'
) AS dateId,
sd.id AS gridId,
sd.pid,
sd.pids,
IFNULL(
(
topic.topicResolvedCount + topic.topicUnResolvedCount + issue.issueResolvedCount + issue.issueUnResolvedCount + item.issueProjectResolvedCount + item.issueProjectResolvedCount + item.issueProjectUnResolvedCount
),
0
) AS problemResolvedCount,
IFNULL(topic.topicResolvedCount, 0) AS topicResolvedCount,
IFNULL(
topic.topicUnResolvedCount,
0
) AS topicUnResolvedCount,
IFNULL(issue.issueResolvedCount, 0) AS issueResolvedCount,
IFNULL(
issue.issueUnResolvedCount,
0
) AS issueUnResolvedCount,
IFNULL(
item.issueProjectResolvedCount,
0
) AS issueProjectResolvedCount,
IFNULL(
item.issueProjectUnResolvedCount,
0
) AS issueProjectUnResolvedCount,
IFNULL(
item.approvalProjectResolvedCount,
0
) AS approvalProjectResolvedCount,
IFNULL(
item.approvalProjectUnResolvedCount,
0
) AS approvalProjectUnResolvedCount,
IFNULL(
topic.inGroupTopicResolvedCount,
0
) AS inGroupTopicResolvedCount,
IFNULL(
topic.inGroupTopicUnResolvedCount,
0
) AS inGroupTopicUnResolvedCount,
IFNULL(
selfsolved.fromIssueResolvedInGridCount,
0
) AS fromIssueResolvedInGridCount,
IFNULL(
selfsolved.fromIssueUnResolvedInGridCount,
0
) AS fromIssueUnResolvedInGridCount,
IFNULL(
selfsolved.fromAgencyResolvedInGridCount,
0
) AS fromAgencyResolvedInGridCount,
IFNULL(
selfsolved.fromAgencyUnResolvedInGridCount,
0
) AS fromAgencyUnResolvedInGridCount,
IFNULL(
(
selfsolved.fromIssueResolvedInGridCount + selfsolved.fromIssueUnResolvedInGridCount + selfsolved.fromIssueUnResolvedInGridCount + selfsolved.fromAgencyResolvedInGridCount
),
0
) AS gridSelfGovernProjectTotal,
IFNULL(
commsolved.communityClosedCount,
0
) AS communityClosedCount,
IFNULL(
streetsolved.streetClosedCount,
0
) AS streetClosedCount,
0 AS districtDeptClosedCount
FROM
esua_epdc_admin.sys_dept sd
LEFT JOIN (
SELECT
GRID_ID,
IFNULL(COUNT(0), 0) AS topicResolvedCount,
IFNULL(COUNT(0), 0) AS inGroupTopicResolvedCount,
0 AS topicUnResolvedCount,
0 AS inGroupTopicUnResolvedCount
FROM
esua_epdc_group.epdc_topic et
WHERE
et.DEL_FLAG = '0'
AND DATE_FORMAT(et.UPDATED_TIME, '%Y-%m-%d') = DATE_FORMAT(
date_add(now(), INTERVAL - 1 DAY),
'%Y-%m-%d'
)
AND et.STATE = '20'
GROUP BY
et.GRID_ID
) topic ON topic.GRID_ID = sd.id
LEFT JOIN (
SELECT
GRID_ID,
IFNULL(COUNT(0), 0) AS issueResolvedCount,
0 AS issueUnResolvedCount
FROM
esua_epdc_events.epdc_issue eis
WHERE
eis.DEL_FLAG = '0'
AND DATE_FORMAT(
eis.UPDATED_TIME,
'%Y-%m-%d'
) = DATE_FORMAT(
date_add(now(), INTERVAL - 1 DAY),
'%Y-%m-%d'
)
AND eis.ISSUE_STATE = '2'
GROUP BY
eis.GRID_ID
) issue ON issue.GRID_ID = sd.id
LEFT JOIN (
SELECT
GRID_ID,
IFNULL(COUNT(0), 0) AS issueProjectResolvedCount,
0 AS issueProjectUnResolvedCount,
0 AS approvalProjectResolvedCount,
0 AS approvalProjectUnResolvedCount
FROM
esua_epdc_events.epdc_item eit
WHERE
eit.DEL_FLAG = '0'
AND DATE_FORMAT(
eit.UPDATED_TIME,
'%Y-%m-%d'
) = DATE_FORMAT(
date_add(now(), INTERVAL - 1 DAY),
'%Y-%m-%d'
)
AND eit.ITEM_STATE IN ('5', '10')
GROUP BY
GRID_ID
) item ON item.GRID_ID = sd.id
LEFT JOIN (
SELECT
GRID_ID,
IFNULL(COUNT(0), 0) AS fromIssueResolvedInGridCount,
0 AS fromIssueUnResolvedInGridCount,
0 AS fromAgencyResolvedInGridCount,
0 AS fromAgencyUnResolvedInGridCount
FROM
(
SELECT
GRID_ID,
eit.id,
hp.HANDLER_DEPT_ID,
eit.UPDATED_TIME
FROM
esua_epdc_events.epdc_item eit
LEFT JOIN esua_epdc_events.epdc_item_handle_process hp ON hp.item_id = eit.id
WHERE
eit.DEL_FLAG = '0'
AND hp.DEL_FLAG = '0'
AND eit.ITEM_STATE IN ('5', '10')
GROUP BY
eit.GRID_ID,
eit.ID
HAVING
COUNT(DISTINCT hp.HANDLER_DEPT_ID) = 1
) t
WHERE
t.GRID_ID = t.HANDLER_DEPT_ID
AND DATE_FORMAT(t.UPDATED_TIME, '%Y-%m-%d') = DATE_FORMAT(
date_add(now(), INTERVAL - 1 DAY),
'%Y-%m-%d'
)
GROUP BY
t.GRID_ID
) selfsolved ON selfsolved.GRID_ID = sd.id
LEFT JOIN (
SELECT
GRID_ID,
IFNULL(COUNT(0), 0) AS communityClosedCount
FROM
(
SELECT
GRID_ID,
eit.id,
hp.HANDLER_DEPT_ID,
eit.UPDATED_TIME
FROM
esua_epdc_events.epdc_item eit
LEFT JOIN esua_epdc_events.epdc_item_handle_process hp ON hp.item_id = eit.id
LEFT JOIN esua_epdc_admin.sys_dept sd ON sd.id = hp.HANDLER_DEPT_ID
WHERE
eit.DEL_FLAG = '0'
AND hp.DEL_FLAG = '0'
AND eit.ITEM_STATE IN ('5', '10')
AND hp.STATE IN ('5', '10')
AND sd.type_key = 'community_party'
GROUP BY
eit.GRID_ID,
eit.ID
) t
WHERE
DATE_FORMAT(t.UPDATED_TIME, '%Y-%m-%d') = DATE_FORMAT(
date_add(now(), INTERVAL - 1 DAY),
'%Y-%m-%d'
)
GROUP BY
t.GRID_ID
) commsolved ON commsolved.GRID_ID = sd.id
LEFT JOIN (
SELECT
GRID_ID,
IFNULL(COUNT(0), 0) AS streetClosedCount
FROM
(
SELECT
GRID_ID,
eit.id,
hp.HANDLER_DEPT_ID,
eit.UPDATED_TIME
FROM
esua_epdc_events.epdc_item eit
LEFT JOIN esua_epdc_events.epdc_item_handle_process hp ON hp.item_id = eit.id
LEFT JOIN esua_epdc_admin.sys_dept sd ON sd.id = hp.HANDLER_DEPT_ID
WHERE
eit.DEL_FLAG = '0'
AND hp.DEL_FLAG = '0'
AND eit.ITEM_STATE IN ('5', '10')
AND hp.STATE IN ('5', '10')
AND sd.type_key = 'street_party'
GROUP BY
eit.GRID_ID,
eit.ID
) t
WHERE
DATE_FORMAT(t.UPDATED_TIME, '%Y-%m-%d') = DATE_FORMAT(
date_add(now(), INTERVAL - 1 DAY),
'%Y-%m-%d'
)
GROUP BY
t.GRID_ID
) streetsolved ON streetsolved.GRID_ID = sd.id
WHERE
sd.del_flag = '0'
AND sd.type_key = 'grid_party'
AND sd.id NOT IN (
SELECT
t.dept_id
FROM
esua_epdc_admin.sys_dept_config t
WHERE
t.del_flag = '0'
)
GROUP BY
sd.id
) info
</select>
<select id="agencygoverndaily" resultType="com.elink.esua.epdc.dto.screen.result.ScreenAgencyGovernDailyResultDTO">
SELECT
DATE_FORMAT(
date_add(now(), INTERVAL - 1 DAY),
'%Y%m%d'
) AS dateId,
sd.id AS agencyId,
CASE
WHEN sd.type_key = 'community_party' THEN
'community'
WHEN sd.type_key = 'street_party' THEN
'street'
END AS LEVEL,
sd.pid,
sd.pids,
IFNULL(
sum(info.problemResolvedCount),
0
) AS problemResolvedCount,
IFNULL(
sum(info.topicResolvedCount),
0
) AS topicResolvedCount,
IFNULL(
sum(info.topicUnResolvedCount),
0
) AS topicUnResolvedCount,
IFNULL(
sum(info.issueResolvedCount),
0
) AS issueResolvedCount,
IFNULL(
sum(info.issueUnResolvedCount),
0
) AS issueUnResolvedCount,
IFNULL(
sum(
info.issueProjectResolvedCount
),
0
) AS issueProjectResolvedCount,
IFNULL(
sum(
info.issueProjectUnResolvedCount
),
0
) AS issueProjectUnResolvedCount,
IFNULL(
sum(
info.approvalProjectResolvedCount
),
0
) AS approvalProjectResolvedCount,
IFNULL(
sum(
info.approvalProjectUnResolvedCount
),
0
) AS approvalProjectUnResolvedCount,
IFNULL(
sum(
info.inGroupTopicResolvedCount
),
0
) AS inGroupTopicResolvedCount,
IFNULL(
sum(
info.inGroupTopicUnResolvedCount
),
0
) AS inGroupTopicUnResolvedCount,
IFNULL(
sum(
info.gridSelfGovernProjectTotal
),
0
) AS gridSelfGovernProjectTotal,
IFNULL(
sum(info.communityClosedCount),
0
) AS communityClosedCount,
IFNULL(
sum(info.streetClosedCount),
0
) AS streetClosedCount,
0 AS districtDeptClosedCount,
IFNULL(
(
sum(
info.inGroupTopicResolvedCount
) + sum(
info.inGroupTopicUnResolvedCount
)
) / sum(info.problemResolvedCount),
0
) AS groupSelfGovernRatio,
IFNULL(
sum(
info.gridSelfGovernProjectTotal
) / sum(info.problemResolvedCount),
0
) AS gridSelfGovernRatio,
IFNULL(
sum(info.communityClosedCount) / sum(info.problemResolvedCount),
0
) AS communityClosedRatio,
IFNULL(
sum(info.streetClosedCount) / sum(info.problemResolvedCount),
0
) AS streetClosedRatio,
0 AS districtDeptClosedRatio
FROM
(
SELECT
sd.pids,
IFNULL(
(
topic.topicResolvedCount + topic.topicUnResolvedCount + issue.issueResolvedCount + issue.issueUnResolvedCount + item.issueProjectResolvedCount + item.issueProjectResolvedCount + item.issueProjectUnResolvedCount
),
0
) AS problemResolvedCount,
IFNULL(topic.topicResolvedCount, 0) AS topicResolvedCount,
IFNULL(
topic.topicUnResolvedCount,
0
) AS topicUnResolvedCount,
IFNULL(issue.issueResolvedCount, 0) AS issueResolvedCount,
IFNULL(
issue.issueUnResolvedCount,
0
) AS issueUnResolvedCount,
IFNULL(
item.issueProjectResolvedCount,
0
) AS issueProjectResolvedCount,
IFNULL(
item.issueProjectUnResolvedCount,
0
) AS issueProjectUnResolvedCount,
IFNULL(
item.approvalProjectResolvedCount,
0
) AS approvalProjectResolvedCount,
IFNULL(
item.approvalProjectUnResolvedCount,
0
) AS approvalProjectUnResolvedCount,
IFNULL(
topic.inGroupTopicResolvedCount,
0
) AS inGroupTopicResolvedCount,
IFNULL(
topic.inGroupTopicUnResolvedCount,
0
) AS inGroupTopicUnResolvedCount,
IFNULL(
selfsolved.fromIssueResolvedInGridCount,
0
) AS fromIssueResolvedInGridCount,
IFNULL(
selfsolved.fromIssueUnResolvedInGridCount,
0
) AS fromIssueUnResolvedInGridCount,
IFNULL(
selfsolved.fromAgencyResolvedInGridCount,
0
) AS fromAgencyResolvedInGridCount,
IFNULL(
selfsolved.fromAgencyUnResolvedInGridCount,
0
) AS fromAgencyUnResolvedInGridCount,
IFNULL(
(
selfsolved.fromIssueResolvedInGridCount + selfsolved.fromIssueUnResolvedInGridCount + selfsolved.fromIssueUnResolvedInGridCount + selfsolved.fromAgencyResolvedInGridCount
),
0
) AS gridSelfGovernProjectTotal,
IFNULL(
commsolved.communityClosedCount,
0
) AS communityClosedCount,
IFNULL(
streetsolved.streetClosedCount,
0
) AS streetClosedCount,
0 AS districtDeptClosedCount
FROM
esua_epdc_admin.sys_dept sd
LEFT JOIN (
SELECT
GRID_ID,
IFNULL(COUNT(0), 0) AS topicResolvedCount,
IFNULL(COUNT(0), 0) AS inGroupTopicResolvedCount,
0 AS topicUnResolvedCount,
0 AS inGroupTopicUnResolvedCount
FROM
esua_epdc_group.epdc_topic et
WHERE
et.DEL_FLAG = '0'
AND DATE_FORMAT(et.UPDATED_TIME, '%Y-%m-%d')= DATE_FORMAT(
date_add(now(), INTERVAL - 1 DAY),
'%Y-%m-%d'
)
AND et.STATE = '20'
GROUP BY
et.GRID_ID
) topic ON topic.GRID_ID = sd.id
LEFT JOIN (
SELECT
GRID_ID,
IFNULL(COUNT(0), 0) AS issueResolvedCount,
0 AS issueUnResolvedCount
FROM
esua_epdc_events.epdc_issue eis
WHERE
eis.DEL_FLAG = '0'
AND DATE_FORMAT(
eis.UPDATED_TIME,
'%Y-%m-%d'
)= DATE_FORMAT(
date_add(now(), INTERVAL - 1 DAY),
'%Y-%m-%d'
)
AND eis.ISSUE_STATE = '2'
GROUP BY
eis.GRID_ID
) issue ON issue.GRID_ID = sd.id
LEFT JOIN (
SELECT
GRID_ID,
IFNULL(COUNT(0), 0) AS issueProjectResolvedCount,
0 AS issueProjectUnResolvedCount,
0 AS approvalProjectResolvedCount,
0 AS approvalProjectUnResolvedCount
FROM
esua_epdc_events.epdc_item eit
WHERE
eit.DEL_FLAG = '0'
AND DATE_FORMAT(
eit.UPDATED_TIME,
'%Y-%m-%d'
)= DATE_FORMAT(
date_add(now(), INTERVAL - 1 DAY),
'%Y-%m-%d'
)
AND eit.ITEM_STATE IN ('5', '10')
GROUP BY
GRID_ID
) item ON item.GRID_ID = sd.id
LEFT JOIN (
SELECT
GRID_ID,
IFNULL(COUNT(0), 0) AS fromIssueResolvedInGridCount,
0 AS fromIssueUnResolvedInGridCount,
0 AS fromAgencyResolvedInGridCount,
0 AS fromAgencyUnResolvedInGridCount
FROM
(
SELECT
GRID_ID,
eit.id,
hp.HANDLER_DEPT_ID,
eit.UPDATED_TIME
FROM
esua_epdc_events.epdc_item eit
LEFT JOIN esua_epdc_events.epdc_item_handle_process hp ON hp.item_id = eit.id
WHERE
eit.DEL_FLAG = '0'
AND hp.DEL_FLAG = '0'
AND eit.ITEM_STATE IN ('5', '10')
GROUP BY
eit.GRID_ID,
eit.ID
HAVING
COUNT(DISTINCT hp.HANDLER_DEPT_ID) = 1
) t
WHERE
t.GRID_ID = t.HANDLER_DEPT_ID
AND DATE_FORMAT(t.UPDATED_TIME, '%Y-%m-%d')= DATE_FORMAT(
date_add(now(), INTERVAL - 1 DAY),
'%Y-%m-%d'
)
GROUP BY
t.GRID_ID
) selfsolved ON selfsolved.GRID_ID = sd.id
LEFT JOIN (
SELECT
GRID_ID,
IFNULL(COUNT(0), 0) AS communityClosedCount
FROM
(
SELECT
GRID_ID,
eit.id,
hp.HANDLER_DEPT_ID,
eit.UPDATED_TIME
FROM
esua_epdc_events.epdc_item eit
LEFT JOIN esua_epdc_events.epdc_item_handle_process hp ON hp.item_id = eit.id
LEFT JOIN esua_epdc_admin.sys_dept sd ON sd.id = hp.HANDLER_DEPT_ID
WHERE
eit.DEL_FLAG = '0'
AND hp.DEL_FLAG = '0'
AND eit.ITEM_STATE IN ('5', '10')
AND hp.STATE IN ('5', '10')
AND sd.type_key = 'community_party'
GROUP BY
eit.GRID_ID,
eit.ID
) t
WHERE
DATE_FORMAT(t.UPDATED_TIME, '%Y-%m-%d')= DATE_FORMAT(
date_add(now(), INTERVAL - 1 DAY),
'%Y-%m-%d'
)
GROUP BY
t.GRID_ID
) commsolved ON commsolved.GRID_ID = sd.id
LEFT JOIN (
SELECT
GRID_ID,
IFNULL(COUNT(0), 0) AS streetClosedCount
FROM
(
SELECT
GRID_ID,
eit.id,
hp.HANDLER_DEPT_ID,
eit.UPDATED_TIME
FROM
esua_epdc_events.epdc_item eit
LEFT JOIN esua_epdc_events.epdc_item_handle_process hp ON hp.item_id = eit.id
LEFT JOIN esua_epdc_admin.sys_dept sd ON sd.id = hp.HANDLER_DEPT_ID
WHERE
eit.DEL_FLAG = '0'
AND hp.DEL_FLAG = '0'
AND eit.ITEM_STATE IN ('5', '10')
AND hp.STATE IN ('5', '10')
AND sd.type_key = 'street_party'
GROUP BY
eit.GRID_ID,
eit.ID
) t
WHERE
DATE_FORMAT(t.UPDATED_TIME, '%Y-%m-%d')= DATE_FORMAT(
date_add(now(), INTERVAL - 1 DAY),
'%Y-%m-%d'
)
GROUP BY
t.GRID_ID
) streetsolved ON streetsolved.GRID_ID = sd.id
WHERE
sd.del_flag = '0'
AND sd.type_key = 'grid_party'
AND sd.id NOT IN (
SELECT
t.dept_id
FROM
esua_epdc_admin.sys_dept_config t
WHERE
t.del_flag = '0'
)
GROUP BY
sd.id
) info
LEFT JOIN esua_epdc_admin.sys_dept sd ON find_in_set(sd.`id`, info.pids)
WHERE
sd.del_flag = '0'
AND sd.id NOT IN (
SELECT
t.dept_id
FROM
esua_epdc_admin.sys_dept_config t
WHERE
t.del_flag = '0'
)
AND sd.type_key IN (
'community_party',
'street_party'
)
GROUP BY
sd.id
</select>
</mapper>

33
esua-epdc/epdc-module/epdc-job/epdc-job-client/src/main/java/com/elink/esua/epdc/dto/ScreenGovernanceParamDTO.java

@ -0,0 +1,33 @@
package com.elink.esua.epdc.dto;
import lombok.Data;
import java.io.Serializable;
/**
* 大屏数据采集接口共 (17)
*
* @author zhy
* @date 2021/6/29 14:41
*/
@Data
public class ScreenGovernanceParamDTO implements Serializable {
private static final long serialVersionUID = -6661828243095315569L;
/**
* 01治理能力排行数据(按日统计)数据
*/
private String governrankdatadaily;
/**
* 02网格治理指数
*/
private String gridgoverndaily;
/**
* 03组织治理指数
*/
private String agencygoverndaily;
}

34
esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/feign/AnalysisFeignClient.java

@ -488,4 +488,38 @@ public interface AnalysisFeignClient {
@PostMapping("analysis/girdManager/gridManagerUploadEvent")
Result selectGridManagerUploadEvent(ScreenJobFormDTO formDto);
// 治理能力
/**
* 01治理能力排行数据(按日统计)数据
*
* @param formDto 定时入参
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @author zhy
* @date 2021/6/28 10:57
*/
@PostMapping("analysis/data/stats/governance/governrankdatadaily")
Result governrankdatadaily(ScreenJobFormDTO formDto);
/**
* 02网格治理指数
*
* @param formDto 定时入参
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @author zhy
* @date 2021/6/28 10:57
*/
@PostMapping("analysis/data/stats/governance/gridgoverndaily")
Result gridgoverndaily(ScreenJobFormDTO formDto);
/**
* 03组织治理指数
*
* @param formDto 定时入参
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @author zhy
* @date 2021/6/28 10:57
*/
@PostMapping("analysis/data/stats/governance/agencygoverndaily")
Result agencygoverndaily(ScreenJobFormDTO formDto);
}

15
esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/feign/fallback/AnalysisFeignClientFallback.java

@ -249,4 +249,19 @@ public class AnalysisFeignClientFallback implements AnalysisFeignClient {
public Result getCategoryOrgDaily(String date) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_ANALYSIS_SERVER,"getCategoryOrgDaily", date);
}
@Override
public Result governrankdatadaily(ScreenJobFormDTO formDto) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_ANALYSIS_SERVER, "governrankdatadaily",formDto);
}
@Override
public Result gridgoverndaily(ScreenJobFormDTO formDto) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_ANALYSIS_SERVER, "gridgoverndaily",formDto);
}
@Override
public Result agencygoverndaily(ScreenJobFormDTO formDto) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_ANALYSIS_SERVER, "agencygoverndaily",formDto);
}
}

21
esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/task/screen/ScreenGovernancePushTask.java

@ -0,0 +1,21 @@
package com.elink.esua.epdc.task.screen;
/**
* 治理能力数据推送
*
* @author zhy
* @date 2021/6/28 10:42
*/
public interface ScreenGovernancePushTask {
/**
* 大屏数据推送
*
* @param param 入参
* 参数格式{'gridPartyMemberData':'2020-08','gridPartyAbility':'2020-08','orgPartyAbility':'2020-08','gridServiceAbility':'2020-08','orgServiceAbility':'2020-08','gridGovernAbility':'2020-08','orgGovernAbility':'2020-08','deptGovernAbility':'2020-08','all':'2020-08'}
* @return void
* @author Liuchuang
* @since 2020/9/9 15:21
*/
void run(String param);
}

97
esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/task/screen/ScreenGovernancePushTaskImpl.java

@ -0,0 +1,97 @@
package com.elink.esua.epdc.task.screen;
import com.alibaba.fastjson.JSONObject;
import com.elink.esua.epdc.dto.ScreenGovernanceParamDTO;
import com.elink.esua.epdc.dto.screen.form.ScreenJobFormDTO;
import com.elink.esua.epdc.feign.AnalysisFeignClient;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* 治理能力数据推送
*
* @author zhy
* @date 2021/6/28 10:42
*/
@Component("screenBaseReportPushTask")
public class ScreenGovernancePushTaskImpl implements ScreenGovernancePushTask {
private final Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
private AnalysisFeignClient analysisFeignClient;
@Override
public void run(String param) {
// 参数处理
ScreenGovernanceParamDTO paramDto = new ScreenGovernanceParamDTO();
if (StringUtils.isNotEmpty(param)) {
paramDto = JSONObject.parseObject(param, ScreenGovernanceParamDTO.class);
}
// 01、治理能力排行数据(按日统计)数据
governrankdatadaily(paramDto.getGovernrankdatadaily());
// 02、网格治理指数(天)
gridgoverndaily(paramDto.getGridgoverndaily());
// 03、组织治理指数(天)
agencygoverndaily(paramDto.getAgencygoverndaily());
}
/**
* 01治理能力排行数据(按日统计)数据
*
* @param yearMonth 统计月份格式yyyyMMdd
* @return void
* @author zhy
* @date 2021/6/28 10:47
*/
public void governrankdatadaily(String yearMonth) {
ScreenJobFormDTO formDto = new ScreenJobFormDTO();
formDto.setYearMonth(yearMonth);
// 方法名
String methodName = Thread.currentThread().getStackTrace()[2].getMethodName();
logger.info("<" + methodName + "|治理能力排行数据(按日统计)数据>定时任务开始执行" + yearMonth);
analysisFeignClient.governrankdatadaily(formDto);
logger.info("<" + methodName + "|治理能力排行数据(按日统计)数据>定时任务执行结束");
}
/**
* 02网格治理指数
*
* @param yearMonth
* @return void
* @author zhy
* @date 2021/6/28 10:47
*/
public void gridgoverndaily(String yearMonth) {
ScreenJobFormDTO formDto = new ScreenJobFormDTO();
formDto.setYearMonth(yearMonth);
// 方法名
String methodName = Thread.currentThread().getStackTrace()[2].getMethodName();
logger.info("<" + methodName + "|网格治理指数>定时任务开始执行");
analysisFeignClient.gridgoverndaily(formDto);
logger.info("<" + methodName + "|网格治理指数>定时任务执行结束");
}
/**
* 03组织治理指数
*
* @param yearMonth
* @return void
* @author zhy
* @date 2021/6/28 10:47
*/
public void agencygoverndaily(String yearMonth) {
ScreenJobFormDTO formDto = new ScreenJobFormDTO();
formDto.setYearMonth(yearMonth);
// 方法名
String methodName = Thread.currentThread().getStackTrace()[2].getMethodName();
logger.info("<" + methodName + "|组织治理指数>定时任务开始执行");
analysisFeignClient.agencygoverndaily(formDto);
logger.info("<" + methodName + "|组织治理指数>定时任务执行结束");
}
}
Loading…
Cancel
Save