Browse Source

大屏复杂sql拆分

feature/screenDataPush
songyunpeng 4 years ago
parent
commit
bedef68583
  1. 31
      esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/screen/dao/ScreenPublicDataDao.java
  2. 10
      esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/screen/service/impl/ScreenPublicDataServiceImpl.java
  3. 440
      esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/screen/ScreenPublicDataDao.xml

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

@ -110,13 +110,40 @@ public interface ScreenPublicDataDao extends BaseDao<ScreenPublicDataResultDTO>
List<UserjoinResultDTO> getUserjoin(@Param("yearMonth")String yearMonth);
/**
* @describe: 008公众参与各类总数
* @describe: 008公众参与各类总数 - grid
* @author wangtong
* @date 2020/8/24 18:27
* @params []
* @return com.elink.esua.epdc.commons.tools.utils.Result
*/
List<PublicpartitotaldataResultDTO> publicpartitotaldata();
List<PublicpartitotaldataResultDTO> publicpartitotaldataForGrid();
/**
* @describe: 008公众参与各类总数 - community_party
* @author wangtong
* @date 2020/8/24 18:27
* @params []
* @return com.elink.esua.epdc.commons.tools.utils.Result
*/
List<PublicpartitotaldataResultDTO> publicpartitotaldataForCommunityParty();
/**
* @describe: 008公众参与各类总数 - street_party
* @author wangtong
* @date 2020/8/24 18:27
* @params []
* @return com.elink.esua.epdc.commons.tools.utils.Result
*/
List<PublicpartitotaldataResultDTO> publicpartitotaldataForStreetParty();
/**
* @describe: 008公众参与各类总数 - district_party
* @author wangtong
* @date 2020/8/24 18:27
* @params []
* @return com.elink.esua.epdc.commons.tools.utils.Result
*/
List<PublicpartitotaldataResultDTO> publicpartitotaldataForDistrictParty();
/**
* 009基层治理-治理能力数据
* @Params:

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

@ -253,10 +253,16 @@ public class ScreenPublicDataServiceImpl extends BaseServiceImpl<ScreenPublicDat
*/
@Override
public Result publicpartitotaldata() {
List<PublicpartitotaldataResultDTO> list = baseDao.publicpartitotaldata();
List<PublicpartitotaldataResultDTO> gridList = baseDao.publicpartitotaldataForGrid();
List<PublicpartitotaldataResultDTO> communityList = baseDao.publicpartitotaldataForCommunityParty();
List<PublicpartitotaldataResultDTO> streetList = baseDao.publicpartitotaldataForStreetParty();
List<PublicpartitotaldataResultDTO> districtList = baseDao.publicpartitotaldataForDistrictParty();
gridList.addAll(communityList);
gridList.addAll(streetList);
gridList.addAll(districtList);
// 将list转换为json格式
PublicpartitotaldataDTO result = new PublicpartitotaldataDTO();
result.setDataList(list);
result.setDataList(gridList);
String json = JSONObject.toJSONString(result);
String body = epmetUtils.httpPost(EpmetConstant.EPMET_SCREEN_COLL_PUBLIC_PARTY_TOTAL, json);
log.info(body);

440
esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/screen/ScreenPublicDataDao.xml

@ -2297,7 +2297,7 @@ select gr.id as orgId,
) t
</select>
<!-- 008 -->
<select id="publicpartitotaldata"
<select id="publicpartitotaldataForGrid"
resultType="com.elink.esua.epdc.dto.screen.result.PublicpartitotaldataResultDTO">
SELECT gr.id as orgId,
gr.name as orgName,
@ -3108,6 +3108,444 @@ union all
WHERE t.`del_flag`= 0)
and sd.TYPE_KEY = 'grid_party'
</select>
<select id="publicpartitotaldataForCommunityParty"
resultType="com.elink.esua.epdc.dto.screen.result.PublicpartitotaldataResultDTO">
SELECT co.id as orgId,
co.name as orgName,
co.pid as parentId,
'agency' as orgType,
co.area_code as areaCode,
SUM(IFNULL(t.regUserTotal,0)) AS regUserTotal,
SUM(IFNULL(t.joinUser,0)) AS joinUserTotal,
SUM(IFNULL(t.issueTotal,0)) AS issueTotal,
SUM(IFNULL(t.topicTotal,0)) AS topicTotal,
SUM(IFNULL(t.projectTotal,0)) AS projectTotal,
DATE_FORMAT(date_add( now( ), INTERVAL - 1 day),'%Y%m%d') as dataEndTime
FROM esua_epdc_admin.sys_dept co
LEFT JOIN esua_epdc_admin.sys_dept gr on co.id=gr.pid
left join
(select total.GRID_ID,
sum(total.regUserTotal) as regUserTotal,
sum(total.joinUser) as joinUser,
sum(total.issueTotal) as issueTotal,
sum(total.topicTotal) as topicTotal,
sum(total.projectTotal) as projectTotal
from
(select eu.DEPT_ID AS GRID_ID,
count(eu.id) as regUserTotal,
0 AS joinUser,
0 as issueTotal,
0 as topicTotal,
0 as projectTotal
from esua_epdc_user.epdc_user eu
where eu.DEL_FLAG=0
group by eu.DEPT_ID
union all
select be.DEPT_ID GRID_ID,
0 as regUserTotal,
sum(be.joinUser) joinUser,
0 as issueTotal,
0 as topicTotal,
0 as projectTotal
from
(SELECT
USER.DEPT_ID,
sum( behaviorCount.voiceOpposeFlag + behaviorCount.voiceLikesFlag + behaviorCount.groupPublishFlag
+ behaviorCount.groupLikeFlag + behaviorCount.groupOpposeFlag + behaviorCount.groupJoinFlag
+ behaviorCount.groupCommentFlag + behaviorCount.groupCreateFlag + behaviorCount.eventLikesFlag
+ behaviorCount.eventOpposeFlag + behaviorCount.eventPubilshFlag + behaviorCount.eventCommentFlag
+ behaviorCount.eventEvaFlag > 0 ) joinUser
FROM
(
SELECT
USER_ID,
SUM( behavior.VOICE_OPPOSE_FLAG = 1) AS voiceOpposeFlag,
SUM( behavior.VOICE_LIKE_FLAG = 1) AS voiceLikesFlag,
SUM( behavior.EVENT_LIKE_FLAG = 1 ) AS eventLikesFlag,
SUM( behavior.EVENT_OPPOSE_FLAG = 1 ) AS eventOpposeFlag,
SUM( behavior.EVENT_PUBLISH_FLAG = 1 ) AS eventPubilshFlag,
SUM( behavior.EVENT_COMMENT_FLAG = 1 ) AS eventCommentFlag,
SUM( behavior.EVENT_EVALUATE_FLAG = 1 ) AS eventEvaFlag,
SUM( behavior.GROUP_PUBLISH_FLAG = 1 ) AS groupPublishFlag,
SUM( behavior.GROUP_LIKE_FLAG = 1 ) AS groupLikeFlag,
SUM( behavior.GROUP_OPPOSE_FLAG = 1 ) AS groupOpposeFlag,
SUM( behavior.GROUP_JOIN_FLAG = 1 ) AS groupJoinFlag,
SUM( behavior.GROUP_COMMENT_FLAG = 1 ) AS groupCommentFlag,
( SELECT
count( * )
FROM
esua_epdc_party_group.epdc_party_group
WHERE del_flag = 0 ) groupCreateFlag
FROM esua_epdc_analysis.epdc_user_behavior_log behavior
GROUP BY USER_ID
) behaviorCount
LEFT JOIN esua_epdc_user.epdc_user USER ON USER.ID = behaviorCount.USER_ID AND USER.DEL_FLAG = '0'
GROUP BY USER.DEPT_ID) be
group by be.DEPT_ID
union all
select GRID_ID,
0 as regUserTotal,
0 AS joinUser,
count( t.a ) as issueTotal,
0 as topicTotal,
0 as projectTotal
from (
SELECT
count( id ) AS a,
EVENT_ID,
GRID_ID
FROM
esua_epdc_events.epdc_issue mei
WHERE
mei.DEL_FLAG = '0'
GROUP BY
EVENT_ID,
GRID_ID
) t
group by t.GRID_ID
UNION ALL
select GRID_ID,
0 as regUserTotal,
0 AS joinUser,
0 as issueTotal,
count(id) as topicTotal,
0 as projectTotal
from esua_epdc_party_group.epdc_party_topic
where DEL_FLAG=0
group by GRID_ID
UNION ALL
select GRID_ID,
0 as regUserTotal,
0 AS joinUser,
0 as issueTotal,
0 as topicTotal,
count(t.a) as projectTotal
from (
SELECT
count(id) as a,
EVENT_ID,
GRID_ID
FROM
esua_epdc_events.epdc_item item
WHERE
item.DEL_FLAG = '0'
GROUP BY
EVENT_ID,
GRID_ID
)t
group by t.GRID_ID)total
group by total.GRID_ID)t on gr.id=t.GRID_ID
where gr.del_flag=0
and co.del_flag=0
and co.type_key='community_party'
AND co.`id` NOT IN( SELECT t.`dept_id`
FROM `esua_epdc_admin`.`sys_dept_config` t
WHERE t.`del_flag`= 0)
GROUP BY co.id
</select>
<select id="publicpartitotaldataForStreetParty"
resultType="com.elink.esua.epdc.dto.screen.result.PublicpartitotaldataResultDTO">
SELECT st.id as orgId,
st.name as orgName,
st.pid as parentId,
'agency' as orgType,
st.area_code as areaCode,
SUM(IFNULL(t.regUserTotal,0)) AS regUserTotal,
SUM(IFNULL(t.joinUser,0)) AS joinUserTotal,
SUM(IFNULL(t.issueTotal,0)) AS issueTotal,
SUM(IFNULL(t.topicTotal,0)) AS topicTotal,
SUM(IFNULL(t.projectTotal,0)) AS projectTotal,
DATE_FORMAT(date_add( now( ), INTERVAL - 1 day),'%Y%m%d') as dataEndTime
FROM esua_epdc_admin.sys_dept st
left join esua_epdc_admin.sys_dept co on co.pid=st.id
LEFT JOIN esua_epdc_admin.sys_dept gr on co.id=gr.pid
left join
(select total.GRID_ID,
sum(total.regUserTotal) as regUserTotal,
sum(total.joinUser) as joinUser,
sum(total.issueTotal) as issueTotal,
sum(total.topicTotal) as topicTotal,
sum(total.projectTotal) as projectTotal
from
(select eu.DEPT_ID AS GRID_ID,
count(eu.id) as regUserTotal,
0 AS joinUser,
0 as issueTotal,
0 as topicTotal,
0 as projectTotal
from esua_epdc_user.epdc_user eu
where eu.DEL_FLAG=0
group by eu.DEPT_ID
UNION ALL
select be.DEPT_ID GRID_ID,
0 as regUserTotal,
sum(be.joinUser) joinUser,
0 as issueTotal,
0 as topicTotal,
0 as projectTotal
from
(SELECT
USER.DEPT_ID,
sum( behaviorCount.voiceOpposeFlag + behaviorCount.voiceLikesFlag + behaviorCount.groupPublishFlag
+ behaviorCount.groupLikeFlag + behaviorCount.groupOpposeFlag + behaviorCount.groupJoinFlag
+ behaviorCount.groupCommentFlag + behaviorCount.groupCreateFlag + behaviorCount.eventLikesFlag
+ behaviorCount.eventOpposeFlag + behaviorCount.eventPubilshFlag + behaviorCount.eventCommentFlag
+ behaviorCount.eventEvaFlag > 0 ) joinUser
FROM
(
SELECT
USER_ID,
SUM( behavior.VOICE_OPPOSE_FLAG = 1) AS voiceOpposeFlag,
SUM( behavior.VOICE_LIKE_FLAG = 1) AS voiceLikesFlag,
SUM( behavior.EVENT_LIKE_FLAG = 1 ) AS eventLikesFlag,
SUM( behavior.EVENT_OPPOSE_FLAG = 1 ) AS eventOpposeFlag,
SUM( behavior.EVENT_PUBLISH_FLAG = 1 ) AS eventPubilshFlag,
SUM( behavior.EVENT_COMMENT_FLAG = 1 ) AS eventCommentFlag,
SUM( behavior.EVENT_EVALUATE_FLAG = 1 ) AS eventEvaFlag,
SUM( behavior.GROUP_PUBLISH_FLAG = 1 ) AS groupPublishFlag,
SUM( behavior.GROUP_LIKE_FLAG = 1 ) AS groupLikeFlag,
SUM( behavior.GROUP_OPPOSE_FLAG = 1 ) AS groupOpposeFlag,
SUM( behavior.GROUP_JOIN_FLAG = 1 ) AS groupJoinFlag,
SUM( behavior.GROUP_COMMENT_FLAG = 1 ) AS groupCommentFlag,
( SELECT
count( * )
FROM
esua_epdc_party_group.epdc_party_group
WHERE del_flag = 0 ) groupCreateFlag
FROM esua_epdc_analysis.epdc_user_behavior_log behavior
GROUP BY USER_ID
) behaviorCount
LEFT JOIN esua_epdc_user.epdc_user USER ON USER.ID = behaviorCount.USER_ID AND USER.DEL_FLAG = '0'
GROUP BY USER.DEPT_ID) be
group by be.DEPT_ID
union all
select GRID_ID,
0 as regUserTotal,
0 AS joinUser,
count(t.a) as issueTotal,
0 as topicTotal,
0 as projectTotal
from (
SELECT
count( id ) AS a,
EVENT_ID,
GRID_ID
FROM
esua_epdc_events.epdc_issue mei
WHERE
mei.DEL_FLAG = '0'
GROUP BY
EVENT_ID,
GRID_ID
) t
group by t.GRID_ID
UNION ALL
select GRID_ID,
0 as regUserTotal,
0 AS joinUser,
0 as issueTotal,
count(id) as topicTotal,
0 as projectTotal
from esua_epdc_party_group.epdc_party_topic
where DEL_FLAG=0
group by GRID_ID
UNION ALL
select GRID_ID,
0 as regUserTotal,
0 AS joinUser,
0 as issueTotal,
0 as topicTotal,
count(t.a) as projectTotal
from (
SELECT
count(id) as a,
EVENT_ID,
GRID_ID
FROM
esua_epdc_events.epdc_item item
WHERE
item.DEL_FLAG = '0'
GROUP BY
EVENT_ID,
GRID_ID
)t
group by t.GRID_ID)total
group by total.GRID_ID)t on gr.id=t.GRID_ID
where gr.del_flag=0
and co.del_flag=0
and st.del_flag=0
and st.type_key='street_party'
AND st.`id` NOT IN( SELECT t.`dept_id`
FROM `esua_epdc_admin`.`sys_dept_config` t
WHERE t.`del_flag`= 0)
GROUP BY st.id
</select>
<select id="publicpartitotaldataForDistrictParty"
resultType="com.elink.esua.epdc.dto.screen.result.PublicpartitotaldataResultDTO">
SELECT city.id as orgId,
city.name as orgName,
city.pid as parentId,
'agency' as orgType,
city.area_code as areaCode,
SUM(IFNULL(t.regUserTotal,0)) AS regUserTotal,
SUM(IFNULL(t.joinUser,0)) AS joinUserTotal,
SUM(IFNULL(t.issueTotal,0)) AS issueTotal,
SUM(IFNULL(t.topicTotal,0)) AS topicTotal,
SUM(IFNULL(t.projectTotal,0)) AS projectTotal,
DATE_FORMAT(date_add( now( ), INTERVAL - 1 day),'%Y%m%d') as dataEndTime
FROM esua_epdc_admin.sys_dept city
left join esua_epdc_admin.sys_dept st on st.pid=city.id
left join esua_epdc_admin.sys_dept co on co.pid=st.id
LEFT JOIN esua_epdc_admin.sys_dept gr on co.id=gr.pid
left join
(select total.GRID_ID,
sum(total.regUserTotal) as regUserTotal,
sum(total.joinUser) as joinUser,
sum(total.issueTotal) as issueTotal,
sum(total.topicTotal) as topicTotal,
sum(total.projectTotal) as projectTotal
from
(select eu.DEPT_ID AS GRID_ID,
count(eu.id) as regUserTotal,
0 AS joinUser,
0 as issueTotal,
0 as topicTotal,
0 as projectTotal
from esua_epdc_user.epdc_user eu
where eu.DEL_FLAG=0
group by eu.DEPT_ID
union all
select be.DEPT_ID GRID_ID,
0 as regUserTotal,
sum(be.joinUser) joinUser,
0 as issueTotal,
0 as topicTotal,
0 as projectTotal
from
(SELECT
USER.DEPT_ID,
sum( behaviorCount.voiceOpposeFlag + behaviorCount.voiceLikesFlag + behaviorCount.groupPublishFlag
+ behaviorCount.groupLikeFlag + behaviorCount.groupOpposeFlag + behaviorCount.groupJoinFlag
+ behaviorCount.groupCommentFlag + behaviorCount.groupCreateFlag + behaviorCount.eventLikesFlag
+ behaviorCount.eventOpposeFlag + behaviorCount.eventPubilshFlag + behaviorCount.eventCommentFlag
+ behaviorCount.eventEvaFlag > 0 ) joinUser
FROM
(
SELECT
USER_ID,
SUM( behavior.VOICE_OPPOSE_FLAG = 1) AS voiceOpposeFlag,
SUM( behavior.VOICE_LIKE_FLAG = 1) AS voiceLikesFlag,
SUM( behavior.EVENT_LIKE_FLAG = 1 ) AS eventLikesFlag,
SUM( behavior.EVENT_OPPOSE_FLAG = 1 ) AS eventOpposeFlag,
SUM( behavior.EVENT_PUBLISH_FLAG = 1 ) AS eventPubilshFlag,
SUM( behavior.EVENT_COMMENT_FLAG = 1 ) AS eventCommentFlag,
SUM( behavior.EVENT_EVALUATE_FLAG = 1 ) AS eventEvaFlag,
SUM( behavior.GROUP_PUBLISH_FLAG = 1 ) AS groupPublishFlag,
SUM( behavior.GROUP_LIKE_FLAG = 1 ) AS groupLikeFlag,
SUM( behavior.GROUP_OPPOSE_FLAG = 1 ) AS groupOpposeFlag,
SUM( behavior.GROUP_JOIN_FLAG = 1 ) AS groupJoinFlag,
SUM( behavior.GROUP_COMMENT_FLAG = 1 ) AS groupCommentFlag,
( SELECT
count( * )
FROM
esua_epdc_party_group.epdc_party_group
WHERE del_flag = 0 ) groupCreateFlag
FROM esua_epdc_analysis.epdc_user_behavior_log behavior
GROUP BY USER_ID
) behaviorCount
LEFT JOIN esua_epdc_user.epdc_user USER ON USER.ID = behaviorCount.USER_ID AND USER.DEL_FLAG = '0'
GROUP BY USER.DEPT_ID) be
group by be.DEPT_ID
UNION ALL
select GRID_ID,
0 as regUserTotal,
0 AS joinUser,
count(t.a) as issueTotal,
0 as topicTotal,
0 as projectTotal
from (
SELECT
count( id ) AS a,
EVENT_ID,
GRID_ID
FROM
esua_epdc_events.epdc_issue mei
WHERE
mei.DEL_FLAG = '0'
GROUP BY
EVENT_ID,
GRID_ID
) t
group by t.GRID_ID
UNION ALL
select GRID_ID,
0 as regUserTotal,
0 AS joinUser,
0 as issueTotal,
count(id) as topicTotal,
0 as projectTotal
from esua_epdc_party_group.epdc_party_topic
where DEL_FLAG=0
group by GRID_ID
UNION ALL
select GRID_ID,
0 as regUserTotal,
0 AS joinUser,
0 as issueTotal,
0 as topicTotal,
count(t.a) as projectTotal
from (
SELECT
count(id) as a,
EVENT_ID,
GRID_ID
FROM
esua_epdc_events.epdc_item item
WHERE
item.DEL_FLAG = '0'
GROUP BY
EVENT_ID,
GRID_ID
)t
group by t.GRID_ID)total
group by total.GRID_ID)t on gr.id=t.GRID_ID
where gr.del_flag=0
and co.del_flag=0
and st.del_flag=0
and city.DEL_FLAG=0
AND gr.`id` NOT IN( SELECT t.`dept_id`
FROM `esua_epdc_admin`.`sys_dept_config` t
WHERE t.`del_flag`= 0)
and city.type_key='district_party' and city.party_code='shibei'
GROUP BY city.id;
</select>
</mapper>

Loading…
Cancel
Save