hexiugang 2 vuotta sitten
vanhempi
commit
30c44ecd59

+ 13 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/cm/SalesOrder.java

@@ -3,6 +3,7 @@ package com.iamberry.rst.core.cm;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.iamberry.rst.core.fm.ComplaintDetectInfo;
 import com.iamberry.rst.core.order.OrderMoneyLogs;
+import com.iamberry.wechat.tools.DateTimeUtil;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
@@ -1206,4 +1207,16 @@ public class SalesOrder implements Serializable {
     public void setSalesExOrderId(String salesExOrderId) {
         this.salesExOrderId = salesExOrderId;
     }
+
+    public void setSendState() {
+        //是否通知配货0:否1:是
+        this.setSalesIsSend(1);
+        //出库状态1:未出库2:已出库
+        this.setSalesDeliver(2);
+        //发货状态0(未发货)1(已发货,即已扫描出库)3(备货中)4(收货)11(已通知配货,后加)
+        this.setSalesShippingStatus(1);
+        //确认状态  0(未确认)1(确认)2(挂起)3(作废) 4:京东自发 -- 在订单项判断中,可能会变成京东仓库自发状态
+        this.setSalesStatus(1);
+    }
+
 }

+ 130 - 122
watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AwaitSendController.java

@@ -254,131 +254,18 @@ public class AwaitSendController {
         //小亚通拉取订单检测是否有退款等异常状态
         if (pagedResult != null && pagedResult.getDataList() != null && !pagedResult.getDataList().isEmpty()) {
             for (SalesOrder temp : pagedResult.getDataList()) {
-                // 校验淘宝订单
                 if (temp.getSalesBatchId().startsWith("ST")) {
-                    LOGGER.info("淘宝订单需要校验订单状态{}", temp.getSalesOrderId());
-                    String id = temp.getSalesExOrderId();
-                    Trade details = taobaoTask.getOrderDetails(Long.parseLong(id));
-                    LOGGER.info("获取到的淘宝订单数据:{}", JSONObject.toJSONString(details));
-                    int stats = 0;
-                    for (Order order : details.getOrders()) {
-                        if (!order.getRefundStatus().equals("NO_REFUND")) {
-                            stats ++;
-                        }
-                    }
-                    LOGGER.info("当前订单退款数量:{}", stats);
-                    if (stats != 0) {
-                        if (stats == details.getOrders().size()) {
-                            for (SalesOrderItem item : temp.getSalesOrderItemList()) {
-                                //修改订单项售后状态跟随小亚通平台
-                                SalesOrderItem newSalesOrderItem = new SalesOrderItem();
-                                newSalesOrderItem.setItemId(item.getItemId());
-                                newSalesOrderItem.setItemWarrantyStatus(1);
-                                salesOrderMapper.updateOrderItemObj(newSalesOrderItem);
-                            }
-                        } else {
-                            for (SalesOrderItem item : temp.getSalesOrderItemList()) {
-                                for (Order order : details.getOrders()) {
-                                    if (
-                                            item.getItemOtherId().equals(order.getOid().toString())
-                                                    &&
-                                            !order.getRefundStatus().equals("NO_REFUND")) {
-                                        //修改订单项售后状态跟随小亚通平台
-                                        SalesOrderItem newSalesOrderItem = new SalesOrderItem();
-                                        newSalesOrderItem.setItemId(item.getItemId());
-                                        newSalesOrderItem.setItemWarrantyStatus(1);
-                                        salesOrderMapper.updateOrderItemObj(newSalesOrderItem);
-                                    }
-                                }
-                            }
-                        }
-                        SalesOrder sonOrder = new SalesOrder();
-                        sonOrder.setSalesId(temp.getSalesId());
-                        sonOrder.setSalesShippingStatus(0);
-                        // 确认状态  0(未确认)1(确认)2(挂起)3(作废)
-                        sonOrder.setSalesStatus(0);
-                        // 有退款
-                        sonOrder.setSalesWarrantyStatus(1);
-                        if(salesOrderService.update(sonOrder) > 0){
-                            //添加操作跟踪信息
-                            OrderTracking orderTracking = new OrderTracking();
-                            orderTracking.setAdminId(1);
-                            orderTracking.setSalesDealCode(temp.getSalesDealCode());
-                            orderTracking.setTrackingDesc("发货检测第三方订单状态异常,退回未确认状态");
-                            salesOrderService.addTracking(orderTracking);
-                        }
-                    } else {
-                        salesOrderList.add(temp);
-                    }
+                    // 校验淘宝订单
+                    vaildTaobaoOrder(temp, salesOrderList);
                 } else if (temp.getSalesBatchId().startsWith("JT")) {
-                    LOGGER.info("京东订单需要校验订单状态{}", temp.getSalesOrderId());
-                    String id = temp.getSalesExOrderId();
-                    try {
-                        Map<String, String> params = new HashMap<>();
-                        params.put("orderId", id);
-                        params.put("code", AES.encrypt(id));
-                        String result = HttpClient431Util.doPost(params, jdOrderDomain + "/jingdong/orderEnGet");
-
-                        if (StringUtil.isNotEmpty(result)) {
-                            OrderSearchInfo detail = com.alibaba.fastjson.JSONObject.parseObject(result, OrderSearchInfo.class);
-                            LOGGER.info("请求京东详情成功,结果:{}", result);
-                            if (detail != null) {
-                                // 非待发货订单,同步订单数据
-                                if (!"WAIT_SELLER_STOCK_OUT".equals(detail.getOrderState()) && !"WAIT_SELLER_DELIVERY".equals(detail.getOrderState())) {
-                                    LOGGER.info("京东订单已在京东平台出库:{}", id);
-
-                                    SalesOrder sonOrder = new SalesOrder();
-                                    sonOrder.setSalesId(temp.getSalesId());
-                                    //是否通知配货0:否1:是
-                                    sonOrder.setSalesIsSend(1);
-                                    //出库状态1:未出库2:已出库
-                                    sonOrder.setSalesDeliver(2);
-                                    //发货状态0(未发货)1(已发货,即已扫描出库)3(备货中)4(收货)11(已通知配货,后加)
-                                    sonOrder.setSalesShippingStatus(1);
-                                    //确认状态  0(未确认)1(确认)2(挂起)3(作废) 4:京东自发 -- 在订单项判断中,可能会变成京东仓库自发状态
-                                    sonOrder.setSalesStatus(1);
-                                    sonOrder.setSalesDeliverTime(DateTimeUtil.parse(detail.getModified()));
-                                    sonOrder.setSalesPostFirm("jd");
-                                    sonOrder.setSalesPostNum(detail.getWaybill());
-
-                                    for (SalesOrderItem item : temp.getSalesOrderItemList()) {
-                                        //修改订单项售后状态跟随小亚通平台
-                                        SalesOrderItem newSalesOrderItem = new SalesOrderItem();
-                                        newSalesOrderItem.setItemId(item.getItemId());
-                                        newSalesOrderItem.setItemWarrantyStatus(1);
-                                        salesOrderMapper.updateOrderItemObj(newSalesOrderItem);
-                                    }
-
-                                    // 无法判断退款
-//                        sonOrder.setSalesWarrantyStatus(1);
-                                    if(salesOrderService.update(sonOrder) > 0){
-                                        //添加操作跟踪信息
-                                        OrderTracking orderTracking = new OrderTracking();
-                                        orderTracking.setAdminId(1);
-                                        orderTracking.setSalesDealCode(temp.getSalesDealCode());
-                                        orderTracking.setTrackingDesc("发货检测第三方订单状态异常,退回未确认状态");
-                                        salesOrderService.addTracking(orderTracking);
-                                    }
-                                } else {
-                                    salesOrderList.add(temp);
-                                }
-                            }
-                        } else {
-                            LOGGER.info("请求京东详情失败,jdOrderId: {}, 结果:{}", id, result);
-                        }
-                    } catch (Exception e) {
-                        throw new RuntimeException(e);
-                    }
+                    // 教研京东订单
+                    vaildJdOrder(salesOrder, salesOrderList);
+                } else if (temp.getSalesBatchId().startsWith("SX")) {
+                    // 校验小亚通订单
+                    vaildXytOrder(salesOrder, salesOrderList);
                 } else {
-                    // 非淘宝订单 & 非淘宝订单
-                    if(temp.getSalesProcessRefund() != 1){
-                        boolean isShip = orderSyncLogService.syncXYTOrderShipInspec(temp.getSalesId());
-                        if(isShip){
-                            salesOrderList.add(temp);
-                        }
-                    }else{
-                        salesOrderList.add(temp);
-                    }
+                    // 普通订单
+                    salesOrderList.add(temp);
                 }
             }
         }
@@ -434,6 +321,127 @@ public class AwaitSendController {
                 .addObject("waitProductTotal", waitProductTotal);
     }
 
+    private void vaildXytOrder(SalesOrder temp, List<SalesOrder> salesOrderList) {
+        // 非淘宝订单 & 非淘宝订单
+        if(temp.getSalesProcessRefund() != 1){
+            boolean isShip = orderSyncLogService.syncXYTOrderShipInspec(temp.getSalesId());
+            if(isShip){
+                salesOrderList.add(temp);
+            }
+        }else{
+            salesOrderList.add(temp);
+        }
+    }
+
+    private void vaildJdOrder(SalesOrder temp, List<SalesOrder> salesOrderList) {
+        LOGGER.info("京东订单需要校验订单状态{}", temp.getSalesOrderId());
+        String id = temp.getSalesExOrderId();
+        try {
+            Map<String, String> params = new HashMap<>();
+            params.put("orderId", id);
+            params.put("code", AES.encrypt(id));
+            String result = HttpClient431Util.doPost(params, jdOrderDomain + "/jingdong/orderEnGet");
+
+            if (StringUtil.isNotEmpty(result)) {
+                OrderSearchInfo detail = com.alibaba.fastjson.JSONObject.parseObject(result, OrderSearchInfo.class);
+                LOGGER.info("请求京东详情成功,结果:{}", result);
+                if (detail != null) {
+                    if ("WAIT_GOODS_RECEIVE_CONFIRM".equals(detail.getOrderState()) || "FINISHED_L".equals(detail.getOrderState())) {
+                        // 如果已经发货,则获取订单物流信息
+                        LOGGER.info("京东订单已在京东平台出库:{}", id);
+                        SalesOrder sonOrder = new SalesOrder();
+                        sonOrder.setSalesId(temp.getSalesId());
+                        sonOrder.setSendState();
+                        sonOrder.setSalesDeliverTime(DateTimeUtil.parse(detail.getModified()));
+                        // @ACK 此处以后需要获取id,到数据库判断
+                        sonOrder.setSalesPostFirm("jd");
+                        sonOrder.setSalesPostNum(detail.getWaybill());
+                        if(salesOrderService.update(sonOrder) > 0){
+                            // 添加操作跟踪信息
+                            OrderTracking orderTracking = new OrderTracking();
+                            orderTracking.setAdminId(1);
+                            orderTracking.setSalesDealCode(temp.getSalesDealCode());
+                            orderTracking.setTrackingDesc("同步京东平台发货");
+                            salesOrderService.addTracking(orderTracking);
+                        }
+                    } else if("WAIT_SELLER_STOCK_OUT".equals(detail.getOrderState())) {
+                        // 待发货订单
+                        salesOrderList.add(temp);
+                    } else {
+                        // 订单状态异常,不允许发货
+                        syncOrderStateError(temp.getSalesId(), temp.getSalesDealCode());
+                    }
+                }
+            } else {
+                LOGGER.info("请求京东详情失败,jdOrderId: {}, 结果:{}", id, result);
+            }
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    private void vaildTaobaoOrder(SalesOrder temp, List<SalesOrder> salesOrderList) {
+        LOGGER.info("淘宝订单需要校验订单状态{}", temp.getSalesOrderId());
+        String id = temp.getSalesExOrderId();
+        Trade details = taobaoTask.getOrderDetails(Long.parseLong(id));
+        LOGGER.info("获取到的淘宝订单数据:{}", JSONObject.toJSONString(details));
+        int stats = 0;
+        for (Order order : details.getOrders()) {
+            if (!order.getRefundStatus().equals("NO_REFUND")) {
+                stats ++;
+            }
+        }
+        LOGGER.info("当前订单退款数量:{}", stats);
+        if (stats != 0) {
+            if (stats == details.getOrders().size()) {
+                for (SalesOrderItem item : temp.getSalesOrderItemList()) {
+                    //修改订单项售后状态跟随小亚通平台
+                    SalesOrderItem newSalesOrderItem = new SalesOrderItem();
+                    newSalesOrderItem.setItemId(item.getItemId());
+                    newSalesOrderItem.setItemWarrantyStatus(1);
+                    salesOrderMapper.updateOrderItemObj(newSalesOrderItem);
+                }
+            } else {
+                for (SalesOrderItem item : temp.getSalesOrderItemList()) {
+                    for (Order order : details.getOrders()) {
+                        if (
+                                item.getItemOtherId().equals(order.getOid().toString())
+                                        &&
+                                        !order.getRefundStatus().equals("NO_REFUND")) {
+                            //修改订单项售后状态跟随小亚通平台
+                            SalesOrderItem newSalesOrderItem = new SalesOrderItem();
+                            newSalesOrderItem.setItemId(item.getItemId());
+                            newSalesOrderItem.setItemWarrantyStatus(1);
+                            salesOrderMapper.updateOrderItemObj(newSalesOrderItem);
+                        }
+                    }
+                }
+            }
+            // 修改订单状态,增加日志
+            syncOrderStateError(temp.getSalesId(), temp.getSalesDealCode());
+        } else {
+            salesOrderList.add(temp);
+        }
+    }
+
+    private void syncOrderStateError(Integer salesId, String code) {
+        SalesOrder sonOrder = new SalesOrder();
+        sonOrder.setSalesId(salesId);
+        sonOrder.setSalesShippingStatus(0);
+        // 确认状态  0(未确认)1(确认)2(挂起)3(作废)
+        sonOrder.setSalesStatus(0);
+        // 有退款
+        sonOrder.setSalesWarrantyStatus(1);
+        if(salesOrderService.update(sonOrder) > 0){
+            //添加操作跟踪信息
+            OrderTracking orderTracking = new OrderTracking();
+            orderTracking.setAdminId(1);
+            orderTracking.setSalesDealCode(code);
+            orderTracking.setTrackingDesc("发货检测第三方订单状态异常,退回未确认状态");
+            salesOrderService.addTracking(orderTracking);
+        }
+    }
+
     /**
      * 创建电子面单上需要显示的产品名称
      * @param salesOrderInfo