Browse Source

新增统计接口

dev
Jackwang 3 years ago
parent
commit
a60ad2d6ca
  1. 60
      epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartyMemberController.java
  2. 39
      epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartyMemberDao.java
  3. 43
      epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartyMemberService.java
  4. 114
      epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartyMemberServiceImpl.java
  5. 99
      epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartyMemberDao.xml
  6. 18
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcPartyMemberFormDTO.java
  7. 21
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcPartyMemberListFormDTO.java

60
epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartyMemberController.java

@ -5,8 +5,10 @@ import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.annotation.MaskResponse;
import com.epmet.commons.tools.aop.NoRepeatSubmit;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.dto.result.OptionDataResultDTO;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.page.PageData;
@ -20,6 +22,10 @@ import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.dto.form.IcPartyMemberFormDTO;
import com.epmet.dto.form.IcPartyMemberListFormDTO;
import com.epmet.dto.result.PartyMemberAgeResultDTO;
import com.epmet.dto.result.PartyMemberEducationResultDTO;
import com.epmet.modules.partymember.excel.IcPartyMemberExcel;
import com.epmet.modules.partymember.service.IcPartyMemberService;
import com.epmet.resi.partymember.dto.partymember.IcPartyMemberDTO;
@ -132,4 +138,58 @@ public class IcPartyMemberController {
icPartyMemberService.icPartyMemberSync(dto);
return new Result();
}
/**
* @describe: 统计分析-党员学历统计
* @author wangtong
* @date 2022/5/23 10:06
* @params [formDTO]
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.commons.tools.dto.result.OptionDataResultDTO>>
*/
@PostMapping("partymembereducationstatistics")
public Result<List<OptionDataResultDTO>> partyMemberEducationStatistics(@RequestBody IcPartyMemberFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return new Result<List<OptionDataResultDTO>>().ok(icPartyMemberService.partyMemberEducationStatistics(formDTO));
}
/**
* @describe: 统计分析-党员年龄列表
* @author wangtong
* @date 2022/5/23 10:20
* @params [formDTO]
* @return com.epmet.commons.tools.utils.Result<com.epmet.commons.tools.page.PageData<com.epmet.dto.result.PartyMemberAgeResultDTO>>
*/
@PostMapping("partymemberagelist")
@MaskResponse(fieldNames = {"mobile"}, fieldsMaskType = {MaskResponse.MASK_TYPE_MOBILE})
public Result<PageData<PartyMemberAgeResultDTO>> partyMemberAgelist(@RequestBody IcPartyMemberListFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return new Result<PageData<PartyMemberAgeResultDTO>>().ok(icPartyMemberService.getPartyMemberAgeList(formDTO));
}
/**
* @describe: 统计分析-党员学历列表
* @author wangtong
* @date 2022/5/23 10:19
* @params [formDTO]
* @return com.epmet.commons.tools.utils.Result<com.epmet.commons.tools.page.PageData<com.epmet.dto.result.PartyMemberEducationResultDTO>>
*/
@PostMapping("partymembereducationlist")
@MaskResponse(fieldNames = {"mobile"}, fieldsMaskType = {MaskResponse.MASK_TYPE_MOBILE})
public Result<PageData<PartyMemberEducationResultDTO>> partyMemberEducationlist(@RequestBody IcPartyMemberListFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return new Result<PageData<PartyMemberEducationResultDTO>>().ok(icPartyMemberService.getPartyMemberEducationList(formDTO));
}
/**
* @describe: 统计分析-党员年龄范围统计
* @author wangtong
* @date 2022/5/23 10:19
* @params [formDTO]
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.commons.tools.dto.result.OptionDataResultDTO>>
*/
@PostMapping("partymemberagestatistics")
public Result<List<OptionDataResultDTO>> partyMemberAgeStatistics(@RequestBody IcPartyMemberFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return new Result<List<OptionDataResultDTO>>().ok(icPartyMemberService.partyMemberAgeStatistics(formDTO));
}
}

39
epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartyMemberDao.java

