Browse Source

用户注册排行和党员排行的后端接口

dev
yujintao 6 years ago
parent
commit
b784cf6692
  1. 64
      esua-epdc/epdc-module/epdc-analysis/epdc-analysis-client/src/main/java/com/elink/esua/epdc/dto/user/result/UserDataRankResultDTO.java
  2. 27
      esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/user/controller/UserAnalysisController.java
  3. 11
      esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/user/dao/UserAnalysisDao.java
  4. 13
      esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/user/service/UserAnalysisService.java
  5. 19
      esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/user/service/impl/UserAnalysisServiceImpl.java
  6. 38
      esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/user/UserAnalysisDao.xml

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

@ -0,0 +1,64 @@
package com.elink.esua.epdc.dto.user.result;
import lombok.Data;
import java.math.BigDecimal;
/**
* 用户数据排行
*
* @author work@yujt.net.cn
* @date 2020/2/11 14:44
*/
@Data
public class UserDataRankResultDTO {
/**
* 街道id
*/
private String streetId;
/**
* 街道名称
*/
private String streetName;
/**
* 用户注册数
*/
private Integer userCount;
/**
* 男性数
*/
private Integer maleCount;
/**
* 女性数
*/
private Integer femaleCount;
/**
* 未知性别数
*/
private Integer unknownSexCount;
/**
* 居民数
*/
private Integer residentCount;
/**
* 党员数
*/
private Integer partymemberCount;
/**
* 老人数年龄大于50
*/
private Integer oldCount;
/**
* 年轻人数年龄不大于50
*/
private Integer youngCount;
/**
* 老人比例
*/
private BigDecimal oldPercent;
/**
* 年轻人比例
*/
private BigDecimal youngPercent;
}

27
esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/user/controller/UserAnalysisController.java

@ -1,7 +1,13 @@
package com.elink.esua.epdc.modules.user.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.user.result.UserDataRankResultDTO;
import com.elink.esua.epdc.modules.user.service.UserAnalysisService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
* 数据端用户数据分析相关接口
@ -13,4 +19,21 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("user")
public class UserAnalysisController {
@Autowired
private UserAnalysisService userAnalysisService;
/**
* PC端用户数据分析用户注册排行党员排行
*
* @param params
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.commons.tools.page.PageData < com.elink.esua.epdc.dto.user.result.UserDataRankResultDTO>>
* @author work@yujt.net.cn
* @date 2020/2/11 15:17
*/
@GetMapping("page/dataRank")
public Result<PageData<UserDataRankResultDTO>> pageUserDataRank(@RequestParam Map<String, Object> params) {
PageData<UserDataRankResultDTO> pageData = userAnalysisService.pageUserDataRank(params);
return new Result().ok(pageData);
}
}

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

@ -3,9 +3,11 @@ package com.elink.esua.epdc.modules.user.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.elink.esua.epdc.dto.user.UserAnalysisDTO;
import com.elink.esua.epdc.dto.user.result.GridOpeningResultDTO;
import com.elink.esua.epdc.dto.user.result.UserDataRankResultDTO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Map;
/**
* 用户数据分析相关
@ -82,4 +84,13 @@ public interface UserAnalysisDao extends BaseMapper<UserAnalysisDTO> {
*/
List<GridOpeningResultDTO> selectListItemCount();
/**
* 查询用户数据排行
*
* @param params
* @return java.util.List<com.elink.esua.epdc.dto.user.result.UserDataRankResultDTO>
* @author work@yujt.net.cn
* @date 2020/2/11 14:48
*/
List<UserDataRankResultDTO> selectListUserDataRank(Map<String, Object> params);
}

13
esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/user/service/UserAnalysisService.java

