From 29ccd9919082e0157f57989ae83b303f314bad6b Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 08 六月 2026 16:01:55 +0800
Subject: [PATCH] feat(financial): 新增凭证分录科目明细字段

---
 src/main/java/com/ruoyi/approve/service/impl/ApprovalInstanceServiceImpl.java |   39 ++++++++++++++++++++++++++++++++++++---
 1 files changed, 36 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/ruoyi/approve/service/impl/ApprovalInstanceServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/ApprovalInstanceServiceImpl.java
index 5c5e540..c7a80df 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApprovalInstanceServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApprovalInstanceServiceImpl.java
@@ -97,6 +97,8 @@
 
     @Override
     public R listPage(Page<ApprovalInstanceVo> page, ApprovalInstanceDto approvalInstanceDto) {
+        // 娉ㄥ叆褰撳墠鐢ㄦ埛ID锛岀敤浜庤繃婊ゅ彧鏌ョ湅鐢宠浜哄拰瀹℃牳浜烘槸鑷繁鐨勬暟鎹�
+        approvalInstanceDto.setCurrentUserId(SecurityUtils.getUserId());
         IPage<ApprovalInstanceVo> approvalInstanceVoIPage = approvalInstanceMapper.listPage(page, approvalInstanceDto);
 
         List<ApprovalInstanceVo> records = approvalInstanceVoIPage.getRecords();
@@ -105,6 +107,30 @@
         }
         records.forEach(vo -> {
             vo.setBusinessName(TypeEnums.getLabelByValue(vo.getBusinessType()));
+
+            // 鏍规嵁涓氬姟绫诲瀷鏌ヨ瀵瑰簲鐨勫崟鍙�
+            if (vo.getBusinessType() != null && vo.getBusinessId() != null) {
+                if (TypeEnums.PURCHASE_APPROVAL.getCode().equals(vo.getBusinessType())) {
+                    // 閲囪喘瀹℃壒 - 鏌ヨ閲囪喘鍗曞彿
+                    PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectById(vo.getBusinessId());
+                    System.out.println("涓氬姟绫诲瀷锛�" + purchaseLedger.getPurchaseContractNumber());
+                    if (purchaseLedger != null) {
+                        vo.setPurchaseContractNumber(purchaseLedger.getPurchaseContractNumber());
+                    }
+                } else if (TypeEnums.QUOTATION_APPROVAL.getCode().equals(vo.getBusinessType())) {
+                    // 鎶ヤ环瀹℃壒 - 鏌ヨ鎶ヤ环鍗曞彿
+                    SalesQuotation salesQuotation = salesQuotationMapper.selectById(vo.getBusinessId());
+                    if (salesQuotation != null) {
+                        vo.setQuotationNo(salesQuotation.getQuotationNo());
+                    }
+                } else if (TypeEnums.SHIPPING_APPROVAL.getCode().equals(vo.getBusinessType())) {
+                    // 鍙戣揣瀹℃壒 - 鏌ヨ鍙戣揣鍗曞彿
+                    ShippingInfo shippingInfo = shippingInfoMapper.selectById(vo.getBusinessId());
+                    if (shippingInfo != null) {
+                        vo.setShippingNo(shippingInfo.getShippingNo());
+                    }
+                }
+            }
         });
         Long currentUserId = SecurityUtils.getUserId();
 
@@ -229,6 +255,12 @@
         ApprovalInstance instance = getPendingApprovalInstance(approvalInstanceDto.getId());
         if (instance == null) {
             return R.fail("瀹℃壒瀹炰緥涓嶅瓨鍦�");
+        }
+
+        // 濡傛灉鍓嶇浼犻�掍簡浠撳簱淇℃伅锛屾洿鏂板鎵瑰疄渚嬬殑浠撳簱瀛楁
+        if (StringUtils.hasText(approvalInstanceDto.getWarehouse())) {
+            instance.setWarehouse(approvalInstanceDto.getWarehouse());
+            this.updateById(instance);
         }
 
         ApprovalInstanceNode currentNode = approveProcessConfigNodeUtils.getCurrentNode(instance.getId());
@@ -623,7 +655,9 @@
                             salesLedgerProduct.getQuantity(),
                             StockInQualifiedRecordTypeEnum.PURCHASE_STOCK_IN.getCode(),
                             purchaseLedger.getId(),
-                            purchaseLedger.getPurchaseContractNumber() + "-" + salesLedgerProduct.getId()
+                            purchaseLedger.getPurchaseContractNumber() + "-" + salesLedgerProduct.getId(),
+                            null,
+                            instance.getWarehouse()
                     );
                 }
             }
@@ -658,8 +692,7 @@
     private void handleShippingApprovalFinished(ApprovalInstance instance, String status) {
         ShippingInfo shippingInfo = shippingInfoMapper.selectOne(
                 new LambdaQueryWrapper<ShippingInfo>()
-                        .eq(ShippingInfo::getId, instance.getTitle())
-                        .orderByDesc(ShippingInfo::getCreateTime)
+                        .eq(ShippingInfo::getId, instance.getBusinessId())
                         .last("limit 1")
         );
         if (shippingInfo == null) {

--
Gitblit v1.9.3