diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartyMemberController.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartyMemberController.java index c75eb30ea1..ed1adc6b44 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartyMemberController.java +++ b/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> + */ + @PostMapping("partymembereducationstatistics") + public Result> partyMemberEducationStatistics(@RequestBody IcPartyMemberFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO); + return new Result>().ok(icPartyMemberService.partyMemberEducationStatistics(formDTO)); + } + + /** + * @describe: 统计分析-党员年龄列表 + * @author wangtong + * @date 2022/5/23 10:20 + * @params [formDTO] + * @return com.epmet.commons.tools.utils.Result> + */ + @PostMapping("partymemberagelist") + @MaskResponse(fieldNames = {"mobile"}, fieldsMaskType = {MaskResponse.MASK_TYPE_MOBILE}) + public Result> partyMemberAgelist(@RequestBody IcPartyMemberListFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO); + return new Result>().ok(icPartyMemberService.getPartyMemberAgeList(formDTO)); + } + + /** + * @describe: 统计分析-党员学历列表 + * @author wangtong + * @date 2022/5/23 10:19 + * @params [formDTO] + * @return com.epmet.commons.tools.utils.Result> + */ + @PostMapping("partymembereducationlist") + @MaskResponse(fieldNames = {"mobile"}, fieldsMaskType = {MaskResponse.MASK_TYPE_MOBILE}) + public Result> partyMemberEducationlist(@RequestBody IcPartyMemberListFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO); + return new Result>().ok(icPartyMemberService.getPartyMemberEducationList(formDTO)); + } + + /** + * @describe: 统计分析-党员年龄范围统计 + * @author wangtong + * @date 2022/5/23 10:19 + * @params [formDTO] + * @return com.epmet.commons.tools.utils.Result> + */ + @PostMapping("partymemberagestatistics") + public Result> partyMemberAgeStatistics(@RequestBody IcPartyMemberFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO); + return new Result>().ok(icPartyMemberService.partyMemberAgeStatistics(formDTO)); + } } diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartyMemberDao.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartyMemberDao.java index 9d01682541..0c648dc484 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartyMemberDao.java +++ b/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 { * @return java.util.List */ List selectAllByOrgId(@Param("orgId") String orgId); + + /** + * @describe: 统计分析-党员学历统计 + * @author wangtong + * @date 2022/5/23 10:32 + * @params [orgId] + * @return java.util.List + */ + List getPartyMemberEducationStatistics(@Param("orgId") String orgId); + + /** + * @describe: 党员年龄列表 + * @author wangtong + * @date 2022/5/23 11:06 + * @params [orgId, code] + * @return java.util.List + */ + List 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 + */ + List getPartyMemberEducationList(@Param("orgId") String orgId,@Param("code") String code); + + /** + * @describe: 党员年龄范围统计 + * @author wangtong + * @date 2022/5/23 13:42 + * @params [orgId] + * @return java.util.List + */ + List getPartyMemberAgeStatistics(@Param("orgId") String orgId); } diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartyMemberService.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartyMemberService.java index 8e9f3d7e4e..ec976d2596 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartyMemberService.java +++ b/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 { * @Date 2022/5/18 10:16 */ void icPartyMemberSync(IcPartyMemberDTO dto); -} \ No newline at end of file + + /** + * @describe: 统计分析-党员学历统计 + * @author wangtong + * @date 2022/5/23 10:06 + * @params [formDTO] + * @return com.epmet.commons.tools.utils.Result> + */ + List partyMemberEducationStatistics(IcPartyMemberFormDTO formDTO); + + /** + * @describe: 统计分析-党员年龄列表 + * @author wangtong + * @date 2022/5/23 10:20 + * @params [formDTO] + * @return com.epmet.commons.tools.utils.Result> + */ + PageData getPartyMemberAgeList(IcPartyMemberListFormDTO formDTO); + + /** + * @describe: 统计分析-党员学历列表 + * @author wangtong + * @date 2022/5/23 10:19 + * @params [formDTO] + * @return com.epmet.commons.tools.utils.Result> + */ + PageData getPartyMemberEducationList(IcPartyMemberListFormDTO formDTO); + + /** + * @describe: 统计分析-党员年龄范围统计 + * @author wangtong + * @date 2022/5/23 10:19 + * @params [formDTO] + * @return com.epmet.commons.tools.utils.Result> + */ + List partyMemberAgeStatistics(IcPartyMemberFormDTO formDTO); +} diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartyMemberServiceImpl.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartyMemberServiceImpl.java index e40e7fe8db..c903e4818a 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartyMemberServiceImpl.java +++ b/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 partyMemberEducationStatistics(IcPartyMemberFormDTO formDTO) { + //获取文化程度字典 + DictListFormDTO dictFormDTO = new DictListFormDTO(); + dictFormDTO.setDictType(DictTypeEnum.EDUCATION.getCode()); + Result> dictResult = epmetAdminOpenFeignClient.dictList(dictFormDTO); + Map map = new HashMap<>(); + //统计组织下文化程度党员人数 + List 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 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 getPartyMemberAgeList(IcPartyMemberListFormDTO formDTO) { + if (formDTO.getIsPage()) { + PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()); + List list = baseDao.getPartyMemberAgeList(formDTO.getOrgId(), formDTO.getCode()); + PageInfo pageInfo = new PageInfo<>(list); + return new PageData<>(list, pageInfo.getTotal()); + } + List list = baseDao.getPartyMemberAgeList(formDTO.getOrgId(), formDTO.getCode()); + return new PageData<>(list, null == list?NumConstant.ZERO:list.size()); + } + + @Override + public PageData getPartyMemberEducationList(IcPartyMemberListFormDTO formDTO) { + if (formDTO.getIsPage()) { + PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()); + List list = baseDao.getPartyMemberEducationList(formDTO.getOrgId(), formDTO.getCode()); + Result> mapResult = epmetAdminOpenFeignClient.dictMap(DictTypeEnum.EDUCATION.getCode()); + PageInfo 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 list = baseDao.getPartyMemberEducationList(formDTO.getOrgId(), formDTO.getCode()); + Result> 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 partyMemberAgeStatistics(IcPartyMemberFormDTO formDTO) { + //获取年龄范围字典 + DictListFormDTO dictFormDTO = new DictListFormDTO(); + dictFormDTO.setDictType(DictTypeEnum.AGE_GROUP.getCode()); + Result> dictResult = epmetAdminOpenFeignClient.dictList(dictFormDTO); + Map map = new HashMap<>(); + int total = 0; + //统计组织下各年龄范围人数 + List 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 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()); + } + +} diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartyMemberDao.xml b/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartyMemberDao.xml index 10ee89a834..a4a1b334f7 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartyMemberDao.xml +++ b/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}, '%' )) + + + + diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcPartyMemberFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcPartyMemberFormDTO.java new file mode 100644 index 0000000000..544219f7b1 --- /dev/null +++ b/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; +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcPartyMemberListFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcPartyMemberListFormDTO.java new file mode 100644 index 0000000000..ca43a4dc19 --- /dev/null +++ b/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; +}