24282 1 year ago
parent
commit
d7922b6a9a

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

@@ -38,6 +38,11 @@ public class OrderEncasement extends BasePo {
     private String trackingNumber;
 
     /**
+     * 快递打印内容
+     */
+    private String trackingContent;
+
+    /**
      * 长 cm
      */
     @NotNull(message = "长不能为空")

+ 7 - 7
sd-cainiao/src/main/java/com/sd/cainiao/config/BasicKeyConfig.java

@@ -13,17 +13,17 @@ public class BasicKeyConfig {
     public BasicKeyBo basicKeyBo() {
         String activeProfile = SpringUtil.getActiveProfile();
         BasicKeyBo basicKeyBo = new BasicKeyBo();
-        if (activeProfile.equals("prod")) {
+//        if (activeProfile.equals("prod")) {
             basicKeyBo.setUrl(BasicKeyConstant.PROD_URL);
             basicKeyBo.setAppKey(BasicKeyConstant.PROD_APP_KEY);
             basicKeyBo.setSecretKey(BasicKeyConstant.PROD_SECRET_KEY);
             basicKeyBo.setToken(BasicKeyConstant.PROD_TOKEN);
-        } else {
-            basicKeyBo.setUrl(BasicKeyConstant.DEV_URL);
-            basicKeyBo.setAppKey(BasicKeyConstant.DEV_APP_KEY);
-            basicKeyBo.setSecretKey(BasicKeyConstant.DEV_SECRET_KEY);
-            basicKeyBo.setToken(BasicKeyConstant.DEV_TOKEN);
-        }
+//        } else {
+//            basicKeyBo.setUrl(BasicKeyConstant.DEV_URL);
+//            basicKeyBo.setAppKey(BasicKeyConstant.DEV_APP_KEY);
+//            basicKeyBo.setSecretKey(BasicKeyConstant.DEV_SECRET_KEY);
+//            basicKeyBo.setToken(BasicKeyConstant.DEV_TOKEN);
+//        }
         return basicKeyBo;
     }
 

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

@@ -1,8 +1,8 @@
 package com.sd.cainiao.controller;
 
+import com.alibaba.fastjson2.JSONObject;
 import com.ruoyi.common.core.domain.BaseSelectDto;
 import com.sd.cainiao.service.IsticeService;
-import com.taobao.pac.sdk.cp.dataobject.response.TMS_WAYBILL_GET.WaybillCloudPrintResponse;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -29,7 +29,7 @@ public class CaiNiaoController {
      * 赋值快递面单
      */
     @PostMapping("/takeNum")
-    public WaybillCloudPrintResponse takeNum(@RequestBody BaseSelectDto dto) {
+    public JSONObject takeNum(@RequestBody BaseSelectDto dto) {
         return isticeService.takeNum(dto.getId());
     }
 

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

@@ -1,12 +1,12 @@
 package com.sd.cainiao.service;
 
-import com.taobao.pac.sdk.cp.dataobject.response.TMS_WAYBILL_GET.WaybillCloudPrintResponse;
+import com.alibaba.fastjson2.JSONObject;
 
 public interface IsticeService {
 
     /**
      * 通过物流云获取电子面单--取号
      */
-    WaybillCloudPrintResponse takeNum(Long orderEncasementId);
+    JSONObject takeNum(Long orderEncasementId);
 
 }

+ 28 - 9
sd-cainiao/src/main/java/com/sd/cainiao/service/impl/IsticeServiceImpl.java

@@ -1,6 +1,8 @@
 package com.sd.cainiao.service.impl;
 
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.ruoyi.common.core.domain.BaseIdPo;
 import com.ruoyi.common.exception.ServiceException;
 import com.sd.business.entity.express.po.ExpressDelivery;
@@ -26,10 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Service
@@ -58,10 +57,19 @@ public class IsticeServiceImpl implements IsticeService {
      */
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public synchronized WaybillCloudPrintResponse takeNum(Long orderEncasementId) {
+    public synchronized JSONObject takeNum(Long orderEncasementId) {
         OrderEncasement orderEncasement = orderEncasementService.getById(orderEncasementId);
-        if (orderEncasement == null || StrUtil.isNotBlank(orderEncasement.getTrackingNumber())) {
-            return null;
+
+        if (orderEncasement == null) {
+            throw new ServiceException("未知装箱订单id");
+        }
+
+        if (StrUtil.isNotBlank(orderEncasement.getTrackingContent())) {
+            return JSONObject.parseObject(orderEncasement.getTrackingContent());
+        }
+
+        if (StrUtil.isNotBlank(orderEncasement.getTrackingNumber())) {
+            throw new ServiceException("手动输入快递单号无法打印订单");
         }
 
         Long orderId = orderEncasement.getOrderId();
@@ -90,10 +98,15 @@ public class IsticeServiceImpl implements IsticeService {
         takeNumParam.setReceiveDistrict(orderInfo.getCounty());
         takeNumParam.setReceiveDetail(orderInfo.getDetailedAddress());
 
+        takeNumParam.setObjectId(IdWorker.getIdStr());
+        takeNumParam.setOrderNum(IdWorker.getIdStr());
+
+        StringJoiner joiner = new StringJoiner("\n");
         List<ItemParamDto> itemParamList = orderEncasementDetailList.stream().map(item -> {
             ItemParamDto itemParam = new ItemParamDto();
-            itemParam.setItemName(skuSpecNameMap.get(item.getBomSpecId()));
+            itemParam.setItemName(skuSpecNameMap.get(item.getSkuSpecId()));
             itemParam.setItemCount(item.getQuantity().intValue());
+            joiner.add(itemParam.getItemName() + "*" + itemParam.getItemCount());
             return itemParam;
         }).collect(Collectors.toList());
         takeNumParam.setItems(itemParamList);
@@ -101,10 +114,16 @@ public class IsticeServiceImpl implements IsticeService {
         List<WaybillCloudPrintResponse> waybillCloudPrintResponses = takeNum(takeNumParam);
         WaybillCloudPrintResponse waybillCloudPrintResponse = waybillCloudPrintResponses.get(0);
 
+        //拼接模板
+        JSONObject jsonObject = JSONObject.parseObject(waybillCloudPrintResponse.getPrintData());
+        jsonObject.put("detail", joiner.toString());
+        jsonObject.put("customTemplateUrl", expressDelivery.getCustomTemplateUrl());
+
         orderEncasement.setTrackingNumber(waybillCloudPrintResponse.getWaybillCode());
+        orderEncasement.setTrackingContent(jsonObject.toString());
         orderEncasementService.updateById(orderEncasement);
 
-        return waybillCloudPrintResponse;
+        return jsonObject;
     }
 
     public List<WaybillCloudPrintResponse> takeNum(TakeNumParamDto dto) {