From d6b8fd68350517c0b34b9ce2ae29146b2d576fdb Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Fri, 3 Feb 2023 15:45:48 +0800 Subject: [PATCH] =?UTF-8?q?=E9=98=B2=E6=8E=A7=E6=A6=82=E8=A7=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/dto/result/VaccinePieResultDTO.java | 2 + .../service/impl/IcVaccineServiceImpl.java | 49 ++++++++++++++++--- 2 files changed, 45 insertions(+), 6 deletions(-) diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/VaccinePieResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/VaccinePieResultDTO.java index c3844c18c3..59599b5261 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/VaccinePieResultDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/VaccinePieResultDTO.java @@ -19,4 +19,6 @@ public class VaccinePieResultDTO implements Serializable { private String code; private String value; private String label; + private String ratio; + private String remark; } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcVaccineServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcVaccineServiceImpl.java index 7f1a1313b5..0e9c1faaf8 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcVaccineServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcVaccineServiceImpl.java @@ -54,9 +54,12 @@ import org.springframework.web.multipart.commons.CommonsMultipartFile; import java.io.IOException; import java.io.OutputStream; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.nio.file.Files; import java.nio.file.Path; import java.util.*; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; /** @@ -624,13 +627,47 @@ public class IcVaccineServiceImpl extends BaseServiceImpl list = baseDao.getVaccinePieData(formDTO); - list.forEach(item -> { - if (NumConstant.ZERO_STR.equals(item.getCode())) { - item.setLabel("未接种人数"); - } else { - item.setLabel("接种" + item.getCode() + "针人数"); + int total = 0; + if (CollectionUtils.isNotEmpty(list)) { + total = list.stream().mapToInt(item -> Integer.parseInt(item.getValue())).sum(); + AtomicBoolean flag = new AtomicBoolean(false); + int finalTotal = total; + list.forEach(item -> { + if (NumConstant.ZERO_STR.equals(item.getCode())) { + item.setLabel("未接种人数"); + item.setRemark("未接种"+ item.getValue() +"人"); + flag.set(true); + } else { + item.setLabel("接种" + item.getCode() + "针人数"); + item.setRemark("接种" + item.getCode() + "针" + item.getValue() + "人"); + } + BigDecimal radio = new BigDecimal("0.00"); + if (NumConstant.ZERO != finalTotal) { + BigDecimal sum = new BigDecimal(finalTotal); + BigDecimal count = new BigDecimal(item.getValue()); + BigDecimal hundred = new BigDecimal(NumConstant.ONE_HUNDRED); + radio = count.multiply(hundred).divide(sum, NumConstant.TWO, RoundingMode.HALF_UP); + } + item.setRatio(radio.stripTrailingZeros().toPlainString().concat("%")); + }); + if (!flag.get()) { + VaccinePieResultDTO dto = new VaccinePieResultDTO(); + dto.setLabel("未接种人数"); + dto.setCode(NumConstant.ZERO_STR); + dto.setValue(NumConstant.ZERO_STR); + dto.setRatio("0%"); + dto.setRemark("未接种0人"); + list.add(dto); } - }); + } else { + VaccinePieResultDTO dto = new VaccinePieResultDTO(); + dto.setLabel("未接种人数"); + dto.setCode(NumConstant.ZERO_STR); + dto.setValue(NumConstant.ZERO_STR); + dto.setRatio("0%"); + dto.setRemark("未接种0人"); + list.add(dto); + } return list; }