From 7bf754a7835d06f26240c4ca15bc5f83650de377 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 21 九月 2026 20:52:25 +0800
Subject: [PATCH] docs(api): 更新信托基金与代储台账及油品出库相关接口文档

---
 src/main/java/com/ruoyi/purchase/service/impl/PurchaseApplicationServiceImpl.java |   68 +++++++++++++++++++++++++++++++++-
 1 files changed, 66 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseApplicationServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseApplicationServiceImpl.java
index 51ad290..a417af3 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseApplicationServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseApplicationServiceImpl.java
@@ -3,12 +3,17 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.basic.dto.StorageBlobDTO;
+import com.ruoyi.basic.dto.StorageBlobVO;
+import com.ruoyi.basic.enums.ApplicationTypeEnum;
+import com.ruoyi.basic.enums.RecordTypeEnum;
 import com.ruoyi.basic.mapper.ProductMapper;
 import com.ruoyi.basic.mapper.ProductModelMapper;
 import com.ruoyi.basic.mapper.SupplierManageMapper;
 import com.ruoyi.basic.pojo.Product;
 import com.ruoyi.basic.pojo.ProductModel;
 import com.ruoyi.basic.pojo.SupplierManage;
+import com.ruoyi.basic.utils.FileUtil;
 import com.ruoyi.common.enums.PurchaseApplicationStatusEnum;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.DateUtils;
@@ -35,6 +40,7 @@
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.Collections;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -60,6 +66,7 @@
     private final SysUserMapper sysUserMapper;
     private final ProductMapper productMapper;
     private final ProductModelMapper productModelMapper;
+    private final FileUtil fileUtil;
 
     @Override
     public List<PurchaseApplication> selectApplicationList(PurchaseApplicationDto purchaseApplicationDto) {
@@ -89,6 +96,7 @@
         PurchaseApplicationDto resultDto = new PurchaseApplicationDto();
         BeanUtils.copyProperties(application, resultDto);
         resultDto.setProductData(listProducts(id));
+        resultDto.setStorageBlobVOS(listAttachments(id));
         return resultDto;
     }
 
@@ -108,6 +116,7 @@
         this.save(application);
 
         saveProducts(application.getId(), purchaseApplicationDto.getProductData());
+        saveAttachments(application.getId(), purchaseApplicationDto.getStorageBlobDTOS());
         return application.getId();
     }
 
@@ -142,6 +151,7 @@
             purchaseApplicationProductMapper.delete(Wrappers.<PurchaseApplicationProduct>lambdaQuery()
                     .eq(PurchaseApplicationProduct::getPurchaseApplicationId, purchaseApplicationDto.getId()));
             saveProducts(purchaseApplicationDto.getId(), purchaseApplicationDto.getProductData());
+            saveAttachments(purchaseApplicationDto.getId(), purchaseApplicationDto.getStorageBlobDTOS());
         }
         return updated;
     }
@@ -216,6 +226,19 @@
                 .set(PurchaseApplication::getPurchaseLedgerId, purchaseLedgerId)
                 .set(PurchaseApplication::getConvertTime, LocalDateTime.now()));
         return purchaseLedgerId;
