Browse Source

feat: 京东物流接口对接;京东物流回调接口开发;

hanchaolong 1 tuần trước cách đây
mục cha
commit
8e5390a923
21 tập tin đã thay đổi với 752 bổ sung219 xóa
  1. 78 0
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/callback/JDPushOrderFeeCallback.java
  2. 64 0
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/callback/JDPushOrderStatausCallback.java
  3. 15 0
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/constant/RedisCacheConstants.java
  4. 15 16
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/controller/BizInancialFeeItemsController.java
  5. 1 1
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/domain/BizInancialFeeItems.java
  6. 56 0
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/dto/JDOrderFeeRequestDTO.java
  7. 50 0
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/dto/JDOrderStatusRequestDTO.java
  8. 28 0
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/enums/OrderStatusEnum.java
  9. 11 11
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/mapper/BizInancialFeeItemsMapper.java
  10. 7 0
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/mapper/BizWaybillOrderMapper.java
  11. 129 0
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/FeeItemsCacheService.java
  12. 68 0
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/IBizFinancialFeeItemsService.java
  13. 0 61
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/IBizInancialFeeItemsService.java
  14. 7 0
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/IBizWaybillOrderService.java
  15. 112 0
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/BizFinancialFeeItemsServiceImpl.java
  16. 0 96
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/BizInancialFeeItemsServiceImpl.java
  17. 5 0
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/BizWaybillOrderServiceImpl.java
  18. 6 6
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/FeePushService.java
  19. 47 12
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/JDLogisticsService.java
  20. 16 16
      jd-logistics-modules/jd-logistics-system/src/main/resources/mapper/logistics/BizInancialFeeItemsMapper.xml
  21. 37 0
      jd-logistics-modules/jd-logistics-system/src/main/resources/mapper/logistics/BizWaybillOrderMapper.xml

+ 78 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/callback/JDPushOrderFeeCallback.java

@@ -0,0 +1,78 @@
+package com.ruoyi.logistics.callback;
+
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.redis.service.RedisService;
+import com.ruoyi.logistics.domain.BizFinancialFeeItems;
+import com.ruoyi.logistics.domain.BizWaybillCostDetails;
+import com.ruoyi.logistics.domain.BizWaybillOrder;
+import com.ruoyi.logistics.dto.JDOrderFeeRequestDTO;
+import com.ruoyi.logistics.service.FeeItemsCacheService;
+import com.ruoyi.logistics.service.IBizWaybillCostDetailsService;
+import com.ruoyi.logistics.service.IBizWaybillOrderService;
+import com.ruoyi.system.api.domain.SysDept;
+import com.ruoyi.system.service.ISysDeptService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+@RestController
+@RequestMapping("/callback/jd")
+public class JDPushOrderFeeCallback {
+
+    @Autowired
+    private IBizWaybillOrderService bizWaybillOrderService;
+
+    @Autowired
+    private IBizWaybillCostDetailsService bizWaybillCostDetailsService;
+
+    @Autowired
+    private ISysDeptService sysDeptService;
+
+    @Autowired
+    private FeeItemsCacheService feeItemsCacheService;
+
+    @RequestMapping("/fee")
+    public AjaxResult fee(@RequestBody JDOrderFeeRequestDTO request) {
+
+        // 根据运单号查询订单
+        BizWaybillOrder query = new BizWaybillOrder();
+        query.setExternalWaybillNo(request.getWaybillCode());
+        BizWaybillOrder bizWaybillOrder = bizWaybillOrderService.selectBizWaybillOrderByQuery(query);
+        if (bizWaybillOrder == null) {
+            return AjaxResult.error("订单不存在");
+        }
+        SysDept sysDept = sysDeptService.selectDeptById(bizWaybillOrder.getDeptId());
+
+        List<BizWaybillCostDetails> details = new ArrayList<>();
+        request.getCommonActualFeeInfoDetails().forEach(item -> {
+            BizWaybillCostDetails costDetail = new BizWaybillCostDetails();
+            costDetail.setWaybillId(bizWaybillOrder.getWaybillId());
+            costDetail.setExternalWaybillNo(bizWaybillOrder.getExternalWaybillNo());
+
+            // 匹配费用类型项
+            BizFinancialFeeItems feeItemByExtFeeCode = feeItemsCacheService.getFeeItemByExtFeeCode(item.getFeeType());
+            if (feeItemByExtFeeCode != null) {
+                costDetail.setFeeItemCode(feeItemByExtFeeCode.getFeeItemCode());
+                costDetail.setFeeItemName(feeItemByExtFeeCode.getFeeItemName());
+                costDetail.setFeeName(item.getFeeTypeName());
+                costDetail.setAmount(item.getStandardAmount());
+                costDetail.setRateAmount(item.getStandardAmount().multiply(new BigDecimal(sysDept.getRateValue())).setScale(2, BigDecimal.ROUND_HALF_UP));
+                costDetail.setDeptId(bizWaybillOrder.getDeptId());
+                costDetail.setUserId(bizWaybillOrder.getUserId());
+            }
+
+            details.add(costDetail);
+        });
+
+        details.forEach(detail -> {
+            bizWaybillCostDetailsService.insertBizWaybillCostDetails(detail);
+        });
+
+        return AjaxResult.success().put("message", "成功");
+    }
+}

+ 64 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/callback/JDPushOrderStatausCallback.java

@@ -0,0 +1,64 @@
+package com.ruoyi.logistics.callback;
+
+import com.ruoyi.common.core.utils.DateUtils;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.logistics.domain.BizWaybillOrder;
+import com.ruoyi.logistics.dto.JDOrderStatusRequestDTO;
+import com.ruoyi.logistics.enums.OrderStatusEnum;
+import com.ruoyi.logistics.service.IBizWaybillOrderService;
+import lombok.extern.slf4j.Slf4j;
+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;
+
+@Slf4j
+@RestController
+@RequestMapping("/callback/jd")
+public class JDPushOrderStatausCallback {
+
+    @Autowired
+    private IBizWaybillOrderService bizWaybillOrderService;
+
+    @PostMapping("/orderStatus")
+    public AjaxResult orderStatus(@RequestBody JDOrderStatusRequestDTO request) {
+        log.info("京东物流运单状态回调,参数:{}", request.toString());
+
+        // 根据运单号查询订单
+        BizWaybillOrder query = new BizWaybillOrder();
+        query.setWaybillNo(request.getOrderId());
+        query.setExternalWaybillNo(request.getWaybillCode());
+        BizWaybillOrder bizWaybillOrder = bizWaybillOrderService.selectBizWaybillOrderByQuery(query);
+        if (bizWaybillOrder == null) {
+            return AjaxResult.error("订单不存在");
+        }
+        Boolean update = Boolean.FALSE;
+        switch (request.getState()) {
+            case "200001"://揽收
+                bizWaybillOrder.setOrderStatus(OrderStatusEnum.ORDER_STATUS_1.getCode());
+                bizWaybillOrder.setPickupTime(DateUtils.getNowDate());
+                update = Boolean.TRUE;
+                break;
+            case "200075"://运输
+                bizWaybillOrder.setOrderStatus(OrderStatusEnum.ORDER_STATUS_3.getCode());
+                update = Boolean.TRUE;
+                break;
+            case "11000"://派送
+                bizWaybillOrder.setOrderStatus(OrderStatusEnum.ORDER_STATUS_4.getCode());
+                bizWaybillOrder.setDeliveryTime(DateUtils.getNowDate());
+                update = Boolean.TRUE;
+                break;
+            case "10034"://妥投
+                bizWaybillOrder.setOrderStatus(OrderStatusEnum.ORDER_STATUS_5.getCode());
+                bizWaybillOrder.setSignTime(DateUtils.getNowDate());
+                update = Boolean.TRUE;
+                break;
+        }
+        if (update) {
+            bizWaybillOrderService.updateBizWaybillOrder(bizWaybillOrder);
+        }
+
+        return AjaxResult.success();
+    }
+}