@ -1,6 +1,9 @@
package com.epmet.modules.partymember.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.commons.tools.dto.result.OptionDataResultDTO;
import com.epmet.dto.result.PartyMemberAgeResultDTO;
import com.epmet.dto.result.PartyMemberEducationResultDTO;
import com.epmet.modules.partymember.entity.IcPartyMemberEntity;
import com.epmet.resi.partymember.dto.partymember.form.IcPartyMemberFromDTO;
import com.epmet.resi.partymember.dto.partymember.result.IcPartyMemberResultDTO;
@ -35,4 +38,40 @@ public interface IcPartyMemberDao extends BaseDao<IcPartyMemberEntity> {
* @return java.util.List<com.epmet.modules.partymember.entity.IcPartyMemberEntity>
*/
List<IcPartyMemberEntity> selectAllByOrgId(@Param("orgId") String orgId);
/**
* @describe: 统计分析-党员学历统计
* @author wangtong
* @date 2022/5/23 10:32
* @params [orgId]
* @return java.util.List<com.epmet.commons.tools.dto.result.OptionDataResultDTO>
*/
List<OptionDataResultDTO> getPartyMemberEducationStatistics(@Param("orgId") String orgId);
/**
* @describe: 党员年龄列表
* @author wangtong
* @date 2022/5/23 11:06
* @params [orgId, code]
* @return java.util.List<com.epmet.dto.result.PartyMemberAgeResultDTO>
*/
List<PartyMemberAgeResultDTO> getPartyMemberAgeList(@Param("orgId") String orgId,@Param("code") String code);
/**
* @describe: 党员学历列表
* @author wangtong
* @date 2022/5/23 13:40
* @params [orgId, code]
* @return java.util.List<com.epmet.dto.result.PartyMemberEducationResultDTO>
*/
List<PartyMemberEducationResultDTO> getPartyMemberEducationList(@Param("orgId") String orgId,@Param("code") String code);
/**
* @describe: 党员年龄范围统计
* @author wangtong
* @date 2022/5/23 13:42
* @params [orgId]
* @return java.util.List<com.epmet.commons.tools.dto.result.OptionDataResultDTO>
*/
List<OptionDataResultDTO> getPartyMemberAgeStatistics(@Param("orgId") String orgId);
}

43
epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartyMemberService.java

@ -1,8 +1,13 @@
package com.epmet.modules.partymember.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.form.IcPartyMemberFormDTO;
import com.epmet.dto.form.IcPartyMemberListFormDTO;
import com.epmet.dto.result.PartyMemberAgeResultDTO;
import com.epmet.dto.result.PartyMemberEducationResultDTO;
import com.epmet.modules.partymember.entity.IcPartyMemberEntity;
import com.epmet.resi.partymember.dto.partymember.IcPartyMemberDTO;
import com.epmet.resi.partymember.dto.partymember.form.IcPartyMemberFromDTO;
@ -88,4 +93,40 @@ public interface IcPartyMemberService extends BaseService<IcPartyMemberEntity> {
* @Date 2022/5/18 10:16
*/
void icPartyMemberSync(IcPartyMemberDTO dto);
}
/**
* @describe: 统计分析-党员学历统计
* @author wangtong
* @date 2022/5/23 10:06
* @params [formDTO]
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.commons.tools.dto.result.OptionDataResultDTO>>
*/
List<OptionDataResultDTO> partyMemberEducationStatistics(IcPartyMemberFormDTO formDTO);
/**
* @describe: 统计分析-党员年龄列表
* @author wangtong
* @date 2022/5/23 10:20
* @params [formDTO]
* @return com.epmet.commons.tools.utils.Result<com.epmet.commons.tools.page.PageData<com.epmet.dto.result.PartyMemberAgeResultDTO>>
*/
PageData<PartyMemberAgeResultDTO> getPartyMemberAgeList(IcPartyMemberListFormDTO formDTO);
/**
* @describe: 统计分析-党员学历列表
* @author wangtong
* @date 2022/5/23 10:19
* @params [formDTO]
* @return com.epmet.commons.tools.utils.Result<com.epmet.commons.tools.page.PageData<com.epmet.dto.result.PartyMemberEducationResultDTO>>
*/
PageData<PartyMemberEducationResultDTO> getPartyMemberEducationList(IcPartyMemberListFormDTO formDTO);
/**
* @describe: 统计分析-党员年龄范围统计
* @author wangtong
* @date 2022/5/23 10:19
* @params [formDTO]
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.commons.tools.dto.result.OptionDataResultDTO>>
*/
List<OptionDataResultDTO> partyMemberAgeStatistics(IcPartyMemberFormDTO formDTO);
}

