From 1b5604f8a88000e2f51d4c989fd179989468ee67 Mon Sep 17 00:00:00 2001 From: yaowanxin <3588231647@qq.com> Date: 星期一, 11 八月 2025 09:48:08 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/pim_yys' into pim_ywx --- src/main/java/com/ruoyi/account/service/impl/AccountExpenseServiceImpl.java | 48 +++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 45 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/ruoyi/account/service/impl/AccountExpenseServiceImpl.java b/src/main/java/com/ruoyi/account/service/impl/AccountExpenseServiceImpl.java index f80804d..37c2f7c 100644 --- a/src/main/java/com/ruoyi/account/service/impl/AccountExpenseServiceImpl.java +++ b/src/main/java/com/ruoyi/account/service/impl/AccountExpenseServiceImpl.java @@ -7,20 +7,25 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.dto.AccountDto; import com.ruoyi.account.dto.AccountDto2; +import com.ruoyi.account.dto.AccountDto3; import com.ruoyi.account.mapper.AccountExpenseMapper; -import com.ruoyi.account.mapper.AccountFileMapper; import com.ruoyi.account.mapper.AccountIncomeMapper; import com.ruoyi.account.pojo.AccountExpense; import com.ruoyi.account.pojo.AccountIncome; import com.ruoyi.account.service.AccountExpenseService; -import com.ruoyi.account.service.AccountIncomeService; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.dto.DateQueryDto; +import com.ruoyi.project.system.domain.SysDictData; +import com.ruoyi.project.system.mapper.SysDictDataMapper; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -31,6 +36,8 @@ private AccountExpenseMapper accountExpenseMapper; private AccountIncomeMapper accountIncomeMapper; + + private SysDictDataMapper sysDictDataMapper; //鍒嗛〉鏌ヨ @@ -53,12 +60,16 @@ AccountDto accountDto = new AccountDto(); //鑾峰彇璇ユ鏃堕棿鍐呯殑鎵�鏈夋敹鍏� List<AccountDto2> accountIncomes =accountIncomeMapper.report(dateQueryDto); - accountDto.setIncomeType(accountIncomes); + 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); accountDto.setTotalIncome(totalIncome); + accountIncomes.stream().forEach(accountDto2 -> { + accountDto2.setProportion(accountDto2.getAccount().divide(totalIncome,2,BigDecimal.ROUND_HALF_UP)); + }); + accountDto.setIncomeType(accountIncomes); //鑾峰彇璇ユ鏃堕棿鍐呯殑鎵�鏈夋敮鍑� List<AccountDto2> accountExpenses =accountExpenseMapper.report(dateQueryDto); accountDto.setExpenseType(accountExpenses); @@ -67,11 +78,42 @@ accountDto.setExpenseNumber(expenseNumber); BigDecimal totalExpense = accountExpenses.stream().map(AccountDto2::getAccount).reduce(BigDecimal.ZERO, BigDecimal::add); accountDto.setTotalExpense(totalExpense); + accountExpenses.stream().forEach(accountDto2 -> { + accountDto2.setProportion(accountDto2.getAccount().divide(totalExpense,2,BigDecimal.ROUND_HALF_UP)); + }); + accountDto.setExpenseType(accountExpenses); //鍑�鏀跺叆 BigDecimal netRevenue = totalIncome.subtract(totalExpense); accountDto.setNetRevenue(netRevenue); return accountDto; } + //璐㈠姟鎶ヨ〃骞存煡璇� + @Override + public List<AccountDto3> reportExpense() { + List<AccountDto3> accountDto3s = new ArrayList<>(); + //鍏堟煡璇㈡敹鍏ョ被鍨嬫湁鍝簺 + List<SysDictData> incomeTypes = sysDictDataMapper.selectDictDataByType("expense_types"); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + int currentYear = LocalDate.now().getYear(); // 鑾峰彇褰撳墠骞翠唤锛堝2025锛� + for (SysDictData incomeType : incomeTypes) { + AccountDto3 accountDto3 = new AccountDto3(); + accountDto3.setTypeName(incomeType.getDictLabel());//绫诲瀷 + List<BigDecimal> account=new ArrayList<>(); + for (int i = 1; i <= 12; i++) { + // 褰撴湀绗竴澶╋細骞翠唤涓哄綋鍓嶅勾锛屾湀浠戒负i锛屾棩鏈熶负1 + LocalDate firstDay = LocalDate.of(currentYear, i, 1); + DateQueryDto dateQueryDto = new DateQueryDto(); + dateQueryDto.setEntryDateStart(firstDay.format(formatter)); + // 褰撴湀鏈�鍚庝竴澶╋細绗竴澶╃殑鏈堜唤鐨勬渶鍚庝竴澶� + dateQueryDto.setEntryDateEnd(firstDay.plusMonths(1).minusDays(1).format(formatter)); + account.add(accountExpenseMapper.report1(dateQueryDto,incomeType.getDictValue())); + } + accountDto3.setAccount(account);//绫诲瀷 + accountDto3s.add(accountDto3); + } + return accountDto3s; + } + } -- Gitblit v1.9.3