xiaoyi
5 天以前 481d8165f26fc7e37f0e87f6444ac0340bb563a3
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseInvoiceController.java
@@ -9,6 +9,9 @@
import cn.iocoder.yudao.framework.common.util.number.NumberUtils;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.invoice.ErpPurchaseInvoiceImportExcelVO;
import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.invoice.ErpPurchaseInvoiceImportReqVO;
import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.invoice.ErpPurchaseInvoiceImportRespVO;
import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.invoice.ErpPurchaseInvoicePageReqVO;
import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.invoice.ErpPurchaseInvoiceRespVO;
import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.invoice.ErpPurchaseInvoiceSaveReqVO;
@@ -37,6 +40,7 @@
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -51,7 +55,7 @@
@Tag(name = "管理后台 - ERP 采购来票")
@RestController
@RequestMapping({"/erp/purchase-invoice", "/purchase/invoice"})
@RequestMapping({"/purchase/invoice", "/erp/purchase-invoice"})
@Validated
public class ErpPurchaseInvoiceController {
@@ -96,7 +100,6 @@
    @GetMapping("/get")
    @Operation(summary = "获得来票")
    @Parameter(name = "id", description = "编号", required = true, example = "1024")
    @PreAuthorize("@ss.hasPermission('erp:purchase-invoice:query')")
    public CommonResult<ErpPurchaseInvoiceRespVO> getPurchaseInvoice(@RequestParam("id") Long id) {
        ErpPurchaseInvoiceDO invoice = invoiceService.getPurchaseInvoice(id);
        return success(buildInvoiceDetail(invoice));
@@ -111,7 +114,6 @@
    @GetMapping("/page")
    @Operation(summary = "获得来票分页")
    @PreAuthorize("@ss.hasPermission('erp:purchase-invoice:query')")
    public CommonResult<PageResult<ErpPurchaseInvoiceRespVO>> getPurchaseInvoicePage(@Valid ErpPurchaseInvoicePageReqVO pageReqVO) {
        PageResult<ErpPurchaseInvoiceDO> pageResult = invoiceService.getPurchaseInvoicePage(pageReqVO);
        return success(new PageResult<>(buildInvoiceDetailList(pageResult.getList()), pageResult.getTotal()));
@@ -128,6 +130,28 @@
        // 导出 Excel
        ExcelUtils.write(response, "来票.xls", "数据", ErpPurchaseInvoiceRespVO.class,
                buildInvoiceDetailList(list));
    }
    @GetMapping("/get-import-template")
    @Operation(summary = "获得导入来票模板")
    public void importTemplate(HttpServletResponse response) throws IOException {
        // 手动创建导出 demo
        List<ErpPurchaseInvoiceImportExcelVO> list = Arrays.asList(
                ErpPurchaseInvoiceImportExcelVO.builder().purchaseOrderNo("")
                        .invoiceNo("").invoiceTitle("").price(null)
                        .invoiceTime(null).remark("").build()
        );
        // 输出
        ExcelUtils.writeTemplate(response, "来票导入模板.xls", "来票列表", ErpPurchaseInvoiceImportExcelVO.class, list);
    }
    @PostMapping("/import")
    @Operation(summary = "导入来票")
    @PreAuthorize("@ss.hasPermission('erp:purchase-invoice:import')")
    public CommonResult<ErpPurchaseInvoiceImportRespVO> importExcel(@Valid ErpPurchaseInvoiceImportReqVO importReqVO)
            throws Exception {
        List<ErpPurchaseInvoiceImportExcelVO> list = ExcelUtils.read(importReqVO.getFile(), ErpPurchaseInvoiceImportExcelVO.class);
        return success(invoiceService.importPurchaseInvoiceList(list, importReqVO));
    }
    private List<ErpPurchaseInvoiceRespVO> buildInvoiceDetailList(List<ErpPurchaseInvoiceDO> invoiceList) {
@@ -172,7 +196,6 @@
    @Operation(summary = "获得来票精简列表", description = "只包含已上传发票附件的来票,主要用于付款创建时选择关联来票")
    @Parameter(name = "supplierId", description = "供应商编号", required = true)
    @Parameter(name = "purchaseOrderId", description = "采购订单编号(可选,用于按订单过滤)")
    @PreAuthorize("@ss.hasPermission('erp:purchase-invoice:query')")
    public CommonResult<List<ErpPurchaseInvoiceRespVO>> getInvoiceSimpleList(
            @RequestParam("supplierId") Long supplierId,
            @RequestParam(value = "purchaseOrderId", required = false) Long purchaseOrderId) {