Jelajahi Sumber

订单同步

24282 1 tahun lalu
induk
melakukan
b0c746f5f4

+ 2 - 2
sd-business/src/main/java/com/sd/business/entity/order/enums/OrderStatusEnum.java

@@ -4,7 +4,7 @@ import com.ruoyi.common.exception.ServiceException;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 
-import java.util.LinkedHashMap;
+import java.util.HashMap;
 import java.util.Map;
 
 /**
@@ -26,7 +26,7 @@ public enum OrderStatusEnum {
     DELETE(80, "订单删除审核中"),
     EXCEPTION(90, "订单异常");
 
-    private static final Map<Integer, OrderStatusEnum> map = new LinkedHashMap<>();
+    private static final Map<Integer, OrderStatusEnum> map = new HashMap<>();
 
     static {
         for (OrderStatusEnum orderStatusEnum : values()) {

+ 5 - 0
sd-wln/src/main/java/com/sd/wln/entity/TradesParam.java

@@ -82,4 +82,9 @@ public class TradesParam extends Signature {
      */
     private Boolean flag;
 
+    /**
+     * 手动导入
+     */
+    private Boolean manualImport;
+
 }

+ 45 - 31
sd-wln/src/main/java/com/sd/wln/service/impl/WlnOrderServiceImpl.java