+ 15 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/constant/RedisCacheConstants.java

@@ -0,0 +1,15 @@
+package com.ruoyi.logistics.constant;
+
+/**
+ * Redis缓存常量
+ * 
+ * @author lydgt
+ * @date 2026-02-04
+ */
+public class RedisCacheConstants {
+    
+    /**
+     * 费用类型缓存KEY
+     */
+    public static final String FINANCIAL_FEE_ITEM_CACHE_KEY = "financial_fee_item_cache";
+}

+ 15 - 16
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/controller/BizInancialFeeItemsController.java

@@ -1,7 +1,6 @@
 package com.ruoyi.logistics.controller;
 
 import java.util.List;
-import java.io.IOException;
 import javax.servlet.http.HttpServletResponse;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -15,8 +14,8 @@ import org.springframework.web.bind.annotation.RestController;
 import com.ruoyi.common.log.annotation.Log;
 import com.ruoyi.common.log.enums.BusinessType;
 import com.ruoyi.common.security.annotation.RequiresPermissions;
-import com.ruoyi.logistics.domain.BizInancialFeeItems;
-import com.ruoyi.logistics.service.IBizInancialFeeItemsService;
+import com.ruoyi.logistics.domain.BizFinancialFeeItems;
+import com.ruoyi.logistics.service.IBizFinancialFeeItemsService;
 import com.ruoyi.common.core.web.controller.BaseController;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.core.utils.poi.ExcelUtil;
@@ -30,20 +29,20 @@ import com.ruoyi.common.core.web.page.TableDataInfo;
  */
 @RestController
 @RequestMapping("/inancialFee")
