Browse Source

用户数据分析,网格开通情况列表与总计,用户注册排行列表。新增计算逻辑

dev
yujintao 6 years ago
parent
commit
ccf9e74f7e
  1. 7
      esua-epdc/epdc-module/epdc-analysis/epdc-analysis-client/src/main/java/com/elink/esua/epdc/dto/user/result/GridOpeningResultDTO.java
  2. 6
      esua-epdc/epdc-module/epdc-analysis/epdc-analysis-client/src/main/java/com/elink/esua/epdc/dto/user/result/UserDataRankResultDTO.java
  3. 26
      esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/user/dao/UserAnalysisDao.java
  4. 65
      esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/user/service/impl/UserAnalysisServiceImpl.java
  5. 82
      esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/user/UserAnalysisDao.xml

7
esua-epdc/epdc-module/epdc-analysis/epdc-analysis-client/src/main/java/com/elink/esua/epdc/dto/user/result/GridOpeningResultDTO.java

@ -26,7 +26,7 @@ public class GridOpeningResultDTO implements Serializable {
*/
private int registerCount = 0;
/**
* 认证居民
* 居民数包括认证成功和认证失败的居民
*/
private int residentCount = 0;
@ -35,6 +35,11 @@ public class GridOpeningResultDTO implements Serializable {
*/
private int partyCount = 0;
/**
* 未认证用户根据用户第一次扫码的网格统计
*/
private Integer unAuthorizedCount = 0;
/**
* 居民扫码数
*/

6
esua-epdc/epdc-module/epdc-analysis/epdc-analysis-client/src/main/java/com/elink/esua/epdc/dto/user/result/UserDataRankResultDTO.java

@ -38,9 +38,13 @@ public class UserDataRankResultDTO {
*/
private Integer unknownSexCount;
/**
* 居民数
* 居民数包括认证成功和认证失败的居民
*/
private Integer residentCount;
/**
* 未认证用户根据用户第一次扫码的网格统计
*/
private Integer unAuthorizedCount;
/**
* 党员数
*/

26
esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/user/dao/UserAnalysisDao.java

@ -51,12 +51,12 @@ public interface UserAnalysisDao extends BaseMapper<UserAnalysisDTO> {
/**
* 根据街道id获取街道下党员认证失败的数量
*
* @param streetIdList 街道id的集合
* @param params 主要字段街道id的集合,开始时间结束时间
* @return java.util.List<com.elink.esua.epdc.dto.user.result.UserDataRankResultDTO>
* @author work@yujt.net.cn
* @date 2020/2/11 17:25
*/
List<UserDataRankResultDTO> selectListPartyAuthFailureCountByStreetId(@Param("streetIdList") List<String> streetIdList);
List<UserDataRankResultDTO> selectListPartyAuthFailureCountByStreetId(Map<String, Object> params);
/***
* 社群数 社群成员数 社群话题数
@ -130,11 +130,31 @@ public interface UserAnalysisDao extends BaseMapper<UserAnalysisDTO> {
/**
* 查询已开通网格数和未开通网格数
* @param params
*
* @param params
* @return com.elink.esua.epdc.dto.user.result.GridDataTotalResultDTO
* @author work@yujt.net.cn
* @date 2020/2/13 13:50
*/
GridDataTotalResultDTO selectCountGridWorkOrNot(Map<String, Object> params);
/**
* 根据街道id查询街道内未认证用户数
*
* @param params
* @return java.util.List<com.elink.esua.epdc.dto.user.result.UserDataRankResultDTO>
* @author work@yujt.net.cn
* @date 2020/3/5 14:10
*/
List<UserDataRankResultDTO> selectListUnAuthorizedCountByStreetId(Map<String, Object> params);
/**
* 根据网格id查询网格内未认证用户数
*
* @param params
* @return java.util.List<com.elink.esua.epdc.dto.user.result.GridOpeningResultDTO>
* @author work@yujt.net.cn
* @date 2020/3/5 14:10
*/
List<GridOpeningResultDTO> selectListUnAuthorizedCountByGridId(Map<String, Object> params);
}

65
esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/user/service/impl/UserAnalysisServiceImpl.java

@ -16,13 +16,11 @@ import com.elink.esua.epdc.dto.user.UserAnalysisDTO;
import com.elink.esua.epdc.dto.user.form.UserSortRankFormDTO;
import com.elink.esua.epdc.dto.user.form.UserCountDTO;
import com.elink.esua.epdc.dto.user.result.*;
import com.elink.esua.epdc.feign.AdminFeignClient;
import com.elink.esua.epdc.modules.user.dao.UserAnalysisDao;
import com.elink.esua.epdc.modules.user.service.UserAnalysisService;
import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@ -37,8 +35,6 @@ import java.util.Map;
@Slf4j
@Service
public class UserAnalysisServiceImpl extends BaseServiceImpl<UserAnalysisDao, UserAnalysisDTO> implements UserAnalysisService {
@Autowired
private AdminFeignClient ademinFeignClient;
@Override
public PageData<GridOpeningResultDTO> listPageGridOpening(Map<String, Object> params) {
@ -84,6 +80,8 @@ public class UserAnalysisServiceImpl extends BaseServiceImpl<UserAnalysisDao, Us
params.put("page", NumConstant.ONE);
// 注册数,认证党员数,认证居民数
List<GridOpeningResultDTO> registerDataList = baseDao.selectListReigistData(params);
// 未认证用户数
List<GridOpeningResultDTO> unAuthCountList = baseDao.selectListUnAuthorizedCountByGridId(params);
// 新闻数 通知数 议题数
List<GridOpeningResultDTO> nneCountList = baseDao.selectListNewsNoticeEventCount(params);
// 项目数,项目结案数,项目好评数
@ -94,7 +92,6 @@ public class UserAnalysisServiceImpl extends BaseServiceImpl<UserAnalysisDao, Us
for (GridOpeningResultDTO resultDto : list) {
for (GridOpeningResultDTO registerData : registerDataList) {
if (resultDto.getGridId().equals(registerData.getGridId())) {
resultDto.setRegisterCount(registerData.getRegisterCount());
resultDto.setPartyCount(registerData.getPartyCount());
resultDto.setResidentCount(registerData.getResidentCount());
break;
@ -124,6 +121,13 @@ public class UserAnalysisServiceImpl extends BaseServiceImpl<UserAnalysisDao, Us
break;
}
}
for (GridOpeningResultDTO unAuthCountData : unAuthCountList) {
if (resultDto.getGridId().equals(unAuthCountData.getGridId())) {
resultDto.setUnAuthorizedCount(unAuthCountData.getUnAuthorizedCount());
break;
}
}
resultDto.setRegisterCount(resultDto.getResidentCount() + resultDto.getPartyCount() + resultDto.getUnAuthorizedCount());
}
}
return list;
@ -137,43 +141,39 @@ public class UserAnalysisServiceImpl extends BaseServiceImpl<UserAnalysisDao, Us
IPage<UserDataRankResultDTO> page = getPage(params);
List<UserDataRankResultDTO> list = baseDao.selectListUserDataRank(params);
String partyFlag = MapUtil.getStr(params, "partyFlag");
// 如果是查询党员相关排行,进行查询党员认证失败数的查询
if (StringUtils.isNotBlank(partyFlag) && YesOrNoEnum.YES.value().equals(partyFlag)) {
list = packPartyAuthFailureAmount(list);
}
return new PageData<>(list, page.getTotal());
}
/**
* 根据已经查出的列表的街道id查询街道下党员认证失败的人数
*
* @param hasList
* @return java.util.List<com.elink.esua.epdc.dto.user.result.UserDataRankResultDTO>
* @author work@yujt.net.cn
* @date 2020/2/11 17:32
*/
private List<UserDataRankResultDTO> packPartyAuthFailureAmount(List<UserDataRankResultDTO> hasList) {
if (CollUtil.isNotEmpty(hasList)) {
if (CollUtil.isNotEmpty(list)) {
List<String> streetIdList = Lists.newArrayList();
for (UserDataRankResultDTO rankResult : hasList) {
for (UserDataRankResultDTO rankResult : list) {
streetIdList.add(rankResult.getStreetId());
}
if (CollUtil.isNotEmpty(streetIdList)) {
List<UserDataRankResultDTO> partyAuthFailureCountByStreetId = baseDao.selectListPartyAuthFailureCountByStreetId(streetIdList);
for (UserDataRankResultDTO rankResult : hasList) {
params.put("streetIdList", streetIdList);
String partyFlag = MapUtil.getStr(params, "partyFlag");
// 如果是党员排行列表,查询党员认证失败数
if (StringUtils.isNotBlank(partyFlag) && YesOrNoEnum.YES.value().equals(partyFlag)) {
List<UserDataRankResultDTO> partyAuthFailureCountByStreetId = baseDao.selectListPartyAuthFailureCountByStreetId(params);
for (UserDataRankResultDTO rankResult : list) {
for (UserDataRankResultDTO byStreetId : partyAuthFailureCountByStreetId) {
if (rankResult.getStreetId().equals(byStreetId.getStreetId())) {
rankResult.setPartyAuthFailureCount(byStreetId.getPartyAuthFailureCount());
}
}
}
} else {
// 用户排行列表,查询未认证用户数
List<UserDataRankResultDTO> unAuthorizedCountList = baseDao.selectListUnAuthorizedCountByStreetId(params);
for (UserDataRankResultDTO rankResult : list) {
for (UserDataRankResultDTO unAuthCount : unAuthorizedCountList) {
if (rankResult.getStreetId().equals(unAuthCount.getStreetId())) {
rankResult.setUnAuthorizedCount(unAuthCount.getUnAuthorizedCount());
}
}
}
}
}
return hasList;
return new PageData<>(list, page.getTotal());
}
/**
* 用户数据统计
*
@ -230,7 +230,6 @@ public class UserAnalysisServiceImpl extends BaseServiceImpl<UserAnalysisDao, Us
List<GridOpeningResultDTO> gridOpeningResults = this.listPageGridOpeningsForExport(params);
int registerCount = 0;
int residentCount = 0;
int partyCount = 0;
int newsCount = 0;
@ -242,11 +241,12 @@ public class UserAnalysisServiceImpl extends BaseServiceImpl<UserAnalysisDao, Us
int communityCount = 0;
int communityMemberCount = 0;
int communityTopicCount = 0;
int unAuthorizedCount = 0;
for (GridOpeningResultDTO openingResult : gridOpeningResults) {
registerCount += openingResult.getRegisterCount();
residentCount += openingResult.getResidentCount();
partyCount += openingResult.getPartyCount();
unAuthorizedCount += openingResult.getUnAuthorizedCount();
newsCount += openingResult.getNewsCount();
noticeCount += openingResult.getNoticeCount();
eventCount += openingResult.getEventCount();
@ -258,9 +258,10 @@ public class UserAnalysisServiceImpl extends BaseServiceImpl<UserAnalysisDao, Us
communityTopicCount += openingResult.getCommunityTopicCount();
}
result.setRegisterCount(registerCount);
result.setRegisterCount(residentCount + partyCount + unAuthorizedCount);
result.setResidentCount(residentCount);
result.setPartyCount(partyCount);
result.setUnAuthorizedCount(unAuthorizedCount);
result.setNewsCount(newsCount);
result.setNoticeCount(noticeCount);
result.setEventCount(eventCount);

82
esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/user/UserAnalysisDao.xml

@ -61,26 +61,24 @@
</choose>
</select>
<select id="selectListPartyAuthFailureCountByStreetId"
resultType="com.elink.esua.epdc.dto.user.result.UserDataRankResultDTO">
<select id="selectListPartyAuthFailureCountByStreetId" resultType="com.elink.esua.epdc.dto.user.result.UserDataRankResultDTO">
SELECT
ad2.id AS streetId,
COUNT( DISTINCT uf.USER_ID ) partyAuthFailureCount
ad2.id AS streetId,
COUNT( DISTINCT uf.USER_ID ) partyAuthFailureCount
FROM
esua_epdc_user.epdc_user uu
LEFT JOIN esua_epdc_user.epdc_party_authentication_failed uf ON uu.id = uf.user_id
LEFT JOIN esua_epdc_admin.sys_dept ad ON uu.DEPT_ID = ad.ID AND ad.type_key = 'grid_party'
<include refid="joinCommunityStreet"></include>
esua_epdc_user.epdc_user uu
LEFT JOIN esua_epdc_user.epdc_party_authentication_failed uf ON uu.id = uf.user_id
LEFT JOIN esua_epdc_admin.sys_dept ad ON uu.DEPT_ID = ad.ID AND ad.type_key = 'grid_party'
<include refid="joinCommunityStreet"></include>
WHERE
uu.DEL_FLAG = '0'
AND uu.PARTY_FLAG = '0'
AND ad.id IS NOT NULL
<if test="streetIdList != null and streetIdList.size() > 0">
and ad2.ID in
<foreach collection="streetIdList" item="deptId" open="(" separator="," close=")">#{deptId}</foreach>
</if>
GROUP BY
ad2.ID
uu.DEL_FLAG = '0' AND uu.PARTY_FLAG = '0' AND ad.id IS NOT NULL
<if test="startTime != null and endTime != null and endTime != ''">
AND uf.CREATED_TIME BETWEEN #{startTime} AND #{endTime}
</if>
<if test="streetIdList != null and streetIdList.size() > 0">
and ad2.ID in <foreach collection="streetIdList" item="deptId" open="(" separator="," close=")">#{deptId}</foreach>
</if>
GROUP BY ad2.ID
</select>
@ -328,6 +326,7 @@
GROUP BY ad.id
ORDER BY ama.CREATED_TIME DESC, ad.create_date DESC
</select>
<select id="selectListReigistData" resultType="com.elink.esua.epdc.dto.user.result.GridOpeningResultDTO">
SELECT
t.DEPT_ID gridId, COUNT( t.ID ) registerCount,
@ -382,4 +381,53 @@
LEFT JOIN esua_epdc_admin.sys_dept ad1 ON ad1.id = ad.pid
LEFT JOIN esua_epdc_admin.sys_dept ad2 ON ad2.id = ad1.pid
</sql>
<select id="selectListUnAuthorizedCountByStreetId" resultType="com.elink.esua.epdc.dto.user.result.UserDataRankResultDTO">
SELECT
tt.streetId, COUNT( DISTINCT tt.userId ) unAuthorizedCount
FROM (
SELECT * FROM (
SELECT
u.NICKNAME, ad2.id streetId, ad2.`name` streetName, u.ID userId, gr.CREATED_TIME
FROM
esua_epdc_user.epdc_user_grid_relation gr
LEFT JOIN esua_epdc_admin.sys_dept ad ON gr.grid_id = ad.id
LEFT JOIN esua_epdc_admin.sys_dept ad1 ON ad.pid = ad1.id
LEFT JOIN esua_epdc_admin.sys_dept ad2 ON ad1.pid = ad2.id
LEFT JOIN esua_epdc_user.epdc_user u ON gr.USER_ID = u.ID
WHERE
u.STATE = '0' AND u.ID IS NOT NULL
<if test="startTime != null and endTime != null and endTime != ''">
AND gr.CREATED_TIME BETWEEN #{startTime} AND #{endTime}
</if>
<if test="streetIdList != null and streetIdList.size() > 0">
and ad2.ID in <foreach collection="streetIdList" item="deptId" open="(" separator="," close=")">#{deptId}</foreach>
</if>
ORDER BY gr.CREATED_TIME ASC
) t GROUP BY t.userId
) tt GROUP BY tt.streetId
</select>
<select id="selectListUnAuthorizedCountByGridId" resultType="com.elink.esua.epdc.dto.user.result.GridOpeningResultDTO">
SELECT
tt.gridId, COUNT( DISTINCT tt.userId ) unAuthorizedCount
FROM (
SELECT * FROM (
SELECT
gr.grid_id gridId, u.ID userId, gr.CREATED_TIME
FROM
esua_epdc_user.epdc_user_grid_relation gr
LEFT JOIN esua_epdc_user.epdc_user u ON gr.USER_ID = u.ID
WHERE
u.STATE = '0' AND u.ID IS NOT NULL
<if test="startTime != null and endTime != null and endTime != ''">
AND gr.CREATED_TIME BETWEEN #{startTime} AND #{endTime}
</if>
<if test="gridIdList != null and gridIdList.size() > 0">
and gr.grid_id in <foreach collection="gridIdList" item="deptId" open="(" separator="," close=")">#{deptId}</foreach>
</if>
ORDER BY gr.CREATED_TIME ASC
) t GROUP BY t.userId
) tt GROUP BY tt.gridId
</select>
</mapper>

Loading…
Cancel
Save