소스 검색

外部订单调用快递鸟调整

wangxy 1 주 전
부모
커밋
9a8f8e9d27

+ 1 - 1
fs-service/src/main/java/com/fs/his/mapper/FsExternalOrderMapper.java

@@ -35,7 +35,7 @@ public interface FsExternalOrderMapper {
     @Select("SELECT order_id FROM fs_external_order WHERE extend_order_id is null AND status =2")
     List<Long> selectUnsyncedOrderIds();
 
-    @Select("SELECT * FROM fs_external_order WHERE extend_order_id IS NOT NULL AND status IN (2, 3)")
+    @Select("SELECT * FROM fs_external_order WHERE extend_order_id IS NOT NULL AND status =2")
     List<FsExternalOrder> selectSyncedOrders();
 
     List<FsExternalOrder> selectSignedOrdersWithoutAudit();

+ 18 - 6
fs-service/src/main/java/com/fs/his/service/impl/FsExternalOrderServiceImpl.java

@@ -579,7 +579,7 @@ public class FsExternalOrderServiceImpl implements IFsExternalOrderService {
             try {
                 String kdnAddress = fsUserAddressService.getKdnAddress(order.getUserAddress());
                 Map<String, Object> result = JSON.parseObject(kdnAddress);
-                Map<String, String> addData = (Map<String, String>) ((Map) result.get("Data")).get("result");
+                Map<String, String> addData = (Map<String, String>) ((Map) result.get("Data"));
                 if (addData != null) {
                     shopOrderDTO.setReceiverState((String) addData.get("ProvinceName"));
                     shopOrderDTO.setReceiverCity((String) addData.get("CityName"));
@@ -721,14 +721,27 @@ public class FsExternalOrderServiceImpl implements IFsExternalOrderService {
     }
 
     private void updateOrderDelivery(FsExternalOrder localOrder, ErpDeliverys delivery) {
-        if (localOrder.getStatus() != 2) {
+        if (delivery == null || StringUtils.isBlank(delivery.getMail_no())) {
+            return;
+        }
+
+        FsExternalOrder currentOrder = fsExternalOrderMapper.selectFsExternalOrderByOrderId(localOrder.getOrderId());
+        if (currentOrder == null) {
+            return;
+        }
+
+        String mailNo = delivery.getMail_no();
+        boolean hasSubscribed = currentOrder.getStatus() != null
+                && currentOrder.getStatus() != 2
+                && StringUtils.equals(currentOrder.getDeliverySn(), mailNo);
+        if (hasSubscribed) {
             return;
         }
 
         FsExternalOrder updateOrder = new FsExternalOrder();
         updateOrder.setOrderId(localOrder.getOrderId());
         updateOrder.setStatus(3);
-        updateOrder.setDeliverySn(delivery.getMail_no());
+        updateOrder.setDeliverySn(mailNo);
 
         String deliveryCode = delivery.getExpress_code();
         String deliveryName = delivery.getExpress_name();
@@ -755,9 +768,8 @@ public class FsExternalOrderServiceImpl implements IFsExternalOrderService {
 
         updateOrder.setDeliveryTime(new Date());
         fsExternalOrderMapper.updateFsExternalOrder(updateOrder);
-        //订阅快递鸟
-        subscribeExternalOrderExpress(localOrder, deliveryCode, delivery.getMail_no());
-        log.info("外部订单已发货: {}, 快递: {}, 单号: {}", localOrder.getOrderCode(), deliveryCode, delivery.getMail_no());
+        subscribeExternalOrderExpress(currentOrder, deliveryCode, mailNo);
+        log.info("外部订单已发货: {}, 快递: {}, 单号: {}", localOrder.getOrderCode(), deliveryCode, mailNo);
     }
 
     private void subscribeExternalOrderExpress(FsExternalOrder order, String deliveryCode, String deliverySn) {