Browse Source

Merge remote-tracking branch 'origin/dev_bugfix_ljj' into dev_bugfix_ljj

dev_shibei_match
jianjun 4 years ago
parent
commit
93756d5e54
  1. 50
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/CalGridIndexServiceImpl.java
  2. 20
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenExtractServiceImpl.java
  3. 6
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginGroupMainDailyDao.xml
  4. 129
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectLogDailyDao.xml

50
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; 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.constant.NumConstant;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.DateUtils;
@ -310,9 +311,12 @@ public class CalGridIndexServiceImpl implements CalGridIndexService {
List<GridIssueCountResultDTO> gridIssueTotalList = issueExtractService.selectIssueTotal(customerId, monthId); List<GridIssueCountResultDTO> gridIssueTotalList = issueExtractService.selectIssueTotal(customerId, monthId);
//网格总项目数 从议题根据状态获取 //网格总项目数 从议题根据状态获取
List<GridProjectCountResultDTO> gridProjectTotalList = issueExtractService.selectGridProjectCount(customerId, monthId, ExtractConstant.SHIFT_PROJECT); List<GridProjectCountResultDTO> gridProjectTotalList = issueExtractService.selectGridProjectCount(customerId, monthId, ExtractConstant.SHIFT_PROJECT);
log.info("网格总项目数{}", JSON.toJSONString(gridProjectTotalList));
//网格议题转项目率 //网格议题转项目率
List<GridIssueCountResultDTO> gridIssueCountList = issueExtractService.selectIssueTotalTwoMonth(customerId, monthId, DateUtils.minusMonthId(monthId)); List<GridIssueCountResultDTO> gridIssueCountList = issueExtractService.selectIssueTotalTwoMonth(customerId, monthId, DateUtils.minusMonthId(monthId));
log.info("网格近两个月的议题{}", JSON.toJSONString(gridIssueCountList));
List<GridProjectCountResultDTO> gridIssueShiftProjectRatio = getGridIssueShiftProjectRatio(gridIssueCountList, gridProjectTotalList); List<GridProjectCountResultDTO> gridIssueShiftProjectRatio = getGridIssueShiftProjectRatio(gridIssueCountList, gridProjectTotalList);
log.info("网格议题转项目率{}", JSON.toJSONString(gridIssueShiftProjectRatio));
//网格自治项目数 从议题创建到项目关闭,包括处理人,自始至终没有出过议题所属网格 //网格自治项目数 从议题创建到项目关闭,包括处理人,自始至终没有出过议题所属网格
List<AutoNoMyResultDTO> projectAutoNoMyList = projectLogService.selectProjectAutoNoMy(customerId, monthId); List<AutoNoMyResultDTO> projectAutoNoMyList = projectLogService.selectProjectAutoNoMy(customerId, monthId);
Map<String,Integer> autoMap = new HashMap<>(16); Map<String,Integer> autoMap = new HashMap<>(16);
@ -353,33 +357,23 @@ public class CalGridIndexServiceImpl implements CalGridIndexService {
// 根据网格分组 // 根据网格分组
Map<String, List<ProjectEvaluateResultDTO>> groupByGrid = projectEvaluateList.stream().collect(Collectors.groupingBy(ProjectEvaluateResultDTO::getGridId)); Map<String, List<ProjectEvaluateResultDTO>> groupByGrid = projectEvaluateList.stream().collect(Collectors.groupingBy(ProjectEvaluateResultDTO::getGridId));
groupByGrid.forEach((gridId,projectEvaluateInfoList) -> { groupByGrid.forEach((gridId,projectEvaluateInfoList) -> {
Map<String,Integer> scoreMap = new HashMap<>(16); projectEvaluateInfoList.forEach(p -> {
// 根据项目分组 switch (p.getActionCode()) {
Map<String, List<ProjectEvaluateResultDTO>> groupByProject = projectEvaluateInfoList.stream().collect(Collectors.groupingBy(ProjectEvaluateResultDTO::getProjectId)); case ExtractConstant.EVALUATE_BAD:
groupByProject.forEach((projectId,projectList) -> { p.setScore(ProjectEvaluateConstant.BAD);
projectList.forEach(project -> { break;
switch (project.getActionCode()) { case ExtractConstant.EVALUATE_GOOD:
case ExtractConstant.EVALUATE_BAD: p.setScore(ProjectEvaluateConstant.GOOD);
project.setScore(ProjectEvaluateConstant.BAD); break;
break; case ExtractConstant.EVALUATE_PERFECT:
case ExtractConstant.EVALUATE_GOOD: p.setScore(ProjectEvaluateConstant.PERFECT);
project.setScore(ProjectEvaluateConstant.GOOD); break;
break; default:
case ExtractConstant.EVALUATE_PERFECT: log.warn("calGridIndexGovernAbility other projectEvaluate,actionCode:{}", p.getActionCode());
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<Integer> allScore = new AtomicReference<>(0);
scoreMap.forEach((k,v) -> {
allScore.set(++v);
}); });
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); String quarterId = DateUtils.getQuarterId(monthId);
@ -398,7 +392,7 @@ public class CalGridIndexServiceImpl implements CalGridIndexService {
}); });
} }
// 2. 网格总项目数,网格议题转项目率 // 2. 网格总项目数,网格议题转项目率
if (!CollectionUtils.isEmpty(gridIssueTotalList)){ if (!CollectionUtils.isEmpty(gridIssueShiftProjectRatio)){
gridIssueShiftProjectRatio.forEach(projectTotal -> { gridIssueShiftProjectRatio.forEach(projectTotal -> {
if (r.getGridId().equals(projectTotal.getGridId())){ if (r.getGridId().equals(projectTotal.getGridId())){
r.setProjectTotal(projectTotal.getProjectTotal()); r.setProjectTotal(projectTotal.getProjectTotal());
@ -555,7 +549,7 @@ public class CalGridIndexServiceImpl implements CalGridIndexService {
gridProjectTotalList.forEach(project -> { gridProjectTotalList.forEach(project -> {
gridIssueTotalList.forEach(issue -> { gridIssueTotalList.forEach(issue -> {
if (project.getGridId().equals(issue.getGridId())) { 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)));
} }
}); });
}); });

20
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(() -> { threadPool.submit(() -> {
//公众参与排行(注册人数、参与人数、话题数、议题数、项目数)screen_public_party_total_data //公众参与排行(注册人数、参与人数、话题数、议题数、项目数)screen_public_party_total_data
try { 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 { try {
publicPartiTotalDataExtractService.extractPublicPartiTotalData(customerId, dateId); publicPartiTotalDataExtractService.extractPublicPartiTotalData(customerId, dateId);
} catch (Exception e) { } catch (Exception e) {
@ -246,15 +257,6 @@ public class ScreenExtractServiceImpl implements ScreenExtractService {
}); });
threadPool.submit(() -> { threadPool.submit(() -> {
try { 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 { try {
// 项目(事件)分析按网格_按天统计 // 项目(事件)分析按网格_按天统计

6
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginGroupMainDailyDao.xml

@ -3,17 +3,19 @@
<mapper namespace="com.epmet.dao.evaluationindex.extract.FactOriginGroupMainDailyDao"> <mapper namespace="com.epmet.dao.evaluationindex.extract.FactOriginGroupMainDailyDao">
<!-- 查询建群党员数 --> <!-- 查询建群党员数: 网格内 建立群组的 党员数(去重) -->
<select id="selectPartyCreateGroupCount" resultType="com.epmet.dto.extract.result.PartyCreateGroupCountResultDTO"> <select id="selectPartyCreateGroupCount" resultType="com.epmet.dto.extract.result.PartyCreateGroupCountResultDTO">
SELECT SELECT
GRID_ID, GRID_ID,
COUNT( ID ) AS partyCreateGroupCount COUNT( distinct GROUP_OWNER_ID ) AS partyCreateGroupCount
FROM FROM
fact_origin_group_main_daily fact_origin_group_main_daily
WHERE WHERE
DEL_FLAG = '0' DEL_FLAG = '0'
AND CUSTOMER_ID = #{customerId} AND CUSTOMER_ID = #{customerId}
AND MONTH_ID = #{monthId} AND MONTH_ID = #{monthId}
AND IS_OWNER_PARTY='1'
AND GROUP_STATE='approved'
GROUP BY GRID_ID GROUP BY GRID_ID
</select> </select>

129
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectLogDailyDao.xml

@ -47,7 +47,7 @@
</select> </select>
<!-- 查询项目评价信息 --> <!-- 查询项目评价信息 -->
<select id="selectProjectEvaluate" resultType="com.epmet.dto.extract.result.ProjectEvaluateResultDTO"> <!--<select id="selectProjectEvaluate" resultType="com.epmet.dto.extract.result.ProjectEvaluateResultDTO">
SELECT SELECT
ACTION_CODE, ACTION_CODE,
ORG_ID AS gridId, ORG_ID AS gridId,
@ -60,6 +60,34 @@
AND CUSTOMER_ID = #{customerId} AND CUSTOMER_ID = #{customerId}
AND MONTH_ID = #{monthId} AND MONTH_ID = #{monthId}
AND (ACTION_CODE = 'bad' OR ACTION_CODE = 'good' OR ACTION_CODE = 'perfect') AND (ACTION_CODE = 'bad' OR ACTION_CODE = 'good' OR ACTION_CODE = 'perfect')
</select>-->
<select id="selectProjectEvaluate" resultType="com.epmet.dto.extract.result.ProjectEvaluateResultDTO">
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)
</select> </select>
<!-- 网格项目自治率查询 --> <!-- 网格项目自治率查询 -->
@ -92,29 +120,46 @@
COUNT( ID ) AS "count", COUNT( ID ) AS "count",
SUM( IFNULL( b.score, 80 ) ) AS "ratio" SUM( IFNULL( b.score, 80 ) ) AS "ratio"
FROM 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, '%') SELECT
AND da.AGENCY_DIM_TYPE = 'all' f.ID,
AND da.`LEVEL` = #{level} log.AGENCY_ID
AND da.CUSTOMER_ID = #{customerId} FROM
WHERE 1=1 fact_origin_project_main_daily f
AND f.MONTH_ID = #{monthId}) a INNER JOIN fact_origin_project_log_daily log ON f.ID = log.PROJECT_ID
LEFT JOIN ( AND log.ACTION_CODE = 'close'
SELECT AND log.DEL_FLAG = '0'
PROJECT_ID, AND log.CUSTOMER_ID = #{customerId}
AVG( CASE ACTION_CODE WHEN 'bad' THEN 60 WHEN 'perfect' THEN 100 ELSE 80 END ) AS score AND log.MONTH_ID = #{monthId}
FROM INNER JOIN dim_agency da ON log.PIDS LIKE concat( '%', da.ID, '%' )
fact_origin_project_log_daily AND da.AGENCY_DIM_TYPE = 'all'
WHERE AND da.`LEVEL` = #{level}
(ACTION_CODE = 'bad' AND da.CUSTOMER_ID = #{customerId}
OR ACTION_CODE = 'good'
OR ACTION_CODE = 'perfect') WHERE
AND CUSTOMER_ID = #{customerId} 1 = 1
AND MONTH_ID = #{monthId} AND f.ORIGIN = 'issue'
GROUP BY AND f.PROJECT_STATUS = 'closed'
PROJECT_ID 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 ) b ON a.ID = b.PROJECT_ID
GROUP BY AGENCY_ID GROUP BY
AGENCY_ID
</select> </select>
<select id="selectDepTransferCount" resultType="com.epmet.dto.extract.result.OrgStatisticsResultDTO"> <select id="selectDepTransferCount" resultType="com.epmet.dto.extract.result.OrgStatisticsResultDTO">
SELECT SELECT
@ -221,24 +266,26 @@
</select> </select>
<!-- 查询机关办结次数 --> <!-- 查询机关办结次数 -->
<select id="selectAgencyHandledProjectCount" resultType="com.epmet.dto.extract.result.ProjectParticipatedAgencyResultDTO"> <select id="selectAgencyHandledProjectCount" resultType="com.epmet.dto.extract.result.ProjectParticipatedAgencyResultDTO">
SELECT SELECT
SUBSTRING_INDEX(main.FINISH_ORG_IDS,':',1) AS agencyId, ORG_ID AS "agencyId",
COUNT(main.ID) AS count COUNT( PROJECT_ID ) AS count
FROM fact_origin_project_main_daily main FROM
LEFT JOIN fact_origin_project_log_daily log fact_origin_project_log_daily
ON main.ID = log.PROJECT_ID AND log.DEL_FLAG = '0' AND log.ACTION_CODE = 'close' WHERE
WHERE main.DEL_FLAG = '0' DEL_FLAG = '0'
AND main.CUSTOMER_ID = #{customerId} AND ACTION_CODE = 'close'
<if test="null != agencies and agencies.size() > 0"> AND CUSTOMER_ID = #{customerId}
<foreach collection="agencies" item="item" open="AND ( " separator=" OR " close=" ) "> AND ORG_TYPE = 'agency'
main.FINISH_ORG_IDS LIKE concat(#{item},'%') <if test="null != agencies and agencies.size() > 0">
</foreach> <foreach collection="agencies" item="item" open="AND ( " separator=" OR " close=" ) ">
</if> ORG_ID = #{item}
</foreach>
<if test='null != dimId and "" != dimId.trim()'> </if>
AND log.ID IS NOT NULL AND log.MONTH_ID = #{dimId} <if test='null != dimId and "" != dimId.trim()'>
</if> AND MONTH_ID = #{dimId}
GROUP BY SUBSTRING_INDEX(main.FINISH_ORG_IDS,':',1) </if>
GROUP BY
ORG_ID
</select> </select>
<!-- 查询评价周期内各级别机关办结的项目Id --> <!-- 查询评价周期内各级别机关办结的项目Id -->
<select id="selectProjectIdHandledByAgency" resultType="com.epmet.dto.extract.result.ProjectParticipatedAgencyResultDTO"> <select id="selectProjectIdHandledByAgency" resultType="com.epmet.dto.extract.result.ProjectParticipatedAgencyResultDTO">

Loading…
Cancel
Save