From 6bd1dc0b355e279b709bc49dda5207121e9b41a9 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期四, 15 五月 2025 15:41:26 +0800
Subject: [PATCH] 1.来票台账优化 2.上传优化

---
 src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java                            |    4 
 src/main/java/com/ruoyi/purchase/service/IInvoicePurchaseService.java            |   10 
 src/main/java/com/ruoyi/purchase/service/impl/InvoicePurchaseServiceImpl.java    |  215 ++++++++++++++++++-
 src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java                      |    4 
 src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java     |   19 
 src/main/java/com/ruoyi/sales/service/ICommonFileService.java                    |   15 +
 src/main/java/com/ruoyi/other/pojo/TempFile.java                                 |    1 
 src/main/java/com/ruoyi/sales/service/impl/CommonFileServiceImpl.java            |   63 +++++
 src/main/java/com/ruoyi/other/service/impl/TempFileServiceImpl.java              |    3 
 src/main/java/com/ruoyi/other/controller/TempFileController.java                 |    6 
 /dev/null                                                                        |   22 --
 src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java |    2 
 src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java              |   22 +-
 src/main/java/com/ruoyi/purchase/controller/InvoicePurchaseController.java       |   54 +++-
 src/main/java/com/ruoyi/purchase/dto/InvoicePurchaseDto.java                     |   69 ++++++
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java           |   19 
 src/main/java/com/ruoyi/other/service/TempFileService.java                       |    2 
 src/main/java/com/ruoyi/sales/pojo/CommonFile.java                               |   15 +
 src/main/java/com/ruoyi/sales/controller/CommonFileController.java               |   32 ++
 src/main/java/com/ruoyi/sales/mapper/CommonFileMapper.java                       |    8 
 src/main/java/com/ruoyi/purchase/pojo/InvoicePurchase.java                       |   33 ++
 21 files changed, 513 insertions(+), 105 deletions(-)

diff --git a/src/main/java/com/ruoyi/other/controller/TempFileController.java b/src/main/java/com/ruoyi/other/controller/TempFileController.java
index 6834d13..59d4e75 100644
--- a/src/main/java/com/ruoyi/other/controller/TempFileController.java
+++ b/src/main/java/com/ruoyi/other/controller/TempFileController.java
@@ -18,10 +18,10 @@
     private TempFileService tempFileService;
 
     @PostMapping("/upload")
-    public AjaxResult uploadFile(MultipartFile file) {
+    public AjaxResult uploadFile(MultipartFile file, String type) {
         try {
-            return AjaxResult.success(tempFileService.uploadFile(file));
-        }catch (Exception e) {
+            return AjaxResult.success(tempFileService.uploadFile(file, type));
+        } catch (Exception e) {
             return AjaxResult.error(e.getMessage());
         }
     }
diff --git a/src/main/java/com/ruoyi/other/pojo/TempFile.java b/src/main/java/com/ruoyi/other/pojo/TempFile.java
index 26ace93..d3b0e51 100644
--- a/src/main/java/com/ruoyi/other/pojo/TempFile.java
+++ b/src/main/java/com/ruoyi/other/pojo/TempFile.java
@@ -16,4 +16,5 @@
     private String originalName;   // 鍘熷鏂囦欢鍚�
     private String tempPath;       // 涓存椂瀛樺偍璺緞
     private LocalDateTime expireTime; // 杩囨湡鏃堕棿
+    private String type;       // 鍏宠仈琛ㄧ被鍨�
 }
diff --git a/src/main/java/com/ruoyi/other/service/TempFileService.java b/src/main/java/com/ruoyi/other/service/TempFileService.java
index 756a8c5..32dba44 100644
--- a/src/main/java/com/ruoyi/other/service/TempFileService.java
+++ b/src/main/java/com/ruoyi/other/service/TempFileService.java
@@ -6,5 +6,5 @@
 import java.io.IOException;
 
 public interface TempFileService {
-    TempFile uploadFile(MultipartFile file) throws IOException;
+    TempFile uploadFile(MultipartFile file,String type) throws IOException;
 }
diff --git a/src/main/java/com/ruoyi/other/service/impl/TempFileServiceImpl.java b/src/main/java/com/ruoyi/other/service/impl/TempFileServiceImpl.java
index f228680..fc041bb 100644
--- a/src/main/java/com/ruoyi/other/service/impl/TempFileServiceImpl.java
+++ b/src/main/java/com/ruoyi/other/service/impl/TempFileServiceImpl.java
@@ -32,7 +32,7 @@
 
     // 涓婁紶鍒颁复鏃剁洰褰�
     @Override
