maven
7 天以前 981d05f97e9eaf273ee82f847a365b63ed6eaed1
yys  修改财务bug
已修改1个文件
68 ■■■■ 文件已修改
src/main/java/com/ruoyi/account/service/impl/AccountExpenseServiceImpl.java 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/account/service/impl/AccountExpenseServiceImpl.java
@@ -22,6 +22,7 @@
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
@@ -56,31 +57,70 @@
    @Override
    public AccountDto report(DateQueryDto dateQueryDto) {
        AccountDto accountDto = new AccountDto();
        //获取该段时间内的所有收入
        List<AccountDto2> accountIncomes =accountIncomeMapper.report(dateQueryDto);
        // 获取该段时间内的所有收入
        List<AccountDto2> accountIncomes = accountIncomeMapper.report(dateQueryDto);
        if (accountIncomes == null) {
            accountIncomes = Collections.emptyList();
        }
        Long incomeNumber = accountIncomeMapper.selectCount(Wrappers.<AccountIncome>lambdaQuery()
                .between(AccountIncome::getIncomeDate, dateQueryDto.getEntryDateStart(), dateQueryDto.getEntryDateEnd()));
        accountDto.setIncomeNumber(incomeNumber);
        BigDecimal totalIncome = accountIncomes.stream().map(AccountDto2::getAccount).reduce(BigDecimal.ZERO, BigDecimal::add);
        BigDecimal totalIncome = BigDecimal.ZERO;
        for (AccountDto2 item : accountIncomes) {
            if (item.getAccount() != null) {
                totalIncome = totalIncome.add(item.getAccount());
            }
        }
        accountDto.setTotalIncome(totalIncome);
        accountIncomes.stream().forEach(accountDto2 -> {
            accountDto2.setProportion(accountDto2.getAccount().divide(totalIncome,2,BigDecimal.ROUND_HALF_UP));
        });
        if (totalIncome.compareTo(BigDecimal.ZERO) != 0) {
            for (AccountDto2 item : accountIncomes) {
                if (item.getAccount() != null) {
                    item.setProportion(item.getAccount().divide(totalIncome, 2, RoundingMode.HALF_UP));
                }
            }
        } else {
            for (AccountDto2 item : accountIncomes) {
                item.setProportion(BigDecimal.ZERO);
            }
        }
        accountDto.setIncomeType(accountIncomes);
        //获取该段时间内的所有支出
        List<AccountDto2> accountExpenses =accountExpenseMapper.report(dateQueryDto);
        accountDto.setExpenseType(accountExpenses);
        // 获取该段时间内的所有支出
        List<AccountDto2> accountExpenses = accountExpenseMapper.report(dateQueryDto);
        if (accountExpenses == null) {
            accountExpenses = Collections.emptyList();
        }
        accountDto.setExpenseType(accountExpenses); // 移除了下方重复的一行
        Long expenseNumber = accountExpenseMapper.selectCount(Wrappers.<AccountExpense>lambdaQuery()
                .between(AccountExpense::getExpenseDate, dateQueryDto.getEntryDateStart(), dateQueryDto.getEntryDateEnd()));
        accountDto.setExpenseNumber(expenseNumber);
        BigDecimal totalExpense = accountExpenses.stream().map(AccountDto2::getAccount).reduce(BigDecimal.ZERO, BigDecimal::add);
        BigDecimal totalExpense = BigDecimal.ZERO;
        for (AccountDto2 item : accountExpenses) {
            if (item.getAccount() != null) {
                totalExpense = totalExpense.add(item.getAccount());
            }
        }
        accountDto.setTotalExpense(totalExpense);
        accountExpenses.stream().forEach(accountDto2 -> {
            accountDto2.setProportion(accountDto2.getAccount().divide(totalExpense,2,BigDecimal.ROUND_HALF_UP));
        });
        if (totalExpense.compareTo(BigDecimal.ZERO) != 0) {
            for (AccountDto2 item : accountExpenses) {
                if (item.getAccount() != null) {
                    item.setProportion(item.getAccount().divide(totalExpense, 2, RoundingMode.HALF_UP));
                }
            }
        } else {
            for (AccountDto2 item : accountExpenses) {
                item.setProportion(BigDecimal.ZERO);
            }
        }
        accountDto.setExpenseType(accountExpenses);
        //净收入
        // 净收入
        BigDecimal netRevenue = totalIncome.subtract(totalExpense);
        accountDto.setNetRevenue(netRevenue);
        return accountDto;