@ -1,8 +1,11 @@
package com.elink.esua.epdc.modules.user.service;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.dto.user.result.GridOpeningResultDTO;
import com.elink.esua.epdc.dto.user.result.UserDataRankResultDTO;
import java.util.List;
import java.util.Map;
/**
* 用户数据分析相关业务
@ -20,4 +23,14 @@ public interface UserAnalysisService {
* @date 2020/2/11 14:04
*/
List<GridOpeningResultDTO> listPageGridOpening();
/**
* 用户数据排行PC端用户数据分析居民注册排行党员排行
*
* @param params
* @return com.elink.esua.epdc.commons.tools.page.PageData<com.elink.esua.epdc.dto.user.result.UserDataRankResultDTO>
* @author work@yujt.net.cn
* @date 2020/2/11 15:13
*/
PageData<UserDataRankResultDTO> pageUserDataRank(Map<String, Object> params);
}

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

@ -1,15 +1,22 @@
package com.elink.esua.epdc.modules.user.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.security.user.SecurityUser;
import com.elink.esua.epdc.commons.tools.security.user.UserDetail;
import com.elink.esua.epdc.datasources.DataSourceNames;
import com.elink.esua.epdc.datasources.annotation.DataSource;
import com.elink.esua.epdc.dto.user.UserAnalysisDTO;
import com.elink.esua.epdc.dto.user.result.GridOpeningResultDTO;
import com.elink.esua.epdc.dto.user.result.UserRegisterDataResultDTO;
import com.elink.esua.epdc.dto.user.result.UserDataRankResultDTO;
import com.elink.esua.epdc.modules.user.dao.UserAnalysisDao;
import com.elink.esua.epdc.modules.user.service.UserAnalysisService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
* 用户数据分析业务实现
@ -29,4 +36,14 @@ public class UserAnalysisServiceImpl extends BaseServiceImpl<UserAnalysisDao, Us
return baseDao.selectListReigistCount();
}
@Override
@DataSource(name = DataSourceNames.ELEVENTH)
public PageData<UserDataRankResultDTO> pageUserDataRank(Map<String, Object> params) {
UserDetail userDetail = SecurityUser.getUser();
params.put("deptIdList", userDetail.getDeptIdList());
IPage<UserDataRankResultDTO> page = getPage(params);
List<UserDataRankResultDTO> list = baseDao.selectListUserDataRank(params);
return new PageData<>(list, page.getTotal());
}
}

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

@ -27,4 +27,42 @@
ORDER BY
t0.id ASC
</select>
<select id="selectListUserDataRank" resultType="com.elink.esua.epdc.dto.user.result.UserDataRankResultDTO">
SELECT
t1.*,
t1.userCount - t1.partymemberCount AS residentCount,
t1.oldCount / t1.userCount oldPercent,
t1.youngCount / t1.userCount youngPercent
FROM
( SELECT
t.streetName, t.streetId,
COUNT( t.userId ) userCount,
count( t.SEX = '1' OR NULL ) maleCount,
count( t.SEX = '0' OR NULL ) femaleCount,
count( t.SEX = '2' OR NULL ) unknownSexCount,
COUNT( t.PARTY_FLAG = '1' OR NULL ) partymemberCount,
COUNT( t.age > 50 OR NULL ) oldCount,
COUNT( ( t.age &lt;= 50 AND t.age > 0 ) OR NULL ) youngCount
FROM (
SELECT
uu.ID AS userId,
CASE WHEN uu.SEX != '0' AND uu.SEX != '1' THEN '2' ELSE uu.SEX END AS SEX,
uu.STATE, uu.PARTY_FLAG, uu.DEPT_ID,
IFNULL( TIMESTAMPDIFF( YEAR, uu.BIRTHDAY, CURDATE()), 0 ) age,
ad2.`name` streetName, ad2.id streetId
FROM
esua_epdc_user.epdc_user uu
LEFT JOIN esua_epdc_admin.sys_dept ad ON uu.DEPT_ID = ad.ID AND ad.type_key = 'grid_party'
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
WHERE
uu.DEL_FLAG = '0'
<if test='partyFlag != null and partyFlag = "1"'>AND uu.PARTY_FLAG = '1'</if>
AND ad.id IS NOT NULL
) t
GROUP BY t.streetId
) t1
</select>
</mapper>

Loading…
Cancel
Save