|
@@ -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
|