diff --git a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/EpmetConstant.java b/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/EpmetConstant.java index 712eb2f8..f8bc5224 100644 --- a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/EpmetConstant.java +++ b/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"; + } diff --git a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/DateUtils.java b/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/DateUtils.java index b8b64bc6..d29a000a 100644 --- a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/DateUtils.java +++ b/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 日期 diff --git a/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-client/src/main/java/com/elink/esua/epdc/dto/screen/result/ScreenAgencyGovernDailyResultDTO.java b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-client/src/main/java/com/elink/esua/epdc/dto/screen/result/ScreenAgencyGovernDailyResultDTO.java new file mode 100644 index 00000000..42237e2f --- /dev/null +++ b/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; +} diff --git a/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-client/src/main/java/com/elink/esua/epdc/dto/screen/result/ScreenGovernRankDataDailyResultDTO.java b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-client/src/main/java/com/elink/esua/epdc/dto/screen/result/ScreenGovernRankDataDailyResultDTO.java new file mode 100644 index 00000000..782878e7 --- /dev/null +++ b/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; +} diff --git a/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-client/src/main/java/com/elink/esua/epdc/dto/screen/result/ScreenGovernanceResultDTO.java b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-client/src/main/java/com/elink/esua/epdc/dto/screen/result/ScreenGovernanceResultDTO.java new file mode 100644 index 00000000..4dbaa842 --- /dev/null +++ b/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; +} diff --git a/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-client/src/main/java/com/elink/esua/epdc/dto/screen/result/ScreenGridGovernDailyResultDTO.java b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-client/src/main/java/com/elink/esua/epdc/dto/screen/result/ScreenGridGovernDailyResultDTO.java new file mode 100644 index 00000000..ecb248c7 --- /dev/null +++ b/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; +} diff --git a/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/screen/controller/ScreenGovernanceController.java b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/screen/controller/ScreenGovernanceController.java new file mode 100644 index 00000000..0dde5b37 --- /dev/null +++ b/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("定时任务执行"); + 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("定时任务执行"); + 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("定时任务执行"); + return screenGovernanceService.agencygoverndaily(formDto); + } + + +} diff --git a/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/screen/dao/ScreenGovernanceDao.java b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/screen/dao/ScreenGovernanceDao.java new file mode 100644 index 00000000..5562abb6 --- /dev/null +++ b/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 { + + /** + * 治理能力排行数据(按日统计)数据 + * 网格统计 + * + * @param + * @return java.util.List + * @author zhy + * @date 2021/6/28 14:06 + */ + List governrankdatadaily(); + + /** + * 治理能力排行数据(按日统计)数据 + * 组织统计 + * + * @param + * @return java.util.List + * @author zhy + * @date 2021/6/28 14:06 + */ + List governrankdatadailyAgency(); + + /** + * 治理能力排行数据(按日统计)数据 + * 未响应数 + * + * @param + * @return java.util.List + * @author zhy + * @date 2021/6/28 14:06 + */ + List governrankdatadailyNoResp(); + + /** + * 网格治理指数(天) + * + * @param + * @return java.util.List + * @author zhy + * @date 2021/8/13 17:55 + */ + List gridgoverndaily(); + + + /** + * 组织治理指数(天) + * + * @param + * @return java.util.List + * @author zhy + * @date 2021/8/13 17:55 + */ + List agencygoverndaily(); + +} diff --git a/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/screen/service/ScreenGovernanceService.java b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/screen/service/ScreenGovernanceService.java new file mode 100644 index 00000000..4b6d62bd --- /dev/null +++ b/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); + +} diff --git a/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/screen/service/impl/ScreenGovernanceServiceImpl.java b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/screen/service/impl/ScreenGovernanceServiceImpl.java new file mode 100644 index 00000000..2311fb6b --- /dev/null +++ b/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 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 data = baseDao.governrankdatadaily(); + List agencyData = baseDao.governrankdatadailyAgency(); + List noRespData = baseDao.governrankdatadailyNoResp(); + + // 处理未响应和项目转入次数 + noRespHandle(data, noRespData); + noRespHandle(agencyData, noRespData); + + // 社区数据需要在本身基础上再加上网格的合计 + data.forEach(item -> { + Optional 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 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 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 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 data, List noRespData) { + data.forEach(item -> { + Optional 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()); + } + }); + } +} diff --git a/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/screen/ScreenGovernanceDao.xml b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/screen/ScreenGovernanceDao.xml new file mode 100644 index 00000000..c0a34838 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/screen/ScreenGovernanceDao.xml @@ -0,0 +1,874 @@ + + + + + + + + + + + + + + + + diff --git a/esua-epdc/epdc-module/epdc-job/epdc-job-client/src/main/java/com/elink/esua/epdc/dto/ScreenGovernanceParamDTO.java b/esua-epdc/epdc-module/epdc-job/epdc-job-client/src/main/java/com/elink/esua/epdc/dto/ScreenGovernanceParamDTO.java new file mode 100644 index 00000000..fae30706 --- /dev/null +++ b/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; + +} diff --git a/esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/feign/AnalysisFeignClient.java b/esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/feign/AnalysisFeignClient.java index d530c094..5433c9ee 100644 --- a/esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/feign/AnalysisFeignClient.java +++ b/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); } diff --git a/esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/feign/fallback/AnalysisFeignClientFallback.java b/esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/feign/fallback/AnalysisFeignClientFallback.java index b6035a71..844425ed 100644 --- a/esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/feign/fallback/AnalysisFeignClientFallback.java +++ b/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); + } } diff --git a/esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/task/screen/ScreenGovernancePushTask.java b/esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/task/screen/ScreenGovernancePushTask.java new file mode 100644 index 00000000..54aef2f8 --- /dev/null +++ b/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); +} diff --git a/esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/task/screen/ScreenGovernancePushTaskImpl.java b/esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/task/screen/ScreenGovernancePushTaskImpl.java new file mode 100644 index 00000000..a78a7fdb --- /dev/null +++ b/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 + "|组织治理指数>定时任务执行结束"); + } + +}