-public class BizInancialFeeItemsController extends BaseController
+public class BizFinancialFeeItemsController extends BaseController
 {
     @Autowired
-    private IBizInancialFeeItemsService bizInancialFeeItemsService;
+    private IBizFinancialFeeItemsService BizFinancialFeeItemsService;
 
     /**
      * 查询费用类型管理列表
      */
     @RequiresPermissions("system:inancialFee:list")
     @GetMapping("/list")
-    public TableDataInfo list(BizInancialFeeItems bizInancialFeeItems)
+    public TableDataInfo list(BizFinancialFeeItems bizFinancialFeeItems)
     {
         startPage();
-        List<BizInancialFeeItems> list = bizInancialFeeItemsService.selectBizInancialFeeItemsList(bizInancialFeeItems);
+        List<BizFinancialFeeItems> list = BizFinancialFeeItemsService.selectBizFinancialFeeItemsList(bizFinancialFeeItems);
         return getDataTable(list);
     }
 
@@ -53,10 +52,10 @@ public class BizInancialFeeItemsController extends BaseController
     @RequiresPermissions("system:inancialFee:export")
     @Log(title = "费用类型管理", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
-    public void export(HttpServletResponse response, BizInancialFeeItems bizInancialFeeItems)
+    public void export(HttpServletResponse response, BizFinancialFeeItems bizFinancialFeeItems)
     {
-        List<BizInancialFeeItems> list = bizInancialFeeItemsService.selectBizInancialFeeItemsList(bizInancialFeeItems);
-        ExcelUtil<BizInancialFeeItems> util = new ExcelUtil<BizInancialFeeItems>(BizInancialFeeItems.class);
+        List<BizFinancialFeeItems> list = BizFinancialFeeItemsService.selectBizFinancialFeeItemsList(bizFinancialFeeItems);
+        ExcelUtil<BizFinancialFeeItems> util = new ExcelUtil<BizFinancialFeeItems>(BizFinancialFeeItems.class);
         util.exportExcel(response, list, "费用类型管理数据");
     }
 
@@ -67,7 +66,7 @@ public class BizInancialFeeItemsController extends BaseController
     @GetMapping(value = "/{feeItemId}")
     public AjaxResult getInfo(@PathVariable("feeItemId") Long feeItemId)
     {
-        return success(bizInancialFeeItemsService.selectBizInancialFeeItemsByFeeItemId(feeItemId));
+        return success(BizFinancialFeeItemsService.selectBizFinancialFeeItemsByFeeItemId(feeItemId));
     }
 
     /**
@@ -76,9 +75,9 @@ public class BizInancialFeeItemsController extends BaseController
     @RequiresPermissions("system:inancialFee:add")
     @Log(title = "费用类型管理", businessType = BusinessType.INSERT)
     @PostMapping
-    public AjaxResult add(@RequestBody BizInancialFeeItems bizInancialFeeItems)
+    public AjaxResult add(@RequestBody BizFinancialFeeItems bizFinancialFeeItems)
     {
-        return toAjax(bizInancialFeeItemsService.insertBizInancialFeeItems(bizInancialFeeItems));
+        return toAjax(BizFinancialFeeItemsService.insertBizFinancialFeeItems(bizFinancialFeeItems));
     }
 
     /**
@@ -87,9 +86,9 @@ public class BizInancialFeeItemsController extends BaseController
     @RequiresPermissions("system:inancialFee:edit")
     @Log(title = "费用类型管理", businessType = BusinessType.UPDATE)
     @PutMapping
-    public AjaxResult edit(@RequestBody BizInancialFeeItems bizInancialFeeItems)
+    public AjaxResult edit(@RequestBody BizFinancialFeeItems bizFinancialFeeItems)
     {
-        return toAjax(bizInancialFeeItemsService.updateBizInancialFeeItems(bizInancialFeeItems));
+        return toAjax(BizFinancialFeeItemsService.updateBizFinancialFeeItems(bizFinancialFeeItems));
     }
 
     /**
@@ -100,6 +99,6 @@ public class BizInancialFeeItemsController extends BaseController
 	@DeleteMapping("/{feeItemIds}")
     public AjaxResult remove(@PathVariable Long[] feeItemIds)
     {
-        return toAjax(bizInancialFeeItemsService.deleteBizInancialFeeItemsByFeeItemIds(feeItemIds));
+        return toAjax(BizFinancialFeeItemsService.deleteBizFinancialFeeItemsByFeeItemIds(feeItemIds));
     }
 }

+ 1 - 1
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/domain/BizInancialFeeItems.java

@@ -11,7 +11,7 @@ import com.ruoyi.common.core.web.domain.BaseEntity;
  * @author RuiJing
  * @date 2026-01-29
  */
-public class BizInancialFeeItems extends BaseEntity
+public class BizFinancialFeeItems extends BaseEntity
 {
     private static final long serialVersionUID = 1L;
 

+ 56 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/dto/JDOrderFeeRequestDTO.java

@@ -0,0 +1,56 @@
+package com.ruoyi.logistics.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class JDOrderFeeRequestDTO {
+
+    // 京东订单号
+    private String orderCode;
+    // 京东订单号
+    private String waybillCode;
+    // 币种 枚举:CNY(人民币)、USD(美元)、EUR(欧元)、JPY(日元)、HKD(港币)、GBP(英镑)
+    private String currencyCode;
+    // 计费重量
+    private BigDecimal weight;
+    // 计费重量单位KG
+    private String weightUnit;
+    // 下单重量
+    private String orderWeight;
+    // 下单体积
+    private String orderVolume;
+    // 实际重量
+    private String actualOrderWeight;
+    // 实际体积
+    private String actualOrderVolume;
+    // 包裹数量
+    private String packNum;
+    // 总标准价格
+    private BigDecimal totalStandardAmount;
+    // 折后总价格
+    private BigDecimal totalAfterBeforehandDiscount;
+    // 保价金额
+    private BigDecimal guaranteeMoney;
+    // 是否终态(拒收/妥投),是:true,否:空
+    private Boolean isFinalState;
+    // 费用明细列表
+    private List<CommonActualFeeInfoDetail> commonActualFeeInfoDetails;
+
+    @Data
+    public static class CommonActualFeeInfoDetail {
+
+        // 费用类型:122-快运运费;QIPSF-快递运费;QLBJ-快递保价费;QLDS-快递代收手续费;QLQDFH-快递签单返还;QLJZD-京尊达服务费;QLHCF-快递耗材;QLDZQD-快递电子签单,字段长度1-10
+        private String feeType;
+        // 费用类型名称:122-快运运费;QIPSF-快递运费;QLBJ-快递保价费;QLDS-快递代收手续费;QLQDFH-快递签单返还;QLJZD-京尊达服务费;QLHCF-快递耗材;QLDZQD-快递电子签单,长度1-20
+        private String feeTypeName;
+        // 标准金额
+        private BigDecimal standardAmount;
+        // 币种
+        private String currencyCode;
+        // 折后金额
+        private BigDecimal afterBeforehandDiscount;
+    }
+}

+ 50 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/dto/JDOrderStatusRequestDTO.java

@@ -0,0 +1,50 @@
+package com.ruoyi.logistics.dto;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class JDOrderStatusRequestDTO {
+
+    // 节点名称
+    private String operationTitle;
+    // 一级分类编码
+    private Integer category;
+    // 一级分类名称
+    private String categoryName;
+    // 签收类型
+    private String signTypeName;
+    // 节点编码
+    private String state;
+    // 路由详细地址
+    private String routeAddress;
+    // 路由 省
+    private String routeProvinceName;
+    // 路由 市
+    private String routeCityName;
+    // 路由 区
+    private String routeDistrictName;
+    // 路由 县
+    private String routeStreetName;
+    // 小哥名称
+    private String operatorName;
+    // 小哥电话
+    private String operatorPhone;
+    // 京东物流运单号
+    private String waybillCode;
+    // 商家订单号
+    private String orderId;
+    // 操作时间
+    private Date operationTime;
+    // 节点描述
+    private String operationRemark;
+    // 机构编码
+    private String operateSiteId;
+    // 机构编码名称
+    private String operateSite;
+    // 京东换单新运单号
+    private String newWaybillCode;
+    // 取消原因
+    private String cancelReason;
+}

+ 28 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/enums/OrderStatusEnum.java

@@ -0,0 +1,28 @@
+package com.ruoyi.logistics.enums;
+
+public enum OrderStatusEnum {
+
+    ORDER_STATUS_1(1, "待揽件"),
+    ORDER_STATUS_2(2, "已揽件"),
+    ORDER_STATUS_3(3, "运输中"),
+    ORDER_STATUS_4(4, "派送中"),
+    ORDER_STATUS_5(5, "已签收"),
+    ORDER_STATUS_6(6, "已取消");
+
+
+    private int code;
+    private String desc;
+
+    OrderStatusEnum(int code, String desc) {
+        this.code = code;
+        this.desc = desc;
+    }
+
+    public int getCode() {
+        return code;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+}

+ 11 - 11
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/mapper/BizInancialFeeItemsMapper.java

@@ -1,7 +1,7 @@
 package com.ruoyi.logistics.mapper;
 
 import java.util.List;
-import com.ruoyi.logistics.domain.BizInancialFeeItems;
+import com.ruoyi.logistics.domain.BizFinancialFeeItems;
 
 /**
  * 费用类型管理Mapper接口
@@ -9,7 +9,7 @@ import com.ruoyi.logistics.domain.BizInancialFeeItems;
  * @author RuiJing
  * @date 2026-01-29
  */
-public interface BizInancialFeeItemsMapper 
+public interface BizFinancialFeeItemsMapper 
 {
     /**
      * 查询费用类型管理
@@ -17,31 +17,31 @@ public interface BizInancialFeeItemsMapper
      * @param feeItemId 费用类型管理主键
      * @return 费用类型管理
      */
-    public BizInancialFeeItems selectBizInancialFeeItemsByFeeItemId(Long feeItemId);
+    public BizFinancialFeeItems selectBizFinancialFeeItemsByFeeItemId(Long feeItemId);
 
     /**
      * 查询费用类型管理列表
      * 
-     * @param bizInancialFeeItems 费用类型管理
+     * @param bizFinancialFeeItems 费用类型管理
      * @return 费用类型管理集合
      */
-    public List<BizInancialFeeItems> selectBizInancialFeeItemsList(BizInancialFeeItems bizInancialFeeItems);
+    public List<BizFinancialFeeItems> selectBizFinancialFeeItemsList(BizFinancialFeeItems bizFinancialFeeItems);
 
     /**
      * 新增费用类型管理
      * 
-     * @param bizInancialFeeItems 费用类型管理
+     * @param bizFinancialFeeItems 费用类型管理
      * @return 结果
      */
-    public int insertBizInancialFeeItems(BizInancialFeeItems bizInancialFeeItems);
+    public int insertBizFinancialFeeItems(BizFinancialFeeItems bizFinancialFeeItems);
 
     /**
      * 修改费用类型管理
      * 
-     * @param bizInancialFeeItems 费用类型管理
+     * @param bizFinancialFeeItems 费用类型管理
      * @return 结果
      */
-    public int updateBizInancialFeeItems(BizInancialFeeItems bizInancialFeeItems);
+    public int updateBizFinancialFeeItems(BizFinancialFeeItems bizFinancialFeeItems);
 
     /**
      * 删除费用类型管理
@@ -49,7 +49,7 @@ public interface BizInancialFeeItemsMapper
      * @param feeItemId 费用类型管理主键
      * @return 结果
      */
-    public int deleteBizInancialFeeItemsByFeeItemId(Long feeItemId);
+    public int deleteBizFinancialFeeItemsByFeeItemId(Long feeItemId);
 
     /**
      * 批量删除费用类型管理
@@ -57,5 +57,5 @@ public interface BizInancialFeeItemsMapper
      * @param feeItemIds 需要删除的数据主键集合
      * @return 结果
      */
-    public int deleteBizInancialFeeItemsByFeeItemIds(Long[] feeItemIds);
+    public int deleteBizFinancialFeeItemsByFeeItemIds(Long[] feeItemIds);
 }

+ 7 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/mapper/BizWaybillOrderMapper.java

@@ -58,4 +58,11 @@ public interface BizWaybillOrderMapper
      * @return 结果
      */
     public int deleteBizWaybillOrderByWaybillIds(Long[] waybillIds);
+
+    /**
+     * 根据查询条件查询运单详情
+     * @param query
+     * @return
+     */
+    public BizWaybillOrder selectBizWaybillOrderByQuery(BizWaybillOrder query);
 }

+ 129 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/FeeItemsCacheService.java

@@ -0,0 +1,129 @@
+package com.ruoyi.logistics.service;
+
+import com.ruoyi.common.redis.service.RedisService;
+import com.ruoyi.logistics.constant.RedisCacheConstants;
+import com.ruoyi.logistics.domain.BizFinancialFeeItems;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PostConstruct;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 费用类型缓存服务
+ * 
+ * @author lydgt
+ * @date 2026-02-04
+ */
+@Service
+public class FeeItemsCacheService {
+
+    private static final Logger log = LoggerFactory.getLogger(FeeItemsCacheService.class);
+
+    @Autowired
+    private IBizFinancialFeeItemsService BizFinancialFeeItemsService;
+
+    @Autowired
+    private RedisService redisService;
+
+    /**
+     * 初始化费用类型数据到Redis
+     */
+    @PostConstruct
+    public void initFeeItemsCache() {
+        loadFeeItemsToRedis();
+    }
+
+    /**
+     * 加载费用类型数据到Redis中
+     */
+    public void loadFeeItemsToRedis() {
+        try {
+            log.info("开始加载费用类型数据到Redis缓存...");
+            
+            // 查询所有费用类型数据
+            List<BizFinancialFeeItems> feeItemsList = BizFinancialFeeItemsService.selectAllBizFinancialFeeItems();
+            
+            if (feeItemsList != null && !feeItemsList.isEmpty()) {
+                // 创建Map用于存储费用类型数据,key为extFeeCode,value为BizFinancialFeeItems对象
+                Map<String, BizFinancialFeeItems> feeItemsMap = new HashMap<>();
+                
+                for (BizFinancialFeeItems feeItem : feeItemsList) {
+                    if (feeItem.getExtFeeCode() != null) {
+                        feeItemsMap.put(feeItem.getExtFeeCode(), feeItem);
+                    }
+                }
+                
+                // 清除旧的缓存数据
+                redisService.deleteObject(RedisCacheConstants.FINANCIAL_FEE_ITEM_CACHE_KEY);
+                
+                // 将费用类型数据保存到Redis中
+                if (!feeItemsMap.isEmpty()) {
+                    redisService.setCacheMap(RedisCacheConstants.FINANCIAL_FEE_ITEM_CACHE_KEY, feeItemsMap);
+                    log.info("成功加载{}条费用类型数据到Redis缓存", feeItemsMap.size());
+                } else {
+                    log.info("没有找到有效的费用类型数据");
+                }
+            } else {
+                log.info("没有找到费用类型数据");
+            }
+        } catch (Exception e) {
+            log.error("加载费用类型数据到Redis缓存失败", e);
+        }
+    }
+
+    /**
+     * 根据外部费用编码获取费用类型信息
+     * 
+     * @param extFeeCode 外部费用编码
+     * @return 费用类型信息
+     */
+    public BizFinancialFeeItems getFeeItemByExtFeeCode(String extFeeCode) {
+        if (extFeeCode == null) {
+            return null;
+        }
+        
+        Map<String, BizFinancialFeeItems> feeItemsMap = getFeeItemsMapFromRedis();
+        if (feeItemsMap != null) {
+            return feeItemsMap.get(extFeeCode);
+        }
+        
+        return null;
+    }
+
+    /**
+     * 从Redis获取费用类型Map
+     * 
+     * @return 费用类型Map
+     */
+    public Map<String, BizFinancialFeeItems> getFeeItemsMapFromRedis() {
+        return redisService.getCacheMap(RedisCacheConstants.FINANCIAL_FEE_ITEM_CACHE_KEY);
+    }
+
+    /**
+     * 更新缓存中的单个费用类型数据
+     * 
+     * @param extFeeCode 外部费用编码
+     * @param feeItem 费用类型对象
+     */
+    public void updateFeeItemInCache(String extFeeCode, BizFinancialFeeItems feeItem) {
+        if (extFeeCode != null && feeItem != null) {
+            redisService.setCacheMapValue(RedisCacheConstants.FINANCIAL_FEE_ITEM_CACHE_KEY, extFeeCode, feeItem);
+        }
+    }
+
+    /**
+     * 删除缓存中的费用类型数据
+     * 
+     * @param extFeeCode 外部费用编码
+     */
+    public void removeFeeItemFromCache(String extFeeCode) {
+        if (extFeeCode != null) {
+            redisService.deleteCacheMapValue(RedisCacheConstants.FINANCIAL_FEE_ITEM_CACHE_KEY, extFeeCode);
+        }
+    }
+}

+ 68 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/IBizFinancialFeeItemsService.java

@@ -0,0 +1,68 @@
+package com.ruoyi.logistics.service;
+
+import java.util.List;
+import com.ruoyi.logistics.domain.BizFinancialFeeItems;
+
+/**
+ * 费用类型管理Service接口
+ * 
+ * @author RuiJing
+ * @date 2026-01-29
+ */
+public interface IBizFinancialFeeItemsService 
+{
+    /**
+     * 查询费用类型管理
+     * 
+     * @param feeItemId 费用类型管理主键
+     * @return 费用类型管理
+     */
+    public BizFinancialFeeItems selectBizFinancialFeeItemsByFeeItemId(Long feeItemId);
+
+    /**
+     * 查询费用类型管理列表
+     * 
+     * @param bizFinancialFeeItems 费用类型管理
+     * @return 费用类型管理集合
+     */
+    public List<BizFinancialFeeItems> selectBizFinancialFeeItemsList(BizFinancialFeeItems bizFinancialFeeItems);
+
+    /**
+     * 新增费用类型管理
+     * 
+     * @param bizFinancialFeeItems 费用类型管理
+     * @return 结果
+     */
+    public int insertBizFinancialFeeItems(BizFinancialFeeItems bizFinancialFeeItems);
+
+    /**
+     * 修改费用类型管理
+     * 
+     * @param bizFinancialFeeItems 费用类型管理
+     * @return 结果
+     */
+    public int updateBizFinancialFeeItems(BizFinancialFeeItems bizFinancialFeeItems);
+
+    /**
+     * 批量删除费用类型管理
+     * 
+     * @param feeItemIds 需要删除的费用类型管理主键集合
+     * @return 结果
+     */
+    public int deleteBizFinancialFeeItemsByFeeItemIds(Long[] feeItemIds);
+
+    /**
+     * 删除费用类型管理信息
+     * 
+     * @param feeItemId 费用类型管理主键
+     * @return 结果
+     */
+    public int deleteBizFinancialFeeItemsByFeeItemId(Long feeItemId);
+
+    /**
+     * 查询所有费用类型管理列表
+     * 
+     * @return 费用类型管理集合
+     */
+    public List<BizFinancialFeeItems> selectAllBizFinancialFeeItems();
+}

+ 0 - 61
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/IBizInancialFeeItemsService.java

@@ -1,61 +0,0 @@
-package com.ruoyi.logistics.service;
-
-import java.util.List;
-import com.ruoyi.logistics.domain.BizInancialFeeItems;
-
-/**
- * 费用类型管理Service接口
- * 
- * @author RuiJing
- * @date 2026-01-29
- */
-public interface IBizInancialFeeItemsService 
-{
-    /**
-     * 查询费用类型管理
-     * 
-     * @param feeItemId 费用类型管理主键
-     * @return 费用类型管理
-     */
-    public BizInancialFeeItems selectBizInancialFeeItemsByFeeItemId(Long feeItemId);
-
-    /**
-     * 查询费用类型管理列表
-     * 
-     * @param bizInancialFeeItems 费用类型管理
-     * @return 费用类型管理集合
-     */
-    public List<BizInancialFeeItems> selectBizInancialFeeItemsList(BizInancialFeeItems bizInancialFeeItems);
-
-    /**
-     * 新增费用类型管理
-     * 
-     * @param bizInancialFeeItems 费用类型管理
-     * @return 结果
-     */
-    public int insertBizInancialFeeItems(BizInancialFeeItems bizInancialFeeItems);
-
-    /**
-     * 修改费用类型管理
-     * 
-     * @param bizInancialFeeItems 费用类型管理
-     * @return 结果
-     */
-    public int updateBizInancialFeeItems(BizInancialFeeItems bizInancialFeeItems);
-
-    /**
-     * 批量删除费用类型管理
-     * 
-     * @param feeItemIds 需要删除的费用类型管理主键集合
-     * @return 结果
-     */
-    public int deleteBizInancialFeeItemsByFeeItemIds(Long[] feeItemIds);
-
-    /**
-     * 删除费用类型管理信息
-     * 
-     * @param feeItemId 费用类型管理主键
-     * @return 结果
-     */
-    public int deleteBizInancialFeeItemsByFeeItemId(Long feeItemId);
-}

+ 7 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/IBizWaybillOrderService.java

@@ -59,4 +59,11 @@ public interface IBizWaybillOrderService
      * @return 结果
      */
     public int deleteBizWaybillOrderByWaybillId(Long waybillId);
+
+    /**
+     * 根据订单信息查询运单详情
+     * @param query
+     * @return
+     */
+    public BizWaybillOrder selectBizWaybillOrderByQuery(BizWaybillOrder query);
 }

+ 112 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/BizFinancialFeeItemsServiceImpl.java

@@ -0,0 +1,112 @@
+package com.ruoyi.logistics.service.impl;
+
+import java.util.List;
+import com.ruoyi.common.core.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.logistics.mapper.BizFinancialFeeItemsMapper;
+import com.ruoyi.logistics.domain.BizFinancialFeeItems;
+import com.ruoyi.logistics.service.IBizFinancialFeeItemsService;
+import com.ruoyi.logistics.service.FeeItemsCacheService;
+
+/**
+ * 费用类型管理Service业务层处理
+ * 
+ * @author RuiJing
+ * @date 2026-01-29
+ */
+@Service
+public class BizFinancialFeeItemsServiceImpl implements IBizFinancialFeeItemsService 
+{
+    @Autowired
+    private BizFinancialFeeItemsMapper bizFinancialFeeItemsMapper;
+
+    /**
+     * 查询费用类型管理
+     * 
+     * @param feeItemId 费用类型管理主键
+     * @return 费用类型管理
+     */
+    @Override
+    public BizFinancialFeeItems selectBizFinancialFeeItemsByFeeItemId(Long feeItemId)
+    {
+        return bizFinancialFeeItemsMapper.selectBizFinancialFeeItemsByFeeItemId(feeItemId);
+    }
+
+    /**
+     * 查询费用类型管理列表
+     * 
+     * @param bizFinancialFeeItems 费用类型管理
+     * @return 费用类型管理
+     */
+    @Override
+    public List<BizFinancialFeeItems> selectBizFinancialFeeItemsList(BizFinancialFeeItems bizFinancialFeeItems)
+    {
+        return bizFinancialFeeItemsMapper.selectBizFinancialFeeItemsList(bizFinancialFeeItems);
+    }
+
+    /**
+     * 新增费用类型管理
+     * 
+     * @param bizFinancialFeeItems 费用类型管理
+     * @return 结果
+     */
+    @Override
+    public int insertBizFinancialFeeItems(BizFinancialFeeItems bizFinancialFeeItems)
+    {
+        bizFinancialFeeItems.setCreateTime(DateUtils.getNowDate());
+        int result = bizFinancialFeeItemsMapper.insertBizFinancialFeeItems(bizFinancialFeeItems);
+        return result;
+    }
+
+    /**
+     * 修改费用类型管理
+     * 
+     * @param bizFinancialFeeItems 费用类型管理
+     * @return 结果
+     */
+    @Override
+    public int updateBizFinancialFeeItems(BizFinancialFeeItems bizFinancialFeeItems)
+    {
+        bizFinancialFeeItems.setUpdateTime(DateUtils.getNowDate());
+        int result = bizFinancialFeeItemsMapper.updateBizFinancialFeeItems(bizFinancialFeeItems);
+        return result;
+    }
+
+    /**
+     * 批量删除费用类型管理
+     * 
+     * @param feeItemIds 需要删除的费用类型管理主键
+     * @return 结果
+     */
+    @Override
+    public int deleteBizFinancialFeeItemsByFeeItemIds(Long[] feeItemIds)
+    {
+        int result = bizFinancialFeeItemsMapper.deleteBizFinancialFeeItemsByFeeItemIds(feeItemIds);
+        return result;
+    }
+
+    /**
+     * 删除费用类型管理信息
+     * 
+     * @param feeItemId 费用类型管理主键
+     * @return 结果
+     */
+    @Override
+    public int deleteBizFinancialFeeItemsByFeeItemId(Long feeItemId)
+    {
+        int result = bizFinancialFeeItemsMapper.deleteBizFinancialFeeItemsByFeeItemId(feeItemId);
+        return result;
+    }
+
+    /**
+     * 查询所有费用类型管理列表
+     * 
+     * @return 费用类型管理集合
+     */
+    @Override
+    public List<BizFinancialFeeItems> selectAllBizFinancialFeeItems()
+    {
+        return bizFinancialFeeItemsMapper.selectBizFinancialFeeItemsList(new BizFinancialFeeItems());
+    }
+}

+ 0 - 96
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/BizInancialFeeItemsServiceImpl.java

@@ -1,96 +0,0 @@
-package com.ruoyi.logistics.service.impl;
-
-import java.util.List;
-import com.ruoyi.common.core.utils.DateUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import com.ruoyi.logistics.mapper.BizInancialFeeItemsMapper;
-import com.ruoyi.logistics.domain.BizInancialFeeItems;
-import com.ruoyi.logistics.service.IBizInancialFeeItemsService;
-
-/**
- * 费用类型管理Service业务层处理
- * 
- * @author RuiJing
- * @date 2026-01-29
- */
-@Service
-public class BizInancialFeeItemsServiceImpl implements IBizInancialFeeItemsService 
-{
-    @Autowired
-    private BizInancialFeeItemsMapper bizInancialFeeItemsMapper;
-
-    /**
-     * 查询费用类型管理
-     * 
-     * @param feeItemId 费用类型管理主键
-     * @return 费用类型管理
-     */
-    @Override
-    public BizInancialFeeItems selectBizInancialFeeItemsByFeeItemId(Long feeItemId)
-    {
-        return bizInancialFeeItemsMapper.selectBizInancialFeeItemsByFeeItemId(feeItemId);
-    }
-
-    /**
-     * 查询费用类型管理列表
-     * 
-     * @param bizInancialFeeItems 费用类型管理
-     * @return 费用类型管理
-     */
-    @Override
-    public List<BizInancialFeeItems> selectBizInancialFeeItemsList(BizInancialFeeItems bizInancialFeeItems)
-    {
-        return bizInancialFeeItemsMapper.selectBizInancialFeeItemsList(bizInancialFeeItems);
-    }
-
-    /**
-     * 新增费用类型管理
-     * 
-     * @param bizInancialFeeItems 费用类型管理
-     * @return 结果
-     */
-    @Override
-    public int insertBizInancialFeeItems(BizInancialFeeItems bizInancialFeeItems)
-    {
-        bizInancialFeeItems.setCreateTime(DateUtils.getNowDate());
-        return bizInancialFeeItemsMapper.insertBizInancialFeeItems(bizInancialFeeItems);
-    }
-
-    /**
-     * 修改费用类型管理
-     * 
-     * @param bizInancialFeeItems 费用类型管理
-     * @return 结果
-     */
-    @Override
-    public int updateBizInancialFeeItems(BizInancialFeeItems bizInancialFeeItems)
-    {
-        bizInancialFeeItems.setUpdateTime(DateUtils.getNowDate());
-        return bizInancialFeeItemsMapper.updateBizInancialFeeItems(bizInancialFeeItems);
-    }
-
-    /**
-     * 批量删除费用类型管理
-     * 
-     * @param feeItemIds 需要删除的费用类型管理主键
-     * @return 结果
-     */
-    @Override
-    public int deleteBizInancialFeeItemsByFeeItemIds(Long[] feeItemIds)
-    {
-        return bizInancialFeeItemsMapper.deleteBizInancialFeeItemsByFeeItemIds(feeItemIds);
-    }
-
-    /**
-     * 删除费用类型管理信息
-     * 
-     * @param feeItemId 费用类型管理主键
-     * @return 结果
-     */
-    @Override
-    public int deleteBizInancialFeeItemsByFeeItemId(Long feeItemId)
-    {
-        return bizInancialFeeItemsMapper.deleteBizInancialFeeItemsByFeeItemId(feeItemId);
-    }
-}

+ 5 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/BizWaybillOrderServiceImpl.java

@@ -122,4 +122,9 @@ public class BizWaybillOrderServiceImpl implements IBizWaybillOrderService
     {
         return bizWaybillOrderMapper.deleteBizWaybillOrderByWaybillId(waybillId);
     }
+
+    @Override
+    public BizWaybillOrder selectBizWaybillOrderByQuery(BizWaybillOrder query) {
+        return null;
+    }
 }

+ 6 - 6
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/FeePushService.java

@@ -2,7 +2,7 @@ package com.ruoyi.logistics.service.impl;
 
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.logistics.domain.*;
-import com.ruoyi.logistics.service.IBizInancialFeeItemsService;
+import com.ruoyi.logistics.service.IBizFinancialFeeItemsService;
 import com.ruoyi.logistics.service.IBizWaybillCostDetailsService;
 import com.ruoyi.logistics.service.IBizWaybillOrderService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,7 +26,7 @@ public class FeePushService {
     @Autowired
     private IBizWaybillOrderService bizWaybillOrderService;
     @Autowired
-    private IBizInancialFeeItemsService bizInancialFeeItemsService;
+    private IBizFinancialFeeItemsService BizFinancialFeeItemsService;
 
     @Autowired
     private IBizWaybillCostDetailsService bizWaybillCostDetailsService;
@@ -68,10 +68,10 @@ public class FeePushService {
                     BigDecimal feeAmt = fee.getFeeAmt();
                     //回调回来的 费用类型  还需与系统 费用类型表-biz_inancial_fee_items
                     String feeTypeCode = fee.getFeeTypeCode();
-                    BizInancialFeeItems bizInancialFeeItems= new BizInancialFeeItems();
-                    bizInancialFeeItems.setFeeItemCategory("sf");
-                    bizInancialFeeItems.setExtFeeCode(feeTypeCode);
-                    List<BizInancialFeeItems> feeItemsList=bizInancialFeeItemsService.selectBizInancialFeeItemsList(bizInancialFeeItems);
+                    BizFinancialFeeItems bizFinancialFeeItems = new BizFinancialFeeItems();
+                    bizFinancialFeeItems.setFeeItemCategory("sf");
+                    bizFinancialFeeItems.setExtFeeCode(feeTypeCode);
+                    List<BizFinancialFeeItems> feeItemsList=BizFinancialFeeItemsService.selectBizFinancialFeeItemsList(bizFinancialFeeItems);
                     BizWaybillCostDetails bizWaybillCostDetails= new BizWaybillCostDetails();
                     //顺丰的费用类型代码无法在费用类型表中匹配 这里默认给值 给到外部叫什么名字
                     bizWaybillCostDetails.setFeeName(feeItemsList.get(0).getExtFeeName());

+ 47 - 12
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/JDLogisticsService.java

@@ -19,6 +19,7 @@ import com.lop.open.api.sdk.response.ECAP.EcapV1OrdersCancelLopResponse;
 import com.lop.open.api.sdk.response.ECAP.EcapV1OrdersCreateLopResponse;
 import com.lop.open.api.sdk.response.ECAP.EcapV1OrdersModifyLopResponse;
 import com.lop.open.api.sdk.response.ECAP.EcapV1OrdersPrecheckLopResponse;
+import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.common.core.utils.DateUtils;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.logistics.config.JDExpressConfig;
@@ -90,10 +91,17 @@ public class JDLogisticsService  implements LogisticsService {
             log.info("京东开放平台订单预校验接口,请求参数:{}", request);
             EcapV1OrdersPrecheckLopResponse response = client.execute(request);
             log.info("京东开放平台订单预校验接口,响应结果:{}", response);
+
+            if (response.getCode().equals("0")) {
+                result.put("success", true);
+                result.put("msg", "");
+            } else {
+                result.put("success", false);
+                result.put("msg", "京东开放平台订单预校验!失败原因:" + response.getMsg());
+            }
         } catch (LopException e) {
-            e.printStackTrace();
-        } catch (Exception e) {
-            e.printStackTrace();
+            log.error("京东开放平台订单预校验接口异常:{}", e);
+            throw new ServiceException("京东开放平台订单预校验接口异常");
         }
         return result;
     }
@@ -157,10 +165,17 @@ public class JDLogisticsService  implements LogisticsService {
             log.info("京东开放平台下单接口,请求参数:{}", request);
             EcapV1OrdersCreateLopResponse response = client.execute(request);
             log.info("京东开放平台下单接口,响应结果:{}", response);
+
+            if (response.getCode().equals("0")) {
+                result.put("success", true);
+                result.put("msg", "");
+            } else {
+                result.put("success", false);
+                result.put("msg", "京东开放平台下单!失败原因:" + response.getMsg());
+            }
         } catch (LopException e) {
-            e.printStackTrace();
-        } catch (Exception e) {
-            e.printStackTrace();
+            log.error("京东开放平台下单接口异常:{}", e);
+            throw new ServiceException("京东开放平台下单接口异常");
         }
         return result;
     }
@@ -197,10 +212,17 @@ public class JDLogisticsService  implements LogisticsService {
             log.info("京东开放平台取消订单接口,请求参数:{}", request);
             EcapV1OrdersCancelLopResponse response = client.execute(request);
             log.info("京东开放平台取消订单接口,响应结果:{}", response);
+
+            if (response.getCode().equals("0")) {
+                result.put("success", true);
+                result.put("msg", "");
+            } else {
+                result.put("success", false);
+                result.put("msg", "京东开放平台取消订单!失败原因:" + response.getMsg());
+            }
         } catch (LopException e) {
-            e.printStackTrace();
-        } catch (Exception e) {
-            e.printStackTrace();
+            log.error("京东开放平台取消订单接口异常:{}", e);
+            throw new ServiceException("京东开放平台取消订单接口异常");
         }
         return result;
     }
