From a8d514292f781af37e95d08cd6edbcbeec20aa74 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期六, 09 五月 2026 14:29:16 +0800
Subject: [PATCH] feat(shipping): 增加通过发货单号查询发货审批详情接口

---
 src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java      |    6 +++---
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java |    3 ---
 src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java       |   11 ++++++++++-
 src/main/java/com/ruoyi/sales/mapper/ShippingProductDetailMapper.java         |    3 +++
 src/main/java/com/ruoyi/sales/service/ShippingInfoService.java                |    3 +++
 src/main/resources/mapper/sales/ShippingProductDetailMapper.xml               |    9 +++++++++
 src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java    |    1 -
 src/main/java/com/ruoyi/sales/dto/ShippingApproveDto.java                     |   15 +++++++++++++++
 src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java          |    9 ++++++++-
 9 files changed, 51 insertions(+), 9 deletions(-)

diff --git a/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
index 3caf7cf..605e378 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
@@ -211,11 +211,10 @@
             }
             salesQuotationMapper.updateById(salesQuote);
         }
-        // 鍑哄簱瀹℃壒淇敼
+        // 鍑哄簱瀹℃壒淇敼=鍙戣揣瀹℃壒
         if (approveProcess.getApproveType().equals(7)) {
-            String[] split = approveProcess.getApproveReason().split(":");
             ShippingInfo shippingInfo = shippingInfoMapper.selectOne(new LambdaQueryWrapper<ShippingInfo>()
-                    .eq(ShippingInfo::getShippingNo, split[1])
+                    .eq(ShippingInfo::getShippingNo, approveProcess.getApproveReason())
                     .orderByDesc(ShippingInfo::getCreateTime)
                     .last("limit 1"));
             if (shippingInfo != null) {
@@ -228,6 +227,7 @@
                 }
                 shippingInfoMapper.updateById(shippingInfo);
             }
+            //搴撳瓨鎵e噺
 
         }
         fileUtil.saveStorageAttachment(ApplicationTypeEnum.FILE, RecordTypeEnum.APPROVE_NODE, approveNode.getId(), approveNode.getStorageBlobDTOS());
diff --git a/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java b/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
index e85e72a..a4c1106 100644
--- a/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
+++ b/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
@@ -71,7 +71,6 @@
         if (CollUtil.isEmpty(list)) {
             return AjaxResult.success(list);
         }
-        //
         List<Long> productIds = list.stream().map(SalesLedgerProduct::getId).collect(Collectors.toList());
         List<SimpleReturnOrderGroupDto> groupListByProductIds = purchaseReturnOrderProductsMapper.getReturnOrderGroupListByProductIds(productIds);
         Map<Long, BigDecimal> returnOrderGroupDtoMap = groupListByProductIds.stream().collect(Collectors.toMap(SimpleReturnOrderGroupDto::getSalesLedgerProductId, item -> item.getSumReturnQuantity()));
diff --git a/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java b/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
index edb7b44..0257f2a 100644
--- a/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
+++ b/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
@@ -61,7 +61,7 @@
         ApproveProcessVO approveProcessVO = new ApproveProcessVO();
         approveProcessVO.setApproveType(7);
         approveProcessVO.setApproveDeptId(loginUser.getCurrentDeptId());
-        approveProcessVO.setApproveReason(sh);
+        approveProcessVO.setApproveReason(sh);//鍙戣揣缂栧彿
         approveProcessVO.setApproveUserIds(req.getApproveUserIds());
         approveProcessVO.setApproveUser(loginUser.getUserId());
         approveProcessVO.setApproveTime(LocalDate.now().toString());
@@ -122,7 +122,14 @@
     }
 
     @GetMapping("/getDateil/{id}")
+    @Operation(summary = "閫氳繃id鏌ヨ璇︽儏")
     public R getDateil(@PathVariable("id") Long id) {
         return R.ok(shippingInfoService.getDetail(id));
     }
+
+    @GetMapping("/getDateilByShippingNo")
+    @Operation(summary = "閫氳繃鍙戣揣鍗曞彿鏌ヨ璇︽儏")
+    public R getDateilByShippingNo(String shippingNo) {
+        return R.ok(shippingInfoService.getDateilByShippingNo(shippingNo));
+    }
 }
diff --git a/src/main/java/com/ruoyi/sales/dto/ShippingApproveDto.java b/src/main/java/com/ruoyi/sales/dto/ShippingApproveDto.java
new file mode 100644
index 0000000..693016b
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/dto/ShippingApproveDto.java
@@ -0,0 +1,15 @@
+package com.ruoyi.sales.dto;
+
+import com.ruoyi.sales.pojo.ShippingInfo;
+import lombok.Data;
+
+import java.util.List;
+
+//鍙戣揣瀹℃壒鏌ョ湅璇︽儏
+@Data
+public class ShippingApproveDto {
+
+    private ShippingInfo shippingInfo;
+
+    private List<ShippingProductDetailDto> shippingProductDetailDtoList;
+}
diff --git a/src/main/java/com/ruoyi/sales/mapper/ShippingProductDetailMapper.java b/src/main/java/com/ruoyi/sales/mapper/ShippingProductDetailMapper.java
index f564ba1..a679e0e 100644
--- a/src/main/java/com/ruoyi/sales/mapper/ShippingProductDetailMapper.java
+++ b/src/main/java/com/ruoyi/sales/mapper/ShippingProductDetailMapper.java
@@ -4,6 +4,7 @@
 import com.ruoyi.sales.dto.ShippingProductDetailDto;
 import com.ruoyi.sales.pojo.ShippingProductDetail;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -19,4 +20,6 @@
 public interface ShippingProductDetailMapper extends BaseMapper<ShippingProductDetail> {
 
     List<ShippingProductDetailDto> getDetail(Long id);
+
+    List<ShippingProductDetailDto> getDateilByShippingNo(@Param("shippingNo") String shippingNo);
 }
