From cac873af95b26430e6abd65d453a44ebdcddcd1a Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期一, 25 五月 2026 01:38:48 +0800
Subject: [PATCH] feat: 新增售后详情接口、快递与车牌未查询

---
 src/main/java/com/ruoyi/aftersalesservice/pojo/AfterSalesService.java                    |    3 +++
 src/main/java/com/ruoyi/sales/service/impl/MetricStatisticsServiceImpl.java              |    2 +-
 src/main/java/com/ruoyi/aftersalesservice/service/impl/AfterSalesServiceServiceImpl.java |   33 +++++++++++++++++++++++++++++++++
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java                   |   10 ++++++++--
 doc/update_after_sales_service.sql                                                       |    2 ++
 5 files changed, 47 insertions(+), 3 deletions(-)

diff --git a/doc/update_after_sales_service.sql b/doc/update_after_sales_service.sql
new file mode 100644
index 0000000..14cc8ec
--- /dev/null
+++ b/doc/update_after_sales_service.sql
@@ -0,0 +1,2 @@
+ALTER TABLE `after_sales_service`
+    ADD COLUMN `product_model_quantities` varchar(255) DEFAULT NULL COMMENT '浜у搧鍨嬪彿瀵瑰簲鍞悗鏁伴噺';
diff --git a/src/main/java/com/ruoyi/aftersalesservice/pojo/AfterSalesService.java b/src/main/java/com/ruoyi/aftersalesservice/pojo/AfterSalesService.java
index a635f37..4b53fba 100644
--- a/src/main/java/com/ruoyi/aftersalesservice/pojo/AfterSalesService.java
+++ b/src/main/java/com/ruoyi/aftersalesservice/pojo/AfterSalesService.java
@@ -157,6 +157,9 @@
     @Schema(description = "浜у搧鍨嬪彿IDs")
     private String productModelIds;
 
+    @Schema(description = "浜у搧鍨嬪彿鏁伴噺,閫楀彿鍒嗛殧")
+    private String productModelQuantities;
+
     @Schema(description = "璇勫垎(1-5鍒�)")
     @Excel(name = "璇勫垎")
     private BigDecimal rating;
diff --git a/src/main/java/com/ruoyi/aftersalesservice/service/impl/AfterSalesServiceServiceImpl.java b/src/main/java/com/ruoyi/aftersalesservice/service/impl/AfterSalesServiceServiceImpl.java
index a141327..0feab41 100644
--- a/src/main/java/com/ruoyi/aftersalesservice/service/impl/AfterSalesServiceServiceImpl.java
+++ b/src/main/java/com/ruoyi/aftersalesservice/service/impl/AfterSalesServiceServiceImpl.java
@@ -44,6 +44,7 @@
     private final SysUserMapper sysUserMapper;
     private final ISalesLedgerProductService salesLedgerProductService;
     private final ISalesLedgerService salesLedgerService;