114
epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartyMemberServiceImpl.java

@ -7,7 +7,10 @@ import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
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.dto.result.DictListResultDTO;
import com.epmet.commons.tools.dto.result.OptionDataResultDTO;
import com.epmet.commons.tools.enums.DictTypeEnum;
import com.epmet.commons.tools.enums.IcFormCodeEnum;
import com.epmet.commons.tools.enums.PartyPostEnum;
@ -20,6 +23,10 @@ import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.form.IcFormOptionsQueryFormDTO;
import com.epmet.dto.form.IcPartyMemberFormDTO;
import com.epmet.dto.form.IcPartyMemberListFormDTO;
import com.epmet.dto.result.PartyMemberAgeResultDTO;
import com.epmet.dto.result.PartyMemberEducationResultDTO;
import com.epmet.feign.EpmetAdminOpenFeignClient;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.OperCustomizeOpenFeignClient;
@ -44,6 +51,8 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.stream.Collectors;
@ -307,4 +316,107 @@ public class IcPartyMemberServiceImpl extends BaseServiceImpl<IcPartyMemberDao,
}
}
}
@Override
public List<OptionDataResultDTO> partyMemberEducationStatistics(IcPartyMemberFormDTO 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.getOrgId());
int total = 0;
if (CollectionUtils.isNotEmpty(list)) {
map = list.stream().collect(Collectors.toMap(OptionDataResultDTO::getCode, OptionDataResultDTO::getValue));
total = list.stream().mapToInt(item -> Integer.parseInt(item.getValue())).sum();
}
Map<String, String> finalMap = map;
int finalTotal = total;
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()));
BigDecimal radio = new BigDecimal("0.00");
if (NumConstant.ZERO != finalTotal) {
BigDecimal sum = new BigDecimal(finalTotal);
BigDecimal count = new BigDecimal(dto.getValue());
BigDecimal hundred = new BigDecimal(NumConstant.ONE_HUNDRED);
radio = count.multiply(hundred).divide(sum, NumConstant.TWO, RoundingMode.HALF_UP);
}
dto.setRadio(radio.stripTrailingZeros().toPlainString().concat("%"));
return dto;
}).collect(Collectors.toList());
}
@Override
public PageData<PartyMemberAgeResultDTO> getPartyMemberAgeList(IcPartyMemberListFormDTO formDTO) {
if (formDTO.getIsPage()) {
PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize());
List<PartyMemberAgeResultDTO> list = baseDao.getPartyMemberAgeList(formDTO.getOrgId(), formDTO.getCode());
PageInfo<PartyMemberAgeResultDTO> pageInfo = new PageInfo<>(list);
return new PageData<>(list, pageInfo.getTotal());
}
List<PartyMemberAgeResultDTO> list = baseDao.getPartyMemberAgeList(formDTO.getOrgId(), formDTO.getCode());
return new PageData<>(list, null == list?NumConstant.ZERO:list.size());
}
@Override
public PageData<PartyMemberEducationResultDTO> getPartyMemberEducationList(IcPartyMemberListFormDTO formDTO) {
if (formDTO.getIsPage()) {
PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize());
List<PartyMemberEducationResultDTO> list = baseDao.getPartyMemberEducationList(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());
}
List<PartyMemberEducationResultDTO> list = baseDao.getPartyMemberEducationList(formDTO.getOrgId(), formDTO.getCode());
Result<Map<String, String>> mapResult = epmetAdminOpenFeignClient.dictMap(DictTypeEnum.EDUCATION.getCode());
if (CollectionUtils.isNotEmpty(list)) {
list.forEach(item -> {
item.setEducation(null == mapResult.getData().get(item.getEducation()) ? "" : mapResult.getData().get(item.getEducation()));
});
}
return new PageData<>(list, null == list?NumConstant.ZERO:list.size());
}
@Override
public List<OptionDataResultDTO> partyMemberAgeStatistics(IcPartyMemberFormDTO formDTO) {
//获取年龄范围字典
DictListFormDTO dictFormDTO = new DictListFormDTO();
dictFormDTO.setDictType(DictTypeEnum.AGE_GROUP.getCode());
Result<List<DictListResultDTO>> dictResult = epmetAdminOpenFeignClient.dictList(dictFormDTO);
Map<String, String> map = new HashMap<>();
int total = 0;
//统计组织下各年龄范围人数
List<OptionDataResultDTO> list = baseDao.getPartyMemberAgeStatistics(formDTO.getOrgId());
if (CollectionUtils.isNotEmpty(list)) {
map = list.stream().collect(Collectors.toMap(OptionDataResultDTO::getCode, OptionDataResultDTO::getValue));
total = list.stream().mapToInt(item -> Integer.parseInt(item.getValue())).sum();
}
Map<String, String> finalMap = map;
int finalTotal = total;
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()));
BigDecimal radio = new BigDecimal("0.00");
if (NumConstant.ZERO != finalTotal) {
BigDecimal sum = new BigDecimal(finalTotal);
BigDecimal count = new BigDecimal(dto.getValue());
BigDecimal hundred = new BigDecimal(NumConstant.ONE_HUNDRED);
radio = count.multiply(hundred).divide(sum, NumConstant.TWO, RoundingMode.HALF_UP);
}
dto.setRadio(radio.stripTrailingZeros().toPlainString().concat("%"));
return dto;
}).collect(Collectors.toList());
}
}

