update 首页收入分类统计,增加部门筛选

This commit is contained in:
lijiarao
2022-09-27 14:25:26 +08:00
parent 13a9683489
commit b8608f14df
@@ -5,6 +5,8 @@ import com.google.common.collect.Lists;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; 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.dto.YearMoneyDTO;
import com.jero.index.vo.*; import com.jero.index.vo.*;
import com.jero.project.mapper.PayWorkingGroupMapper; import com.jero.project.mapper.PayWorkingGroupMapper;
@@ -31,6 +33,8 @@ public class IndexService {
private IPayWorkingGroupService payWorkingGroupService; private IPayWorkingGroupService payWorkingGroupService;
@Resource @Resource
private PayWorkingGroupMapper payWorkingGroupMapper; private PayWorkingGroupMapper payWorkingGroupMapper;
@Resource
private ISysBaseAPI sysBaseAPI;
public LineChartVO lineChart() { public LineChartVO lineChart() {
String year = String.valueOf(DateUtil.year(new DateTime())); String year = String.valueOf(DateUtil.year(new DateTime()));
@@ -220,17 +224,28 @@ public class IndexService {
}else { }else {
amountClassDTOS = payWorkingGroupMapper.amountClass1(year,column,departCode); amountClassDTOS = payWorkingGroupMapper.amountClass1(year,column,departCode);
} }
Map<String, BigDecimal> decimalMap = amountClassDTOS.stream().collect(Collectors.toMap(AmountClassDTO::getChargeUse, AmountClassDTO::getMoney));
//获取所有类型
List<DictModel> paymentChargeUses = sysBaseAPI.queryDictItemsByCode("payment_charge_use");
List<String> paymentChargeUseList = paymentChargeUses.stream().map(DictModel::getValue).collect(Collectors.toList());
BigDecimal all = amountClassDTOS.stream().map(AmountClassDTO::getMoney).reduce(BigDecimal.ZERO,BigDecimal::add); BigDecimal all = amountClassDTOS.stream().map(AmountClassDTO::getMoney).reduce(BigDecimal.ZERO,BigDecimal::add);
List<PieChartVO> pieChartVOS = new ArrayList<>(); List<PieChartVO> pieChartVOS = new ArrayList<>();
for (AmountClassDTO amountClassDTO : amountClassDTOS) { for (String chargeUse : paymentChargeUseList) {
BigDecimal money = decimalMap.getOrDefault(chargeUse,BigDecimal.ZERO);
PieChartVO pieChartVO = new PieChartVO(); PieChartVO pieChartVO = new PieChartVO();
pieChartVO.setName(amountClassDTO.getChargeUse()); pieChartVO.setName(chargeUse);
BigDecimal divide = amountClassDTO.getMoney() BigDecimal divide;
.divide(all,3,RoundingMode.HALF_DOWN) if (all.equals(BigDecimal.ZERO)){
.multiply(new BigDecimal(100)) divide = BigDecimal.ZERO;
.setScale(1, RoundingMode.UNNECESSARY); }else {
divide = money
.divide(all,3,RoundingMode.HALF_DOWN)
.multiply(new BigDecimal(100))
.setScale(1, RoundingMode.UNNECESSARY);
}
pieChartVO.setValue(String.valueOf(divide)); pieChartVO.setValue(String.valueOf(divide));
pieChartVO.setMoney(String.valueOf(amountClassDTO.getMoney())); pieChartVO.setMoney(String.valueOf(money));
pieChartVOS.add(pieChartVO); pieChartVOS.add(pieChartVO);
} }
return pieChartVOS; return pieChartVOS;