From 09d3d31899bb346c6fe8ad5d89168730b5dfae4a Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期五, 08 五月 2026 13:45:42 +0800
Subject: [PATCH] refactor(business): 重构业务机会和销售台账的文件管理功能

---
 src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java            |   12 +-
 src/main/java/com/ruoyi/basic/dto/BusinessDescriptionDto.java                  |    2 
 src/main/java/com/ruoyi/basic/dto/StorageBlobDTO.java                          |    3 
 src/main/java/com/ruoyi/basic/service/impl/BusinessOpportunityServiceImpl.java |   44 +++++++-
 src/main/java/com/ruoyi/basic/utils/FileUtil.java                              |   14 +-
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java         |  174 ++++++++++------------------------
 src/main/java/com/ruoyi/sales/pojo/SalesLedger.java                            |    8 
 src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java                 |    7 
 src/main/java/com/ruoyi/basic/dto/StorageBlobVO.java                           |    3 
 9 files changed, 118 insertions(+), 149 deletions(-)

diff --git a/src/main/java/com/ruoyi/basic/dto/BusinessDescriptionDto.java b/src/main/java/com/ruoyi/basic/dto/BusinessDescriptionDto.java
index dbfecf1..666c485 100644
--- a/src/main/java/com/ruoyi/basic/dto/BusinessDescriptionDto.java
+++ b/src/main/java/com/ruoyi/basic/dto/BusinessDescriptionDto.java
@@ -9,7 +9,7 @@
 public class BusinessDescriptionDto extends BusinessDescription {
 
 
-    private List<StorageBlobDTO> storageBlobDTOS;
+    private List<StorageBlobDTO> businessCommonFiles;
 
     private List<StorageBlobVO> storageBlobVO;
 }
diff --git a/src/main/java/com/ruoyi/basic/dto/StorageBlobDTO.java b/src/main/java/com/ruoyi/basic/dto/StorageBlobDTO.java
index 52eaaa5..9b963d3 100644
--- a/src/main/java/com/ruoyi/basic/dto/StorageBlobDTO.java
+++ b/src/main/java/com/ruoyi/basic/dto/StorageBlobDTO.java
@@ -15,6 +15,9 @@
      */
     private String downloadURL;
 
+
+    private String url;
+    private String name;
     /**
      * 鏂囦欢绫诲瀷
      */
diff --git a/src/main/java/com/ruoyi/basic/dto/StorageBlobVO.java b/src/main/java/com/ruoyi/basic/dto/StorageBlobVO.java
index 75eed4f..a1110de 100644
--- a/src/main/java/com/ruoyi/basic/dto/StorageBlobVO.java
+++ b/src/main/java/com/ruoyi/basic/dto/StorageBlobVO.java
@@ -15,5 +15,8 @@
      */
     private String downloadURL;
 
+    private String url;
+    private String name;
+
     private Long storageAttachmentId;
 }
diff --git a/src/main/java/com/ruoyi/basic/service/impl/BusinessOpportunityServiceImpl.java b/src/main/java/com/ruoyi/basic/service/impl/BusinessOpportunityServiceImpl.java
index db25ba6..f686454 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/BusinessOpportunityServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/BusinessOpportunityServiceImpl.java
@@ -2,7 +2,6 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.basic.dto.BusinessDescriptionDto;
@@ -56,11 +55,41 @@
         LoginUser loginUser = SecurityUtils.getLoginUser();
         IPage<BusinessOpportunityDto> businessOpportunityDtoIPage = businessOpportunityMapper.listPage(page, businessOpportunityDto);
 
