Browse Source

社区党建数据分析-党员相关

master
zhaoqifeng 4 years ago
parent
commit
884ef28507
  1. 3
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/DictTypeEnum.java
  2. 10
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyUnitServiceImpl.java
  3. 24
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/PartyMemberListFormDTO.java
  4. 20
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/PartyMemberStatisticsFormDTO.java
  5. 19
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PartyMemberAgeResultDTO.java
  6. 19
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PartyMemberEducationResultDTO.java
  7. 53
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java
  8. 47
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java
  9. 37
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java
  10. 117
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java
  11. 128
      epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml

3
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/DictTypeEnum.java

@ -18,7 +18,8 @@ public enum DictTypeEnum {
GENDER("gender", "性别", 8),
USER_DEMAND_STATUS("user_demand_status", "居民需求状态",8),
USER_DEMAND_REPORT_TYPE("user_demand_report_type","居民需求上报类型",9),
USER_DEMAND_SERVICE_TYPE("user_demand_service_type","居民需求服务方类型",10)
USER_DEMAND_SERVICE_TYPE("user_demand_service_type","居民需求服务方类型",10),
AGE_GROUP("age_group", "年龄范围", 11),
;
private final String code;

10
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyUnitServiceImpl.java

@ -415,7 +415,15 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl<IcPartyUnitDao, IcPa
*/
@Override
public List<PartyUnitDistributionResultDTO> distribution(PartyActivityFormDTO formDTO) {
return baseDao.getDistribution(formDTO.getAgencyId());
Result<Map<String, String>> unitTypeMap = epmetAdminOpenFeignClient.dictMap(DictTypeEnum.PARTY_UNIT_TYPE.getCode());
List<PartyUnitDistributionResultDTO> list = baseDao.getDistribution(formDTO.getAgencyId());
if (CollectionUtils.isEmpty(list)) {
return Collections.emptyList();
}
list.forEach(item -> {
item.setType(unitTypeMap.getData().get(item.getType()));
});
return list;
}
private String getServiceMatter(Map<String, String> map, String matter) {

24
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/PartyMemberListFormDTO.java

@ -0,0 +1,24 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Description
* @Author zhaoqifeng
* @Date 2021/12/10 15:49
*/
@Data
public class PartyMemberListFormDTO implements Serializable {
private static final long serialVersionUID = -6085134769034337175L;
@NotBlank(message = "组织类型不能为空")
private String orgType;
@NotBlank(message = "组织ID不能为空")
private String orgId;
private String code;
private Integer pageNo = 1;
private Integer pageSize = 20;
}

20
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/PartyMemberStatisticsFormDTO.java

@ -0,0 +1,20 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Description
* @Author zhaoqifeng
* @Date 2021/12/10 15:46
*/
@Data
public class PartyMemberStatisticsFormDTO implements Serializable {
private static final long serialVersionUID = 1027174449735636944L;
@NotBlank(message = "组织类型不能为空")
private String orgType;
@NotBlank(message = "组织ID不能为空")
private String orgId;
}

19
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PartyMemberAgeResultDTO.java

@ -0,0 +1,19 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Description
* @Author zhaoqifeng
* @Date 2021/12/10 17:05
*/
@Data
public class PartyMemberAgeResultDTO implements Serializable {
private static final long serialVersionUID = 3421162784157903637L;
private String userId;
private String name;
private String age;
private String mobile;
}

19
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PartyMemberEducationResultDTO.java

@ -0,0 +1,19 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Description
* @Author zhaoqifeng
* @Date 2021/12/10 17:07
*/
@Data
public class PartyMemberEducationResultDTO implements Serializable {
private static final long serialVersionUID = -5042362121277863249L;
private String userId;
private String name;
private String education;
private String mobile;
}

53
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java

@ -27,6 +27,7 @@ import com.epmet.commons.tools.aop.NoRepeatSubmit;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.dto.result.OptionDataResultDTO;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException;
@ -505,4 +506,56 @@ public class IcResiUserController {
ValidatorUtils.validateEntity(formDTO, DemandUserFormDTO.InternalGroup.class);
return new Result<List<DemandUserResDTO>>().ok(icResiUserService.queryDemandUsers(formDTO));
}
/**
* 党员年龄范围统计
* @Param formDTO
* @Return {@link Result< List< OptionDataResultDTO >>}
* @Author zhaoqifeng
* @Date 2021/12/10 15:52
*/
@PostMapping("partymemberagestatistics")
public Result<List<OptionDataResultDTO>> partyMemberAgeStatistics(@RequestBody PartyMemberStatisticsFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return new Result<List<OptionDataResultDTO>>().ok(icResiUserService.partyMemberAgeStatistics(formDTO));
}
/**
* 党员年龄列表
* @Param formDTO
* @Return {@link Result< PageData< PartyMemberEducationResultDTO>>}
* @Author zhaoqifeng
* @Date 2021/12/10 17:54
*/
@PostMapping("partymemberagelist")
public Result<PageData<PartyMemberAgeResultDTO>> partyMemberAgelist(@RequestBody PartyMemberListFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return new Result<PageData<PartyMemberAgeResultDTO>>().ok(icResiUserService.getPartyMemberAgeList(formDTO));
}
/**
* 党员学历统计
* @Param formDTO
* @Return {@link Result< List< OptionDataResultDTO>>}
* @Author zhaoqifeng
* @Date 2021/12/10 17:58
*/
@PostMapping("partymembereducationstatistics")
public Result<List<OptionDataResultDTO>> partyMemberEducationStatistics(@RequestBody PartyMemberStatisticsFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return new Result<List<OptionDataResultDTO>>().ok(icResiUserService.partyMemberEducationStatistics(formDTO));
}
/**
* 党员学历列表
* @Param formDTO
* @Return {@link Result< PageData< PartyMemberEducationResultDTO>>}
* @Author zhaoqifeng
* @Date 2021/12/10 17:58
*/
@PostMapping("partymembereducationlist")
public Result<PageData<PartyMemberEducationResultDTO>> partyMemberEducationlist(@RequestBody PartyMemberListFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return new Result<PageData<PartyMemberEducationResultDTO>>().ok(icResiUserService.getPartyMemberEducationList(formDTO));
}
}

47
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java

@ -18,6 +18,7 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.commons.tools.dto.result.OptionDataResultDTO;
import com.epmet.dto.IcResiUserDTO;
import com.epmet.dto.form.ResiUserQueryValueDTO;
import com.epmet.dto.result.*;
@ -179,4 +180,50 @@ public interface IcResiUserDao extends BaseDao<IcResiUserEntity> {
* @return
*/
List<HouseUserDTO> selectListFamilyMember(@Param("currentIcResiUserId") String currentIcResiUserId, @Param("homeId") String homeId);
/**
* 组织内党员年龄范围统计
* @Param orgType
* @Param orgId
* @Return {@link List< OptionDataResultDTO>}
* @Author zhaoqifeng
* @Date 2021/12/10 17:11
*/
List<OptionDataResultDTO> getPartyMemberAgeStatistics(@Param("orgType") String orgType, @Param("orgId") String orgId);
/**
* 获取年龄范围内党员列表
* @Param orgType
* @Param orgId
* @Param min
* @Param max
* @Return {@link List< PartyMemberAgeResultDTO>}
* @Author zhaoqifeng
* @Date 2021/12/10 17:11
*/
List<PartyMemberAgeResultDTO> getPartyMemberAgeList(@Param("orgType") String orgType, @Param("orgId") String orgId,
@Param("code") String code);
/**
* 党员文化程度统计
* @Param orgType
* @Param orgId
* @Return {@link List< OptionDataResultDTO>}
* @Author zhaoqifeng
* @Date 2021/12/10 17:29
*/
List<OptionDataResultDTO> getPartyMemberEducationStatistics(@Param("orgType") String orgType, @Param("orgId") String orgId);
/**
* 按教育程度获取党员列表
* @Param orgType
* @Param orgId
* @Param code
* @Return {@link List< PartyMemberAgeResultDTO>}
* @Author zhaoqifeng
* @Date 2021/12/10 17:24
*/
List<PartyMemberEducationResultDTO> getPartyMemberEducationList(@Param("orgType") String orgType, @Param("orgId") String orgId,
@Param("code") String code);
}

37
epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java

@ -18,6 +18,7 @@
package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.dto.result.OptionDataResultDTO;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.IcResiUserDTO;
@ -153,4 +154,40 @@ public interface IcResiUserService extends BaseService<IcResiUserEntity> {
IcResiUserDTO getByIdCard(String customerId, String idNum,String icResiUserId);
IcResiUserBriefDTO findFamilyMem(String icResiUserId);
/**
* 党员年龄范围统计
* @Param formDTO
* @Return {@link List< OptionDataResultDTO >}
* @Author zhaoqifeng
* @Date 2021/12/10 15:54
*/
List<OptionDataResultDTO> partyMemberAgeStatistics(PartyMemberStatisticsFormDTO formDTO);
/**
* 获取年龄范围内党员列表
* @Param formDTO
* @Return {@link PageData< PartyMemberAgeResultDTO>}
* @Author zhaoqifeng
* @Date 2021/12/10 17:40
*/
PageData<PartyMemberAgeResultDTO> getPartyMemberAgeList(PartyMemberListFormDTO formDTO);
/**
* 党员文化程度统计
* @Param formDTO
* @Return {@link List< OptionDataResultDTO>}
* @Author zhaoqifeng
* @Date 2021/12/10 17:40
*/
List<OptionDataResultDTO> partyMemberEducationStatistics(PartyMemberStatisticsFormDTO formDTO);
/**
* 按教育程度获取党员列表
* @Param formDTO
* @Return {@link PageData< PartyMemberEducationResultDTO>}
* @Author zhaoqifeng
* @Date 2021/12/10 17:40
*/
PageData<PartyMemberEducationResultDTO> getPartyMemberEducationList(PartyMemberListFormDTO formDTO);
}

117
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java

@ -25,11 +25,11 @@ import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.form.DictListFormDTO;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.enums.FormItemTypeEnum;
import com.epmet.commons.tools.enums.GenderEnum;
import com.epmet.commons.tools.enums.HouseTypeEnum;
import com.epmet.commons.tools.enums.RelationshipEnum;
import com.epmet.commons.tools.dto.result.DictListResultDTO;
import com.epmet.commons.tools.dto.result.OptionDataResultDTO;
import com.epmet.commons.tools.enums.*;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.RenException;
@ -54,10 +54,7 @@ import com.epmet.dto.form.demand.UserDemandNameQueryFormDTO;
import com.epmet.dto.result.*;
import com.epmet.entity.IcResiUserEntity;
import com.epmet.excel.support.ExportResiUserItemDTO;
import com.epmet.feign.EpmetHeartOpenFeignClient;
import com.epmet.feign.EpmetMessageOpenFeignClient;
import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.feign.OperCustomizeOpenFeignClient;
import com.epmet.feign.*;
import com.epmet.service.IcResiUserService;
import com.epmet.service.UserService;
import com.github.pagehelper.Page;
@ -102,6 +99,8 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
private RedisUtils redisUtils;
@Autowired
private UserService userService;
@Autowired
private EpmetAdminOpenFeignClient epmetAdminOpenFeignClient;
private QueryWrapper<IcResiUserEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
@ -883,4 +882,106 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
public IcResiUserBriefDTO findFamilyMem(String icResiUserId) {
return baseDao.selectIcResuUser(icResiUserId);
}
/**
* 党员年龄范围统计
*
* @param formDTO
* @Param formDTO
* @Return {@link List< OptionDataResultDTO >}
* @Author zhaoqifeng
* @Date 2021/12/10 15:54
*/
@Override
public List<OptionDataResultDTO> partyMemberAgeStatistics(PartyMemberStatisticsFormDTO formDTO) {
//获取年龄范围字典
DictListFormDTO dictFormDTO = new DictListFormDTO();
dictFormDTO.setDictType(DictTypeEnum.AGE_GROUP.getCode());
Result<List<DictListResultDTO>> dictResult = epmetAdminOpenFeignClient.dictList(dictFormDTO);
Map<String, String> map = new HashMap<>();
//统计组织下各年龄范围人数
List<OptionDataResultDTO> list = baseDao.getPartyMemberAgeStatistics(formDTO.getOrgType(), formDTO.getOrgId());
if (CollectionUtils.isNotEmpty(list)) {
map = list.stream().collect(Collectors.toMap(OptionDataResultDTO::getCode, OptionDataResultDTO::getValue));
}
Map<String, String> finalMap = map;
return dictResult.getData().stream().map(item -> {
OptionDataResultDTO dto = new OptionDataResultDTO();
dto.setCode(item.getValue());
dto.setLabel(item.getLabel());
dto.setValue(null == finalMap.get(item.getValue())?NumConstant.ZERO_STR:finalMap.get(item.getValue()));
return dto;
}).collect(Collectors.toList());
}
/**
* 获取年龄范围内党员列表
*
* @param formDTO
* @Param formDTO
* @Return {@link List< PartyMemberAgeResultDTO>}
* @Author zhaoqifeng
* @Date 2021/12/10 17:40
*/
@Override
public PageData<PartyMemberAgeResultDTO> getPartyMemberAgeList(PartyMemberListFormDTO formDTO) {
PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize());
List<PartyMemberAgeResultDTO> list = baseDao.getPartyMemberAgeList(formDTO.getOrgType(), formDTO.getOrgId(), formDTO.getCode());
PageInfo<PartyMemberAgeResultDTO> pageInfo = new PageInfo<>(list);
return new PageData<>(list, pageInfo.getTotal());
}
/**
* 党员文化程度统计
*
* @param formDTO
* @Param formDTO
* @Return {@link List< OptionDataResultDTO>}
* @Author zhaoqifeng
* @Date 2021/12/10 17:40
*/
@Override
public List<OptionDataResultDTO> partyMemberEducationStatistics(PartyMemberStatisticsFormDTO formDTO) {
//获取文化程度字典
DictListFormDTO dictFormDTO = new DictListFormDTO();
dictFormDTO.setDictType(DictTypeEnum.EDUCATION.getCode());
Result<List<DictListResultDTO>> dictResult = epmetAdminOpenFeignClient.dictList(dictFormDTO);
Map<String, String> map = new HashMap<>();
//统计组织下文化程度党员人数
List<OptionDataResultDTO> list = baseDao.getPartyMemberEducationStatistics(formDTO.getOrgType(), formDTO.getOrgId());
if (CollectionUtils.isNotEmpty(list)) {
map = list.stream().collect(Collectors.toMap(OptionDataResultDTO::getCode, OptionDataResultDTO::getValue));
}
Map<String, String> finalMap = map;
return dictResult.getData().stream().map(item -> {
OptionDataResultDTO dto = new OptionDataResultDTO();
dto.setCode(item.getValue());
dto.setLabel(item.getLabel());
dto.setValue(null == finalMap.get(item.getValue())?NumConstant.ZERO_STR:finalMap.get(item.getValue()));
return dto;
}).collect(Collectors.toList());
}
/**
* 按教育程度获取党员列表
*
* @param formDTO
* @Param formDTO
* @Return {@link List< PartyMemberEducationResultDTO>}
* @Author zhaoqifeng
* @Date 2021/12/10 17:40
*/
@Override
public PageData<PartyMemberEducationResultDTO> getPartyMemberEducationList(PartyMemberListFormDTO formDTO) {
PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize());
List<PartyMemberEducationResultDTO> list = baseDao.getPartyMemberEducationList(formDTO.getOrgType(), formDTO.getOrgId(), formDTO.getCode());
Result<Map<String, String>> mapResult = epmetAdminOpenFeignClient.dictMap(DictTypeEnum.EDUCATION.getCode());
PageInfo<PartyMemberEducationResultDTO> pageInfo = new PageInfo<>(list);
if (CollectionUtils.isNotEmpty(list)) {
list.forEach(item -> {
item.setEducation(null == mapResult.getData().get(item.getEducation()) ? "" : mapResult.getData().get(item.getEducation()));
});
}
return new PageData<>(list, pageInfo.getTotal());
}
}