+    private final com.ruoyi.sales.mapper.ShippingInfoMapper shippingInfoMapper;
 
     @Override
     public IPage<AfterSalesServiceNewDto> listPage(Page page, AfterSalesServiceNewDto afterSalesService) {
@@ -81,6 +82,38 @@
         SalesLedger byId = salesLedgerService.getById(afterSalesService.getSalesLedgerId());
         List<Long> collect = Arrays.stream(afterSalesService.getProductModelIds().split(",")).map(Long::valueOf).collect(Collectors.toList());
         List<SalesLedgerProduct> list = salesLedgerProductService.list(new QueryWrapper<SalesLedgerProduct>().lambda().in(SalesLedgerProduct::getId, collect));
+
+        if (StringUtils.isNotEmpty(afterSalesService.getProductModelQuantities())) {
+            String[] quantities = afterSalesService.getProductModelQuantities().split(",");
+            for (int i = 0; i < collect.size(); i++) {
+                Long productId = collect.get(i);
+                for (SalesLedgerProduct product : list) {
+                    if (product.getId().equals(productId)) {
+                        if (i < quantities.length && StringUtils.isNotEmpty(quantities[i])) {
+                            product.setQuantity(new java.math.BigDecimal(quantities[i]));
+                        }
+                        break;
+                    }
+                }
+            }
+        }
+
+        for (SalesLedgerProduct product : list) {
+            com.ruoyi.sales.pojo.ShippingInfo shippingInfo = shippingInfoMapper.selectOne(
+                new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<com.ruoyi.sales.pojo.ShippingInfo>()
+                    .eq(com.ruoyi.sales.pojo.ShippingInfo::getSalesLedgerProductId, product.getId())
+                    .orderByDesc(com.ruoyi.sales.pojo.ShippingInfo::getCreateTime)
+                    .last("limit 1")
+            );
+            if (shippingInfo != null) {
+                product.setShippingCarNumber(shippingInfo.getShippingCarNumber());
+                product.setShippingDate(shippingInfo.getShippingDate());
+                product.setShippingStatus(shippingInfo.getStatus());
+                product.setExpressCompany(shippingInfo.getExpressCompany());
+                product.setExpressNumber(shippingInfo.getExpressNumber());
+            }
+        }
+
         AfterSalesServiceNewDto afterSalesServiceNewDto = new AfterSalesServiceNewDto();
         BeanUtils.copyProperties(afterSalesService, afterSalesServiceNewDto);
         SalesLedgerDto salesLedgerDto = new SalesLedgerDto();
diff --git a/src/main/java/com/ruoyi/sales/service/impl/MetricStatisticsServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/MetricStatisticsServiceImpl.java
index 1ff7fa1..4cc96ac 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/MetricStatisticsServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/MetricStatisticsServiceImpl.java
@@ -48,7 +48,7 @@
         // 鍙戣揣鏁伴噺
         long count = shippingInfoMapper.selectCount(new LambdaQueryWrapper<ShippingInfo>()
                 .in(ShippingInfo::getSalesLedgerProductId, salesLedgerProducts.stream().map(SalesLedgerProduct::getId).collect(Collectors.toList()))
-                .eq(ShippingInfo::getStatus,"宸插彂璐�"));
+                .eq(ShippingInfo::getStatus,"瀹℃牳閫氳繃"));
         map.put("shipRate", String.format("%.2f", count * 100.0 / salesLedgerProducts.size()) + "%");
         return AjaxResult.success(map);
     }
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 7610fa8..6303b04 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -185,7 +185,11 @@
                     .orderByDesc(ShippingInfo::getCreateTime)
                     .last("limit 1"));
             if (shippingInfo != null) {
+                product.setShippingCarNumber(shippingInfo.getShippingCarNumber());
+                product.setShippingDate(shippingInfo.getShippingDate());
                 product.setShippingStatus(shippingInfo.getStatus());
+                product.setExpressCompany(shippingInfo.getExpressCompany());
+                product.setExpressNumber(shippingInfo.getExpressNumber());
             }
         }
 
@@ -452,10 +456,12 @@
                         .eq(ShippingInfo::getSalesLedgerProductId, product.getId())
                         .orderByDesc(ShippingInfo::getCreateTime)
                         .last("limit 1"));
-                product.setShippingCarNumber(shippingInfo.getShippingCarNumber());
-                product.setShippingDate(shippingInfo.getShippingDate());
                 if (shippingInfo != null) {
+                    product.setShippingCarNumber(shippingInfo.getShippingCarNumber());
+                    product.setShippingDate(shippingInfo.getShippingDate());
                     product.setShippingStatus(shippingInfo.getStatus());
+                    product.setExpressCompany(shippingInfo.getExpressCompany());
+                    product.setExpressNumber(shippingInfo.getExpressNumber());
                 }
             }
             // 杩囨护鍙繚鐣欏彂璐ц褰�

--
Gitblit v1.9.3