package com.ruoyi.account.service.impl; 
 | 
  
 | 
  
 | 
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 
 | 
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.AccountIncomeMapper; 
 | 
import com.ruoyi.account.pojo.AccountIncome; 
 | 
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; 
 | 
  
 | 
@AllArgsConstructor 
 | 
@Service 
 | 
public class AccountIncomeServiceImpl extends ServiceImpl<AccountIncomeMapper, AccountIncome> implements AccountIncomeService { 
 | 
  
 | 
    private AccountIncomeMapper accountIncomeMapper; 
 | 
  
 | 
    private SysDictDataMapper sysDictDataMapper; 
 | 
  
 | 
  
 | 
    //分页查询 
 | 
    @Override 
 | 
    public IPage<AccountIncome> accountIncomeListPage(Page page, AccountIncome accountIncome) { 
 | 
        return accountIncomeMapper.accountIncomeListPage(page,accountIncome); 
 | 
    } 
 | 
  
 | 
    //导出 
 | 
    @Override 
 | 
    public void accountIncomeExport(HttpServletResponse response, AccountIncome accountIncome) { 
 | 
        List<AccountIncome> accountIncomes =accountIncomeMapper.accountIncomeExport(accountIncome); 
 | 
        ExcelUtil<AccountIncome> util = new ExcelUtil<AccountIncome>(AccountIncome.class); 
 | 
        util.exportExcel(response, accountIncomes, "收入管理导出"); 
 | 
    } 
 | 
  
 | 
    //财务报表年查询 
 | 
    @Override 
 | 
    public List<AccountDto3> reportIncome() { 
 | 
        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) 
 | 
        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(accountIncomeMapper.report1(dateQueryDto,incomeType.getDictValue())); 
 | 
            } 
 | 
            accountDto3.setAccount(account);//类型 
 | 
            accountDto3s.add(accountDto3); 
 | 
        } 
 | 
        return accountDto3s; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public AccountIncome getByInvoiceNumber(String purchaseContractNumber) { 
 | 
        AccountIncome accountIncome = accountIncomeMapper.selectOne(new LambdaQueryWrapper<AccountIncome>() 
 | 
                .eq(AccountIncome::getInvoiceNumber, purchaseContractNumber)); 
 | 
        return accountIncome; 
 | 
    } 
 | 
} 
 |