maven
10 小时以前 a0f1f5629bc1c6338d7d95aa01b31cfd671bd398
yys 财务报表优化
已添加1个文件
已修改7个文件
121 ■■■■ 文件已修改
src/main/java/com/ruoyi/account/controller/AccountExpenseController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/account/dto/ReportDateDto.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/account/service/AccountExpenseService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/account/service/AccountIncomeService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/account/service/impl/AccountExpenseServiceImpl.java 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/account/service/impl/AccountIncomeServiceImpl.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/account/AccountExpenseMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/account/AccountIncomeMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | 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.dto.ReportDateDto;
import com.ruoyi.account.mapper.AccountIncomeMapper;
import com.ruoyi.account.pojo.AccountExpense;
import com.ruoyi.account.pojo.AccountIncome;
@@ -138,8 +139,8 @@
     */
    @GetMapping("/report/income")
    @ApiOperation("财务报表图表收入年度查询")
    public AjaxResult reportIncome() {
        return AjaxResult.success(accountIncomeService.reportIncome());
    public AjaxResult reportIncome(ReportDateDto reportDateDto) {
        return AjaxResult.success(accountIncomeService.reportIncome(reportDateDto));
    }
    /**
@@ -149,8 +150,8 @@
     */
    @GetMapping("/report/expense")
    @ApiOperation("财务报表图表支出年度查询")
    public AjaxResult reportExpense() {
        return AjaxResult.success(accountExpenseService.reportExpense());
    public AjaxResult reportExpense(ReportDateDto reportDateDto) {
        return AjaxResult.success(accountExpenseService.reportExpense(reportDateDto));
    }
src/main/java/com/ruoyi/account/dto/ReportDateDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
package com.ruoyi.account.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDate;
import java.util.Date;
/**
 * @author :yys
 * @date : 2026/1/16 16:57
 */
@Data
public class ReportDateDto {
    /**
     * å¼€å§‹æ—¶é—´
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate entryDateStart;
    /**
     * ç»“束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate entryDateEnd;
    /**
     * å¼€å§‹æœˆä»½
     */
    private Integer startMonth;
    /**
     * ç»“束月份
     */
    private Integer endMonth;
}
src/main/java/com/ruoyi/account/service/AccountExpenseService.java
@@ -6,6 +6,7 @@
import com.ruoyi.account.dto.AccountDto;
import com.ruoyi.account.dto.AccountDto2;
import com.ruoyi.account.dto.AccountDto3;
import com.ruoyi.account.dto.ReportDateDto;
import com.ruoyi.account.pojo.AccountExpense;
import com.ruoyi.account.pojo.AccountIncome;
import com.ruoyi.dto.DateQueryDto;
@@ -22,7 +23,7 @@
    AccountDto report(DateQueryDto dateQueryDto);
    List<AccountDto3> reportExpense();
    List<AccountDto3> reportExpense(ReportDateDto reportDateDto);
    Map<String,List<String>> analysis();
src/main/java/com/ruoyi/account/service/AccountIncomeService.java
@@ -5,6 +5,7 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.account.dto.AccountDto2;
import com.ruoyi.account.dto.AccountDto3;
import com.ruoyi.account.dto.ReportDateDto;
import com.ruoyi.account.pojo.AccountIncome;
import javax.servlet.http.HttpServletResponse;
@@ -17,7 +18,7 @@
    void accountIncomeExport(HttpServletResponse response, AccountIncome accountIncome);
    List<AccountDto3> reportIncome();
    List<AccountDto3> reportIncome(ReportDateDto reportDateDto);
    AccountIncome getByInvoiceNumber(String purchaseContractNumber);
src/main/java/com/ruoyi/account/service/impl/AccountExpenseServiceImpl.java
@@ -8,6 +8,7 @@
import com.ruoyi.account.dto.AccountDto;
import com.ruoyi.account.dto.AccountDto2;
import com.ruoyi.account.dto.AccountDto3;
import com.ruoyi.account.dto.ReportDateDto;
import com.ruoyi.account.mapper.AccountExpenseMapper;
import com.ruoyi.account.mapper.AccountIncomeMapper;
import com.ruoyi.account.pojo.AccountExpense;
@@ -90,24 +91,38 @@
    //财务报表年查询
    @Override
    public  List<AccountDto3> reportExpense() {
    public  List<AccountDto3> reportExpense(ReportDateDto reportDateDto) {
        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)
//        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);
            LocalDate startDate = reportDateDto.getEntryDateStart();
            LocalDate endDate = reportDateDto.getEntryDateEnd();
            // åˆå§‹åŒ–循环变量为起始日期
            LocalDate currentDate = startDate;
            // å¾ªçŽ¯ï¼šå½“å‰æ—¥æœŸä¸è¶…è¿‡ç»“æŸæ—¥æœŸæ—¶ç»§ç»­
            while (!currentDate.isAfter(endDate)) {
                // å½“月第一天
                LocalDate firstDay = currentDate.withDayOfMonth(1);
                DateQueryDto dateQueryDto = new DateQueryDto();
                dateQueryDto.setEntryDateStart(firstDay.format(formatter));
                // å½“月最后一天:第一天的月份的最后一天
                dateQueryDto.setEntryDateEnd(firstDay.plusMonths(1).minusDays(1).format(formatter));
                // å½“月最后一天
                LocalDate lastDay = firstDay.plusMonths(1).minusDays(1);
                dateQueryDto.setEntryDateEnd(lastDay.format(formatter));
                // ç´¯åŠ æ•°æ®
                account.add(accountExpenseMapper.report1(dateQueryDto,incomeType.getDictValue()));
                // æœˆä»½åŠ ä¸€ï¼ˆè‡ªåŠ¨å¤„ç†è·¨å¹´ï¼Œæ¯”å¦‚12月加1个月会变成下一年1月)
                currentDate = currentDate.plusMonths(1);
            }
            accountDto3.setAccount(account);//类型
            accountDto3s.add(accountDto3);
src/main/java/com/ruoyi/account/service/impl/AccountIncomeServiceImpl.java
@@ -7,9 +7,11 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.account.dto.AccountDto2;
import com.ruoyi.account.dto.AccountDto3;
import com.ruoyi.account.dto.ReportDateDto;
import com.ruoyi.account.mapper.AccountIncomeMapper;
import com.ruoyi.account.pojo.AccountIncome;
import com.ruoyi.account.service.AccountIncomeService;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.dto.DateQueryDto;
import com.ruoyi.project.system.domain.SysDictData;
@@ -51,24 +53,38 @@
    //财务报表年查询
    @Override
    public List<AccountDto3> reportIncome() {
    public List<AccountDto3> reportIncome(ReportDateDto reportDateDto) {
        List<AccountDto3> accountDto3s = new ArrayList<>();
        //先查询收入类型有哪些
        List<SysDictData> incomeTypes = sysDictDataMapper.selectDictDataByType("income_types");
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        int currentYear = LocalDate.now().getYear(); // èŽ·å–å½“å‰å¹´ä»½ï¼ˆå¦‚2025)
//        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);
            LocalDate startDate = reportDateDto.getEntryDateStart();
            LocalDate endDate = reportDateDto.getEntryDateEnd();
            // åˆå§‹åŒ–循环变量为起始日期
            LocalDate currentDate = startDate;
            // å¾ªçŽ¯ï¼šå½“å‰æ—¥æœŸä¸è¶…è¿‡ç»“æŸæ—¥æœŸæ—¶ç»§ç»­
            while (!currentDate.isAfter(endDate)) {
                // å½“月第一天
                LocalDate firstDay = currentDate.withDayOfMonth(1);
                DateQueryDto dateQueryDto = new DateQueryDto();
                dateQueryDto.setEntryDateStart(firstDay.format(formatter));
                // å½“月最后一天:第一天的月份的最后一天
                dateQueryDto.setEntryDateEnd(firstDay.plusMonths(1).minusDays(1).format(formatter));
                // å½“月最后一天
                LocalDate lastDay = firstDay.plusMonths(1).minusDays(1);
                dateQueryDto.setEntryDateEnd(lastDay.format(formatter));
                // ç´¯åŠ æ•°æ®
                account.add(accountIncomeMapper.report1(dateQueryDto,incomeType.getDictValue()));
                // æœˆä»½åŠ ä¸€ï¼ˆè‡ªåŠ¨å¤„ç†è·¨å¹´ï¼Œæ¯”å¦‚12月加1个月会变成下一年1月)
                currentDate = currentDate.plusMonths(1);
            }
            accountDto3.setAccount(account);//类型
            accountDto3s.add(accountDto3);
src/main/resources/mapper/account/AccountExpenseMapper.xml
@@ -58,7 +58,7 @@
    <select id="report1" resultType="java.math.BigDecimal">
        SELECT
        sum(expense_money) account
        ifnull(sum(expense_money),0) account
        FROM account_expense ai
        where
        expense_type=#{dictValue}
src/main/resources/mapper/account/AccountIncomeMapper.xml
@@ -43,7 +43,7 @@
    <select id="report" resultType="com.ruoyi.account.dto.AccountDto2">
        SELECT
        sdd.dict_label typeName,
        sum(income_money) account
        ifnull(sum(income_money),0) account
        FROM account_income ai
        left join sys_dict_data sdd on ai.income_type = sdd.dict_value and  sdd.dict_type='income_types'
        where
@@ -58,7 +58,7 @@
    </select>
    <select id="report1" resultType="java.math.BigDecimal">
        SELECT
        sum(income_money) account
        ifnull(sum(income_money),0) account
        FROM account_income ai
        where
        income_type=#{dictValue}