@@ -247,6 +269,12 @@ public class JDLogisticsService  implements LogisticsService {
             cargoInfo.setVolume(bizWaybillOrder.getGoodsVolume());
             cargoes.add(cargoInfo);
 
+            //扩展信息
+            Map<String, String> extendProps = new HashMap<>();
+            extendProps.put("autoSubscribe", "1");
+            extendProps.put("universalFeePush", "1");
+
+            requestDTO.setExtendProps(extendProps);
             requestDTO.setCargoes(cargoes);
             requestDTO.setProductsReq(productInfo);
             requestDTO.setReceiverContact(receiverContact);
@@ -261,10 +289,17 @@ public class JDLogisticsService  implements LogisticsService {
             log.info("京东开放平台修改订单接口,请求参数:{}", request);
             EcapV1OrdersModifyLopResponse response = client.execute(request);
             log.info("京东开放平台修改订单接口,响应结果:{}", response);
+
+            if (response.getCode().equals("0")) {
+                result.put("success", true);
+                result.put("msg", "");
+            } else {
+                result.put("success", false);
+                result.put("msg", "京东开放平台修改订单!失败原因:" + response.getMsg());
+            }
         } catch (LopException e) {
-            e.printStackTrace();
-        } catch (Exception e) {
-            e.printStackTrace();
+            log.error("京东开放平台修改订单接口异常:{}", e);
+            throw new ServiceException("京东开放平台修改订单接口异常");
         }
         return result;
     }