-        businessOpportunityDtoIPage.getRecords().forEach(item -> {
-            item.setBusinessCommonFiles(fileUtil.getStorageBlobVOsByApplicationAndRecordTypeAndRecordId(ApplicationTypeEnum.FILE, RecordTypeEnum.BUSINESS_OPPORTUNITY, item.getId()));
-            item.setBusinessDescription(businessDescriptionMapper.selectList(Wrappers.lambdaQuery(BusinessDescription.class)
-                    .eq(BusinessDescription::getBusinessOpportunityId, item.getId())
-                    .orderByDesc(BusinessDescription::getCreateTime)));
+        businessOpportunityDtoIPage.getRecords().forEach(opportunity -> {
+            ArrayList<StorageBlobVO> storageBlobVOS = new ArrayList<>();
+            // 鏌ヨ涓氬姟鎻忚堪鍒楄〃
+            List<BusinessDescription> businessDescriptions = businessDescriptionMapper.selectList(
+                    new LambdaQueryWrapper<BusinessDescription>()
+                            .eq(BusinessDescription::getBusinessOpportunityId, opportunity.getId())
+                            .orderByDesc(BusinessDescription::getCreateTime)
+            );
+
+            // 鏀堕泦姣忎釜涓氬姟鎻忚堪鐨勬枃浠�
+            if (businessDescriptions != null && !businessDescriptions.isEmpty()) {
+                businessDescriptions.forEach(description -> {
+                    List<StorageBlobVO> files = fileUtil.getStorageBlobVOsByApplicationAndRecordTypeAndRecordId(
+                            ApplicationTypeEnum.FILE,
+                            RecordTypeEnum.BUSINESS_DESCRIPTION,
+                            Long.valueOf(description.getId())
+                    );
+                    if (files != null && !files.isEmpty()) {
+                        storageBlobVOS.addAll(files);
+                    }
+                });
+            }
+
+            // 鏌ヨ鍟嗘満涓昏〃鐨勬枃浠�
+            List<StorageBlobVO> opportunityFiles = fileUtil.getStorageBlobVOsByApplicationAndRecordTypeAndRecordId(
+                    ApplicationTypeEnum.FILE,
+                    RecordTypeEnum.BUSINESS_OPPORTUNITY,
+                    opportunity.getId()
+            );
+            if (opportunityFiles != null && !opportunityFiles.isEmpty()) {
+                storageBlobVOS.addAll(opportunityFiles);
+            }
+
+            opportunity.setBusinessCommonFiles(storageBlobVOS);
+            opportunity.setBusinessDescription(businessDescriptions);
         });
         return businessOpportunityDtoIPage;
 
@@ -130,7 +159,8 @@
             unipushService.sendClientMessage(sysNoticeList);
         }
         int insert = businessDescriptionMapper.insert(businessDescription);
-        fileUtil.saveStorageAttachment(ApplicationTypeEnum.FILE, RecordTypeEnum.BUSINESS_DESCRIPTION, businessDescription.getBusinessOpportunityId(),  businessDescription.getStorageBlobDTOS());
+
+        fileUtil.saveStorageAttachment(ApplicationTypeEnum.FILE, RecordTypeEnum.BUSINESS_DESCRIPTION, Long.valueOf(businessDescription.getId()),  businessDescription.getBusinessCommonFiles());
 
         return insert > 0 ? R.ok() : R.fail();
     }
diff --git a/src/main/java/com/ruoyi/basic/utils/FileUtil.java b/src/main/java/com/ruoyi/basic/utils/FileUtil.java
index c57468a..b9705da 100644
--- a/src/main/java/com/ruoyi/basic/utils/FileUtil.java
+++ b/src/main/java/com/ruoyi/basic/utils/FileUtil.java
@@ -1,9 +1,7 @@
 package com.ruoyi.basic.utils;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.basic.dto.StorageAttachmentDTO;
 import com.ruoyi.basic.dto.StorageAttachmentVO;
 import com.ruoyi.basic.dto.StorageBlobDTO;
@@ -344,6 +342,8 @@
             StorageBlobVO storageBlobVO = new StorageBlobVO();
             BeanUtils.copyProperties(storageBlob, storageBlobVO);
             storageBlobVO.setPreviewURL(buildSignedPreviewUrl(storageBlobVO));
+            storageBlobVO.setUrl(buildSignedPreviewUrl(storageBlobVO));
+            storageBlobVO.setName(storageBlob.getOriginalFilename());
             storageBlobVO.setDownloadURL(buildSignedDownloadUrl(storageBlobVO));
             storageBlobVO.setStorageAttachmentId(blobIdToAttachmentIdMap.get(storageBlob.getId()));
             storageBlobDTOS.add(storageBlobVO);
@@ -387,16 +387,18 @@
 
         List<Long> storageBlobIds = storageAttachments.stream().map(StorageAttachment::getStorageBlobId).collect(Collectors.toList());
         List<StorageBlob> storageBlobs = storageBlobMapper.selectByIds(storageBlobIds);
