From 2253780a50fa53f1bc7d9f327a1edfed98f79fae Mon Sep 17 00:00:00 2001 From: zss <zss@example.com> Date: 星期五, 08 八月 2025 10:09:12 +0800 Subject: [PATCH] 财务管理模块--报表调整 --- src/main/java/com/ruoyi/account/service/AccountExpenseService.java | 3 + src/main/java/com/ruoyi/account/controller/AccountExpenseController.java | 24 ++++++++ src/main/java/com/ruoyi/account/dto/AccountDto3.java | 32 ++++++++++ src/main/java/com/ruoyi/account/dto/AccountDto2.java | 6 ++ src/main/java/com/ruoyi/account/service/AccountIncomeService.java | 3 + src/main/java/com/ruoyi/account/service/impl/AccountIncomeServiceImpl.java | 32 ++++++++++ src/main/java/com/ruoyi/account/service/impl/AccountExpenseServiceImpl.java | 39 ++++++++++++ 7 files changed, 138 insertions(+), 1 deletions(-) diff --git a/src/main/java/com/ruoyi/account/controller/AccountExpenseController.java b/src/main/java/com/ruoyi/account/controller/AccountExpenseController.java index ebaa40f..44d1dbd 100644 --- a/src/main/java/com/ruoyi/account/controller/AccountExpenseController.java +++ b/src/main/java/com/ruoyi/account/controller/AccountExpenseController.java @@ -1,6 +1,7 @@ package com.ruoyi.account.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.account.mapper.AccountIncomeMapper; import com.ruoyi.account.pojo.AccountExpense; import com.ruoyi.account.pojo.AccountIncome; import com.ruoyi.account.service.AccountExpenseService; @@ -27,6 +28,9 @@ @Resource private AccountExpenseService accountExpenseService; + + @Resource + private AccountIncomeService accountIncomeService; /** @@ -107,5 +111,25 @@ return AjaxResult.success(accountExpenseService.report(dateQueryDto)); } + /** + * 璐㈠姟鎶ヨ〃鍥捐〃鏀跺叆骞村害鏌ヨ + * @param + * @return + */ + @GetMapping("/report/income") + public AjaxResult reportIncome() { + return AjaxResult.success(accountIncomeService.reportIncome()); + } + + /** + * 璐㈠姟鎶ヨ〃鍥捐〃鏀嚭骞村害鏌ヨ + * @param + * @return + */ + @GetMapping("/report/expense") + public AjaxResult reportExpense() { + return AjaxResult.success(accountExpenseService.reportExpense()); + } + } diff --git a/src/main/java/com/ruoyi/account/dto/AccountDto2.java b/src/main/java/com/ruoyi/account/dto/AccountDto2.java index 169ff81..235278b 100644 --- a/src/main/java/com/ruoyi/account/dto/AccountDto2.java +++ b/src/main/java/com/ruoyi/account/dto/AccountDto2.java @@ -22,6 +22,12 @@ private String typeName; + /** + * 鐧惧垎鍗犳瘮 + */ + private BigDecimal proportion; + + /** * 閲戦 diff --git a/src/main/java/com/ruoyi/account/dto/AccountDto3.java b/src/main/java/com/ruoyi/account/dto/AccountDto3.java new file mode 100644 index 0000000..4792b65 --- /dev/null +++ b/src/main/java/com/ruoyi/account/dto/AccountDto3.java @@ -0,0 +1,32 @@ +package com.ruoyi.account.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * 璐㈠姟绠$悊--璐㈠姟鎶ヨ〃骞存煡璇� + */ + +@Data +public class AccountDto3 implements Serializable { + + + /** + * 鏈堜唤 + */ + private List<String> month; + + /** + * 鍚勭被鍨嬮噾棰� + */ + private Map<String, List<AccountDto2>> accountType; + + + + +} diff --git a/src/main/java/com/ruoyi/account/service/AccountExpenseService.java b/src/main/java/com/ruoyi/account/service/AccountExpenseService.java index a1f2677..8f67074 100644 --- a/src/main/java/com/ruoyi/account/service/AccountExpenseService.java +++ b/src/main/java/com/ruoyi/account/service/AccountExpenseService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.account.dto.AccountDto; +import com.ruoyi.account.dto.AccountDto3; import com.ruoyi.account.pojo.AccountExpense; import com.ruoyi.account.pojo.AccountIncome; import com.ruoyi.dto.DateQueryDto; @@ -17,4 +18,6 @@ void accountExpenseExport(HttpServletResponse response, AccountExpense accountExpense); AccountDto report(DateQueryDto dateQueryDto); + + AccountDto3 reportExpense(); } diff --git a/src/main/java/com/ruoyi/account/service/AccountIncomeService.java b/src/main/java/com/ruoyi/account/service/AccountIncomeService.java index a92a51a..8c128a8 100644 --- a/src/main/java/com/ruoyi/account/service/AccountIncomeService.java +++ b/src/main/java/com/ruoyi/account/service/AccountIncomeService.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.account.dto.AccountDto3; import com.ruoyi.account.pojo.AccountFile; import com.ruoyi.account.pojo.AccountIncome; @@ -14,4 +15,6 @@ IPage<AccountIncome> accountIncomeListPage(Page page, AccountIncome accountIncome); void accountIncomeExport(HttpServletResponse response, AccountIncome accountIncome); + + AccountDto3 reportIncome(); } 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..7871fb4 100644 --- a/src/main/java/com/ruoyi/account/service/impl/AccountExpenseServiceImpl.java +++ b/src/main/java/com/ruoyi/account/service/impl/AccountExpenseServiceImpl.java @@ -7,6 +7,7 @@ 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; @@ -21,6 +22,10 @@ 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; @@ -53,12 +58,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 +76,39 @@ 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 AccountDto3 reportExpense() { + AccountDto3 accountDto3 = new AccountDto3(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + int currentYear = LocalDate.now().getYear(); // 鑾峰彇褰撳墠骞翠唤锛堝2025锛� + List<String> months = new ArrayList<>(); + Map<String, List<AccountDto2>> map = new HashMap<>(); + for (int i = 1; i <= 12; i++) { + months.add(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)); + List<AccountDto2> report = accountExpenseMapper.report(dateQueryDto); + map.put(i + "鏈�",report); + } + accountDto3.setMonth(months); + accountDto3.setAccountType(map); + return accountDto3; + } + } diff --git a/src/main/java/com/ruoyi/account/service/impl/AccountIncomeServiceImpl.java b/src/main/java/com/ruoyi/account/service/impl/AccountIncomeServiceImpl.java index b43888c..0439103 100644 --- a/src/main/java/com/ruoyi/account/service/impl/AccountIncomeServiceImpl.java +++ b/src/main/java/com/ruoyi/account/service/impl/AccountIncomeServiceImpl.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.account.dto.AccountDto2; +import com.ruoyi.account.dto.AccountDto3; import com.ruoyi.account.mapper.AccountFileMapper; import com.ruoyi.account.mapper.AccountIncomeMapper; import com.ruoyi.account.pojo.AccountFile; @@ -11,12 +13,18 @@ import com.ruoyi.account.service.AccountFileService; import com.ruoyi.account.service.AccountIncomeService; import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.dto.DateQueryDto; import com.ruoyi.quality.pojo.QualityInspect; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; +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; @AllArgsConstructor @Service @@ -38,4 +46,28 @@ ExcelUtil<AccountIncome> util = new ExcelUtil<AccountIncome>(AccountIncome.class); util.exportExcel(response, accountIncomes, "鏀跺叆绠$悊瀵煎嚭"); } + + //璐㈠姟鎶ヨ〃骞存煡璇� + @Override + public AccountDto3 reportIncome() { + AccountDto3 accountDto3 = new AccountDto3(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + int currentYear = LocalDate.now().getYear(); // 鑾峰彇褰撳墠骞翠唤锛堝2025锛� + List<String> months = new ArrayList<>(); + Map<String, List<AccountDto2>> map = new HashMap<>(); + for (int i = 1; i <= 12; i++) { + months.add(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)); + List<AccountDto2> report = accountIncomeMapper.report(dateQueryDto); + map.put(i + "鏈�",report); + } + accountDto3.setMonth(months); + accountDto3.setAccountType(map); + return accountDto3; + } } -- Gitblit v1.9.3