Selaa lähdekoodia

订单同步优化

24282 1 vuosi sitten
vanhempi
commit
7c406d5305

+ 59 - 27
sd-wln/src/main/java/com/sd/wln/service/impl/WlnOrderServiceImpl.java

@@ -83,7 +83,6 @@ public class WlnOrderServiceImpl implements WlnOrderService {
 
         // 当前时间
         Date endDate = new Date();
-
         // 保存订单列表
         List<OrderInfo> saveOrderList = new ArrayList<>();
         // 更新订单列表
@@ -101,12 +100,8 @@ public class WlnOrderServiceImpl implements WlnOrderService {
             return;
         }
 
-        // 不排除逻辑删除的订单
-        LogicHolder.setLogicHolder(new LogicHolder());
         // 查询近3天已存在数据库中的订单
-        Map<String, OrderInfo> orderMap = orderService.mapKEntity(OrderInfo::getWlnUid,
-                q -> q.between(OrderInfo::getWlnApproveTime, DateUtil.offsetDay(endDate, -3), endDate));
-        LogicHolder.clear();
+        Map<String, OrderInfo> orderMap = getOrderMap(endDate);
 
         // 查询事业部
         Map<String, Department> departmentMap = getDepartmentMap();
@@ -128,26 +123,11 @@ public class WlnOrderServiceImpl implements WlnOrderService {
             // 创建订单
             OrderInfo orderInfo = createOrder(wlnOrder, department);
 
-            // 如果订单存在于数据库,且订单状态改变,执行update
-            OrderInfo oldOrderInfo = orderMap.get(orderInfo.getWlnUid());
-            if (oldOrderInfo != null) {
-                if (ObjectUtil.notEqual(oldOrderInfo.getWlnStatus(), orderInfo.getWlnStatus())
-                        || ObjectUtil.notEqual(oldOrderInfo.getWlnModifyTimestamp(), orderInfo.getWlnModifyTimestamp())
-                        || ObjectUtil.notEqual(DateUtil.formatDateTime(oldOrderInfo.getWlnApproveTime()), DateUtil.formatDateTime(orderInfo.getWlnApproveTime()))
-                        || ObjectUtil.notEqual(DateUtil.formatDateTime(oldOrderInfo.getWlnPrintTime()), DateUtil.formatDateTime(orderInfo.getWlnPrintTime()))
-                        || ObjectUtil.notEqual(oldOrderInfo.getWlnStorageCode(), orderInfo.getWlnStorageCode())
-                        || ObjectUtil.notEqual(oldOrderInfo.getDepartmentId(), orderInfo.getDepartmentId())) {
-                    OrderInfo updateOrder = new OrderInfo();
-                    updateOrder.setId(oldOrderInfo.getId());
-                    updateOrder.setWlnStatus(orderInfo.getWlnStatus());
-                    updateOrder.setWlnModifyTime(orderInfo.getWlnModifyTime());
-                    updateOrder.setWlnModifyTimestamp(orderInfo.getWlnModifyTimestamp());
-                    updateOrder.setWlnApproveTime(orderInfo.getWlnApproveTime());
-                    updateOrder.setWlnPrintTime(orderInfo.getWlnPrintTime());
-                    updateOrder.setWlnStorageCode(orderInfo.getWlnStorageCode());
-                    updateOrder.setDepartmentId(orderInfo.getDepartmentId());
-                    updateOrderList.add(updateOrder);
-                }
+            // 判断订单是否存在与数据库中,若订单存在且订单信息被修改,则添加到更新订单数组
+            boolean existOrder = existOrder(orderMap, orderInfo, updateOrderList);
+
+            // 若订单是否存在与数据库中,跳过以下保存订单逻辑
+            if (existOrder) {
                 continue;
             }
 
@@ -158,6 +138,8 @@ public class WlnOrderServiceImpl implements WlnOrderService {
 
             // 创建订单sku
             for (JSONObject wlnOrderSku : wlnOrder.getJSONArray("orders").toJavaList(JSONObject.class)) {
+
+                // 订单明细未匹配到sku规格,跳过次订单同步
                 String sysSpecUid = wlnOrderSku.getString("sys_spec_uid");
                 SkuSpec skuSpec = skuSpecMap.get(sysSpecUid);
                 if (skuSpec == null) {
@@ -166,9 +148,11 @@ public class WlnOrderServiceImpl implements WlnOrderService {
                     break;
                 }
 
+                // 创建订单sku
                 OrderSku orderSku = createOrderSku(wlnOrderSku, orderInfo, skuSpec);
                 tempOrderSkuList.add(orderSku);
 
+                // 创建订单包材
                 List<OrderSkuBom> orderSkuBomList = createOrderSkuBoom(orderInfo, orderSku);
                 tempOrderSkuBomList.addAll(orderSkuBomList);
             }
@@ -248,6 +232,52 @@ public class WlnOrderServiceImpl implements WlnOrderService {
     }
 
     /**
+     * 查询近3天已存在数据库中的订单
+     */
+    private Map<String, OrderInfo> getOrderMap(Date endDate) {
+        LogicHolder.setLogicHolder(new LogicHolder());
+
+        Map<String, OrderInfo> orderMap = orderService.mapKEntity(
+                OrderInfo::getWlnUid,
+                q -> q.between(OrderInfo::getWlnApproveTime, DateUtil.offsetDay(endDate, -3), endDate)
+        );
+
+        LogicHolder.clear();
+        return orderMap;
+    }
+
+    /**
+     * 订单是否存在,若订单存在且订单信息被修改,则添加到更新订单数组
+     */
+    private boolean existOrder(Map<String, OrderInfo> orderMap, OrderInfo orderInfo, List<OrderInfo> updateOrderList) {
+
+        // 如果订单存在于数据库,且订单状态改变,执行update
+        OrderInfo oldOrderInfo = orderMap.get(orderInfo.getWlnUid());
+        if (oldOrderInfo != null) {
+            if (ObjectUtil.notEqual(oldOrderInfo.getWlnStatus(), orderInfo.getWlnStatus())
+                    || ObjectUtil.notEqual(oldOrderInfo.getWlnModifyTimestamp(), orderInfo.getWlnModifyTimestamp())
+                    || ObjectUtil.notEqual(DateUtil.formatDateTime(oldOrderInfo.getWlnApproveTime()), DateUtil.formatDateTime(orderInfo.getWlnApproveTime()))
+                    || ObjectUtil.notEqual(DateUtil.formatDateTime(oldOrderInfo.getWlnPrintTime()), DateUtil.formatDateTime(orderInfo.getWlnPrintTime()))
+                    || ObjectUtil.notEqual(oldOrderInfo.getWlnStorageCode(), orderInfo.getWlnStorageCode())
+                    || ObjectUtil.notEqual(oldOrderInfo.getDepartmentId(), orderInfo.getDepartmentId())) {
+                OrderInfo updateOrder = new OrderInfo();
+                updateOrder.setId(oldOrderInfo.getId());
+                updateOrder.setWlnStatus(orderInfo.getWlnStatus());
+                updateOrder.setWlnModifyTime(orderInfo.getWlnModifyTime());
+                updateOrder.setWlnModifyTimestamp(orderInfo.getWlnModifyTimestamp());
+                updateOrder.setWlnApproveTime(orderInfo.getWlnApproveTime());
+                updateOrder.setWlnPrintTime(orderInfo.getWlnPrintTime());
+                updateOrder.setWlnStorageCode(orderInfo.getWlnStorageCode());
+                updateOrder.setDepartmentId(orderInfo.getDepartmentId());
+                updateOrderList.add(updateOrder);
+            }
+            return true;
+        }
+
+        return false;
+    }
+
+    /**
      * 查询事业部
      */
     private Map<String, Department> getDepartmentMap() {
@@ -387,7 +417,9 @@ public class WlnOrderServiceImpl implements WlnOrderService {
         }).collect(Collectors.toList());
     }
 
-
+    /**
+     * 创建订单包装
+     */
     private List<OrderPackageBom> createOrderPackageBomList(List<OrderSku> orderSkuList, Long departmentId) {
 
         // 获取sku规格快递包材map