-        List<StorageBlobVO> storageBlobDTOS = new ArrayList<>();
+        List<StorageBlobVO> storageBlobVOS = new ArrayList<>();
         for (StorageBlob storageBlob : storageBlobs) {
             StorageBlobVO storageBlobVO = new StorageBlobVO();
             BeanUtils.copyProperties(storageBlob, storageBlobVO);
             storageBlobVO.setPreviewURL(buildSignedPreviewUrl(storageBlobVO));
             storageBlobVO.setDownloadURL(buildSignedDownloadUrl(storageBlobVO));
+            storageBlobVO.setUrl(buildSignedDownloadUrl(storageBlobVO));
+            storageBlobVO.setName(storageBlob.getOriginalFilename());
             storageBlobVO.setStorageAttachmentId(blobIdToAttachmentIdMap.get(storageBlob.getId()));
-            storageBlobDTOS.add(storageBlobVO);
+            storageBlobVOS.add(storageBlobVO);
         }
-        return storageBlobDTOS;
+        return storageBlobVOS;
     }
 
     /**
@@ -417,6 +419,8 @@
             StorageBlobVO storageBlobVO = new StorageBlobVO();
             BeanUtils.copyProperties(storageBlob, storageBlobVO);
             storageBlobVO.setPreviewURL(buildSignedPreviewUrl(storageBlobVO));
+            storageBlobVO.setUrl(buildSignedPreviewUrl(storageBlobVO));
+            storageBlobVO.setName(storageBlob.getOriginalFilename());
             storageBlobVO.setDownloadURL(buildSignedDownloadUrl(storageBlobVO));
             storageBlobDTOS.add(storageBlobVO);
         }
diff --git a/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java b/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
index ceb3702..d72ed93 100644
--- a/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
+++ b/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
@@ -192,11 +192,11 @@
      */
     @Log(title = "閿�鍞彴璐�", businessType = BusinessType.DELETE)
     @DeleteMapping("/delLedger")
