diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/CalGridIndexServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/CalGridIndexServiceImpl.java index f0c009064f..4a9fbb143e 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/CalGridIndexServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/CalGridIndexServiceImpl.java @@ -1,5 +1,6 @@ package com.epmet.service.evaluationindex.extract.dataToIndex.impl; +import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.DateUtils; @@ -310,9 +311,12 @@ public class CalGridIndexServiceImpl implements CalGridIndexService { List gridIssueTotalList = issueExtractService.selectIssueTotal(customerId, monthId); //网格总项目数 从议题根据状态获取 List gridProjectTotalList = issueExtractService.selectGridProjectCount(customerId, monthId, ExtractConstant.SHIFT_PROJECT); + log.info("网格总项目数{}", JSON.toJSONString(gridProjectTotalList)); //网格议题转项目率 List gridIssueCountList = issueExtractService.selectIssueTotalTwoMonth(customerId, monthId, DateUtils.minusMonthId(monthId)); + log.info("网格近两个月的议题{}", JSON.toJSONString(gridIssueCountList)); List gridIssueShiftProjectRatio = getGridIssueShiftProjectRatio(gridIssueCountList, gridProjectTotalList); + log.info("网格议题转项目率{}", JSON.toJSONString(gridIssueShiftProjectRatio)); //网格自治项目数 从议题创建到项目关闭,包括处理人,自始至终没有出过议题所属网格 List projectAutoNoMyList = projectLogService.selectProjectAutoNoMy(customerId, monthId); Map autoMap = new HashMap<>(16); @@ -353,33 +357,23 @@ public class CalGridIndexServiceImpl implements CalGridIndexService { // 根据网格分组 Map> groupByGrid = projectEvaluateList.stream().collect(Collectors.groupingBy(ProjectEvaluateResultDTO::getGridId)); groupByGrid.forEach((gridId,projectEvaluateInfoList) -> { - Map scoreMap = new HashMap<>(16); - // 根据项目分组 - Map> groupByProject = projectEvaluateInfoList.stream().collect(Collectors.groupingBy(ProjectEvaluateResultDTO::getProjectId)); - groupByProject.forEach((projectId,projectList) -> { - projectList.forEach(project -> { - switch (project.getActionCode()) { - case ExtractConstant.EVALUATE_BAD: - project.setScore(ProjectEvaluateConstant.BAD); - break; - case ExtractConstant.EVALUATE_GOOD: - project.setScore(ProjectEvaluateConstant.GOOD); - break; - case ExtractConstant.EVALUATE_PERFECT: - project.setScore(ProjectEvaluateConstant.PERFECT); - break; - default: - log.warn("calGridIndexGovernAbility other projectEvaluate,actionCode:{}", project.getActionCode()); - } - }); - Integer projectAllScore = projectList.stream().mapToInt(ProjectEvaluateResultDTO::getScore).sum(); - scoreMap.put(projectId,projectAllScore/projectList.size()); - }); - AtomicReference allScore = new AtomicReference<>(0); - scoreMap.forEach((k,v) -> { - allScore.set(++v); + projectEvaluateInfoList.forEach(p -> { + switch (p.getActionCode()) { + case ExtractConstant.EVALUATE_BAD: + p.setScore(ProjectEvaluateConstant.BAD); + break; + case ExtractConstant.EVALUATE_GOOD: + p.setScore(ProjectEvaluateConstant.GOOD); + break; + case ExtractConstant.EVALUATE_PERFECT: + p.setScore(ProjectEvaluateConstant.PERFECT); + break; + default: + log.warn("calGridIndexGovernAbility other projectEvaluate,actionCode:{}", p.getActionCode()); + } }); - resultSatisfactionScore.put(gridId,getRound(new BigDecimal(allScore.get()/scoreMap.size()))); + Integer projectAllScore = projectEvaluateInfoList.stream().collect(Collectors.summingInt(ProjectEvaluateResultDTO::getScore)); + resultSatisfactionScore.put(gridId,getRound(new BigDecimal(projectAllScore/projectEvaluateInfoList.size()))); }); } String quarterId = DateUtils.getQuarterId(monthId); @@ -398,7 +392,7 @@ public class CalGridIndexServiceImpl implements CalGridIndexService { }); } // 2. 网格总项目数,网格议题转项目率 - if (!CollectionUtils.isEmpty(gridIssueTotalList)){ + if (!CollectionUtils.isEmpty(gridIssueShiftProjectRatio)){ gridIssueShiftProjectRatio.forEach(projectTotal -> { if (r.getGridId().equals(projectTotal.getGridId())){ r.setProjectTotal(projectTotal.getProjectTotal()); @@ -555,7 +549,7 @@ public class CalGridIndexServiceImpl implements CalGridIndexService { gridProjectTotalList.forEach(project -> { gridIssueTotalList.forEach(issue -> { if (project.getGridId().equals(issue.getGridId())) { - project.setIssueToProjectRatio(getRound(new BigDecimal(project.getProjectTotal() / issue.getIssueTotal()).multiply(NumConstant.ONE_HUNDRED_DECIMAL))); + project.setIssueToProjectRatio(getRound(new BigDecimal(project.getProjectTotal()).divide(new BigDecimal(issue.getIssueTotal()),NumConstant.EIGHT,BigDecimal.ROUND_HALF_UP).multiply(NumConstant.ONE_HUNDRED_DECIMAL))); } }); }); diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenExtractServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenExtractServiceImpl.java index 1ec4738376..1b70d7b6dc 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenExtractServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenExtractServiceImpl.java @@ -210,6 +210,17 @@ public class ScreenExtractServiceImpl implements ScreenExtractService { threadPool.submit(() -> { //公众参与排行(注册人数、参与人数、话题数、议题数、项目数)screen_public_party_total_data try { + + ScreenCentralZoneDataFormDTO screenCentralZone = new ScreenCentralZoneDataFormDTO(); + screenCentralZone.setCustomerId(customerId); + screenCentralZone.setDateId(dateId); + //中央区 screen_user_total_data + try { + screenCentralZoneDataAbsorptionService.centralZoneDataHub(screenCentralZone); + } catch (Exception e) { + log.error("中央区抽取到大屏失败,customerId为:" + customerId + "dateId为:" + dateId, e); + } + try { publicPartiTotalDataExtractService.extractPublicPartiTotalData(customerId, dateId); } catch (Exception e) { @@ -246,15 +257,6 @@ public class ScreenExtractServiceImpl implements ScreenExtractService { }); threadPool.submit(() -> { try { - ScreenCentralZoneDataFormDTO param = new ScreenCentralZoneDataFormDTO(); - param.setCustomerId(customerId); - param.setDateId(dateId); - //中央区 screen_user_total_data - try { - screenCentralZoneDataAbsorptionService.centralZoneDataHub(param); - } catch (Exception e) { - log.error("中央区抽取到大屏失败,customerId为:" + customerId + "dateId为:" + dateId, e); - } try { // 项目(事件)分析按网格_按天统计 diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginGroupMainDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginGroupMainDailyDao.xml index 21df7f9a68..c8c672e57f 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginGroupMainDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginGroupMainDailyDao.xml @@ -3,17 +3,19 @@ - + diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectLogDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectLogDailyDao.xml index 121c909d15..64682b5dd4 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectLogDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectLogDailyDao.xml @@ -47,7 +47,7 @@ - + SELECT + IFNULL(en.actionCode,'good') AS actionCode, + cl.projectId, + cl.gridId + FROM + (SELECT + ld.PROJECT_ID AS projectId, + ld.ORG_ID AS gridId + FROM fact_origin_project_log_daily ld + WHERE ld.DEL_FLAG = 0 + AND ld.CUSTOMER_ID = #{customerId} + AND ld.ACTION_CODE IN('close') + AND ld.ORG_TYPE = 'grid' + AND ld.MONTH_ID = #{monthId} + ) cl + LEFT JOIN + (SELECT + IFNULL(ld.ACTION_CODE,'good') AS actionCode, + ld.ORG_ID AS gridId, + ld.PROJECT_ID AS projectId + FROM fact_origin_project_log_daily ld + WHERE ld.DEL_FLAG = 0 + AND ld.ACTION_CODE IN( 'bad','good', 'perfect') + AND ld.MONTH_ID = #{monthId} + AND ld.CUSTOMER_ID = #{customerId} + ) en ON (en.projectId = cl.projectId) @@ -92,29 +120,46 @@ COUNT( ID ) AS "count", SUM( IFNULL( b.score, 80 ) ) AS "ratio" FROM - ( SELECT f.ID, f.AGENCY_ID FROM fact_origin_project_main_daily f - INNER JOIN dim_agency da ON f.FINISH_ORG_IDS LIKE concat('%', da.ID, '%') - AND da.AGENCY_DIM_TYPE = 'all' - AND da.`LEVEL` = #{level} - AND da.CUSTOMER_ID = #{customerId} - WHERE 1=1 - AND f.MONTH_ID = #{monthId}) a - LEFT JOIN ( - SELECT - PROJECT_ID, - AVG( CASE ACTION_CODE WHEN 'bad' THEN 60 WHEN 'perfect' THEN 100 ELSE 80 END ) AS score - FROM - fact_origin_project_log_daily - WHERE - (ACTION_CODE = 'bad' - OR ACTION_CODE = 'good' - OR ACTION_CODE = 'perfect') - AND CUSTOMER_ID = #{customerId} - AND MONTH_ID = #{monthId} - GROUP BY - PROJECT_ID + ( + SELECT + f.ID, + log.AGENCY_ID + FROM + fact_origin_project_main_daily f + INNER JOIN fact_origin_project_log_daily log ON f.ID = log.PROJECT_ID + AND log.ACTION_CODE = 'close' + AND log.DEL_FLAG = '0' + AND log.CUSTOMER_ID = #{customerId} + AND log.MONTH_ID = #{monthId} + INNER JOIN dim_agency da ON log.PIDS LIKE concat( '%', da.ID, '%' ) + AND da.AGENCY_DIM_TYPE = 'all' + AND da.`LEVEL` = #{level} + AND da.CUSTOMER_ID = #{customerId} + + WHERE + 1 = 1 + AND f.ORIGIN = 'issue' + AND f.PROJECT_STATUS = 'closed' + AND f.CUSTOMER_ID = #{customerId} + ) a + LEFT JOIN ( + SELECT + l1.PROJECT_ID, + AVG( CASE l1.ACTION_CODE WHEN 'bad' THEN 60 WHEN 'perfect' THEN 100 ELSE 80 END ) AS score + FROM + fact_origin_project_log_daily l1 + INNER JOIN fact_origin_project_log_daily l2 ON l1.PROJECT_ID = l2.PROJECT_ID + AND l2.ACTION_CODE = 'close' + AND l2.MONTH_ID = #{monthId} + AND l2.CUSTOMER_ID = #{customerId} + WHERE + ( l1.ACTION_CODE = 'bad' OR l1.ACTION_CODE = 'good' OR l1.ACTION_CODE = 'perfect' ) + AND l1.CUSTOMER_ID = #{customerId} + GROUP BY + PROJECT_ID ) b ON a.ID = b.PROJECT_ID - GROUP BY AGENCY_ID + GROUP BY + AGENCY_ID