云
2026-10-25 d54fbc9d4f8981fa0f7f613b33a28a8cd4f764ea
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")
@RequestMapping({"/purchase/invoice", "/erp/purchase-invoice"})
@Validated
public class ErpPurchaseInvoiceController {
@@ -130,6 +134,28 @@
                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.write(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) {
        if (CollUtil.isEmpty(invoiceList)) {
            return Collections.emptyList();