@@ -57,53 +57,71 @@ public class WlnOrderServiceImpl implements WlnOrderService {
     public boolean syncOrder() {
         Date endDate = new Date();
 
+        // 查询万里牛3天之内的全部订单
         List<JSONObject> wlnOrderList = getWlnOrderList(endDate);
         if (wlnOrderList == null) {
             log.error("订单同步失败");
             return false;
         }
 
-        List<OrderInfo> saveOrderListInfo = new ArrayList<>();
+        // 保存订单列表
+        List<OrderInfo> saveOrderList = new ArrayList<>();
+        // 更新订单列表
+        List<OrderInfo> updateOrderList = new ArrayList<>();
+        // 保存订单明细列表
         List<OrderSku> saveOrderSkuList = new ArrayList<>();
-        List<OrderInfo> updateOrderListInfo = new ArrayList<>();
 
+        // 查询事业部map
         Map<String, Department> departmentMap = getDepartmentMap();
 
+        // 查询近3天已存在数据库中德订单map
         Map<String, OrderInfo> orderMap = orderService.mapKEntity(OrderInfo::getWlnUid,
                 q -> q.between(OrderInfo::getWlnApproveTime, DateUtil.offsetDay(endDate, -3), endDate));
 
+        // 获取sku规格map
         Map<String, SkuSpec> skuSpecMap = getSkuSpecMap(wlnOrderList);
 
+        // 循环万里牛订单
         for (JSONObject wlnOrder : wlnOrderList) {
 
-            // 如果订单存在,修改订单状态
+            // 如果订单存在,且订单状态改变,执行update
             OrderInfo orderInfo = orderMap.get(wlnOrder.getString("uid"));
             if (orderInfo != null) {
                 Integer processStatus = wlnOrder.getInteger("process_status");
                 if (ObjectUtil.notEqual(orderInfo.getWlnStatus(), processStatus)) {
                     orderInfo.setWlnStatus(processStatus);
-                    updateOrderListInfo.add(orderInfo);
+                    updateOrderList.add(orderInfo);
                 }
                 continue;
             }
 
-            orderInfo = createOrder(wlnOrder, departmentMap);
+            // 没有匹配到事业部,则跳过
+            Department department = departmentMap.get(wlnOrder.getString("storage_code"));
+            if (department == null) {
+                continue;
+            }
+
+            // 创建订单
+            orderInfo = createOrder(wlnOrder, department);
+            saveOrderList.add(orderInfo);
+
+            // 创建订单sku
             for (JSONObject wlnOrderSku : wlnOrder.getJSONArray("orders").toJavaList(JSONObject.class)) {
                 SkuSpec skuSpec = skuSpecMap.get(wlnOrderSku.getString("sys_spec_uid"));
                 OrderSku orderSku = createOrderSku(wlnOrderSku, orderInfo, skuSpec);
                 saveOrderSkuList.add(orderSku);
             }
-            saveOrderListInfo.add(orderInfo);
+
         }
 
         // 开启事务
         TransactionStatus transactionStatus = platformTransactionManager.getTransaction(transactionDefinition);
         try {
-            if (saveOrderListInfo.size() > 0) {
-                orderService.saveBatch(saveOrderListInfo);
+            if (saveOrderList.size() > 0) {
+                orderService.saveBatch(saveOrderList);
             }
-            if (updateOrderListInfo.size() > 0) {
-                orderService.updateBatchById(updateOrderListInfo);
+            if (updateOrderList.size() > 0) {
+                orderService.updateBatchById(updateOrderList);
             }
             if (saveOrderSkuList.size() > 0) {
                 orderSkuService.saveBatch(saveOrderSkuList);
@@ -120,7 +138,7 @@ public class WlnOrderServiceImpl implements WlnOrderService {
     }
 
     /**
-     * 万里牛查询3天之内的全部订单
+     * 查询万里牛3天之内的全部订单
      */
     private List<JSONObject> getWlnOrderList(Date endDate) {
         List<DictCommonData> warehouseCodeList = dictCommonDataService.list(q -> q
@@ -133,7 +151,7 @@ public class WlnOrderServiceImpl implements WlnOrderService {
         List<JSONObject> list = new ArrayList<>();
 
         long endTime = endDate.getTime();
-        long startTime = endTime - 1000 * 60 * 60 * 24 - 1;
+        long startTime = endTime - 1000 * 60 * 60 * 24;
 
         for (int i = 0; i < 3; i++) {
             for (DictCommonData dictCommonData : warehouseCodeList) {
@@ -162,8 +180,10 @@ public class WlnOrderServiceImpl implements WlnOrderService {
      * 事业部id Map
      */
     private Map<String, Department> getDepartmentMap() {
+        List<Department> departmentList = departmentService.list();
         Map<String, Department> departmentMap = new HashMap<>();
-        for (Department department : departmentService.list()) {
+
+        for (Department department : departmentList) {
             String warehouseCode = department.getWlnWarehouseCode();
             if (StrUtil.isBlank(warehouseCode)) {
                 continue;
@@ -182,32 +202,33 @@ public class WlnOrderServiceImpl implements WlnOrderService {
         List<String> wlnUidList = wlnOrderList.stream()
                 .flatMap(item -> item.getJSONArray("orders").toJavaList(JSONObject.class).stream())
                 .map(item -> item.getString("sys_spec_uid"))
-                .filter(ObjectUtil::isNotNull).distinct().collect(Collectors.toList());
+                .filter(ObjectUtil::isNotNull)
+                .distinct()
+                .collect(Collectors.toList());
         return skuSpecService.mapKEntity(SkuSpec::getWlnUid, q -> q.in(SkuSpec::getWlnUid, wlnUidList));
     }
 
     /**
      * 创建订单
      */
-    private OrderInfo createOrder(JSONObject wlnOrder, Map<String, Department> departmentMap) {
-        Department department = departmentMap.get(wlnOrder.getString("storage_code"));
-
+    private OrderInfo createOrder(JSONObject wlnOrder, Department department) {
         OrderInfo orderInfo = new OrderInfo();
         orderInfo.setId(IdWorker.getId());
         orderInfo.setSource(2);
         orderInfo.setCode(wlnOrder.getString("tp_tid"));
         orderInfo.setWlnCode(wlnOrder.getString("trade_no"));
+        orderInfo.setWlnStatus(wlnOrder.getInteger("process_status"));
         orderInfo.setWlnUid(wlnOrder.getString("uid"));
+        orderInfo.setModifyTime(wlnOrder.getLong("modify_time"));
         orderInfo.setWlnCreateTime(wlnOrder.getDate("create_time"));
         orderInfo.setWlnApproveTime(wlnOrder.getDate("approve_time"));
-        orderInfo.setModifyTime(wlnOrder.getLong("modify_time"));
-        orderInfo.setRemark(wlnOrder.getString("remark"));
         orderInfo.setProvince(wlnOrder.getString("province"));
         orderInfo.setCity(wlnOrder.getString("city"));
         orderInfo.setCounty(wlnOrder.getString("district"));
         orderInfo.setDetailedAddress(wlnOrder.getString("address"));
         orderInfo.setPostcode(wlnOrder.getString("zip"));
-        orderInfo.setWlnStatus(wlnOrder.getInteger("process_status"));
+        orderInfo.setDepartmentId(department.getId());
+        orderInfo.setRemark(wlnOrder.getString("remark"));
 
         StringBuilder builder = new StringBuilder();
         // 订单来源平台
@@ -221,19 +242,12 @@ public class WlnOrderServiceImpl implements WlnOrderService {
         }
         orderInfo.setCommercePlatform(builder.toString());
 
-        if (department != null) {
-            orderInfo.setDepartmentId(department.getId());
-            if (Objects.equals(department.getOrderMode(), "2")) {
-                orderInfo.setStatus(OrderStatusEnum.REJECT.getKey());
-            } else {
-                orderInfo.setStatus(OrderStatusEnum.UNDER_REVIEW.getKey());
-            }
-        } else {
-            orderInfo.setStatus(OrderStatusEnum.UNDER_REVIEW.getKey());
-        }
-
         if (orderInfo.getWlnStatus() == 10 || orderInfo.getWlnStatus() == 11 || orderInfo.getWlnStatus() == 12) {
             orderInfo.setStatus(OrderStatusEnum.EXCEPTION.getKey());
+        } else if (Objects.equals(department.getOrderMode(), "2")) {
+            orderInfo.setStatus(OrderStatusEnum.REJECT.getKey());
+        } else {
+            orderInfo.setStatus(OrderStatusEnum.UNDER_REVIEW.getKey());
         }
 
         return orderInfo;

+ 15 - 11
sd-wln/src/main/java/com/sd/wln/util/WlnUtil.java

@@ -74,6 +74,11 @@ public class WlnUtil {
         param.setLimit(limit);
         param.setStorage_code(warehouseCode);
         param.setIs_split(true);
+        param.setManualImport(false);
+        // 如果是百卓则拉取指定状态订单---验货
+        if ("T007".equals(warehouseCode)) {
+            param.setTrade_status("2");
+        }
         param.generateSign(MapUtil.createLinkString(MapUtil.beanToMap(param)));
         String result = send(PREFIX + "erp/opentrade/list/trades", MapUtil.beanToMap(param));
         JSONObject json = JSONObject.parseObject(result);
@@ -84,17 +89,16 @@ public class WlnUtil {
         return json.getJSONArray("data").toJavaList(JSONObject.class);
     }
 
-    public static void main(String[] args) throws Exception {
-        // List<JSONObject> skuList = getSkuList(1, 200);
-
-        // List<JSONObject> skuClassifyList = getSkuClassifyList();
-
-        // long endTime = System.currentTimeMillis();
-        // long startTime = endTime - 1000 * 60 * 60 * 24;
-        // List<JSONObject> b012 = getOrderList(1, 50, startTime, endTime, "B012");
-
-        System.out.println();
-    }
+    // public static void main(String[] args) throws Exception {
+    //     List<JSONObject> skuList = getSkuList(1, 200);
+    //
+    //     List<JSONObject> skuClassifyList = getSkuClassifyList();
+    //
+    //     long endTime = System.currentTimeMillis();
+    //     long startTime = endTime - 1000 * 60 * 60 * 24;
+    //     List<JSONObject> orderList = getOrderList(1, 50, startTime, endTime, "B012");
+    //     System.out.println();
+    // }
 
 
     /**