-    public TempFile uploadFile(MultipartFile file) throws IOException {
+    public TempFile uploadFile(MultipartFile file,String type) throws IOException {
         // 1. 鐢熸垚涓存椂鏂囦欢ID鍜岃矾寰�
         String tempId = UUID.randomUUID().toString();
         Path tempFilePath = Paths.get(tempDir, tempId + "_" + file.getOriginalFilename());
@@ -52,6 +52,7 @@
         tempFileRecord.setOriginalName(file.getOriginalFilename());
         tempFileRecord.setTempPath(tempFilePath.toString());
         tempFileRecord.setExpireTime(LocalDateTime.now().plusHours(2)); // 2灏忔椂鍚庤繃鏈�
+        tempFileRecord.setType(type);
         tempFileMapper.insert(tempFileRecord);
 
         return tempFileRecord;
diff --git a/src/main/java/com/ruoyi/purchase/controller/InvoicePurchaseController.java b/src/main/java/com/ruoyi/purchase/controller/InvoicePurchaseController.java
index 256f9c5..8cd6b5b 100644
--- a/src/main/java/com/ruoyi/purchase/controller/InvoicePurchaseController.java
+++ b/src/main/java/com/ruoyi/purchase/controller/InvoicePurchaseController.java
@@ -1,23 +1,22 @@
 package com.ruoyi.purchase.controller;
 
-import java.util.List;
-import javax.servlet.http.HttpServletResponse;
-
 import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.purchase.pojo.InvoicePurchase;
-import com.ruoyi.purchase.service.IInvoicePurchaseService;
-import lombok.AllArgsConstructor;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
 import com.ruoyi.framework.aspectj.lang.annotation.Log;
 import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
 import com.ruoyi.framework.web.controller.BaseController;
 import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.purchase.dto.InvoicePurchaseDto;
+import com.ruoyi.purchase.pojo.InvoicePurchase;
+import com.ruoyi.purchase.service.IInvoicePurchaseService;
+import com.ruoyi.sales.service.ICommonFileService;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.List;
 
 /**
  * 鍙戠エ淇℃伅Controller
@@ -32,13 +31,15 @@
 
     private IInvoicePurchaseService invoicePurchaseService;
 
+    private ICommonFileService commonFileService;
+
     /**
      * 鏌ヨ鍙戠エ淇℃伅鍒楄〃
      */
     @GetMapping("/list")
-    public TableDataInfo list(InvoicePurchase invoicePurchase) {
+    public TableDataInfo list(InvoicePurchaseDto invoicePurchaseDto) {
         startPage();
-        List<InvoicePurchase> list = invoicePurchaseService.selectInvoicePurchaseList(invoicePurchase);
+        List<InvoicePurchaseDto> list = invoicePurchaseService.selectInvoicePurchaseList(invoicePurchaseDto);
         return getDataTable(list);
     }
 
@@ -48,18 +49,26 @@
     @Log(title = "鍙戠エ淇℃伅", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
     public void export(HttpServletResponse response, InvoicePurchase invoicePurchase) {
-        List<InvoicePurchase> list = invoicePurchaseService.selectInvoicePurchaseList(invoicePurchase);
+        List<InvoicePurchase> list = invoicePurchaseService.selectInvoicePurchaseLists(invoicePurchase);
         ExcelUtil<InvoicePurchase> util = new ExcelUtil<InvoicePurchase>(InvoicePurchase.class);
         util.exportExcel(response, list, "鍙戠エ淇℃伅鏁版嵁");
+    }
+
+    /**
+     * 鏌ヨ鍙戠エ淇℃伅
+     */
+    @GetMapping("/getInvoiceById")
+    public InvoicePurchaseDto getInvoiceById(InvoicePurchaseDto invoicePurchaseDto) {
+        return invoicePurchaseService.getInvoiceById(invoicePurchaseDto);
     }
 
     /**
      * 鏂板淇敼鍙戠エ淇℃伅
      */
     @Log(title = "鍙戠エ淇℃伅", businessType = BusinessType.INSERT)
-    @PostMapping   ("/addOrUpdateInvoice")
-    public AjaxResult addOrUpdateInvoice(@RequestBody InvoicePurchase invoicePurchase) {
-        return toAjax(invoicePurchaseService.addOrUpdateInvoice(invoicePurchase));
+    @PostMapping("/addOrUpdateInvoice")
+    public AjaxResult addOrUpdateInvoice(@RequestBody InvoicePurchaseDto invoicePurchaseDto) throws IOException {
+        return toAjax(invoicePurchaseService.addOrUpdateInvoice(invoicePurchaseDto));
     }
 
     /**
@@ -70,4 +79,13 @@
     public AjaxResult remove(@RequestBody Long[] ids) {
         return toAjax(invoicePurchaseService.delInvoice(ids));
     }
+
+    @PostMapping("/upload")
+    public AjaxResult uploadFile(MultipartFile file, Long id, String type) {
+        try {
+            return AjaxResult.success(commonFileService.uploadFile(file, id, type));
+        } catch (Exception e) {
+            return AjaxResult.error(e.getMessage());
+        }
+    }
 }
diff --git a/src/main/java/com/ruoyi/purchase/dto/InvoicePurchaseDto.java b/src/main/java/com/ruoyi/purchase/dto/InvoicePurchaseDto.java
index 8a51b96..c8a8671 100644
--- a/src/main/java/com/ruoyi/purchase/dto/InvoicePurchaseDto.java
+++ b/src/main/java/com/ruoyi/purchase/dto/InvoicePurchaseDto.java
@@ -1,7 +1,76 @@
 package com.ruoyi.purchase.dto;
 
+import com.ruoyi.sales.pojo.CommonFile;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.List;
 
 @Data
 public class InvoicePurchaseDto {
+
+    private Long id;
+
+    /**
+     * 閲囪喘鍙拌处id
+     */
+    private Long purchaseLedgerId;
+
+    /**
+     * 閲囪喘鍚堝悓鍙�
+     */
+    private String purchaseContractNo;
+
+    /**
+     * 鍏宠仈閿�鍞彴璐︿富琛ㄤ富閿�
+     */
+    private Long salesLedgerId;
+
+    /**
+     * 閿�鍞悎鍚屽彿
+     */
+    private String salesContractNo;
+
+    /**
+     * 渚涘簲鍟嗗悕绉�
+     */
+    private String supplierName;
+
+    /**
+     * 鍙戠エ鍙�
+     */
+    private String invoiceNumber;
+
+    /**
+     * 鍙戠エ閲戦锛堝厓锛�
+     */
+    private BigDecimal invoiceAmount;
+
+    /**
+     * 绋庣巼
+     */
+    private BigDecimal taxRate;
+
+    /**
+     * 寮�绁ㄤ汉ID
+     */
+    private Long issUerId;
+
+    /**
+     * 寮�绁ㄤ汉
+     */
+    private String issUer;
+
+    /**
+     * 寮�绁ㄦ棩鏈�
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate issueDate;
+
+    private List<String> tempFileIds;
+    private List<CommonFile> CommonFiles;
+
+    private String fileName;
 }
diff --git a/src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java b/src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java
index cddb7b8..ff81462 100644
--- a/src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java
+++ b/src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java
@@ -1,7 +1,7 @@
 package com.ruoyi.purchase.dto;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.ruoyi.sales.pojo.SalesLedgerFile;
+import com.ruoyi.sales.pojo.CommonFile;
 import com.ruoyi.sales.pojo.SalesLedgerProduct;
 import lombok.Data;
 
@@ -90,7 +90,7 @@
 
     private List<String> tempFileIds;
 
-    private List<SalesLedgerFile> SalesLedgerFiles;
+    private List<CommonFile> SalesLedgerFiles;
     /**
      * 涓氬姟鍛樻墜鏈哄彿
      */
diff --git a/src/main/java/com/ruoyi/purchase/pojo/InvoicePurchase.java b/src/main/java/com/ruoyi/purchase/pojo/InvoicePurchase.java
index 5097798..bcc868d 100644
--- a/src/main/java/com/ruoyi/purchase/pojo/InvoicePurchase.java
+++ b/src/main/java/com/ruoyi/purchase/pojo/InvoicePurchase.java
@@ -1,12 +1,13 @@
 package com.ruoyi.purchase.pojo;
 
-import java.math.BigDecimal;
-import java.util.Date;
-
 import com.baomidou.mybatisplus.annotation.*;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.framework.aspectj.lang.annotation.Excel;
 import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.Date;
 
 /**
  * 鍙戠エ淇℃伅瀵硅薄 invoice_purchase
@@ -26,10 +27,20 @@
     private Long id;
 
     /**
+     * 閲囪喘鍙拌处id
+     */
+    private Long purchaseLedgerId;
+
+    /**
      * 閲囪喘鍚堝悓鍙�
      */
     @Excel(name = "閲囪喘鍚堝悓鍙�")
     private String purchaseContractNo;
+
+    /**
+     * 鍏宠仈閿�鍞彴璐︿富琛ㄤ富閿�
+     */
+    private Long salesLedgerId;
 
     /**
      * 閿�鍞悎鍚屽彿
@@ -52,32 +63,36 @@
     /**
      * 鍙戠エ閲戦锛堝厓锛�
      */
-    @Excel(name = "鍙戠エ閲戦", readConverterExp = "鍏�=")
+    @Excel(name = "鍙戠エ閲戦(鍏�)")
     private BigDecimal invoiceAmount;
 
     /**
      * 绋庣巼
      */
-    @Excel(name = "绋庣巼")
+    @Excel(name = "绋庣巼(%)")
     private BigDecimal taxRate;
+
+    /**
+     * 寮�绁ㄤ汉ID
+     */
+    private Long issUerId;
 
     /**
      * 寮�绁ㄤ汉
      */
     @Excel(name = "寮�绁ㄤ汉")
-    private String issuer;
+    private String issUer;
 
     /**
      * 寮�绁ㄦ棩鏈�
      */
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd" ,timezone = "GMT+8")
     @Excel(name = "寮�绁ㄦ棩鏈�", width = 30, dateFormat = "yyyy-MM-dd")
-    private Date issueDate;
+    private LocalDate issueDate;
 
     /**
      * 鍙戠エ鏂囦欢锛圥DF鏍煎紡锛�
      */
-    @Excel(name = "鍙戠エ鏂囦欢", readConverterExp = "P=DF鏍煎紡")
     private String invoiceFile;
 
     /**
diff --git a/src/main/java/com/ruoyi/purchase/service/IInvoicePurchaseService.java b/src/main/java/com/ruoyi/purchase/service/IInvoicePurchaseService.java
index ae99e9d..fe664f8 100644
--- a/src/main/java/com/ruoyi/purchase/service/IInvoicePurchaseService.java
+++ b/src/main/java/com/ruoyi/purchase/service/IInvoicePurchaseService.java
@@ -2,8 +2,10 @@
 
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.purchase.dto.InvoicePurchaseDto;
 import com.ruoyi.purchase.pojo.InvoicePurchase;
 
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -13,9 +15,13 @@
  * @date 2025-05-14
  */
 public interface IInvoicePurchaseService extends IService<InvoicePurchase> {
-    List<InvoicePurchase> selectInvoicePurchaseList(InvoicePurchase invoicePurchase);
+    List<InvoicePurchaseDto> selectInvoicePurchaseList(InvoicePurchaseDto invoicePurchaseDto);
 
     int delInvoice(Long[] ids);
 
-    int addOrUpdateInvoice(InvoicePurchase invoicePurchase);
+    int addOrUpdateInvoice(InvoicePurchaseDto invoicePurchaseDto) throws IOException;
+
+    InvoicePurchaseDto getInvoiceById(InvoicePurchaseDto invoicePurchaseDto);
+
+    List<InvoicePurchase> selectInvoicePurchaseLists(InvoicePurchase invoicePurchase);
 }
diff --git a/src/main/java/com/ruoyi/purchase/service/impl/InvoicePurchaseServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/InvoicePurchaseServiceImpl.java
index f9a2487..5a0a9b4 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/InvoicePurchaseServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/InvoicePurchaseServiceImpl.java
@@ -2,15 +2,38 @@
 
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.utils.bean.BeanUtils;
+import com.ruoyi.other.mapper.TempFileMapper;
+import com.ruoyi.other.pojo.TempFile;
+import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.project.system.mapper.SysUserMapper;
+import com.ruoyi.purchase.dto.InvoicePurchaseDto;
 import com.ruoyi.purchase.mapper.InvoicePurchaseMapper;
+import com.ruoyi.purchase.mapper.PurchaseLedgerMapper;
 import com.ruoyi.purchase.pojo.InvoicePurchase;
+import com.ruoyi.purchase.pojo.PurchaseLedger;
 import com.ruoyi.purchase.service.IInvoicePurchaseService;
-import lombok.AllArgsConstructor;
+import com.ruoyi.sales.mapper.CommonFileMapper;
+import com.ruoyi.sales.pojo.CommonFile;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.io.FilenameUtils;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
-import java.util.Arrays;
-import java.util.List;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.StandardCopyOption;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 鍙戠エ淇℃伅Service涓氬姟灞傚鐞�
@@ -19,14 +42,80 @@
  * @date 2025-05-14
  */
 @Service
-@AllArgsConstructor
+@RequiredArgsConstructor
+@Slf4j
 public class InvoicePurchaseServiceImpl extends ServiceImpl<InvoicePurchaseMapper, InvoicePurchase> implements IInvoicePurchaseService {
 
-    private InvoicePurchaseMapper invoicePurchaseMapper;
+    private final InvoicePurchaseMapper invoicePurchaseMapper;
+
+    private final PurchaseLedgerMapper purchaseLedgerMapper;
+
+    private final SysUserMapper userMapper;
+
+    private final CommonFileMapper commonFileMapper;
+
+    private final TempFileMapper tempFileMapper;
+
+    @Value("${file.upload-dir}")
+    private String uploadDir;
 
     @Override
-    public List<InvoicePurchase> selectInvoicePurchaseList(InvoicePurchase invoicePurchase) {
-        return invoicePurchaseMapper.selectList(new LambdaQueryWrapper<>());
+    public List<InvoicePurchaseDto> selectInvoicePurchaseList(InvoicePurchaseDto invoicePurchaseDto) {
+        // 鏋勫缓鍙戠エ鏌ヨ鏉′欢
+        LambdaQueryWrapper<InvoicePurchase> queryWrapper = new LambdaQueryWrapper<>();
+        Optional.ofNullable(invoicePurchaseDto)
+                .ifPresent(dto -> {
+                    if (StringUtils.hasText(dto.getPurchaseContractNo())) {
+                        queryWrapper.like(InvoicePurchase::getPurchaseContractNo, dto.getPurchaseContractNo());
+                    }
+                    if (StringUtils.hasText(dto.getSupplierName())) {
+                        queryWrapper.like(InvoicePurchase::getSupplierName, dto.getSupplierName());
+                    }
+                    // 澶勭悊鏃ユ湡绫诲瀷瀛楁
+                    if (dto.getIssueDate() != null) {
+                        queryWrapper.eq(InvoicePurchase::getIssueDate,invoicePurchaseDto.getIssueDate());
+                    }
+                });
+
+        // 鏌ヨ鍙戠エ鍒楄〃
+        List<InvoicePurchase> invoiceList = invoicePurchaseMapper.selectList(queryWrapper);
+
+        // 濡傛灉娌℃湁鏌ヨ鍒板彂绁紝鐩存帴杩斿洖绌哄垪琛�
+        if (CollectionUtils.isEmpty(invoiceList)) {
+            return Collections.emptyList();
+        }
+
+        // 鎻愬彇鎵�鏈夊彂绁↖D
+        List<Long> invoiceIds = invoiceList.stream()
+                .map(InvoicePurchase::getId)
+                .collect(Collectors.toList());
+
+        // 鎵归噺鏌ヨ杩欎簺鍙戠エ鍏宠仈鐨勬枃浠朵俊鎭�
+        LambdaQueryWrapper<CommonFile> fileQueryWrapper = new LambdaQueryWrapper<>();
+        fileQueryWrapper.in(CommonFile::getCommonId, invoiceIds)
+                .eq(CommonFile::getType,"3");
+        List<CommonFile> fileList = commonFileMapper.selectList(fileQueryWrapper);
+
+        // 灏嗘枃浠朵俊鎭槧灏勫埌瀵瑰簲鐨勫彂绁↖D
+        Map<Long, String> fileMap = fileList.stream()
+                .collect(Collectors.toMap(
+                        CommonFile::getCommonId,
+                        CommonFile::getName,
+                        (existing, replacement) -> existing // 濡傛灉鏈夊涓枃浠讹紝鍙栫涓�涓�
+                ));
+
+        // 灏嗘枃浠朵俊鎭缃埌鍙戠エDTO涓�
+        List<InvoicePurchaseDto> resultList = new ArrayList<>();
+        for (InvoicePurchase invoice : invoiceList) {
+            InvoicePurchaseDto dto = new InvoicePurchaseDto();
+            // 灏咺nvoicePurchase鐨勫睘鎬у鍒跺埌DTO
+            BeanUtils.copyProperties(invoice, dto);
+            // 璁剧疆鏂囦欢鍚嶏紝濡傛灉瀛樺湪鐨勮瘽
+            dto.setFileName(fileMap.getOrDefault(invoice.getId(), null));
+            resultList.add(dto);
+        }
+
+        return resultList;
     }
 
     @Override
@@ -35,11 +124,115 @@
     }
 
     @Override
-    public int addOrUpdateInvoice(InvoicePurchase invoicePurchase) {
-        if (invoicePurchase.getId() == null) {
-            return invoicePurchaseMapper.insert(invoicePurchase);
+    public int addOrUpdateInvoice(InvoicePurchaseDto invoicePurchaseDto) throws IOException {
+        int i;
+        PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectById(invoicePurchaseDto.getPurchaseLedgerId());
+        InvoicePurchase invoicePurchase = new InvoicePurchase();
+        BeanUtils.copyProperties(invoicePurchaseDto, invoicePurchase);
+        invoicePurchase.setPurchaseContractNo(purchaseLedger.getPurchaseContractNumber());
+        invoicePurchase.setSalesContractNo(purchaseLedger.getSalesContractNo());
+        SysUser sysUser = userMapper.selectUserById(invoicePurchase.getIssUerId());
+        invoicePurchase.setIssUer(sysUser.getNickName());
+        invoicePurchase.setTenantId(purchaseLedger.getTenantId());
+        if (invoicePurchaseDto.getId() == null) {
+            i = invoicePurchaseMapper.insert(invoicePurchase);
         } else {
-            return invoicePurchaseMapper.updateById(invoicePurchase);
+            i = invoicePurchaseMapper.updateById(invoicePurchase);
         }
+
+        // 杩佺Щ涓存椂鏂囦欢鍒版寮忕洰褰�
+        if (invoicePurchaseDto.getTempFileIds() != null && !invoicePurchaseDto.getTempFileIds().isEmpty()) {
+            migrateTempFilesToFormal(invoicePurchase.getId(), invoicePurchaseDto.getTempFileIds());
+        }
+
+        return i;
+    }
+
+    /**
+     * 灏嗕复鏃舵枃浠惰縼绉诲埌姝e紡鐩綍
+     *
+     * @param businessId  涓氬姟ID锛堥攢鍞彴璐D锛�
+     * @param tempFileIds 涓存椂鏂囦欢ID鍒楄〃
+     * @throws IOException 鏂囦欢鎿嶄綔寮傚父
+     */
+    private void migrateTempFilesToFormal(Long businessId, List<String> tempFileIds) throws IOException {
+        if (CollectionUtils.isEmpty(tempFileIds)) {
+            return;
+        }
+
+        // 鏋勫缓姝e紡鐩綍璺緞锛堟寜涓氬姟绫诲瀷鍜屾棩鏈熷垎缁勶級
+        String formalDir = uploadDir + LocalDate.now().format(DateTimeFormatter.ISO_LOCAL_DATE);
+
+        Path formalDirPath = Paths.get(formalDir);
+
+        // 纭繚姝e紡鐩綍瀛樺湪锛堥�掑綊鍒涘缓锛�
+        if (!Files.exists(formalDirPath)) {
+            Files.createDirectories(formalDirPath);
+        }
+
+        for (String tempFileId : tempFileIds) {
+            // 鏌ヨ涓存椂鏂囦欢璁板綍
+            TempFile tempFile = tempFileMapper.selectById(tempFileId);
+            if (tempFile == null) {
+                log.warn("涓存椂鏂囦欢涓嶅瓨鍦紝璺宠繃澶勭悊: {}", tempFileId);
+                continue;
+            }
+
+            // 鏋勫缓姝e紡鏂囦欢鍚嶏紙鍖呭惈涓氬姟ID鍜屾椂闂存埑锛岄伩鍏嶅啿绐侊級
+            String originalFilename = tempFile.getOriginalName();
+            String fileExtension = FilenameUtils.getExtension(originalFilename);
+            String formalFilename = businessId + "_" +
+                    System.currentTimeMillis() + "_" +
+                    UUID.randomUUID().toString().substring(0, 8) +
+                    (com.ruoyi.common.utils.StringUtils.hasText(fileExtension) ? "." + fileExtension : "");
+
+            Path formalFilePath = formalDirPath.resolve(formalFilename);
+
+            try {
+                // 鎵ц鏂囦欢杩佺Щ锛堜娇鐢ㄥ師瀛愭搷浣滅‘淇濆畨鍏ㄦ�э級
+                Files.move(
+                        Paths.get(tempFile.getTempPath()),
+                        formalFilePath,
+                        StandardCopyOption.REPLACE_EXISTING,
+                        StandardCopyOption.ATOMIC_MOVE
+                );
+                log.info("鏂囦欢杩佺Щ鎴愬姛: {} -> {}", tempFile.getTempPath(), formalFilePath);
+
+                // 鏇存柊鏂囦欢璁板綍锛堝叧鑱斿埌涓氬姟ID锛�
+                CommonFile fileRecord = new CommonFile();
+                fileRecord.setCommonId(businessId);
+                fileRecord.setName(originalFilename);
+                fileRecord.setUrl(formalFilePath.toString());
+                fileRecord.setCreateTime(LocalDateTime.now());
+                fileRecord.setType(tempFile.getType());
+                commonFileMapper.insert(fileRecord);
+
+                log.info("鏂囦欢杩佺Щ鎴愬姛: {} -> {}", tempFile.getTempPath(), formalFilePath);
+            } catch (IOException e) {
+                log.error("鏂囦欢杩佺Щ澶辫触: {}", tempFile.getTempPath(), e);
+                // 鍙�夋嫨鍥炴粴浜嬪姟鎴栬褰曞け璐ユ枃浠�
+                throw new IOException("鏂囦欢杩佺Щ寮傚父", e);
+            }
+        }
+    }
+
+    @Override
+    public InvoicePurchaseDto getInvoiceById(InvoicePurchaseDto invoicePurchaseDto) {
+        InvoicePurchase invoicePurchase = invoicePurchaseMapper.selectById(invoicePurchaseDto.getId());
+        InvoicePurchaseDto resultDto = new InvoicePurchaseDto();
+        BeanUtils.copyProperties(invoicePurchase, resultDto);
+
+        // 鏌ヨ涓婁紶鏂囦欢
+        LambdaQueryWrapper<CommonFile> commonFileLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        commonFileLambdaQueryWrapper.eq(CommonFile::getCommonId, invoicePurchaseDto.getId())
+                .eq(CommonFile::getType, "3");
+        List<CommonFile> commonFiles = commonFileMapper.selectList(commonFileLambdaQueryWrapper);
+        resultDto.setCommonFiles(commonFiles);
+        return resultDto;
+    }
+
+    @Override
+    public List<InvoicePurchase> selectInvoicePurchaseLists(InvoicePurchase invoicePurchase) {
+        return invoicePurchaseMapper.selectList(new LambdaQueryWrapper<>());
     }
 }
diff --git a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
index f49faf8..35ea9f5 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -14,11 +14,11 @@
 import com.ruoyi.purchase.mapper.PurchaseLedgerMapper;
 import com.ruoyi.purchase.pojo.PurchaseLedger;
 import com.ruoyi.purchase.service.IPurchaseLedgerService;
-import com.ruoyi.sales.mapper.SalesLedgerFileMapper;
+import com.ruoyi.sales.mapper.CommonFileMapper;
 import com.ruoyi.sales.mapper.SalesLedgerMapper;
 import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
+import com.ruoyi.sales.pojo.CommonFile;
 import com.ruoyi.sales.pojo.SalesLedger;
-import com.ruoyi.sales.pojo.SalesLedgerFile;
 import com.ruoyi.sales.pojo.SalesLedgerProduct;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -59,7 +59,7 @@
 
     private final TempFileMapper tempFileMapper;
 
-    private final SalesLedgerFileMapper salesLedgerFileMapper;
+    private final CommonFileMapper commonFileMapper;
 
     @Value("${file.upload-dir}")
     private String uploadDir;
@@ -207,12 +207,13 @@
                 log.info("鏂囦欢杩佺Щ鎴愬姛: {} -> {}", tempFile.getTempPath(), formalFilePath);
 
                 // 鏇存柊鏂囦欢璁板綍锛堝叧鑱斿埌涓氬姟ID锛�
-                SalesLedgerFile fileRecord = new SalesLedgerFile();
-                fileRecord.setLedgerId(businessId);
+                CommonFile fileRecord = new CommonFile();
+                fileRecord.setCommonId(businessId);
                 fileRecord.setName(originalFilename);
                 fileRecord.setUrl(formalFilePath.toString());
                 fileRecord.setCreateTime(LocalDateTime.now());
-                salesLedgerFileMapper.insert(fileRecord);
+                fileRecord.setType("2");
+                commonFileMapper.insert(fileRecord);
 
                 // 鍒犻櫎涓存椂鏂囦欢璁板綍
                 tempFileMapper.deleteById(tempFile);
@@ -246,9 +247,9 @@
         List<SalesLedgerProduct> products = salesLedgerProductMapper.selectList(productWrapper);
 
         // 3.鏌ヨ涓婁紶鏂囦欢
-        LambdaQueryWrapper<SalesLedgerFile> salesLedgerFileWrapper = new LambdaQueryWrapper<>();
-        salesLedgerFileWrapper.eq(SalesLedgerFile::getLedgerId, purchaseLedger.getId());
-        List<SalesLedgerFile> salesLedgerFiles = salesLedgerFileMapper.selectList(salesLedgerFileWrapper);
+        LambdaQueryWrapper<CommonFile> salesLedgerFileWrapper = new LambdaQueryWrapper<>();
+        salesLedgerFileWrapper.eq(CommonFile::getCommonId, purchaseLedger.getId());
+        List<CommonFile> salesLedgerFiles = commonFileMapper.selectList(salesLedgerFileWrapper);
 
         // 4. 杞崲 DTO
         PurchaseLedgerDto resultDto = new PurchaseLedgerDto();
diff --git a/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
index 4e39558..d67b5fb 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
@@ -38,7 +38,7 @@
 
     private SalesLedgerProductMapper salesLedgerProductMapper;
 
-    private final SysUserMapper userMapper;
+    private SysUserMapper userMapper;
 
 
     @Override
diff --git a/src/main/java/com/ruoyi/sales/controller/CommonFileController.java b/src/main/java/com/ruoyi/sales/controller/CommonFileController.java
new file mode 100644
index 0000000..beb2df9
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/controller/CommonFileController.java
@@ -0,0 +1,32 @@
+package com.ruoyi.sales.controller;
+
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.sales.service.ICommonFileService;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/commonFile")
+@AllArgsConstructor
+public class CommonFileController extends BaseController {
+
+    private ICommonFileService commonFileService;
+
+    /**
+     * 闄勪欢鍒犻櫎
+     */
+    @Log(title = "闄勪欢鍒犻櫎", businessType = BusinessType.DELETE)
+    @DeleteMapping("/delCommonFile")
+    public AjaxResult delCommonFile(@RequestBody Long[] ids) {
+        if (ids == null || ids.length == 0) {
+            return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+        }
+        return toAjax(commonFileService.delCommonFileByIds(ids));
+    }
+}
diff --git a/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java b/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
index ace01c0..fae38e5 100644
--- a/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
+++ b/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
@@ -1,20 +1,20 @@
 package com.ruoyi.sales.controller;
 
-import java.util.*;
-import javax.servlet.http.HttpServletResponse;
-
 import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.sales.dto.SalesLedgerDto;
-import com.ruoyi.sales.pojo.SalesLedger;
-import com.ruoyi.sales.service.ISalesLedgerFileService;
-import com.ruoyi.sales.service.ISalesLedgerService;
-import lombok.AllArgsConstructor;
-import org.springframework.web.bind.annotation.*;
 import com.ruoyi.framework.aspectj.lang.annotation.Log;
 import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
 import com.ruoyi.framework.web.controller.BaseController;
 import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.sales.dto.SalesLedgerDto;
+import com.ruoyi.sales.pojo.SalesLedger;
+import com.ruoyi.sales.service.ICommonFileService;
+import com.ruoyi.sales.service.ISalesLedgerService;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
 
 /**
  * 閿�鍞彴璐ontroller
@@ -29,7 +29,7 @@
 
     private ISalesLedgerService salesLedgerService;
 
-    private ISalesLedgerFileService salesLedgerFileService;
+    private ICommonFileService commonFileService;
 
     /**
      * 鏌ヨ閿�鍞彴璐﹀垪琛�
@@ -101,6 +101,6 @@
         if (ids == null || ids.length == 0) {
             return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
         }
-        return toAjax(salesLedgerFileService.deleteSalesLedgerByIds(ids));
+        return toAjax(commonFileService.deleteSalesLedgerByIds(ids));
     }
 }
diff --git a/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java b/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
index af98858..1e79daa 100644
--- a/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
+++ b/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
@@ -1,7 +1,7 @@
 package com.ruoyi.sales.dto;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.ruoyi.sales.pojo.SalesLedgerFile;
+import com.ruoyi.sales.pojo.CommonFile;
 import com.ruoyi.sales.pojo.SalesLedgerProduct;
 import lombok.Data;
 
@@ -25,7 +25,7 @@
     private Boolean hasChildren = false;
     private List<SalesLedgerProduct> productData;
     private List<String> tempFileIds;
-    private List<SalesLedgerFile> SalesLedgerFiles;
+    private List<CommonFile> SalesLedgerFiles;
 
     private Integer Type;
 }
diff --git a/src/main/java/com/ruoyi/sales/mapper/CommonFileMapper.java b/src/main/java/com/ruoyi/sales/mapper/CommonFileMapper.java
new file mode 100644
index 0000000..fa2fc39
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/mapper/CommonFileMapper.java
@@ -0,0 +1,8 @@
+package com.ruoyi.sales.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.sales.pojo.CommonFile;
+
+public interface CommonFileMapper extends BaseMapper<CommonFile> {
+}
diff --git a/src/main/java/com/ruoyi/sales/mapper/SalesLedgerFileMapper.java b/src/main/java/com/ruoyi/sales/mapper/SalesLedgerFileMapper.java
deleted file mode 100644
index a5cf660..0000000
--- a/src/main/java/com/ruoyi/sales/mapper/SalesLedgerFileMapper.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.ruoyi.sales.mapper;
-
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.ruoyi.sales.pojo.SalesLedgerFile;
-
-public interface SalesLedgerFileMapper extends BaseMapper<SalesLedgerFile> {
-}
diff --git a/src/main/java/com/ruoyi/sales/pojo/SalesLedgerFile.java b/src/main/java/com/ruoyi/sales/pojo/CommonFile.java
similarity index 74%
rename from src/main/java/com/ruoyi/sales/pojo/SalesLedgerFile.java
rename to src/main/java/com/ruoyi/sales/pojo/CommonFile.java
index ace387a..77e8b7d 100644
--- a/src/main/java/com/ruoyi/sales/pojo/SalesLedgerFile.java
+++ b/src/main/java/com/ruoyi/sales/pojo/CommonFile.java
@@ -5,17 +5,21 @@
 
 import java.time.LocalDateTime;
 
+/**
+ * 閫氱敤闄勪欢涓婁紶琛�
+ */
+
 @Data
-@TableName("sales_ledger_file")
-public class SalesLedgerFile {
+@TableName("common_file")
+public class CommonFile {
 
     private static final long serialVersionUID = 1L;
 
     @TableId(type = IdType.AUTO)
     private Long id;
 
-    /** 閿�鍞彴璐D */
-    private Long ledgerId;
+    /** 鍏宠仈琛ㄤ富閿瓺 */
+    private Long commonId;
 
     /** 鏂囦欢鍚嶇О */
     private String name;
@@ -23,6 +27,9 @@
     /** 鏂囦欢璺緞 */
     private String url;
 
+    /** 鍏宠仈琛� */
+    private String type;
+
     /** 鍒涘缓鏃堕棿 */
     @TableField(fill = FieldFill.INSERT)
     private LocalDateTime createTime;
diff --git a/src/main/java/com/ruoyi/sales/service/ICommonFileService.java b/src/main/java/com/ruoyi/sales/service/ICommonFileService.java
new file mode 100644
index 0000000..a00aa9c
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/service/ICommonFileService.java
@@ -0,0 +1,15 @@
+package com.ruoyi.sales.service;
+
+import com.ruoyi.sales.pojo.CommonFile;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+
+public interface ICommonFileService {
+
+    int deleteSalesLedgerByIds(Long[] ids);
+
+    CommonFile uploadFile(MultipartFile file, Long id, String type) throws IOException;
+
+    int delCommonFileByIds(Long[] ids);
+}
diff --git a/src/main/java/com/ruoyi/sales/service/ISalesLedgerFileService.java b/src/main/java/com/ruoyi/sales/service/ISalesLedgerFileService.java
deleted file mode 100644
index 4cbbeb5..0000000
--- a/src/main/java/com/ruoyi/sales/service/ISalesLedgerFileService.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.ruoyi.sales.service;
-
-public interface ISalesLedgerFileService {
-
-    int deleteSalesLedgerByIds(Long[] ids);
-}
diff --git a/src/main/java/com/ruoyi/sales/service/impl/CommonFileServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/CommonFileServiceImpl.java
new file mode 100644
index 0000000..ee45642
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/service/impl/CommonFileServiceImpl.java
@@ -0,0 +1,63 @@
+package com.ruoyi.sales.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.sales.mapper.CommonFileMapper;
+import com.ruoyi.sales.pojo.CommonFile;
+import com.ruoyi.sales.service.ICommonFileService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Arrays;
+import java.util.UUID;
+
+@Service
+@RequiredArgsConstructor
+public class CommonFileServiceImpl extends ServiceImpl<CommonFileMapper, CommonFile> implements ICommonFileService {
+
+    private final CommonFileMapper commonFileMapper;
+
+    @Value("${file.upload-dir}")
+    private String uploadDir;
+
+
+    @Override
+    public int deleteSalesLedgerByIds(Long[] ids) {
+        return commonFileMapper.deleteBatchIds(Arrays.asList(ids));
+    }
+
+    @Override
+    public CommonFile uploadFile(MultipartFile file, Long id, String type) throws IOException {
+        // 1. 鐢熸垚姝e紡鏂囦欢ID鍜岃矾寰�
+        String tempId = UUID.randomUUID().toString();
+        Path tempFilePath = Paths.get(uploadDir, tempId + "_" + file.getOriginalFilename());
+
+        // 2. 纭繚鐩綍瀛樺湪
+        Path parentDir = tempFilePath.getParent();
+        if (parentDir != null) {
+            Files.createDirectories(parentDir); // 閫掑綊鍒涘缓鐩綍
+        }
+
+        // 3. 淇濆瓨鏂囦欢鍒扮洰褰�
+        file.transferTo(tempFilePath.toFile());
+
+        // 4. 淇濆瓨鏂囦欢璁板綍
+        CommonFile commonFile = new CommonFile();
+        commonFile.setCommonId(id);
+        commonFile.setName(file.getOriginalFilename());
+        commonFile.setUrl(tempFilePath.toString());
+        commonFile.setType(type);
+        commonFileMapper.insert(commonFile);
+        return commonFile;
+    }
+
+    @Override
+    public int delCommonFileByIds(Long[] ids) {
+        return commonFileMapper.deleteBatchIds(Arrays.asList(ids));
+    }
+}
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerFileServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerFileServiceImpl.java
deleted file mode 100644
index 41b82d1..0000000
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerFileServiceImpl.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.ruoyi.sales.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.sales.mapper.SalesLedgerFileMapper;
-import com.ruoyi.sales.pojo.SalesLedgerFile;
-import com.ruoyi.sales.service.ISalesLedgerFileService;
-import lombok.AllArgsConstructor;
-import org.springframework.stereotype.Service;
-
-import java.util.Arrays;
-
-@Service
-@AllArgsConstructor
-public class SalesLedgerFileServiceImpl extends ServiceImpl<SalesLedgerFileMapper, SalesLedgerFile> implements ISalesLedgerFileService {
-
-    private SalesLedgerFileMapper salesLedgerFileMapper;
-
-    @Override
-    public int deleteSalesLedgerByIds(Long[] ids) {
-        return salesLedgerFileMapper.deleteBatchIds(Arrays.asList(ids));
-    }
-}
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
index 777bbb4..988410d 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -12,11 +12,11 @@
 import com.ruoyi.other.mapper.TempFileMapper;
 import com.ruoyi.other.pojo.TempFile;
 import com.ruoyi.sales.dto.SalesLedgerDto;
-import com.ruoyi.sales.mapper.SalesLedgerFileMapper;
+import com.ruoyi.sales.mapper.CommonFileMapper;
 import com.ruoyi.sales.mapper.SalesLedgerMapper;
 import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
+import com.ruoyi.sales.pojo.CommonFile;
 import com.ruoyi.sales.pojo.SalesLedger;
-import com.ruoyi.sales.pojo.SalesLedgerFile;
 import com.ruoyi.sales.pojo.SalesLedgerProduct;
 import com.ruoyi.sales.service.ISalesLedgerService;
 import lombok.RequiredArgsConstructor;
@@ -58,7 +58,7 @@
 
     private final SalesLedgerProductMapper salesLedgerProductMapper;
 
-    private final SalesLedgerFileMapper salesLedgerFileMapper;
+    private final CommonFileMapper commonFileMapper;
 
     private final TempFileMapper tempFileMapper;
 
@@ -93,9 +93,9 @@
         List<SalesLedgerProduct> products = salesLedgerProductMapper.selectList(productWrapper);
 
         // 3.鏌ヨ涓婁紶鏂囦欢
-        LambdaQueryWrapper<SalesLedgerFile> salesLedgerFileWrapper = new LambdaQueryWrapper<>();
-        salesLedgerFileWrapper.eq(SalesLedgerFile::getLedgerId, salesLedger.getId());
-        List<SalesLedgerFile> salesLedgerFiles = salesLedgerFileMapper.selectList(salesLedgerFileWrapper);
+        LambdaQueryWrapper<CommonFile> salesLedgerFileWrapper = new LambdaQueryWrapper<>();
+        salesLedgerFileWrapper.eq(CommonFile::getCommonId, salesLedger.getId());
+        List<CommonFile> salesLedgerFiles = commonFileMapper.selectList(salesLedgerFileWrapper);
 
         // 4. 杞崲 DTO
         SalesLedgerDto resultDto = new SalesLedgerDto();
@@ -266,12 +266,13 @@
                 log.info("鏂囦欢杩佺Щ鎴愬姛: {} -> {}", tempFile.getTempPath(), formalFilePath);
 
                 // 鏇存柊鏂囦欢璁板綍锛堝叧鑱斿埌涓氬姟ID锛�
-                SalesLedgerFile fileRecord = new SalesLedgerFile();
-                fileRecord.setLedgerId(businessId);
+                CommonFile fileRecord = new CommonFile();
+                fileRecord.setCommonId(businessId);
                 fileRecord.setName(originalFilename);
                 fileRecord.setUrl(formalFilePath.toString());
                 fileRecord.setCreateTime(LocalDateTime.now());
-                salesLedgerFileMapper.insert(fileRecord);
+                fileRecord.setType("1");
+                commonFileMapper.insert(fileRecord);
 
                 // 鍒犻櫎涓存椂鏂囦欢璁板綍
                 tempFileMapper.deleteById(tempFile);

--
Gitblit v1.9.3