From e5b1df2c4b8ea19bada2c7c4a28f61fd3ab8edf3 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Tue, 13 Dec 2022 17:26:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=B8=80=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/govorg/form/GridLivelyFormDTO.java | 3 ++ .../feign/DataAggregatorOpenFeignClient.java | 7 ++++ ...DataAggregatorOpenFeignClientFallback.java | 8 ++++ .../govorg/impl/GovOrgServiceImpl.java | 7 +++- .../form/HistoryScoreComputeFormDTO.java | 10 +++-- .../result/HistoryScoreComputeResultDTO.java | 4 +- .../data-statistical-server/pom.xml | 6 +++ .../impl/ScreenPyHistoryScoreServiceImpl.java | 40 ++++++++++++++++--- 8 files changed, 72 insertions(+), 13 deletions(-) diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/GridLivelyFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/GridLivelyFormDTO.java index 6c1f23785b..a6f2026789 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/GridLivelyFormDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/GridLivelyFormDTO.java @@ -33,4 +33,7 @@ public class GridLivelyFormDTO implements Serializable { @NotBlank(message = "结束查询时间不能为空", groups = {Grid.class}) private String endTime; + //数据区分 type=historyScore表示以平阴中间库网格数据为准来计算 + private String type = ""; + } diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/DataAggregatorOpenFeignClient.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/DataAggregatorOpenFeignClient.java index f979ead709..8d2624af35 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/DataAggregatorOpenFeignClient.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/DataAggregatorOpenFeignClient.java @@ -7,6 +7,7 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.dataaggre.dto.epmetuser.form.ResisByPolicyRulesFormDTO; import com.epmet.dataaggre.dto.epmetuser.result.ResiByPolicyInfoResultDTO; import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO; +import com.epmet.dataaggre.dto.govorg.result.GridLivelyResultDTO; import com.epmet.dataaggre.feign.impl.DataAggregatorOpenFeignClientFallbackFactory; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; @@ -33,4 +34,10 @@ public interface DataAggregatorOpenFeignClient { */ @PostMapping("data/aggregator/icuser/listByPolicyRules") Result> listByPolicyRules(@RequestBody ResisByPolicyRulesFormDTO input); + + /** + * 网格活跃度统计 + */ + @PostMapping(value = "data/aggregator/org/gridlively") + Result> grdiLively(@RequestBody GridLivelyFormDTO form); } diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/impl/DataAggregatorOpenFeignClientFallback.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/impl/DataAggregatorOpenFeignClientFallback.java index 2cec07e6b3..c180033e19 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/impl/DataAggregatorOpenFeignClientFallback.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/impl/DataAggregatorOpenFeignClientFallback.java @@ -7,8 +7,11 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.dataaggre.dto.epmetuser.form.ResisByPolicyRulesFormDTO; import com.epmet.dataaggre.dto.epmetuser.result.ResiByPolicyInfoResultDTO; import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO; +import com.epmet.dataaggre.dto.govorg.result.GridLivelyResultDTO; import com.epmet.dataaggre.feign.DataAggregatorOpenFeignClient; +import java.util.List; + public class DataAggregatorOpenFeignClientFallback implements DataAggregatorOpenFeignClient { /** * 定时任务导出网格活跃统计表 @@ -24,4 +27,9 @@ public class DataAggregatorOpenFeignClientFallback implements DataAggregatorOpen public Result> listByPolicyRules(ResisByPolicyRulesFormDTO input) { return ModuleUtils.feignConError(ServiceConstant.DATA_AGGREGATOR_SERVER, "listByPolicyRules", input); } + + @Override + public Result> grdiLively(GridLivelyFormDTO form) { + return ModuleUtils.feignConError(ServiceConstant.DATA_AGGREGATOR_SERVER, "grdiLively",form); + } } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java index 196126509c..67fd1cd832 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java @@ -707,7 +707,12 @@ public class GovOrgServiceImpl implements GovOrgService { @Override public List grdiLively(GridLivelyFormDTO formDTO) { //1.查询当前组织的直属下级组织列表及组织下的网格总数 - LinkedList subList = customerAgencyDao.subAgencyListAndGridSumNum(formDTO.getAgencyId()); + LinkedList subList = new LinkedList<>(); + if(StringUtils.isNotBlank(formDTO.getType())&&"".equals(formDTO.getType())){ + //TODO + }else { + subList = customerAgencyDao.subAgencyListAndGridSumNum(formDTO.getAgencyId()); + } //2.查询直属下级组织下网格在查询时间段内存在例行工作次数的网格,一天一条 List workList = epmetUserService.getGridDateRoutineWorkList(formDTO); //3.查询直属下级组织下网格在查询时间段内存在上报事件(直接立项)数的网格,一天一条 diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/indexcollect/form/HistoryScoreComputeFormDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/indexcollect/form/HistoryScoreComputeFormDTO.java index b5b030e4a1..47dce61362 100644 --- a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/indexcollect/form/HistoryScoreComputeFormDTO.java +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/indexcollect/form/HistoryScoreComputeFormDTO.java @@ -27,13 +27,15 @@ public class HistoryScoreComputeFormDTO implements Serializable { @NotBlank(message = "计算类型不能为空", groups = Compute.class) private String type; /** - * 起始时间 + * 起始时间,yyyyMMdd */ - private Date startTime; + @NotBlank(message = "起始时间不能为空", groups = {Compute.class}) + private String startTime; /** - * 截止时间 + * 终止时间,yyyyMMdd */ - private Date endTime; + @NotBlank(message = "终止时间不能为空", groups = {Compute.class}) + private String endTime; private String customerId; private String userId; diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/indexcollect/result/HistoryScoreComputeResultDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/indexcollect/result/HistoryScoreComputeResultDTO.java index 1295b36036..79ec85658f 100644 --- a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/indexcollect/result/HistoryScoreComputeResultDTO.java +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/indexcollect/result/HistoryScoreComputeResultDTO.java @@ -1,10 +1,8 @@ package com.epmet.dto.indexcollect.result; -import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; import lombok.Data; import java.io.Serializable; -import java.math.BigDecimal; @Data public class HistoryScoreComputeResultDTO implements Serializable { @@ -19,6 +17,6 @@ public class HistoryScoreComputeResultDTO implements Serializable { /** * 分数 */ - private BigDecimal score; + private String score; } diff --git a/epmet-module/data-statistical/data-statistical-server/pom.xml b/epmet-module/data-statistical/data-statistical-server/pom.xml index b04561cd9a..35c84f863b 100644 --- a/epmet-module/data-statistical/data-statistical-server/pom.xml +++ b/epmet-module/data-statistical/data-statistical-server/pom.xml @@ -148,6 +148,12 @@ 2.0.0 compile + + com.epmet + data-aggregator-client + 2.0.0 + compile + diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcoll/impl/ScreenPyHistoryScoreServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcoll/impl/ScreenPyHistoryScoreServiceImpl.java index 51b81f888b..0a0f72c178 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcoll/impl/ScreenPyHistoryScoreServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcoll/impl/ScreenPyHistoryScoreServiceImpl.java @@ -2,13 +2,19 @@ package com.epmet.service.evaluationindex.indexcoll.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.epmet.commons.dynamic.datasource.annotation.DataSource; +import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.Result; import com.epmet.constant.DataSourceConstant; import com.epmet.dao.evaluationindex.indexcoll.ScreenPyHistoryScoreDao; import com.epmet.dao.evaluationindex.indexcoll.ScreenPyHistoryScoreDetailDao; +import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO; +import com.epmet.dataaggre.dto.govorg.result.GridLivelyResultDTO; +import com.epmet.dataaggre.feign.DataAggregatorOpenFeignClient; import com.epmet.dto.indexcollect.ScreenPyHistoryScoreDetailDTO; import com.epmet.dto.indexcollect.form.HistoryScoreComputeFormDTO; import com.epmet.dto.indexcollect.form.HistoryScoreFormDTO; @@ -28,6 +34,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.text.NumberFormat; import java.util.ArrayList; import java.util.List; @@ -47,6 +54,8 @@ public class ScreenPyHistoryScoreServiceImpl implements ScreenPyHistoryScoreServ private ScreenPyHistoryScoreDetailServiceImpl screenPyHistoryScoreDetailServiceImpl; @Autowired private ScreenPyHistoryScoreDetailDao screenPyHistoryScoreDetailDao; + @Autowired + private DataAggregatorOpenFeignClient dataAggregatorOpenFeignClient; @Override @@ -130,14 +139,35 @@ public class ScreenPyHistoryScoreServiceImpl implements ScreenPyHistoryScoreServ @Override public HistoryScoreComputeResultDTO computeScore(HistoryScoreComputeFormDTO formDTO) { HistoryScoreComputeResultDTO resultDTO = new HistoryScoreComputeResultDTO(); + resultDTO.setAgencyId(formDTO.getAgencyId()); + //计算百分比使用,保留小数点后两位 + NumberFormat numberFormat = NumberFormat.getInstance(); + numberFormat.setMaximumFractionDigits(NumConstant.TWO); if ("grid".equals(formDTO.getType())) { - //网格活跃度每周得分=(活跃网格数/本街镇网格数)x100+(正常网格数/本街镇网格数)x80 - //本街镇网格数基于本街镇基础网格总数进行计算,不包含专属网格 - + /** + * 网格活跃度每周得分=(活跃网格数/本街镇网格数)x100+(正常网格数/本街镇网格数)x80 + * 1周内每个末级网格有五天及五天以上上传事件或开展例行工作的为活跃网格;有2天及2天以上,5天以下上传事件或开展例行工作的为正常运行网格;只有1天上传事件或开展例行工作的为僵尸网格 + * 本街镇网格数基于本街镇基础网格总数进行计算,不包含专属网格 + */ + //1.获取街道下时间区间内的网格活跃度数据 + GridLivelyFormDTO form = ConvertUtils.sourceToTarget(formDTO, GridLivelyFormDTO.class); + form.setType("historyScore"); + Result> result = dataAggregatorOpenFeignClient.grdiLively(form); + if (!result.success() || result.getData() == null) { + throw new RenException("统计街道下网格活跃度数据失败"); + } + GridLivelyResultDTO gridLively = result.getData().get(NumConstant.ZERO); + String score = (gridLively.getGridSumNum() <= 0) ? "0" : numberFormat.format(((float) gridLively.getGridLivelyNum() / (float) gridLively.getGridSumNum()) * 100 + (gridLively.getGridOrdinaryNum() / gridLively.getGridSumNum()) * 80); + resultDTO.setScore(score); } else if ("event".equals(formDTO.getType())) { - //事件赋分每周得分=(活跃网格数/末级网格数)x100+(正常运行网格数/末级网格数)x80 - //1周内每个末级网格有五天及五天以上上传事件或开展例行工作的为活跃网格;有2天及2天以上,5天以下上传事件或开展例行工作的为正常运行网格;只有1天上传事件或开展例行工作的为僵尸网格 + /** + * 事件赋分= 街道下末级网格上报事件数量乘以对应的每项事件分值的累加和除以街道下有效未离职状态的网格员总数 + * 加上街道下末级网格例行工作数量乘以对应的每项事件分值的累加和除以街道下有效未离职状态的网格员总数 + */ + //TODO } return resultDTO; } + + }