17 changed files with 555 additions and 2 deletions
@ -0,0 +1,43 @@ |
|||
package com.elink.esua.epdc.dto.user.form; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import javax.validation.constraints.NotBlank; |
|||
import javax.validation.constraints.NotNull; |
|||
|
|||
/** |
|||
* @author songyunpeng |
|||
* @Description 党员老龄化和年轻化排名查询表单 |
|||
* @create 2020-02-11 10:53 上午 |
|||
*/ |
|||
@Data |
|||
public class MemberRankFormDTO { |
|||
|
|||
/** |
|||
* 页码 |
|||
*/ |
|||
@NotNull(message = "页码不能为空") |
|||
private Integer pageIndex; |
|||
/** |
|||
* 页容量 |
|||
*/ |
|||
@NotNull(message = "分页数量不能为空") |
|||
private Integer pageSize; |
|||
/** |
|||
* 时间戳(yyyy-MM-dd HH:mm:ss) |
|||
*/ |
|||
@NotBlank(message = "时间戳不能为空") |
|||
private String timestamp; |
|||
/** |
|||
* 排序状态(1:降序,2升序) |
|||
*/ |
|||
@NotBlank(message = "排序状态不能为空") |
|||
private String sortState; |
|||
/** |
|||
* 部门Id |
|||
*/ |
|||
@NotBlank(message = "部门ID不能为空") |
|||
private String deptId; |
|||
|
|||
|
|||
} |
@ -0,0 +1,34 @@ |
|||
package com.elink.esua.epdc.dto.user.result; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* @author songyunpeng |
|||
* @Description 党员老龄化排名结果 |
|||
* @create 2020-02-11 10:53 上午 |
|||
*/ |
|||
@Data |
|||
public class OldMemberRankResultDTO implements Serializable { |
|||
/** |
|||
* 部门ID |
|||
*/ |
|||
private String deptId; |
|||
/** |
|||
* 部门名称 |
|||
*/ |
|||
private String deptName; |
|||
/** |
|||
* 党员数 |
|||
*/ |
|||
private Integer partyMemberCount; |
|||
/** |
|||
* 超过50岁党员数 |
|||
*/ |
|||
private Integer oldMemberCount; |
|||
/** |
|||
* 比例 |
|||
*/ |
|||
private String proportion; |
|||
} |
@ -0,0 +1,34 @@ |
|||
package com.elink.esua.epdc.dto.user.result; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* @author songyunpeng |
|||
* @Description 党员年轻化排名结果 |
|||
* @create 2020-02-11 10:53 上午 |
|||
*/ |
|||
@Data |
|||
public class YoungMemberRankResultDTO implements Serializable { |
|||
/** |
|||
* 部门ID |
|||
*/ |
|||
private String deptId; |
|||
/** |
|||
* 部门名称 |
|||
*/ |
|||
private String deptName; |
|||
/** |
|||
* 党员数 |
|||
*/ |
|||
private Integer partyMemberCount; |
|||
/** |
|||
* 超过50岁党员数 |
|||
*/ |
|||
private Integer youngMemberCount; |
|||
/** |
|||
* 比例 |
|||
*/ |
|||
private String proportion; |
|||
} |
@ -0,0 +1,28 @@ |
|||
package com.elink.esua.epdc.modules.user.dao; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import com.elink.esua.epdc.dto.user.form.MemberRankFormDTO; |
|||
import com.elink.esua.epdc.dto.user.result.OldMemberRankResultDTO; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @author songyunpeng |
|||
* @Description |
|||
* @create 2020-02-11 |
|||
*/ |
|||
|
|||
@Mapper |
|||
public interface OldMemberRankDao extends BaseMapper<OldMemberRankResultDTO> { |
|||
|
|||
/** |
|||
* 移动端党员老龄化排名列表 |
|||
* @Params: [formDTO] |
|||
* @Return: java.util.List<com.elink.esua.epdc.dto.user.result.OldMemberRankResultDTO> |
|||
* @Author: liuchuang |
|||
* @Date: 2019/9/9 15:13 |
|||
*/ |
|||
List<OldMemberRankResultDTO> selectListOfOldMemberRank(MemberRankFormDTO formDto,List<Long> deptIdList); |
|||
|
|||
} |
@ -0,0 +1,29 @@ |
|||
package com.elink.esua.epdc.modules.user.dao; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import com.elink.esua.epdc.dto.user.form.MemberRankFormDTO; |
|||
import com.elink.esua.epdc.dto.user.result.OldMemberRankResultDTO; |
|||
import com.elink.esua.epdc.dto.user.result.YoungMemberRankResultDTO; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @author songyunpeng |
|||
* @Description |
|||
* @create 2020-02-11 |
|||
*/ |
|||
|
|||
@Mapper |
|||
public interface YoungMemberRankDao extends BaseMapper<YoungMemberRankResultDTO> { |
|||
|
|||
/** |
|||
* 移动端党员年轻化化排名列表 |
|||
* @Params: [formDTO] |
|||
* @Return: java.util.List<com.elink.esua.epdc.dto.user.result.YoungMemberRankResultDTO> |
|||
* @Author: liuchuang |
|||
* @Date: 2019/9/9 15:13 |
|||
*/ |
|||
List<YoungMemberRankResultDTO> selectListOfYoungMemberRank(MemberRankFormDTO formDto, List<Long> deptIdList); |
|||
|
|||
} |
@ -0,0 +1,24 @@ |
|||
package com.elink.esua.epdc.modules.user.service; |
|||
|
|||
import com.elink.esua.epdc.commons.tools.utils.Result; |
|||
import com.elink.esua.epdc.dto.item.result.ItemResultDTO; |
|||
import com.elink.esua.epdc.dto.user.form.MemberRankFormDTO; |
|||
import com.elink.esua.epdc.dto.user.result.OldMemberRankResultDTO; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @author songyunpeng |
|||
* @Description 党员老龄化排名 |
|||
* @create 2020-02-11 12:42 下午 |
|||
*/ |
|||
|
|||
public interface OldMemberRankService { |
|||
|
|||
/** |
|||
* 党员老龄化排名列表-移动app端用 |
|||
* @Params: [formDto] |
|||
* @Return: OldMemberRankResultDTO |
|||
*/ |
|||
Result<List<OldMemberRankResultDTO>> listOldMemberRankByDeptId(MemberRankFormDTO formDto); |
|||
} |
@ -0,0 +1,24 @@ |
|||
package com.elink.esua.epdc.modules.user.service; |
|||
|
|||
import com.elink.esua.epdc.commons.tools.utils.Result; |
|||
import com.elink.esua.epdc.dto.user.form.MemberRankFormDTO; |
|||
import com.elink.esua.epdc.dto.user.result.OldMemberRankResultDTO; |
|||
import com.elink.esua.epdc.dto.user.result.YoungMemberRankResultDTO; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @author songyunpeng |
|||
* @Description 党员年轻化化排名 |
|||
* @create 2020-02-11 12:42 下午 |
|||
*/ |
|||
|
|||
public interface YoungMemberRankService { |
|||
|
|||
/** |
|||
* 党员年轻化排名列表-移动app端用 |
|||
* @Params: [formDto] |
|||
* @Return: YoungMemberRankResultDTO |
|||
*/ |
|||
Result<List<YoungMemberRankResultDTO>> listYoungMemberRankByDeptId(MemberRankFormDTO formDto); |
|||
} |
@ -0,0 +1,34 @@ |
|||
package com.elink.esua.epdc.modules.user.service.impl; |
|||
|
|||
import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl; |
|||
import com.elink.esua.epdc.commons.tools.constant.NumConstant; |
|||
import com.elink.esua.epdc.commons.tools.security.user.SecurityUser; |
|||
import com.elink.esua.epdc.commons.tools.utils.Result; |
|||
import com.elink.esua.epdc.dto.item.result.ItemResultDTO; |
|||
import com.elink.esua.epdc.dto.user.form.MemberRankFormDTO; |
|||
import com.elink.esua.epdc.dto.user.result.OldMemberRankResultDTO; |
|||
import com.elink.esua.epdc.modules.user.dao.OldMemberRankDao; |
|||
import com.elink.esua.epdc.modules.user.service.OldMemberRankService; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @author songyunpeng |
|||
* @Description |
|||
* @create 2020-02-11 12:48 下午 |
|||
*/ |
|||
|
|||
@Slf4j |
|||
@Service |
|||
public class OldMemberRankServiceImpl extends BaseServiceImpl<OldMemberRankDao, OldMemberRankResultDTO> implements OldMemberRankService { |
|||
|
|||
|
|||
@Override |
|||
public Result<List<OldMemberRankResultDTO>> listOldMemberRankByDeptId(MemberRankFormDTO formDto) { |
|||
int pageIndex = (formDto.getPageIndex() - NumConstant.ONE) * formDto.getPageSize(); |
|||
formDto.setPageIndex(pageIndex); |
|||
List<OldMemberRankResultDTO> data = baseDao.selectListOfOldMemberRank(formDto, SecurityUser.getUser().getDeptIdList()); |
|||
return new Result<List<OldMemberRankResultDTO>>().ok(data); } |
|||
} |
@ -0,0 +1,35 @@ |
|||
package com.elink.esua.epdc.modules.user.service.impl; |
|||
|
|||
import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl; |
|||
import com.elink.esua.epdc.commons.tools.constant.NumConstant; |
|||
import com.elink.esua.epdc.commons.tools.security.user.SecurityUser; |
|||
import com.elink.esua.epdc.commons.tools.utils.Result; |
|||
import com.elink.esua.epdc.dto.user.form.MemberRankFormDTO; |
|||
import com.elink.esua.epdc.dto.user.result.OldMemberRankResultDTO; |
|||
import com.elink.esua.epdc.dto.user.result.YoungMemberRankResultDTO; |
|||
import com.elink.esua.epdc.modules.user.dao.OldMemberRankDao; |
|||
import com.elink.esua.epdc.modules.user.dao.YoungMemberRankDao; |
|||
import com.elink.esua.epdc.modules.user.service.OldMemberRankService; |
|||
import com.elink.esua.epdc.modules.user.service.YoungMemberRankService; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @author songyunpeng |
|||
* @Description |
|||
* @create 2020-02-11 12:48 下午 |
|||
*/ |
|||
@Slf4j |
|||
@Service |
|||
public class YoungMemberRankServiceImpl extends BaseServiceImpl<YoungMemberRankDao, YoungMemberRankResultDTO> implements YoungMemberRankService { |
|||
|
|||
|
|||
@Override |
|||
public Result<List<YoungMemberRankResultDTO>> listYoungMemberRankByDeptId(MemberRankFormDTO formDto) { |
|||
int pageIndex = (formDto.getPageIndex() - NumConstant.ONE) * formDto.getPageSize(); |
|||
formDto.setPageIndex(pageIndex); |
|||
List<YoungMemberRankResultDTO> data = baseDao.selectListOfYoungMemberRank(formDto, SecurityUser.getUser().getDeptIdList()); |
|||
return new Result<List<YoungMemberRankResultDTO>>().ok(data); } |
|||
} |
@ -0,0 +1,63 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
|
|||
<mapper namespace="com.elink.esua.epdc.modules.user.dao.OldMemberRankDao"> |
|||
<resultMap id="listOfOldMemberRankMap" type="com.elink.esua.epdc.dto.user.result.OldMemberRankResultDTO"> |
|||
<result property="deptId" column="deptId"/> |
|||
<result property="deptName" column="deptName"/> |
|||
<result property="partyMemberCount" column="partyMemberCount"/> |
|||
<result property="oldMemberCount" column="youngMemberCount"/> |
|||
<result property="proportion" column="proportion"/> |
|||
</resultMap> |
|||
|
|||
|
|||
<select id="selectListOfOldMemberRank" resultMap="listOfOldMemberRankMap"> |
|||
SELECT |
|||
* |
|||
FROM ( |
|||
SELECT |
|||
t1.*, |
|||
t1.oldMemberCount / t1.partyMemberCount proportion |
|||
FROM ( |
|||
SELECT |
|||
t.street as deptName, |
|||
t.streetId as deptId, |
|||
COUNT( t.userId ) AS partyMemberCount, |
|||
COUNT( t.age > 50 or null ) oldMemberCount |
|||
FROM ( |
|||
SELECT |
|||
ad2.`name` AS street, |
|||
ad2.id streetId, |
|||
uu.ID userId, |
|||
TIMESTAMPDIFF( YEAR, uu.BIRTHDAY, CURDATE()) age |
|||
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' |
|||
AND uu.PARTY_FLAG = '1' |
|||
AND ad.id IS NOT NULL |
|||
AND ad2.id != 1191534129122230274 |
|||
AND ad2.id = #{formDto.deptId} |
|||
AND ad2.id IN |
|||
<foreach item="deptIdItem" collection="deptIdList" open="(" separator="," close=")"> |
|||
#{deptIdItem} |
|||
</foreach> |
|||
) t |
|||
GROUP BY |
|||
t.streetId |
|||
) t1 |
|||
) t2 |
|||
ORDER BY |
|||
<if test="formDto.sortState == 1"> |
|||
t2.proportion DESC |
|||
</if> |
|||
<if test="formDto.sortState == 2"> |
|||
t2.proportion |
|||
</if> |
|||
LIMIT #{formDto.pageIndex},#{formDto.pageSize}; |
|||
</select> |
|||
</mapper> |
@ -0,0 +1,63 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
|
|||
<mapper namespace="com.elink.esua.epdc.modules.user.dao.YoungMemberRankDao"> |
|||
<resultMap id="listOfYoungMemberRankMap" type="com.elink.esua.epdc.dto.user.result.YoungMemberRankResultDTO"> |
|||
<result property="deptId" column="deptId"/> |
|||
<result property="deptName" column="deptName"/> |
|||
<result property="partyMemberCount" column="partyMemberCount"/> |
|||
<result property="youngMemberCount" column="youngMemberCount"/> |
|||
<result property="proportion" column="proportion"/> |
|||
</resultMap> |
|||
|
|||
|
|||
<select id="selectListOfYoungMemberRank" resultMap="listOfYoungMemberRankMap"> |
|||
SELECT |
|||
* |
|||
FROM ( |
|||
SELECT |
|||
t1.*, |
|||
t1.youngMemberCount / t1.partyMemberCount proportion |
|||
FROM ( |
|||
SELECT |
|||
t.street as deptName, |
|||
t.streetId as deptId, |
|||
COUNT( t.userId ) AS partyMemberCount, |
|||
COUNT( t.age <= 50 ) youngMemberCount |
|||
FROM ( |
|||
SELECT |
|||
ad2.`name` AS street, |
|||
ad2.id streetId, |
|||
uu.ID userId, |
|||
TIMESTAMPDIFF( YEAR, uu.BIRTHDAY, CURDATE()) age |
|||
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' |
|||
AND uu.PARTY_FLAG = '1' |
|||
AND ad.id IS NOT NULL |
|||
AND ad2.id != 1191534129122230274 |
|||
AND ad2.id = #{formDto.deptId} |
|||
AND ad2.id IN |
|||
<foreach item="deptIdItem" collection="deptIdList" open="(" separator="," close=")"> |
|||
#{deptIdItem} |
|||
</foreach> |
|||
) t |
|||
GROUP BY |
|||
t.streetId |
|||
) t1 |
|||
) t2 |
|||
ORDER BY |
|||
<if test="formDto.sortState == 1"> |
|||
t2.proportion DESC |
|||
</if> |
|||
<if test="formDto.sortState == 2"> |
|||
t2.proportion |
|||
</if> |
|||
LIMIT #{formDto.pageIndex},#{formDto.pageSize}; |
|||
</select> |
|||
</mapper> |
Loading…
Reference in new issue