+    }
+
+    /**
+     * 淇濆瓨闄勪欢锛氬厛娓呯┖璇ョ敵璇峰崟鐨勬棫鍏宠仈锛屽啀鎸夊墠绔彁浜ょ殑鏂囦欢鍏ㄩ噺閲嶅缓
+     */
+    private void saveAttachments(Long applicationId, List<StorageBlobDTO> storageBlobDTOS) {
+        fileUtil.saveStorageAttachment(ApplicationTypeEnum.FILE, RecordTypeEnum.PURCHASE_APPLICATION,
+                applicationId, storageBlobDTOS);
+    }
+
+    private List<StorageBlobVO> listAttachments(Long applicationId) {
+        return fileUtil.getStorageBlobVOsByApplicationAndRecordTypeAndRecordId(
+                ApplicationTypeEnum.FILE, RecordTypeEnum.PURCHASE_APPLICATION, applicationId);
     }
 
     private List<PurchaseApplicationProduct> listProducts(Long applicationId) {
@@ -311,7 +334,8 @@
         PurchaseLedgerDto purchaseLedgerDto = new PurchaseLedgerDto();
         purchaseLedgerDto.setSupplierId(application.getSupplierId());
         purchaseLedgerDto.setSupplierName(supplierManage.getSupplierName());
-        purchaseLedgerDto.setRecorderId(application.getApplicantId());
+        purchaseLedgerDto.setRecorderId(application.getRecorderId() != null
+                ? application.getRecorderId() : application.getApplicantId());
         purchaseLedgerDto.setRecorderName(application.getApplicantName());
         purchaseLedgerDto.setSalesContractNo(application.getSalesContractNo());
         purchaseLedgerDto.setSalesLedgerId(application.getSalesLedgerId());
@@ -319,12 +343,51 @@
         purchaseLedgerDto.setRemarks(application.getRemarks());
         purchaseLedgerDto.setPaymentMethod(application.getPaymentMethod());
         purchaseLedgerDto.setContractAmount(application.getContractAmount());
-        LocalDate entryDate = application.getApplyDate() != null ? application.getApplyDate() : LocalDate.now();
+        purchaseLedgerDto.setPurchaseContractNumber(application.getPurchaseContractNumber());
+        purchaseLedgerDto.setExecutionDate(toDateOrNull(application.getExecutionDate()));
+        purchaseLedgerDto.setBestArrivalDate(toDateOrNull(application.getBestArrivalDate()));
+        purchaseLedgerDto.setApplicationSubmitTime(toDateOrNull(application.getApplicationSubmitTime()));
+        purchaseLedgerDto.setPurchaseCategory(application.getPurchaseCategory());
+        purchaseLedgerDto.setLogisticsMethod(application.getLogisticsMethod());
+        purchaseLedgerDto.setPickupMethod(application.getPickupMethod());
+        purchaseLedgerDto.setOilDepotId(application.getOilDepotId());
+        purchaseLedgerDto.setCustomerName(application.getCustomerName());
+        purchaseLedgerDto.setPurchaseQuantity(application.getPurchaseQuantity());
+        purchaseLedgerDto.setPurchaseOrderStatus(application.getPurchaseOrderStatus());
+
+        LocalDate entryDate = application.getEntryDate() != null ? application.getEntryDate()
+                : (application.getApplyDate() != null ? application.getApplyDate() : LocalDate.now());
         purchaseLedgerDto.setEntryDate(DateUtils.toDate(entryDate));
+
         purchaseLedgerDto.setProductData(products.stream()
                 .map(this::toSalesLedgerProduct)
                 .collect(Collectors.toList()));
+        purchaseLedgerDto.setStorageBlobDTOS(toStorageBlobDtos(listAttachments(application.getId())));
         return purchaseLedgerDto;
+    }
+
+    private static Date toDateOrNull(LocalDate date) {
+        return date == null ? null : DateUtils.toDate(date);
+    }
+
+    private static Date toDateOrNull(LocalDateTime dateTime) {
+        return dateTime == null ? null : DateUtils.toDate(dateTime);
+    }
+
+    /**
+     * 鐢宠鍗曢檮浠跺師鏍峰叧鑱斿埌鐢熸垚鐨勯噰璐彴璐︼細澶嶇敤鍚屼竴浠� storage_blob锛屽彧鏀瑰叧鑱旇褰�
+     */
+    private List<StorageBlobDTO> toStorageBlobDtos(List<StorageBlobVO> storageBlobVOS) {
+        if (storageBlobVOS == null || storageBlobVOS.isEmpty()) {
+            return Collections.emptyList();
+        }
+        return storageBlobVOS.stream()
+                .map(vo -> {
+                    StorageBlobDTO dto = new StorageBlobDTO();
+                    dto.setId(vo.getId());
+                    return dto;
+                })
+                .collect(Collectors.toList());
     }
 
     private SalesLedgerProduct toSalesLedgerProduct(PurchaseApplicationProduct source) {
@@ -335,6 +398,7 @@
         target.setSpecificationModel(source.getSpecificationModel());
         target.setUnit(source.getUnit());
         target.setQuantity(source.getQuantity());
+        target.setWarnNum(source.getWarnNum());
         target.setTaxRate(source.getTaxRate());
         target.setTaxInclusiveUnitPrice(source.getTaxInclusiveUnitPrice());
         target.setTaxInclusiveTotalPrice(source.getTaxInclusiveTotalPrice());

--
Gitblit v1.9.3