From 7112bd44c6aa0fe7f0db8fe0fe288ab74a329b22 Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Mon, 13 Dec 2021 16:02:48 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A4=BE=E5=8C=BA=E5=85=9A=E5=BB=BA=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=88=86=E6=9E=90-=E5=85=9A=E5=91=98=E7=9B=B8?= =?UTF-8?q?=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tools/dto/result/OptionDataResultDTO.java | 1 + .../service/impl/IcResiUserServiceImpl.java | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/result/OptionDataResultDTO.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/result/OptionDataResultDTO.java index 78f77a850b..5f815c7f5c 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/result/OptionDataResultDTO.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/result/OptionDataResultDTO.java @@ -15,4 +15,5 @@ public class OptionDataResultDTO implements Serializable { private String label; private String value; private String code; + private String radio; } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java index cf10024449..2fad36a652 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java @@ -70,6 +70,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.sql.Date; import java.sql.Timestamp; import java.util.*; @@ -972,17 +974,28 @@ public class IcResiUserServiceImpl extends BaseServiceImpl> dictResult = epmetAdminOpenFeignClient.dictList(dictFormDTO); Map map = new HashMap<>(); + int total = 0; //统计组织下各年龄范围人数 List list = baseDao.getPartyMemberAgeStatistics(formDTO.getOrgType(), 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().toString().concat("%")); return dto; }).collect(Collectors.toList()); } @@ -1022,15 +1035,26 @@ public class IcResiUserServiceImpl extends BaseServiceImpl map = new HashMap<>(); //统计组织下文化程度党员人数 List list = baseDao.getPartyMemberEducationStatistics(formDTO.getOrgType(), 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().toString().concat("%")); return dto; }).collect(Collectors.toList()); }