浏览代码

电子面单云打印取号接口

24282 1 年之前
父节点
当前提交
3482a25b6a

+ 3 - 3
sd-business/src/main/java/com/sd/business/controller/order/IssueBillController.java

@@ -53,8 +53,8 @@ public class IssueBillController {
      * 编辑快递单号
      */
     @PostMapping("/editExpressDeliveryCode")
-    public void editExpressDeliveryCode(@RequestBody OrderInfo orderInfo) {
-        issueBillService.editExpressDeliveryCode(orderInfo);
+    public void editExpressDeliveryCode(@RequestBody OrderEncasement orderEncasement) {
+        issueBillService.editExpressDeliveryCode(orderEncasement);
     }
 
     /**
@@ -101,7 +101,7 @@ public class IssueBillController {
      * 复制包裹
      */
     @PostMapping("/copyAllowance")
-    public AssemblyDetailVo copyAllowance(@RequestBody OrderEncasement dto) {
+    public AssemblyDetailVo copyAllowance(@RequestBody OrderEncasementDto dto) {
         return issueBillService.copyAllowance(dto);
     }
 

+ 5 - 0
sd-business/src/main/java/com/sd/business/entity/order/dto/OrderEncasementDto.java

@@ -20,6 +20,11 @@ import java.util.List;
 public class OrderEncasementDto extends OrderEncasement {
 
     /**
+     * 复制包裹数量
+     */
+    private Integer total;
+
+    /**
      * 明细
      */
     @Valid

+ 10 - 6
sd-business/src/main/java/com/sd/business/entity/order/po/OrderEncasement.java

@@ -28,6 +28,16 @@ public class OrderEncasement extends BasePo {
     private Long orderId;
 
     /**
+     * 包裹编号
+     */
+    private Integer number;
+
+    /**
+     * 快递单号
+     */
+    private String trackingNumber;
+
+    /**
      * 长 cm
      */
     @NotNull(message = "长不能为空")
@@ -50,10 +60,4 @@ public class OrderEncasement extends BasePo {
      */
     private BigDecimal netWeight;
 
-    /**
-     * 包裹总数
-     */
-    @NotNull(message = "包裹总数不能为空")
-    private Integer total;
-
 }

+ 0 - 5
sd-business/src/main/java/com/sd/business/entity/order/po/OrderInfo.java

@@ -253,11 +253,6 @@ public class OrderInfo extends BasePo {
     private Long expressDeliveryId;
 
     /**
-     * 快递单号
-     */
-    private String expressDeliveryCode;
-
-    /**
      * 对账单id
      */
     private Long statementOfAccountId;

+ 0 - 5
sd-business/src/main/java/com/sd/business/entity/order/vo/IssueBillVo.java

@@ -72,11 +72,6 @@ public class IssueBillVo {
     private String expressDeliveryId;
 
     /**
-     * 快递单号
-     */
-    private String expressDeliveryCode;
-
-    /**
      * 备注
      */
     private String remark;

+ 0 - 5
sd-business/src/main/java/com/sd/business/entity/production/vo/ProductionOrderVo.java

@@ -31,11 +31,6 @@ public class ProductionOrderVo {
     private String wlnCode;
 
     /**
-     * 快递单号
-     */
-    private String expressDeliveryCode;
-
-    /**
      * 下单时间
      */
     private Date wlnCreateTime;

+ 2 - 2
sd-business/src/main/java/com/sd/business/service/order/IssueBillService.java

@@ -30,7 +30,7 @@ public interface IssueBillService {
     /**
      * 编辑快递单号
      */
-    void editExpressDeliveryCode(OrderInfo orderInfo);
+    void editExpressDeliveryCode(OrderEncasement orderEncasement);
 
     /**
      * 编辑包裹图片
@@ -60,7 +60,7 @@ public interface IssueBillService {
     /**
      * 复制包裹
      */
-    AssemblyDetailVo copyAllowance(OrderEncasement dto);
+    AssemblyDetailVo copyAllowance(OrderEncasementDto dto);
 
     /**
      * 添加包裹

+ 67 - 27
sd-business/src/main/java/com/sd/business/service/order/impl/IssueBillServiceImpl.java

@@ -12,6 +12,7 @@ import com.ruoyi.common.core.domain.BasePo;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.ruoyi.framework.mybatis.holder.LogicHolder;
 import com.sd.business.entity.bom.po.BomSpec;
 import com.sd.business.entity.order.dto.IssueBillSelectDto;
 import com.sd.business.entity.order.dto.OrderEncasementDto;
@@ -36,10 +37,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -77,7 +75,6 @@ public class IssueBillServiceImpl implements IssueBillService {
 
         wrapper.like("oi", OrderInfo::getCode, dto.getCode());
         wrapper.eq("oi", OrderInfo::getDepartmentId, dto.getDepartmentId());
-        wrapper.like("oi", OrderInfo::getExpressDeliveryCode, dto.getExpressDeliveryCode());
 
         wrapper.ge("ab", OrderInfo::getDeliveryTime, dto.getBeginTime());
         wrapper.le("ab", OrderInfo::getDeliveryTime, dto.getEndTime());
@@ -110,15 +107,16 @@ public class IssueBillServiceImpl implements IssueBillService {
         QueryWrapper<OrderEncasement> orderEncasementWrapper = new QueryWrapper<>();
         orderEncasementWrapper.select(
                 "order_id as orderId",
-                "ifnull(sum(total),0) total",
-                "ifnull(sum(net_weight*total),0) totalNetWeight",
-                "ifnull(sum(length*width*height*total/1000000),0) totalVolume"
+                "count(0) total",
+                "ifnull(sum(net_weight),0) totalNetWeight",
+                "ifnull(sum(length*width*height/1000000),0) totalVolume"
         );
         orderEncasementWrapper.in("order_id", orderIdList);
         orderEncasementWrapper.groupBy("order_id");
 
         List<Map<String, Object>> mapList = orderEncasementService.listMaps(orderEncasementWrapper);
-        Map<Long, Map<String, Object>> orderEncasementMap = mapList.stream().collect(Collectors.toMap(item -> (Long) item.get("orderId"), Function.identity()));
+        Map<Long, Map<String, Object>> orderEncasementMap = mapList.stream()
+                .collect(Collectors.toMap(item -> (Long) item.get("orderId"), Function.identity()));
 
         for (IssueBillVo record : records) {
             Map<String, Object> itemMap = orderEncasementMap.get(record.getId());
@@ -161,10 +159,10 @@ public class IssueBillServiceImpl implements IssueBillService {
     }
 
     @Override
-    public void editExpressDeliveryCode(OrderInfo orderInfo) {
-        orderService.update(q -> q
-                .eq(BaseIdPo::getId, orderInfo.getId())
-                .set(OrderInfo::getExpressDeliveryCode, orderInfo.getExpressDeliveryCode())
+    public void editExpressDeliveryCode(OrderEncasement orderEncasement) {
+        orderEncasementService.update(q -> q
+                .eq(BaseIdPo::getId, orderEncasement.getId())
+                .set(OrderEncasement::getTrackingNumber, orderEncasement.getTrackingNumber())
                 .set(BasePo::getUpdateTime, new Date())
                 .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
         );
@@ -219,10 +217,37 @@ public class IssueBillServiceImpl implements IssueBillService {
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public AssemblyDetailVo copyAllowance(OrderEncasement dto) {
+    public AssemblyDetailVo copyAllowance(OrderEncasementDto dto) {
+
         OrderEncasement orderEncasement = orderEncasementService.getById(dto.getId());
-        orderEncasement.setTotal(orderEncasement.getTotal() + dto.getTotal());
-        orderEncasementService.updateById(dto);
+        List<OrderEncasementDetail> list = orderEncasementDetailService.list(q -> q.eq(OrderEncasementDetail::getOrderEncasementId, dto.getId()));
+
+        Integer maxNumber = getMaxNumber(orderEncasement.getOrderId());
+
+        List<OrderEncasement> orderEncasementList = new ArrayList<>();
+        List<OrderEncasementDetail> orderEncasementDetailList = new ArrayList<>();
+
+        for (int i = 0; i < dto.getTotal(); i++) {
+            maxNumber++;
+
+            OrderEncasement tempOrderEncasement = BeanUtil.copyProperties(orderEncasement, OrderEncasement.class);
+            tempOrderEncasement.setId(IdWorker.getId());
+            tempOrderEncasement.setNumber(maxNumber);
+            tempOrderEncasement.setTrackingNumber(null);
+
+            List<OrderEncasementDetail> tempList = BeanUtil.copyToList(list, OrderEncasementDetail.class);
+            for (OrderEncasementDetail orderEncasementDetail : tempList) {
+                orderEncasementDetail.setId(IdWorker.getId());
+                orderEncasementDetail.setOrderEncasementId(tempOrderEncasement.getId());
+            }
+
+            orderEncasementList.add(tempOrderEncasement);
+            orderEncasementDetailList.addAll(tempList);
+        }
+
+        orderEncasementService.saveBatch(orderEncasementList);
+        orderEncasementDetailService.saveBatch(orderEncasementDetailList);
+
         return verifiedQuantityAndGetDetail(orderEncasement.getOrderId());
     }
 
@@ -231,17 +256,21 @@ public class IssueBillServiceImpl implements IssueBillService {
     public AssemblyDetailVo addAllowance(OrderEncasementDto dto) {
         dto.setId(IdWorker.getId());
         dto.setNetWeight(BigDecimal.ZERO);
+        dto.setNumber(getMaxNumber(dto.getOrderId()) + 1);
 
         List<OrderEncasementDetail> orderEncasementDetailList = dto.getOrderEncasementDetailList();
+
+        // 查询bom规格净重
         List<Long> bomSpecIdList = orderEncasementDetailList.stream().map(OrderEncasementDetail::getBomSpecId).collect(Collectors.toList());
         Map<Long, BomSpec> bomSpecMap = bomSpecService.mapKEntity(BaseIdPo::getId, q -> q.in(BaseIdPo::getId, bomSpecIdList));
-        orderEncasementDetailList.forEach(item -> {
-            BomSpec bomSpec = bomSpecMap.get(item.getBomSpecId());
-            BigDecimal netWeight = ObjectUtil.defaultIfNull(bomSpec.getNetWeight(), BigDecimal.ZERO);
-            dto.setNetWeight(dto.getNetWeight().add(netWeight));
 
-            item.setOrderEncasementId(dto.getId());
-        });
+        // 赋值包裹id、包裹净重
+        for (OrderEncasementDetail orderEncasementDetail : orderEncasementDetailList) {
+            BomSpec bomSpec = bomSpecMap.get(orderEncasementDetail.getBomSpecId());
+            BigDecimal netWeight = ObjectUtil.defaultIfNull(bomSpec.getNetWeight(), BigDecimal.ZERO);
+            dto.setNetWeight(dto.getNetWeight().add(netWeight.multiply(orderEncasementDetail.getQuantity())));
+            orderEncasementDetail.setOrderEncasementId(dto.getId());
+        }
 
         orderEncasementService.save(dto);
         orderEncasementDetailService.saveBatch(orderEncasementDetailList);
@@ -319,14 +348,25 @@ public class IssueBillServiceImpl implements IssueBillService {
         Map<Long, List<OrderEncasementDetailVo>> collect = orderEncasementDetailList.stream()
                 .collect(Collectors.groupingBy(OrderEncasementDetail::getOrderSkuId));
         for (AssemblyDetailVo.SkuInfo skuInfo : skuInfoList) {
-            collect.getOrDefault(skuInfo.getOrderSkuId(), Collections.emptyList()).forEach(item -> {
-                OrderEncasementVo orderEncasementVo = orderEncasementVoMap.get(item.getOrderEncasementId());
-                BigDecimal quantity = item.getQuantity().multiply(new BigDecimal(orderEncasementVo.getTotal()));
-                skuInfo.setSurplusQuantity(skuInfo.getSurplusQuantity().subtract(quantity));
-            });
+            collect.getOrDefault(skuInfo.getOrderSkuId(), Collections.emptyList()).forEach(item ->
+                    skuInfo.setSurplusQuantity(skuInfo.getSurplusQuantity().subtract(item.getQuantity())));
         }
 
         return orderEncasementList;
     }
 
+    /**
+     * 获取包裹最大编号
+     */
+    private Integer getMaxNumber(Long orderId) {
+        LogicHolder.setLogicHolder(true);
+        OrderEncasement orderEncasement = orderEncasementService.getOne(q -> q
+                .eq(OrderEncasement::getOrderId, orderId)
+                .orderByDesc(OrderEncasement::getNumber)
+        );
+        LogicHolder.clear();
+
+        return orderEncasement == null ? 0 : orderEncasement.getNumber();
+    }
+
 }

+ 0 - 1
sd-business/src/main/resources/mapper/order/IssueBillMapper.xml

@@ -7,7 +7,6 @@
                oi.code,
                d.name  departmentName,
                ed.name expressDeliveryName,
-               oi.express_delivery_code,
                oi.source_platform,
                oi.shop_name,
                oi.create_time,

+ 0 - 1
sd-business/src/main/resources/mapper/order/OrderEncasementMapper.xml

@@ -8,7 +8,6 @@
                oe.width,
                oe.height,
                oe.net_weight,
-               oe.total,
                oe.create_user,
                oe.create_time,
                oe.update_user,

+ 0 - 1
sd-business/src/main/resources/mapper/order/OrderMapper.xml

@@ -17,7 +17,6 @@
                o.delivery_time,
                o.wln_modify_time,
                o.wln_modify_timestamp,
-               o.express_delivery_code,
                o.status,
                o.exception_type,
                o.exception_time,

+ 0 - 1
sd-business/src/main/resources/mapper/production/ProductionOrderMapper.xml

@@ -7,7 +7,6 @@
                oi.id  orderId,
                oi.code,
                oi.wln_code,
-               oi.express_delivery_code,
                oi.wln_create_time,
                oi.delivery_time,
                oi.status

+ 35 - 0
sd-cainiao/src/main/java/com/sd/cainiao/controller/CaiNiaoController.java

@@ -0,0 +1,35 @@
+package com.sd.cainiao.controller;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.sd.cainiao.service.IsticeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * <p>
+ * 申购单 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2023-06-30
+ */
+@RestController
+@RequestMapping("/cainiao")
+public class CaiNiaoController {
+
+    @Autowired
+    private IsticeService isticeService;
+
+    /**
+     * 赋值快递面单
+     */
+    @PostMapping("/takeNum")
+    public void takeNum(@RequestBody BaseSelectDto dto) {
+        isticeService.takeNum(dto.getId());
+    }
+
+}

+ 2 - 5
sd-cainiao/src/main/java/com/sd/cainiao/service/IsticeService.java

@@ -1,13 +1,10 @@
 package com.sd.cainiao.service;
 
-import java.util.List;
-import java.util.Map;
-
 public interface IsticeService {
 
     /**
-     * 通过物流云获取电子面单--批量取号
+     * 通过物流云获取电子面单--取号
      */
-    List<Map<String, Object>> takeNumBatch(List<Long> orderIdList);
+    void takeNum(Long orderEncasementId);
 
 }

+ 59 - 81
sd-cainiao/src/main/java/com/sd/cainiao/service/impl/IsticeServiceImpl.java

@@ -1,16 +1,18 @@
 package com.sd.cainiao.service.impl;
 
+import cn.hutool.core.util.StrUtil;
 import com.ruoyi.common.core.domain.BaseIdPo;
 import com.ruoyi.common.exception.ServiceException;
 import com.sd.business.entity.express.po.ExpressDelivery;
-import com.sd.business.entity.order.enums.OrderStatusEnum;
+import com.sd.business.entity.order.po.OrderEncasement;
+import com.sd.business.entity.order.po.OrderEncasementDetail;
 import com.sd.business.entity.order.po.OrderInfo;
-import com.sd.business.entity.order.vo.AssemblyDetailVo;
-import com.sd.business.entity.order.vo.OrderEncasementDetailVo;
-import com.sd.business.entity.order.vo.OrderEncasementVo;
+import com.sd.business.entity.sku.po.SkuSpec;
 import com.sd.business.service.express.ExpressDeliveryService;
-import com.sd.business.service.order.IssueBillService;
+import com.sd.business.service.order.OrderEncasementDetailService;
+import com.sd.business.service.order.OrderEncasementService;
 import com.sd.business.service.order.OrderService;
+import com.sd.business.service.sku.SkuSpecService;
 import com.sd.cainiao.entity.bo.BasicKeyBo;
 import com.sd.cainiao.entity.dto.ItemParamDto;
 import com.sd.cainiao.entity.dto.TakeNumParamDto;
@@ -24,9 +26,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.function.Function;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 @Service
@@ -36,91 +39,66 @@ public class IsticeServiceImpl implements IsticeService {
     private BasicKeyBo basicKeyBo;
 
     @Autowired
-    private IssueBillService issueBillService;
-
-    @Autowired
     private OrderService orderService;
 
     @Autowired
     private ExpressDeliveryService expressDeliveryService;
 
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public synchronized List<Map<String, Object>> takeNumBatch(List<Long> orderIdList) {
-
-        if (orderIdList.size() == 0) {
-            return Collections.emptyList();
-        }
-
-        List<OrderInfo> orderInfoList = orderService.list(q -> q
-                .in(BaseIdPo::getId, orderIdList)
-                .in(OrderInfo::getStatus, OrderStatusEnum.IN_PRODUCTION.getKey(), OrderStatusEnum.COMPLETION_PRODUCTION.getKey())
-        );
-
-        List<Long> expressDeliveryIdList = orderInfoList.stream().map(OrderInfo::getExpressDeliveryId).collect(Collectors.toList());
-        List<ExpressDelivery> expressDeliveries = expressDeliveryService.listByIds(expressDeliveryIdList);
-        Map<Long, ExpressDelivery> expressDeliveriesMap = expressDeliveries.stream().collect(Collectors.toMap(BaseIdPo::getId, Function.identity()));
-
-        Map<Long, AssemblyDetailVo> map = new HashMap<>();
-
-        for (OrderInfo orderInfo : orderInfoList) {
-
-            ExpressDelivery expressDelivery = expressDeliveriesMap.get(orderInfo.getExpressDeliveryId());
-            if (expressDelivery == null) {
-                throw new ServiceException("订单 " + orderInfo.getCode() + " 没有找到快递网点信息,打印快递单失败");
-            }
-
-            AssemblyDetailVo assemblyDetailVo = issueBillService.assemblyDetail(orderInfo.getId());
+    @Autowired
+    private OrderEncasementService orderEncasementService;
 
-            for (AssemblyDetailVo.SkuInfo skuInfo : assemblyDetailVo.getSkuInfoList()) {
-                if (skuInfo.getSurplusQuantity().compareTo(BigDecimal.ZERO) > 0) {
-                    throw new ServiceException("订单 " + orderInfo.getCode() + " 未包装包裹,打印快递单失败");
-                }
-            }
+    @Autowired
+    private OrderEncasementDetailService orderEncasementDetailService;
 
-            map.put(orderInfo.getId(), assemblyDetailVo);
+    @Autowired
+    private SkuSpecService skuSpecService;
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public synchronized void takeNum(Long orderEncasementId) {
+        OrderEncasement orderEncasement = orderEncasementService.getById(orderEncasementId);
+        if (orderEncasement == null || StrUtil.isNotBlank(orderEncasement.getTrackingNumber())) {
+            return;
         }
 
-        for (OrderInfo orderInfo : orderInfoList) {
-            ExpressDelivery expressDelivery = expressDeliveriesMap.get(orderInfo.getExpressDeliveryId());
-
-            TakeNumParamDto takeNumParam = new TakeNumParamDto();
-            takeNumParam.setCpCode(expressDelivery.getExpressageCode());
-            takeNumParam.setName(expressDelivery.getName());
-            takeNumParam.setPhone(expressDelivery.getPhone());
-            takeNumParam.setMobile(expressDelivery.getPhone());
-            takeNumParam.setProvince(expressDelivery.getProvince());
-            takeNumParam.setCity(expressDelivery.getCity());
-            takeNumParam.setDistrict(expressDelivery.getDistrict());
-            takeNumParam.setDetail(expressDelivery.getAddress());
-            takeNumParam.setEmsTemplateUrl(expressDelivery.getTemplateUrl());
-
-            takeNumParam.setReceiveName(orderInfo.getConsignee());
-            takeNumParam.setReceiveMobile(orderInfo.getConsigneeNumber());
-            takeNumParam.setReceiveProvince(orderInfo.getProvince());
-            takeNumParam.setReceiveCity(orderInfo.getCity());
-            takeNumParam.setReceiveDistrict(orderInfo.getCounty());
-            takeNumParam.setReceiveDetail(orderInfo.getDetailedAddress());
-
-            AssemblyDetailVo assemblyDetailVo = map.get(orderInfo.getId());
-
-            for (OrderEncasementVo orderEncasementVo : assemblyDetailVo.getOrderEncasementList()) {
-                List<OrderEncasementDetailVo> orderEncasementDetailList = orderEncasementVo.getOrderEncasementDetailList();
-                List<ItemParamDto> itemParamList = orderEncasementDetailList.stream().map(item -> {
-                    ItemParamDto itemParam = new ItemParamDto();
-                    itemParam.setItemName(item.getSkuSpecName());
-                    itemParam.setItemCount(item.getQuantity().intValue());
-                    return itemParam;
-                }).collect(Collectors.toList());
-                takeNumParam.setItems(itemParamList);
-                List<WaybillCloudPrintResponse> waybillCloudPrintResponses = takeNum(takeNumParam);
-
-            }
+        Long orderId = orderEncasement.getOrderId();
+        OrderInfo orderInfo = orderService.getById(orderId);
+        ExpressDelivery expressDelivery = expressDeliveryService.getById(orderInfo.getExpressDeliveryId());
+        List<OrderEncasementDetail> orderEncasementDetailList = orderEncasementDetailService.list(q -> q.eq(OrderEncasementDetail::getOrderEncasementId, orderEncasementId));
+
+        List<Long> skuSpecIdList = orderEncasementDetailList.stream().map(OrderEncasementDetail::getSkuSpecId).distinct().collect(Collectors.toList());
+        Map<Long, String> skuSpecNameMap = skuSpecService.mapKV(BaseIdPo::getId, SkuSpec::getName, q -> q.in(BaseIdPo::getId, skuSpecIdList));
+
+        TakeNumParamDto takeNumParam = new TakeNumParamDto();
+        takeNumParam.setCpCode(expressDelivery.getExpressageCode());
+        takeNumParam.setName(expressDelivery.getName());
+        takeNumParam.setPhone(expressDelivery.getPhone());
+        takeNumParam.setMobile(expressDelivery.getPhone());
+        takeNumParam.setProvince(expressDelivery.getProvince());
+        takeNumParam.setCity(expressDelivery.getCity());
+        takeNumParam.setDistrict(expressDelivery.getDistrict());
+        takeNumParam.setDetail(expressDelivery.getAddress());
+        takeNumParam.setEmsTemplateUrl(expressDelivery.getTemplateUrl());
+
+        takeNumParam.setReceiveName(orderInfo.getConsignee());
+        takeNumParam.setReceiveMobile(orderInfo.getConsigneeNumber());
+        takeNumParam.setReceiveProvince(orderInfo.getProvince());
+        takeNumParam.setReceiveCity(orderInfo.getCity());
+        takeNumParam.setReceiveDistrict(orderInfo.getCounty());
+        takeNumParam.setReceiveDetail(orderInfo.getDetailedAddress());
+
+        List<ItemParamDto> itemParamList = orderEncasementDetailList.stream().map(item -> {
+            ItemParamDto itemParam = new ItemParamDto();
+            itemParam.setItemName(skuSpecNameMap.get(item.getBomSpecId()));
+            itemParam.setItemCount(item.getQuantity().intValue());
+            return itemParam;
+        }).collect(Collectors.toList());
+        takeNumParam.setItems(itemParamList);
 
-        }
+        List<WaybillCloudPrintResponse> waybillCloudPrintResponses = takeNum(takeNumParam);
 
-        return null;
+        orderEncasement.setTrackingNumber(waybillCloudPrintResponses.get(0).getWaybillCode());
+        orderEncasementService.updateById(orderEncasement);
     }
 
     public List<WaybillCloudPrintResponse> takeNum(TakeNumParamDto dto) {