Explorar o código

feat: 订单列表页面相关优化处理;

hanchaolong hai 2 semanas
pai
achega
89e1281f9d

+ 1 - 1
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/controller/BizWaybillOrderController.java

@@ -179,7 +179,7 @@ public class BizWaybillOrderController extends BaseController
                 }
 
                 // 调用批量下单方法
-                result = bizWaybillOrderService.batchInsertBizWaybillOrder(orderList, orderType);
+                result = bizWaybillOrderService.batchInsertJDBizWaybillOrder(orderList, orderType);
             }
 
             return AjaxResult.success(String.format("批量下单完成!成功 %d 单,失败 %d 单", result[0], result[1]));

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

@@ -105,5 +105,5 @@ public interface IBizWaybillOrderService
      * @param orderType 订单类型 1-京东,2-顺丰
      * @return 结果数组,每个元素表示对应订单的结果 [0:成功数,1:失败数]
      */
-    public int[] batchInsertBizWaybillOrder(List<JDOrderDTO> orderList, Integer orderType);
+    public int[] batchInsertJDBizWaybillOrder(List<JDOrderDTO> orderList, Integer orderType);
 }

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

@@ -366,7 +366,7 @@ public class BizWaybillOrderServiceImpl implements IBizWaybillOrderService
      * @return 结果数组,每个元素表示对应订单的结果 [0:成功数,1:失败数]
      */
     @Override
-    public int[] batchInsertBizWaybillOrder(List<JDOrderDTO> orderList, Integer orderType) {
+    public int[] batchInsertJDBizWaybillOrder(List<JDOrderDTO> orderList, Integer orderType) {
         int successCount = 0;
         int failCount = 0;
         List<String> errorMessages = new ArrayList<>();
@@ -376,9 +376,48 @@ public class BizWaybillOrderServiceImpl implements IBizWaybillOrderService
         for (JDOrderDTO dto : orderList) {
             try {
                 // 将 JDOrderDTO 转换为 BizWaybillOrder
-                BizWaybillOrder bizWaybillOrder = convertToBizWaybillOrder(dto, orderType, loginUser);
-                this.insertBizWaybillOrder(bizWaybillOrder);
-                successCount++;
+                BizWaybillOrder bizWaybillOrder = convertToBizWaybillOrder(dto, loginUser);
+
+                // 前置校验
+                JSONObject jsonObject = logisticsOrderService.precheckOrder(bizWaybillOrder);
+                if (!jsonObject.getBooleanValue("success")) {
+                    log.warn("订单前置校验未通过!发件人:{}, 收件人:{}, 原因:{}",
+                            dto.getSenderName(), dto.getReceiverName(), jsonObject.getString("msg"));
+                    failCount++;
+                    errorMessages.add(String.format("订单 %s-%s 校验失败:%s",
+                            dto.getSenderName(), dto.getReceiverName(), jsonObject.getString("msg")));
+                    continue;
+                }
+
+                // 调用下单接口
+                JSONObject orderObject = logisticsOrderService.createOrder(bizWaybillOrder);
+                if (!orderObject.getBooleanValue("success")) {
+                    log.warn("下单失败!发件人:{}, 收件人:{}, 原因:{}",
+                            dto.getSenderName(), dto.getReceiverName(), orderObject.getString("msg"));
+                    failCount++;
+                    errorMessages.add(String.format("订单 %s-%s 下单失败:%s",
+                            dto.getSenderName(), dto.getReceiverName(), orderObject.getString("msg")));
+                    continue;
+                }
+
+                // 设置默认值
+                bizWaybillOrder.setPickupType(1);
+                bizWaybillOrder.setCreateTime(DateUtils.getNowDate());
+                bizWaybillOrder.setUserId(loginUser.getUserid());
+                bizWaybillOrder.setDeptId(loginUser.getSysUser().getDeptId());
+
+                // 保存到数据库
+                int result = bizWaybillOrderMapper.insertBizWaybillOrder(bizWaybillOrder);
+                if (result > 0) {
+                    successCount++;
+                    // 保存最近使用地址
+                    saveRecentAddresses(bizWaybillOrder, loginUser.getUserid());
+                } else {
+                    failCount++;
+                    errorMessages.add(String.format("订单 %s-%s 保存失败",
+                            dto.getSenderName(), dto.getReceiverName()));
+                }
+
             } catch (Exception e) {
                 log.error("批量下单异常!发件人:{}, 收件人:{}", 
                     dto.getSenderName(), dto.getReceiverName(), e);
@@ -396,11 +435,11 @@ public class BizWaybillOrderServiceImpl implements IBizWaybillOrderService
     /**
      * 将 JDOrderDTO 转换为 BizWaybillOrder
      */
-    private BizWaybillOrder convertToBizWaybillOrder(JDOrderDTO dto, Integer orderType, LoginUser loginUser) {
+    private BizWaybillOrder convertToBizWaybillOrder(JDOrderDTO dto, LoginUser loginUser) {
         BizWaybillOrder bizWaybillOrder = new BizWaybillOrder();
         
         // 设置订单类型
-        bizWaybillOrder.setOrderType(orderType);
+        bizWaybillOrder.setOrderType(1);
         
         // 复制基本信息
         bizWaybillOrder.setSenderName(dto.getSenderName());