+ 16 - 16
jd-logistics-modules/jd-logistics-system/src/main/resources/mapper/logistics/BizInancialFeeItemsMapper.xml

@@ -2,9 +2,9 @@
 <!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.logistics.mapper.BizInancialFeeItemsMapper">
+<mapper namespace="com.ruoyi.logistics.mapper.BizFinancialFeeItemsMapper">
     
-    <resultMap type="com.ruoyi.logistics.domain.BizInancialFeeItems" id="BizInancialFeeItemsResult">
+    <resultMap type="com.ruoyi.logistics.domain.BizFinancialFeeItems" id="BizFinancialFeeItemsResult">
         <result property="feeItemId"    column="fee_item_id"    />
         <result property="feeItemCode"    column="fee_item_code"    />
         <result property="feeItemName"    column="fee_item_name"    />
@@ -21,12 +21,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="updateBy"    column="update_by"    />
     </resultMap>
 
-    <sql id="selectBizInancialFeeItemsVo">
-        select fee_item_id, fee_item_code, fee_item_name, fee_item_category, ext_fee_code, ext_fee_name, create_time, update_time, remark, dept_id, user_id, del_flag, create_by, update_by from biz_inancial_fee_items
+    <sql id="selectBizFinancialFeeItemsVo">
+        select fee_item_id, fee_item_code, fee_item_name, fee_item_category, ext_fee_code, ext_fee_name, create_time, update_time, remark, dept_id, user_id, del_flag, create_by, update_by from biz_financial_fee_items
     </sql>
 
