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.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<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);
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.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;