diff --git a/src/main/java/com/ruoyi/sales/service/ShippingInfoService.java b/src/main/java/com/ruoyi/sales/service/ShippingInfoService.java
index c3e8a0c..69e8245 100644
--- a/src/main/java/com/ruoyi/sales/service/ShippingInfoService.java
+++ b/src/main/java/com/ruoyi/sales/service/ShippingInfoService.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.sales.dto.SalesLedgerProductDto;
+import com.ruoyi.sales.dto.ShippingApproveDto;
 import com.ruoyi.sales.dto.ShippingInfoDto;
 import com.ruoyi.sales.dto.ShippingProductDetailDto;
 import com.ruoyi.sales.pojo.ShippingInfo;
@@ -28,4 +29,6 @@
     boolean add(ShippingInfoDto req);
 
     List<ShippingProductDetailDto> getDetail(Long id);
+
+    ShippingApproveDto getDateilByShippingNo(String shippingNo);
 }
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
index 37e06bb..8ce023b 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -101,9 +101,6 @@
 
     @Override
     public List<SalesLedgerProduct> selectSalesLedgerProductList(SalesLedgerProduct salesLedgerProduct) {
-//        LambdaQueryWrapper<SalesLedgerProduct> queryWrapper = new LambdaQueryWrapper<>();
-//        queryWrapper.eq(SalesLedgerProduct::getSalesLedgerId, salesLedgerProduct.getSalesLedgerId())
-//                .eq(SalesLedgerProduct::getType, salesLedgerProduct.getType());
         List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectSalesLedgerProductList(salesLedgerProduct);
         if(!CollectionUtils.isEmpty(salesLedgerProducts)){
             salesLedgerProducts.forEach(item -> {
diff --git a/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
index 545ac7d..20e0a36 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
@@ -13,6 +13,7 @@
 import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
 import com.ruoyi.procurementrecord.utils.StockUtils;
 import com.ruoyi.sales.dto.SalesLedgerProductDto;
+import com.ruoyi.sales.dto.ShippingApproveDto;
 import com.ruoyi.sales.dto.ShippingInfoDto;
 import com.ruoyi.sales.dto.ShippingProductDetailDto;
 import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
@@ -68,7 +69,6 @@
         }
         //鎵e噺搴撳瓨
         if(!"宸插彂璐�".equals(byId.getStatus())){
-//            SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(byId.getSalesLedgerProductId());
             List<ShippingProductDetail> shippingProductDetails = shippingProductDetailMapper.selectList(new LambdaQueryWrapper<ShippingProductDetail>().eq(ShippingProductDetail::getShippingInfoId, req.getId()));
             if (CollectionUtils.isEmpty(shippingProductDetails)) {
                 throw new RuntimeException("鍙戣揣淇℃伅涓嶅瓨鍦�");
@@ -141,4 +141,13 @@
     public List<ShippingProductDetailDto> getDetail(Long id) {
         return shippingProductDetailMapper.getDetail(id);
     }
+
+    @Override
+    public ShippingApproveDto getDateilByShippingNo(String shippingNo) {
+        ShippingApproveDto shippingApproveDto = new ShippingApproveDto();
+        shippingApproveDto.setShippingInfo(shippingInfoMapper.selectOne(new LambdaQueryWrapper<ShippingInfo>().eq(ShippingInfo::getShippingNo, shippingNo)));
+        List<ShippingProductDetailDto> dateilByShippingNo = shippingProductDetailMapper.getDateilByShippingNo(shippingNo);
+        shippingApproveDto.setShippingProductDetailDtoList(dateilByShippingNo);
+        return shippingApproveDto;
+    }
 }
diff --git a/src/main/resources/mapper/sales/ShippingProductDetailMapper.xml b/src/main/resources/mapper/sales/ShippingProductDetailMapper.xml
index 464af10..15a6168 100644
--- a/src/main/resources/mapper/sales/ShippingProductDetailMapper.xml
+++ b/src/main/resources/mapper/sales/ShippingProductDetailMapper.xml
@@ -18,5 +18,14 @@
                  left join product p on p.id = pm.product_id
         where spd.shipping_info_id = #{id}
     </select>
+    <select id="getDateilByShippingNo" resultType="com.ruoyi.sales.dto.ShippingProductDetailDto">
+         select si.batch_no, pm.model as specification_model, p.product_name, spd.quantity as delivery_quantity
+         from shipping_product_detail spd
+                  left join shipping_info sp on sp.id = spd.shipping_info_id
+                  left join stock_inventory si on si.id = spd.stock_inventory_id
+                  left join product_model pm on pm.id = si.product_model_id
+                  left join product p on p.id = pm.product_id
+         where sp.shipping_no = #{shippingNo}
+    </select>
 
 </mapper>

--
Gitblit v1.9.3