-    <select id="selectBizInancialFeeItemsList" parameterType="com.ruoyi.logistics.domain.BizInancialFeeItems" resultMap="BizInancialFeeItemsResult">
-        <include refid="selectBizInancialFeeItemsVo"/>
+    <select id="selectBizFinancialFeeItemsList" parameterType="com.ruoyi.logistics.domain.BizFinancialFeeItems" resultMap="BizFinancialFeeItemsResult">
+        <include refid="selectBizFinancialFeeItemsVo"/>
         <where>  
             <if test="feeItemCode != null  and feeItemCode != ''"> and fee_item_code = #{feeItemCode}</if>
             <if test="feeItemName != null  and feeItemName != ''"> and fee_item_name like concat('%', #{feeItemName}, '%')</if>
@@ -38,13 +38,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </where>
     </select>
     
-    <select id="selectBizInancialFeeItemsByFeeItemId" parameterType="Long" resultMap="BizInancialFeeItemsResult">
-        <include refid="selectBizInancialFeeItemsVo"/>
+    <select id="selectBizFinancialFeeItemsByFeeItemId" parameterType="Long" resultMap="BizFinancialFeeItemsResult">
+        <include refid="selectBizFinancialFeeItemsVo"/>
         where fee_item_id = #{feeItemId}
     </select>
 
-    <insert id="insertBizInancialFeeItems" parameterType="com.ruoyi.logistics.domain.BizInancialFeeItems" useGeneratedKeys="true" keyProperty="feeItemId">
-        insert into biz_inancial_fee_items
+    <insert id="insertBizFinancialFeeItems" parameterType="com.ruoyi.logistics.domain.BizFinancialFeeItems" useGeneratedKeys="true" keyProperty="feeItemId">
+        insert into biz_financial_fee_items
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="feeItemCode != null">fee_item_code,</if>
             <if test="feeItemName != null">fee_item_name,</if>
@@ -77,8 +77,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
          </trim>
     </insert>
 
-    <update id="updateBizInancialFeeItems" parameterType="com.ruoyi.logistics.domain.BizInancialFeeItems">
-        update biz_inancial_fee_items
+    <update id="updateBizFinancialFeeItems" parameterType="com.ruoyi.logistics.domain.BizFinancialFeeItems">
+        update biz_financial_fee_items
         <trim prefix="SET" suffixOverrides=",">
             <if test="feeItemCode != null">fee_item_code = #{feeItemCode},</if>
             <if test="feeItemName != null">fee_item_name = #{feeItemName},</if>
@@ -97,12 +97,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where fee_item_id = #{feeItemId}
     </update>
 
-    <delete id="deleteBizInancialFeeItemsByFeeItemId" parameterType="Long">
-        delete from biz_inancial_fee_items where fee_item_id = #{feeItemId}
+    <delete id="deleteBizFinancialFeeItemsByFeeItemId" parameterType="Long">
+        delete from biz_financial_fee_items where fee_item_id = #{feeItemId}
     </delete>
 
-    <delete id="deleteBizInancialFeeItemsByFeeItemIds" parameterType="String">
-        delete from biz_inancial_fee_items where fee_item_id in 
+    <delete id="deleteBizFinancialFeeItemsByFeeItemIds" parameterType="String">
+        delete from biz_financial_fee_items where fee_item_id in 
         <foreach item="feeItemId" collection="array" open="(" separator="," close=")">
             #{feeItemId}
         </foreach>

+ 37 - 0
jd-logistics-modules/jd-logistics-system/src/main/resources/mapper/logistics/BizWaybillOrderMapper.xml

@@ -229,4 +229,41 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{waybillId}
         </foreach>
     </delete>
+
+    <select id="selectBizWaybillOrderByQuery" parameterType="com.ruoyi.logistics.domain.BizWaybillOrder" resultMap="BizWaybillOrderResult">
+        <include refid="selectBizWaybillOrderVo"/>
+        <where>
+            <if test="waybillNo != null  and waybillNo != ''"> and waybill_no = #{waybillNo}</if>
+            <if test="externalWaybillNo != null  and externalWaybillNo != ''"> and external_waybill_no = #{externalWaybillNo}</if>
+            <if test="orderType != null "> and order_type = #{orderType}</if>
+            <if test="senderName != null  and senderName != ''"> and sender_name like concat('%', #{senderName}, '%')</if>
+            <if test="senderPhone != null  and senderPhone != ''"> and sender_phone = #{senderPhone}</if>
+            <if test="senderProvince != null  and senderProvince != ''"> and sender_province = #{senderProvince}</if>
+            <if test="senderCity != null  and senderCity != ''"> and sender_city = #{senderCity}</if>
+            <if test="senderCounty != null  and senderCounty != ''"> and sender_county = #{senderCounty}</if>
+            <if test="senderAddress != null  and senderAddress != ''"> and sender_address = #{senderAddress}</if>
+            <if test="receiverName != null  and receiverName != ''"> and receiver_name like concat('%', #{receiverName}, '%')</if>
+            <if test="receiverPhone != null  and receiverPhone != ''"> and receiver_phone = #{receiverPhone}</if>
+            <if test="receiverProvince != null  and receiverProvince != ''"> and receiver_province = #{receiverProvince}</if>
+            <if test="receiverCity != null  and receiverCity != ''"> and receiver_city = #{receiverCity}</if>
+            <if test="receiverCounty != null  and receiverCounty != ''"> and receiver_county = #{receiverCounty}</if>
+            <if test="receiverAddress != null  and receiverAddress != ''"> and receiver_address = #{receiverAddress}</if>
+            <if test="goodsName != null  and goodsName != ''"> and goods_name like concat('%', #{goodsName}, '%')</if>
+            <if test="goodsWeight != null "> and goods_weight = #{goodsWeight}</if>
+            <if test="goodsVolume != null "> and goods_volume = #{goodsVolume}</if>
+            <if test="goodsQty != null "> and goods_qty = #{goodsQty}</if>
+            <if test="orderStatus != null "> and order_status = #{orderStatus}</if>
+            <if test="pickupType != null "> and pickup_type = #{pickupType}</if>
+            <if test="sendStartTime != null "> and send_start_time = #{sendStartTime}</if>
+            <if test="pickupTime != null "> and pickup_time = #{pickupTime}</if>
+            <if test="deliveryTime != null "> and delivery_time = #{deliveryTime}</if>
+            <if test="signTime != null "> and sign_time = #{signTime}</if>
+            <if test="cancelReason != null  and cancelReason != ''"> and cancel_reason = #{cancelReason}</if>
+            <if test="parentWaybillId != null "> and parent_waybill_id = #{parentWaybillId}</if>
+            <if test="invoiceFlag != null  and invoiceFlag != ''"> and invoice_flag = #{invoiceFlag}</if>
+            <if test="adjustFlag != null  and adjustFlag != ''"> and adjust_flag = #{adjustFlag}</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            <if test="userId != null "> and user_id = #{userId}</if>
+        </where>
+    </select>
 </mapper>