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