-    public AjaxResult remove(@RequestBody Long[] ids) {
+    public R remove(@RequestBody Long[] ids) {
         if (ids == null || ids.length == 0) {
-            return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+            return R.fail("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
         }
-        return toAjax(salesLedgerService.deleteSalesLedgerByIds(ids));
+        return R.ok(salesLedgerService.deleteSalesLedgerByIds(ids));
     }
 
     /**
@@ -216,11 +216,11 @@
      */
     @Log(title = "閿�鍞彴璐﹂檮浠跺垹闄�", businessType = BusinessType.DELETE)
     @DeleteMapping("/delLedgerFile")
-    public AjaxResult delLedgerFile(@RequestBody Long[] ids) {
+    public R delLedgerFile(@RequestBody Long[] ids) {
         if (ids == null || ids.length == 0) {
-            return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+            return R.fail("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
         }
-        return toAjax(commonFileService.deleteSalesLedgerByIds(ids));
+        return R.ok(salesLedgerService.delLdgerFile(ids));
     }
 
     /**
diff --git a/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java b/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
index bc4d02c..8494004 100644
--- a/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
+++ b/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
@@ -1,9 +1,5 @@
 package com.ruoyi.sales.pojo;
 
-import java.math.BigDecimal;
-import java.time.LocalDate;
-import java.util.Date;
-
 import com.baomidou.mybatisplus.annotation.*;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.framework.aspectj.lang.annotation.Excel;
@@ -11,6 +7,10 @@
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.Date;
+
 /**
  * 閿�鍞彴璐﹀璞� sales_ledger
  *
diff --git a/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java b/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java
index 539e67c..98c23b1 100644
--- a/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java
+++ b/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java
@@ -3,7 +3,6 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.ruoyi.aftersalesservice.pojo.AfterSalesService;
 import com.ruoyi.common.enums.SaleEnum;
 import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.sales.dto.LossProductModelDto;
@@ -12,10 +11,10 @@
 import com.ruoyi.sales.pojo.SalesLedger;
 import com.ruoyi.sales.pojo.SalesLedgerProduct;
 import com.ruoyi.sales.vo.SalesLedgerVo;
-import org.springframework.web.multipart.MultipartFile;
-
 import jakarta.annotation.Nullable;
 import jakarta.validation.constraints.NotNull;
+import org.springframework.web.multipart.MultipartFile;
+
 import java.math.BigDecimal;
 import java.util.List;
 
@@ -55,4 +54,6 @@
     List<LossProductModelDto> getSalesLedgerWithProductsLoss(Long salesLedgerId);
 
     IPage<SalesLedgerDto> listSalesLedger(SalesLedgerDto salesLedgerDto, Page page);
+
+    Boolean delLdgerFile(Long[] 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 9803611..a6f56c6 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -9,10 +9,13 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.account.service.AccountIncomeService;
+import com.ruoyi.basic.enums.ApplicationTypeEnum;
+import com.ruoyi.basic.enums.RecordTypeEnum;
 import com.ruoyi.basic.mapper.CustomerMapper;
 import com.ruoyi.basic.mapper.ProductMapper;
 import com.ruoyi.basic.mapper.ProductModelMapper;
 import com.ruoyi.basic.pojo.Customer;
+import com.ruoyi.basic.utils.FileUtil;
 import com.ruoyi.common.enums.FileNameType;
 import com.ruoyi.common.enums.SaleEnum;
 import com.ruoyi.common.exception.base.BaseException;
@@ -24,8 +27,9 @@
 import com.ruoyi.framework.security.LoginUser;
 import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.other.mapper.TempFileMapper;
-import com.ruoyi.other.pojo.TempFile;
-import com.ruoyi.production.mapper.*;
+import com.ruoyi.production.mapper.ProductionProductInputMapper;
+import com.ruoyi.production.mapper.ProductionProductMainMapper;
+import com.ruoyi.production.mapper.ProductionProductOutputMapper;
 import com.ruoyi.production.service.ProductionProductMainService;
 import com.ruoyi.project.system.domain.SysDept;
 import com.ruoyi.project.system.domain.SysUser;
@@ -41,7 +45,6 @@
 import com.ruoyi.sales.vo.SalesLedgerVo;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.io.FilenameUtils;
 import org.jetbrains.annotations.Nullable;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -52,15 +55,10 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
-import java.io.IOException;
 import java.io.InputStream;
 import java.lang.reflect.Field;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-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.YearMonth;
@@ -118,6 +116,8 @@
     ;
     @Autowired
     private SysUserMapper sysUserMapper;
+    @Autowired
+    private FileUtil fileUtil;
 
     @Override
     public List<SalesLedger> selectSalesLedgerList(SalesLedgerDto salesLedgerDto) {
@@ -487,6 +487,12 @@
         return salesLedgerDtoIPage;
     }
 
+    @Override
+    public Boolean delLdgerFile(Long[] ids) {
+        fileUtil.deleteStorageBlobsByStorageAttachmentIds(List.of(ids));
+        return true;
+    }
+
     /**
      * 涓嬪垝绾垮懡鍚嶈浆椹煎嘲鍛藉悕
      */
@@ -582,125 +588,47 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public int addOrUpdateSalesLedger(SalesLedgerDto salesLedgerDto) {
-        try {
-            // 1. 鏍¢獙瀹㈡埛淇℃伅
-            Customer customer = customerMapper.selectById(salesLedgerDto.getCustomerId());
-            if (customer == null) {
-                throw new BaseException("瀹㈡埛涓嶅瓨鍦�");
-            }
-
-            // 2. DTO杞珽ntity
-            SalesLedger salesLedger = convertToEntity(salesLedgerDto);
-            salesLedger.setCustomerName(customer.getCustomerName());
-            salesLedger.setTenantId(customer.getTenantId());
-            // 3. 鏂板鎴栨洿鏂颁富琛�
-            if (salesLedger.getId() == null) {
-                String contractNo = generateSalesContractNo();
-                salesLedger.setSalesContractNo(contractNo);
-                salesLedgerMapper.insert(salesLedger);
-            } else {
-                salesLedgerMapper.updateById(salesLedger);
-            }
-
-            // 4. 澶勭悊瀛愯〃鏁版嵁
-            List<SalesLedgerProduct> productList = salesLedgerDto.getProductData();
-            if (productList != null && !productList.isEmpty()) {
-                handleSalesLedgerProducts(salesLedger.getId(), productList, EnumUtil.fromCode(SaleEnum.class, salesLedgerDto.getType()));
-                updateMainContractAmount(
-                        salesLedger.getId(),
-                        productList,
-                        SalesLedgerProduct::getTaxInclusiveTotalPrice,
-                        salesLedgerMapper,
-                        SalesLedger.class
-                );
-            }
-
-            // 5. 杩佺Щ涓存椂鏂囦欢鍒版寮忕洰褰�
-            if (salesLedgerDto.getTempFileIds() != null && !salesLedgerDto.getTempFileIds().isEmpty()) {
-                migrateTempFilesToFormal(salesLedger.getId(), salesLedgerDto.getTempFileIds());
-            }
-            return 1;
-        } catch (IOException e) {
-            throw new BaseException("鏂囦欢杩佺Щ澶辫触: " + e.getMessage());
+        // 1. 鏍¢獙瀹㈡埛淇℃伅
+        Customer customer = customerMapper.selectById(salesLedgerDto.getCustomerId());
+        if (customer == null) {
+            throw new BaseException("瀹㈡埛涓嶅瓨鍦�");
         }
+
+        // 2. DTO杞珽ntity
+        SalesLedger salesLedger = convertToEntity(salesLedgerDto);
+        salesLedger.setCustomerName(customer.getCustomerName());
+        salesLedger.setTenantId(customer.getTenantId());
+        // 3. 鏂板鎴栨洿鏂颁富琛�
+        if (salesLedger.getId() == null) {
+            String contractNo = generateSalesContractNo();
+            salesLedger.setSalesContractNo(contractNo);
+            salesLedgerMapper.insert(salesLedger);
+        } else {
+            salesLedgerMapper.updateById(salesLedger);
+        }
+
+        // 4. 澶勭悊瀛愯〃鏁版嵁
+        List<SalesLedgerProduct> productList = salesLedgerDto.getProductData();
+        if (productList != null && !productList.isEmpty()) {
+            handleSalesLedgerProducts(salesLedger.getId(), productList, EnumUtil.fromCode(SaleEnum.class, salesLedgerDto.getType()));
+            updateMainContractAmount(
+                    salesLedger.getId(),
+                    productList,
+                    SalesLedgerProduct::getTaxInclusiveTotalPrice,
+                    salesLedgerMapper,
+                    SalesLedger.class
+            );
+        }
+
+        //涓氬姟鍜岄檮浠剁粦瀹�
+        fileUtil.saveStorageAttachment(ApplicationTypeEnum.FILE, RecordTypeEnum.SALES_LEDGER, salesLedger.getId(), salesLedgerDto.getStorageBlobDTOs());
+//            if (salesLedgerDto.getTempFileIds() != null && !salesLedgerDto.getTempFileIds().isEmpty()) {
+//                migrateTempFilesToFormal(salesLedger.getId(), salesLedgerDto.getTempFileIds());
+//            }
+        return 1;
     }
 
-    /**
-     * 灏嗕复鏃舵枃浠惰縼绉诲埌姝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) +
-                    (StringUtils.hasText(fileExtension) ? "." + fileExtension : "");
-
-            Path formalFilePath = formalDirPath.resolve(formalFilename);
-
-            try {
-                // 鎵ц鏂囦欢杩佺Щ锛堜娇鐢ㄥ師瀛愭搷浣滅‘淇濆畨鍏ㄦ�э級
-//                Files.move(
-//                        Paths.get(tempFile.getTempPath()),
-//                        formalFilePath,
-//                        StandardCopyOption.REPLACE_EXISTING,
-//                        StandardCopyOption.ATOMIC_MOVE
-//                );
-                // 鍘熷瓙绉诲姩澶辫触锛屼娇鐢ㄥ鍒�+鍒犻櫎
-                Files.copy(Paths.get(tempFile.getTempPath()), formalFilePath, StandardCopyOption.REPLACE_EXISTING);
-                Files.deleteIfExists(Paths.get(tempFile.getTempPath()));
-                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(FileNameType.SALE.getValue());
-                commonFileMapper.insert(fileRecord);
-
-                // 鍒犻櫎涓存椂鏂囦欢璁板綍
-                tempFileMapper.deleteById(tempFile);
-
-                log.info("鏂囦欢杩佺Щ鎴愬姛: {} -> {}", tempFile.getTempPath(), formalFilePath);
-            } catch (IOException e) {
-                log.error("鏂囦欢杩佺Щ澶辫触: {}", tempFile.getTempPath(), e);
-                // 鍙�夋嫨鍥炴粴浜嬪姟鎴栬褰曞け璐ユ枃浠�
-                throw new IOException("鏂囦欢杩佺Щ寮傚父", e);
-            }
-        }
-    }
-
-    // 鏂囦欢杩佺Щ鏂规硶
 
     @Override
     public void handleSalesLedgerProducts(Long salesLedgerId, List<SalesLedgerProduct> products, SaleEnum type) {

--
Gitblit v1.9.3