99
epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartyMemberDao.xml

@ -131,6 +131,105 @@
where DEL_FLAG='0'
AND (SSZB = #{orgId} or ORG_PIDS LIKE concat('%',#{orgId}, '%' ))
</select>
<select id="getPartyMemberEducationStatistics"
resultType="com.epmet.commons.tools.dto.result.OptionDataResultDTO">
SELECT
CULTURE AS "code",
count(ID) AS "value"
FROM
ic_party_member
WHERE
DEL_FLAG = '0'
AND CULTURE IS NOT NULL
AND (SSZB = #{orgId} OR ORG_PIDS LIKE CONCAT('%',#{orgId},'%'))
GROUP BY CULTURE
</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_party_member
WHERE
DEL_FLAG = '0'
AND (SSZB = #{orgId} OR ORG_PIDS LIKE CONCAT('%',#{orgId},'%'))
) a
) a
<if test="null != code and '' != code">
WHERE ageGroup = #{code}
</if>
ORDER BY CONVERT(NAME USING GBK) ASC
</select>
<select id="getPartyMemberEducationList" resultType="com.epmet.dto.result.PartyMemberEducationResultDTO">
SELECT
ID AS "userId",
NAME,
MOBILE,
CULTURE AS education
FROM
ic_party_member
WHERE
DEL_FLAG = '0'
AND CULTURE IS NOT NULL
<if test="null != code and '' != code">
AND CULTURE = #{code}
</if>
AND (SSZB = #{orgId} OR ORG_PIDS LIKE CONCAT('%',#{orgId},'%'))
ORDER BY CONVERT(NAME USING GBK) 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_party_member
WHERE
DEL_FLAG = '0'
AND (SSZB = #{orgId} OR ORG_PIDS LIKE CONCAT('%',#{orgId},'%'))
) a
) a
GROUP BY ageGroup
</select>
</mapper>

18
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcPartyMemberFormDTO.java

@ -0,0 +1,18 @@
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 IcPartyMemberFormDTO implements Serializable {
private static final long serialVersionUID = 1027174449735636944L;
@NotBlank(message = "组织ID不能为空")
private String orgId;
}

21
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcPartyMemberListFormDTO.java

@ -0,0 +1,21 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Description
* @Author zhaoqifeng
* @Date 2021/12/10 15:49
*/
@Data
public class IcPartyMemberListFormDTO extends PageFormDTO implements Serializable {
private static final long serialVersionUID = -6085134769034337175L;
@NotBlank(message = "组织ID不能为空")
private String orgId;
private String code;
}
Loading…
Cancel
Save