package com.ruoyi.purchase.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.account.service.purchase.AccountPurchasePaymentService; import com.ruoyi.basic.service.ISupplierService; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.framework.web.domain.R; import com.ruoyi.purchase.dto.SavePaymentDto; import com.ruoyi.purchase.dto.VatDto; import com.ruoyi.purchase.dto.VatSummaryDto; import com.ruoyi.purchase.service.PurchaseReportService; import com.ruoyi.purchase.vo.PurchaseReportVo; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletResponse; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController @Tag(name = "采购报表") @RequestMapping("/purchase/report") @AllArgsConstructor public class AccountingReportController { private final ISupplierService supplierService; private final PurchaseReportService purchaseReportService; private final AccountPurchasePaymentService accountPurchasePaymentService; @GetMapping("/list") @Log(title = "采购报表-项目利润", businessType = BusinessType.OTHER) public R list(Page page, String customerName) { return R.ok(purchaseReportService.list(page, customerName)); } @Log(title = "采购报表-项目利润导出", businessType = BusinessType.EXPORT) @PostMapping("/export") @Operation(summary = "采购报表-项目利润导出") public void export(HttpServletResponse response, String customerName) { List list = purchaseReportService.list(new Page(1, -1), customerName).getRecords(); ExcelUtil util = new ExcelUtil<>(PurchaseReportVo.class); util.exportExcel(response, list, "项目利润"); } @Log(title = "采购报表-增值税比对", businessType = BusinessType.OTHER) @GetMapping("/listVat") public R listVat(Page page, String month, String type) { return R.ok(purchaseReportService.listVat(page, month, type)); } @Log(title = "采购报表-增值税比对", businessType = BusinessType.EXPORT) @PostMapping("/exportTwo") @Operation(summary = "采购报表-增值税比对导出") public void exportTwo(HttpServletResponse response, String month) { List list = purchaseReportService.listVat(new Page(1, -1), month, null).getRecords(); ExcelUtil util = new ExcelUtil<>(VatDto.class); util.exportExcel(response, list, "增值税比对"); } @Log(title = "采购报表-增值税图表数据", businessType = BusinessType.OTHER) @GetMapping("/vatChart") @Operation(summary = "增值税进销项对比图表数据") public R vatChart(String year) { List list = purchaseReportService.vatSummary(year); return R.ok(list); } @GetMapping("/listVatDetail") @Operation(summary = "增值税明细-按发票/订单展示") public AjaxResult listVatDetail(Page page, String month) { IPage result = purchaseReportService.listVatDetail(page, month); return AjaxResult.success(result); } @GetMapping("/supplierTransactions") @Log(title = "供应商往来", businessType = BusinessType.OTHER) @Operation(summary = "供应商往来") public R supplierTransactions(Page page, String supplierName) { return R.ok(supplierService.supplierTransactions(page, supplierName)); } @GetMapping("/supplierTransactionsDetails") @Log(title = "供应商往来明细", businessType = BusinessType.OTHER) @Operation(summary = "供应商往来明细") public R supplierTransactionsDetails(Page page, Long supplierId) { return R.ok(supplierService.supplierTransactionsDetails(page, supplierId)); } @PostMapping("/savePayment") @Log(title = "新增付款", businessType = BusinessType.INSERT) @Operation(summary = "新增付款") public R savePayment(@RequestBody SavePaymentDto dto) { return R.ok(accountPurchasePaymentService.savePayment(dto)); } }