128
epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml

@ -361,4 +361,132 @@
and m.HOME_ID=#{homeId}
order by m.CREATED_TIME asc
</select>
<select id="getPartyMemberAgeStatistics" resultType="com.epmet.commons.tools.dto.result.OptionDataResultDTO">
SELECT
ageGroup AS "code",
COUNT(ID) AS "value"
FROM
(
SELECT
ID,
CASE
WHEN age &lt; 50 THEN '0'
WHEN age &gt;= 50 AND age &lt;= 59 THEN '1'
WHEN age &gt;= 60 AND age &lt;= 69 THEN '2'
WHEN age &gt;= 70 AND age &lt;= 79 THEN '3'
ELSE '4'
END AS ageGroup
FROM
(
SELECT
ID,
YEAR (FROM_DAYS(DATEDIFF(NOW(),SUBSTRING( ID_CARD, 7, 8 )))) AS age
FROM
ic_resi_user
WHERE
DEL_FLAG = '0'
AND IS_PARTY = '1'
<choose>
<when test='orgType == "grid"'>
AND GRID_ID = #{orgId}
</when>
<otherwise>
AND (AGENCY_ID = #{orgId} OR PIDS LIKE CONCAT('%',#{orgId},'%'))
</otherwise>
</choose>
) a
) a
GROUP BY ageGroup
</select>
<select id="getPartyMemberAgeList" resultType="com.epmet.dto.result.PartyMemberAgeResultDTO">
SELECT
ID AS "userId",
NAME,
MOBILE,
age
FROM
(
SELECT
ID,
NAME,
MOBILE,
age,
CASE
WHEN age &lt; 50 THEN '0'
WHEN age &gt;= 50 AND age &lt;= 59 THEN '1'
WHEN age &gt;= 60 AND age &lt;= 69 THEN '2'
WHEN age &gt;= 70 AND age &lt;= 79 THEN '3'
ELSE '4'
END AS ageGroup
FROM
(
SELECT
ID,
NAME,
MOBILE,
YEAR (FROM_DAYS(DATEDIFF(NOW(),SUBSTRING( ID_CARD, 7, 8 )))) AS age
FROM
ic_resi_user
WHERE
DEL_FLAG = '0'
AND IS_PARTY = '1'
<choose>
<when test='orgType == "grid"'>
AND GRID_ID = #{orgId}
</when>
<otherwise>
AND (AGENCY_ID = #{orgId} OR PIDS LIKE CONCAT('%',#{orgId},'%'))
</otherwise>
</choose>
) a
) a
<if test="null != code and '' != code">
WHERE ageGroup = #{code}
</if>
</select>
<select id="getPartyMemberEducationList" resultType="com.epmet.dto.result.PartyMemberEducationResultDTO">
SELECT
ID AS "userId",
NAME,
MOBILE,
CULTURE AS education
FROM
ic_resi_user
WHERE
DEL_FLAG = '0'
AND IS_PARTY = '1'
AND CULTURE IS NOT NULL
<if test="null != code and '' != code">
AND CULTURE = #{code}
</if>
<choose>
<when test='orgType == "grid"'>
AND GRID_ID = #{orgId}
</when>
<otherwise>
AND (AGENCY_ID = #{orgId} OR PIDS LIKE CONCAT('%',#{orgId},'%'))
</otherwise>
</choose>
</select>
<select id="getPartyMemberEducationStatistics" resultType="com.epmet.commons.tools.dto.result.OptionDataResultDTO">
SELECT
CULTURE AS "code",
count(ID) AS "value"
FROM
ic_resi_user
WHERE
DEL_FLAG = '0'
AND IS_PARTY = '1'
AND CULTURE IS NOT NULL
<choose>
<when test='orgType == "grid"'>
AND GRID_ID = #{orgId}
</when>
<otherwise>
AND (AGENCY_ID = #{orgId} OR PIDS LIKE CONCAT('%',#{orgId},'%'))
</otherwise>
</choose>
GROUP BY CULTURE
</select>
</mapper>

Loading…
Cancel
Save