src/main/java/com/ruoyi/account/controller/AccountExpenseController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ruoyi/account/dto/AccountDto2.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ruoyi/account/dto/AccountDto3.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ruoyi/account/service/AccountExpenseService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ruoyi/account/service/AccountIncomeService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ruoyi/account/service/impl/AccountExpenseServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ruoyi/account/service/impl/AccountIncomeServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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()); } } src/main/java/com/ruoyi/account/dto/AccountDto2.java
@@ -22,6 +22,12 @@ private String typeName; /** * ç¾åå æ¯ */ private BigDecimal proportion; /** * éé¢ 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; } 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(); } 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(); } 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; } } 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; } }