From b8608f14df7ab93abc481962459e7f109240c1ca Mon Sep 17 00:00:00 2001 From: lijiarao Date: Tue, 27 Sep 2022 14:25:26 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E9=A6=96=E9=A1=B5=E6=94=B6=E5=85=A5?= =?UTF-8?q?=E5=88=86=E7=B1=BB=E7=BB=9F=E8=AE=A1=EF=BC=8C=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E9=83=A8=E9=97=A8=E7=AD=9B=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jero/index/service/IndexService.java | 29 ++++++++++++++----- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/index/service/IndexService.java b/jero-boot-incoming-payment/src/main/java/com/jero/index/service/IndexService.java index 0fe78976..4a396c30 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/index/service/IndexService.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/index/service/IndexService.java @@ -5,6 +5,8 @@ import com.google.common.collect.Lists; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; +import com.jero.common.system.api.ISysBaseAPI; +import com.jero.common.system.vo.DictModel; import com.jero.index.dto.YearMoneyDTO; import com.jero.index.vo.*; import com.jero.project.mapper.PayWorkingGroupMapper; @@ -31,6 +33,8 @@ public class IndexService { private IPayWorkingGroupService payWorkingGroupService; @Resource private PayWorkingGroupMapper payWorkingGroupMapper; + @Resource + private ISysBaseAPI sysBaseAPI; public LineChartVO lineChart() { String year = String.valueOf(DateUtil.year(new DateTime())); @@ -220,17 +224,28 @@ public class IndexService { }else { amountClassDTOS = payWorkingGroupMapper.amountClass1(year,column,departCode); } + Map decimalMap = amountClassDTOS.stream().collect(Collectors.toMap(AmountClassDTO::getChargeUse, AmountClassDTO::getMoney)); + //获取所有类型 + List paymentChargeUses = sysBaseAPI.queryDictItemsByCode("payment_charge_use"); + List paymentChargeUseList = paymentChargeUses.stream().map(DictModel::getValue).collect(Collectors.toList()); BigDecimal all = amountClassDTOS.stream().map(AmountClassDTO::getMoney).reduce(BigDecimal.ZERO,BigDecimal::add); List pieChartVOS = new ArrayList<>(); - for (AmountClassDTO amountClassDTO : amountClassDTOS) { + for (String chargeUse : paymentChargeUseList) { + BigDecimal money = decimalMap.getOrDefault(chargeUse,BigDecimal.ZERO); PieChartVO pieChartVO = new PieChartVO(); - pieChartVO.setName(amountClassDTO.getChargeUse()); - BigDecimal divide = amountClassDTO.getMoney() - .divide(all,3,RoundingMode.HALF_DOWN) - .multiply(new BigDecimal(100)) - .setScale(1, RoundingMode.UNNECESSARY); + pieChartVO.setName(chargeUse); + BigDecimal divide; + if (all.equals(BigDecimal.ZERO)){ + divide = BigDecimal.ZERO; + }else { + divide = money + .divide(all,3,RoundingMode.HALF_DOWN) + .multiply(new BigDecimal(100)) + .setScale(1, RoundingMode.UNNECESSARY); + } + pieChartVO.setValue(String.valueOf(divide)); - pieChartVO.setMoney(String.valueOf(amountClassDTO.getMoney())); + pieChartVO.setMoney(String.valueOf(money)); pieChartVOS.add(pieChartVO); } return pieChartVOS;