24282 1 éve
szülő
commit
b15a91488e

+ 46 - 24
sd-business/src/main/java/com/sd/business/entity/order/po/OrderInfo.java

@@ -29,12 +29,18 @@ public class OrderInfo extends BasePo {
     private Integer source;
 
     /**
+     * 事业部id
+     */
+    @NotNull(message = "事业部id不能为空")
+    private Long departmentId;
+
+    /**
      * 订单号
      */
     private String code;
 
     /**
-     * 万里牛唯一uid
+     * 万里牛uid
      */
     private String wlnUid;
 
@@ -45,6 +51,24 @@ public class OrderInfo extends BasePo {
 
     /**
      * 万里牛订单状态
+     * -3:分销商审核
+     * -2:到账管理
+     * -1:未付款
+     * 0:审核
+     * 1:打单配货
+     * 2:验货
+     * 3:称重
+     * 4:待发货
+     * 5:财审
+     * 8:已发货
+     * 9:成功
+     * 10:关闭
+     * 11:异常结束
+     * 12:异常处理
+     * 13:外部系统配货中
+     * 14:预售
+     * 15:打包
+     * 19:拣货
      */
     private Integer wlnStatus;
 
@@ -64,6 +88,16 @@ public class OrderInfo extends BasePo {
     private Date wlnPrintTime;
 
     /**
+     * 万里牛订单修改时间
+     */
+    private Date wlnModifyTime;
+
+    /**
+     * 万里牛同步时间戳
+     */
+    private Long wlnModifyTimestamp;
+
+    /**
      * 万里牛仓库编码
      */
     private String wlnStorageCode;
@@ -75,19 +109,14 @@ public class OrderInfo extends BasePo {
     private Date deliveryTime;
 
     /**
-     * 万里牛同步时间
+     * 店铺来源
      */
-    private Date wlnModifyTime;
+    private String sourcePlatform;
 
     /**
-     * 万里牛同步时间戳
+     * 店铺名称
      */
-    private Long wlnModifyTimestamp;
-
-    /**
-     * 快递单号
-     */
-    private String expressDeliveryCode;
+    private String shopName;
 
     /**
      * 进度 {@link com.sd.business.entity.order.enums.OrderStatusEnum}
@@ -101,12 +130,6 @@ public class OrderInfo extends BasePo {
     private Integer settlementStatus;
 
     /**
-     * 电商平台
-     */
-    @NotBlank(message = "电商平台不能为空")
-    private String commercePlatform;
-
-    /**
      * 订单总金额
      */
     @NotNull(message = "订单总金额不能为空")
@@ -199,20 +222,14 @@ public class OrderInfo extends BasePo {
     private String postcode;
 
     /**
-     * 事业部id
-     */
-    @NotNull(message = "事业部id不能为空")
-    private Long departmentId;
-
-    /**
      * 快递网点id
      */
     private String expressDeliveryId;
 
     /**
-     * 标签
+     * 快递单号
      */
-    private String tag;
+    private String expressDeliveryCode;
 
     /**
      * 对账单id
@@ -220,6 +237,11 @@ public class OrderInfo extends BasePo {
     private Long statementOfAccountId;
 
     /**
+     * 标签
+     */
+    private String tag;
+
+    /**
      * 备注
      */
     private String remark;

+ 2 - 1
sd-business/src/main/resources/mapper/order/OrderMapper.xml

@@ -18,7 +18,8 @@
                o.express_delivery_code,
                o.status,
                o.settlement_status,
-               o.commerce_platform,
+               o.source_platform,
+               o.shop_name,
                o.total_amount,
                o.product_total_amount,
                o.custom_processing_fee,

+ 15 - 5
sd-wln/src/main/java/com/sd/wln/context/OrderContext.java

@@ -112,7 +112,7 @@ public class OrderContext {
     }
 
     /**
-     * 查询1天内万里牛订单
+     * 查询万里牛订单
      */
     private List<JSONObject> selectWlnOrderList() {
         List<DictCommonData> warehouseCodeList = dictCommonDataService.list(q -> q.eq(DictCommonData::getDictCode, "warehouse_code"));
@@ -121,10 +121,20 @@ public class OrderContext {
             return null;
         }
 
-        List<JSONObject> list = new ArrayList<>();
-
         long endTime = endDate.getTime();
-        long startTime = endTime - 1000 * 60 * 60 * 24;
+        long startTime;
+
+        OrderInfo orderInfo = orderService.getOne(q -> q.orderByDesc(OrderInfo::getWlnModifyTimestamp));
+        if (orderInfo == null) {
+            startTime = endTime - 1000 * 60 * 60 * 24;
+        } else {
+            startTime = orderInfo.getWlnModifyTimestamp();
+            if (endTime - startTime > 1000 * 60 * 60 * 24 * 7) {
+                startTime = endTime - 1000 * 60 * 60 * 24 * 7;
+            }
+        }
+
+        List<JSONObject> list = new ArrayList<>();
 
         for (DictCommonData dictCommonData : warehouseCodeList) {
             String warehouseCode = dictCommonData.getDictValue();
@@ -155,7 +165,7 @@ public class OrderContext {
 
             this.orderMap = orderService.mapKEntity(
                     OrderInfo::getWlnUid,
-                    q -> q.between(OrderInfo::getWlnApproveTime, DateUtil.offsetDay(endDate, -3), endDate));
+                    q -> q.between(OrderInfo::getWlnApproveTime, DateUtil.offsetDay(endDate, -5), endDate));
 
             LogicHolder.clear();
         }

+ 63 - 76
sd-wln/src/main/java/com/sd/wln/service/impl/WlnOrderServiceImpl.java

@@ -79,22 +79,34 @@ public class WlnOrderServiceImpl implements WlnOrderService {
             return;
         }
 
+        Map<String, OrderInfo> orderMap = context.getOrderMap();
+
         // 循环万里牛订单
         for (JSONObject wlnOrder : wlnOrderList) {
 
-            // 创建订单
-            OrderInfo orderInfo = createOrder(context, wlnOrder);
+            // 仓库编号
+            String storageCode = wlnOrder.getString("storage_code");
 
-            // 没有创建订单实体,跳过同步
-            if (orderInfo == null) {
+            // 订单uid
+            String wlnUid = wlnOrder.getString("uid");
+
+            // 部门实体
+            Department department = context.getDepartmentMap().get(storageCode);
+
+            // 未匹配到部门id
+            if (department == null) {
+                log.error("未知仓库code:{}", storageCode);
                 continue;
             }
 
-            // 判断订单是否存在与数据库中,若订单存在且订单信息被修改,则添加到更新订单数组
-            boolean existOrder = existOrder(context, orderInfo);
+            OrderInfo orderInfo = orderMap.get(wlnUid);
 
-            // 若订单是否存在与数据库中,跳过以下保存订单逻辑
-            if (existOrder) {
+            if (orderInfo == null) {
+                // 创建订单
+                orderInfo = createOrder(wlnOrder, department);
+            } else {
+                // 修改订单
+                updateOrder(context, wlnOrder, department, orderInfo);
                 continue;
             }
 
@@ -112,93 +124,37 @@ public class WlnOrderServiceImpl implements WlnOrderService {
     }
 
     /**
-     * 订单是否存在,若订单存在且订单信息被修改,则添加到更新订单数组
-     */
-    private boolean existOrder(OrderContext context, OrderInfo orderInfo) {
-        Map<String, OrderInfo> orderMap = context.getOrderMap();
-        List<OrderInfo> updateOrderList = context.getUpdateOrderList();
-
-        // 如果订单存在于数据库,且订单状态改变,执行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 OrderInfo createOrder(OrderContext context, JSONObject wlnOrder) {
-
-        // 仓库编号
-        String storageCode = wlnOrder.getString("storage_code");
-
-        // 部门实体
-        Department department = context.getDepartmentMap().get(storageCode);
-
-        // 未匹配到部门id
-        if (department == null) {
-            log.error("未知仓库code:{}", storageCode);
-            return null;
-        }
+    private OrderInfo createOrder(JSONObject wlnOrder, Department department) {
 
         OrderInfo orderInfo = new OrderInfo();
         orderInfo.setId(IdWorker.getId());
         orderInfo.setSource(2);
+        orderInfo.setTaxRate(new BigDecimal("10.00"));
+        orderInfo.setTag("0");
+        orderInfo.setSettlementStatus(1);
+
+        orderInfo.setDepartmentId(department.getId());
+        orderInfo.setWlnStorageCode(wlnOrder.getString("storage_code"));
+        orderInfo.setWlnUid(wlnOrder.getString("uid"));
         orderInfo.setCode(wlnOrder.getString("tp_tid"));
         orderInfo.setWlnCode(wlnOrder.getString("trade_no"));
         orderInfo.setWlnStatus(wlnOrder.getInteger("process_status"));
-        orderInfo.setWlnUid(wlnOrder.getString("uid"));
+        orderInfo.setWlnCreateTime(wlnOrder.getDate("create_time"));
         orderInfo.setWlnModifyTime(wlnOrder.getDate("modify_time"));
         orderInfo.setWlnModifyTimestamp(wlnOrder.getLong("modify_time"));
-        orderInfo.setWlnCreateTime(wlnOrder.getDate("create_time"));
         orderInfo.setWlnApproveTime(wlnOrder.getDate("approve_time"));
         orderInfo.setWlnPrintTime(wlnOrder.getDate("print_time"));
-        orderInfo.setWlnStorageCode(wlnOrder.getString("storage_code"));
-        orderInfo.setDeliveryTime(DateUtil.offsetDay(orderInfo.getWlnCreateTime(), 1));
+        orderInfo.setSourcePlatform(wlnOrder.getString("source_platform"));
+        orderInfo.setShopName(wlnOrder.getString("shop_name"));
         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.setDepartmentId(department.getId());
+        orderInfo.setDeliveryTime(DateUtil.offsetDay(orderInfo.getWlnCreateTime(), 1));
         orderInfo.setRemark(wlnOrder.getString("remark"));
-        orderInfo.setTaxRate(new BigDecimal("10.00"));
-        orderInfo.setTag("0");
-        orderInfo.setSettlementStatus(1);
-
-        StringBuilder builder = new StringBuilder();
-        // 订单来源平台
-        if (wlnOrder.containsKey("source_platform")) {
-            builder.append(wlnOrder.getString("source_platform"));
-        }
-        // 店铺名称
-        if (wlnOrder.containsKey("shop_name")) {
-            builder.append("_").append(wlnOrder.getString("shop_name"));
-        }
-        orderInfo.setCommercePlatform(builder.toString());
 
         // 订单状态
         if (orderInfo.getWlnStatus() == 10 || orderInfo.getWlnStatus() == 11 || orderInfo.getWlnStatus() == 12) {
@@ -212,6 +168,37 @@ public class WlnOrderServiceImpl implements WlnOrderService {
         return orderInfo;
     }
 
+
+    /**
+     * 修改订单
+     */
+    private void updateOrder(OrderContext context, JSONObject wlnOrder, Department department, OrderInfo orderInfo) {
+        List<OrderInfo> updateOrderList = context.getUpdateOrderList();
+
+        orderInfo.setDepartmentId(department.getId());
+        orderInfo.setWlnStorageCode(wlnOrder.getString("storage_code"));
+        orderInfo.setWlnUid(wlnOrder.getString("uid"));
+        orderInfo.setCode(wlnOrder.getString("tp_tid"));
+        orderInfo.setWlnCode(wlnOrder.getString("trade_no"));
+        orderInfo.setWlnStatus(wlnOrder.getInteger("process_status"));
+        orderInfo.setWlnCreateTime(wlnOrder.getDate("create_time"));
+        orderInfo.setWlnModifyTime(wlnOrder.getDate("modify_time"));
+        orderInfo.setWlnModifyTimestamp(wlnOrder.getLong("modify_time"));
+        orderInfo.setWlnApproveTime(wlnOrder.getDate("approve_time"));
+        orderInfo.setWlnPrintTime(wlnOrder.getDate("print_time"));
+        orderInfo.setSourcePlatform(wlnOrder.getString("source_platform"));
+        orderInfo.setShopName(wlnOrder.getString("shop_name"));
+        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.setDeliveryTime(DateUtil.offsetDay(orderInfo.getWlnCreateTime(), 1));
+        orderInfo.setRemark(wlnOrder.getString("remark"));
+
+        updateOrderList.add(orderInfo);
+    }
+
     /**
      * 创建订单sku
      */

+ 1 - 5
sd-wln/src/main/java/com/sd/wln/util/WlnUtil.java

@@ -71,15 +71,11 @@ public class WlnUtil {
         TradesParam param = new TradesParam();
         param.setPage(page);
         param.setLimit(limit);
-        param.setApprove_time(startTime);
+        param.setModify_time(startTime);
         param.setEnd_time(endTime);
         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));