Pārlūkot izejas kodu

小亚通接口调用

wangxiaoming 5 gadi atpakaļ
vecāks
revīzija
f7aa3ac003
17 mainītis faili ar 559 papildinājumiem un 124 dzēšanām
  1. 9 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/cm/SalesOrder.java
  2. 9 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/cm/SalesOrderItem.java
  3. 9 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/tools/LogisticsInfo.java
  4. 7 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/SalesOrderService.java
  5. 7 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/order/LogisticsInfoService.java
  6. 2 3
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/order/OrderSyncLogService.java
  7. 6 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java
  8. 7 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/SalesOrderMapper.java
  9. 11 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/salesOrderMapper.xml
  10. 5 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/order/LogisticsInfoServiceImpl.java
  11. 427 115
      watero-rst-service/src/main/java/com/iamberry/rst/service/order/OrderSyncLogServiceImpl.java
  12. 8 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/order/mapper/LogisticsInfoMapper.java
  13. 6 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/order/mapper/logisticsInfoMapper.xml
  14. 4 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/product/mapper/productColorMapper.xml
  15. 13 0
      watero-rst-service/src/main/java/com/iamberry/rst/util/GenerateKeyUtil.java
  16. 15 2
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/mq/MQTask.java
  17. 14 1
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AdminOrderPlatformController.java

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

@@ -71,6 +71,7 @@ public class SalesOrder implements Serializable {
     private Integer salesIsLocked;          //是否锁定  0:否1:是
     private Integer salesIsSeparate;        //是否缺货  0:否1:是
     private Integer salesIsDownload;        //是否下载过     1 未下载 2 已下载
+    private Integer salesIsShip;        //是否同步物流到第三方平台  0:否 1:是
     private Integer salesMainOrderId;       //主订单id(拆单用)
 
     private String companyName;             //销售公司名称
@@ -1107,4 +1108,12 @@ public class SalesOrder implements Serializable {
     public void setTrackingAdminId(Integer trackingAdminId) {
         this.trackingAdminId = trackingAdminId;
     }
+
+    public Integer getSalesIsShip() {
+        return salesIsShip;
+    }
+
+    public void setSalesIsShip(Integer salesIsShip) {
+        this.salesIsShip = salesIsShip;
+    }
 }

+ 9 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/cm/SalesOrderItem.java

@@ -12,6 +12,7 @@ public class SalesOrderItem implements Serializable {
 
     private Integer itemId;             //订单项id
     private Integer itemOrderId;        //所属订单
+    private String itemOtherId;        //外部订单项ID
     private Integer itemProductId;      //产品id
     private Integer itemNum;            //产品数量
     private Integer itemColorId;        //产品颜色         为配件时存储配件id
@@ -248,4 +249,12 @@ public class SalesOrderItem implements Serializable {
     public void setSalesBelongOrderId(Integer salesBelongOrderId) {
         this.salesBelongOrderId = salesBelongOrderId;
     }
+
+    public String getItemOtherId() {
+        return itemOtherId;
+    }
+
+    public void setItemOtherId(String itemOtherId) {
+        this.itemOtherId = itemOtherId;
+    }
 }

+ 9 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/tools/LogisticsInfo.java

@@ -16,6 +16,7 @@ public class LogisticsInfo implements Serializable {
     private String logisticsRstCode;//rst物流公司代码
     private String logisticsEfastCode;//Efast物流公司代码
     private String logisticsOnehundredCode;//快递100物流公司代码
+    private String logisticsXytCode;//小亚通快递公司编号
     //备注
     private String logisticsReamk;
     private Date createDate;//创建时间
@@ -124,4 +125,12 @@ public class LogisticsInfo implements Serializable {
     public void setLogisticsIsSynchronous(Integer logisticsIsSynchronous) {
         this.logisticsIsSynchronous = logisticsIsSynchronous;
     }
+
+    public String getLogisticsXytCode() {
+        return logisticsXytCode;
+    }
+
+    public void setLogisticsXytCode(String logisticsXytCode) {
+        this.logisticsXytCode = logisticsXytCode;
+    }
 }

+ 7 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/SalesOrderService.java

@@ -45,6 +45,13 @@ public interface SalesOrderService {
      */
     SalesOrder getSalesOrderByIdConcise(Integer salesId);
 
+  /**
+     * 根据订单id查询订单项信息
+     * @param itemOrderId
+     * @return
+     */
+    List<SalesOrderItem> getOrderItemListBySalesId(Integer itemOrderId);
+
     /**
      * 根据id查询订单信息,单个请用getSalesOrderById
      * @param salesIds

+ 7 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/order/LogisticsInfoService.java

@@ -31,6 +31,13 @@ public interface LogisticsInfoService {
     String  getLogisticsNameById(String code);
 
     /**
+     * 查询单条数据
+     * @param  code
+     * @return  logisticsInfo
+     */
+    LogisticsInfo  getLogisticsNameByRSTCode(String code);
+
+    /**
      * 增加数据
      * @param  logisticsInfo
      * @return Integer

+ 2 - 3
watero-rst-interface/src/main/java/com/iamberry/rst/faces/order/OrderSyncLogService.java

@@ -49,15 +49,14 @@ public interface OrderSyncLogService {
      * @param
      * @return Integer
      */
-    boolean syncXYTOrderShipInspec(String orderId);
-
+    boolean syncXYTOrderShipInspec(Integer salesOrderId);
 
     /**
      * 小亚通 - 发货判断,检测是否退货或者其他异常状态
      * @param
      * @return Integer
      */
-    boolean syncXYTOrderShip(String orderId);
+    boolean syncXYTOrderShip(Integer salesOrderId);
 
 
 

+ 6 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java

@@ -127,6 +127,12 @@ public class SalesOrderServiceImpl implements SalesOrderService {
     }
 
     @Override
+    public List<SalesOrderItem> getOrderItemListBySalesId(Integer itemOrderId) {
+        return salesOrderMapper.getOrderItemListBySalesId(itemOrderId);
+    }
+
+
+    @Override
     public List<SalesOrder> getSalesOrderByIds(Integer[] salesIds){
         return salesOrderMapper.getSalesOrderByIds(salesIds);
     }

+ 7 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/SalesOrderMapper.java

@@ -32,6 +32,13 @@ public interface SalesOrderMapper {
     SalesOrder getSalesOrderByIdConcise(Integer salesId);
 
     /**
+     * 根据订单id查询订单项信息
+     * @param itemOrderId
+     * @return
+     */
+    List<SalesOrderItem> getOrderItemListBySalesId(Integer itemOrderId);
+
+    /**
      * 根据id查询订单信息,单个请用getSalesOrderById
      * @param salesIds
      * @return

+ 11 - 2
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/salesOrderMapper.xml

@@ -77,6 +77,15 @@
   </select>
 
   <!-- 根据id查询订单信息 -->
+  <select id="getOrderItemListBySalesId" resultType="SalesOrder" parameterType="java.lang.Integer" >
+    SELECT
+      soi.*
+    FROM
+      tb_rst_sales_order_item soi
+    where soi.item_order_id = #{itemOrderId}
+  </select>
+
+  <!-- 根据id查询订单信息 -->
   <select id="getSalesOrderByIds" resultType="SalesOrder" parameterType="java.util.List" >
     select
       t.sales_id,t.sales_orderId,t.sales_deal_code,t.sales_send_type,t.sales_send_time,t.sales_sales_time,t.sales_post_num,t.sales_post_firm,
@@ -978,14 +987,14 @@
   <insert id="addOrderItemList" parameterType="ArrayList">
     INSERT INTO tb_rst_sales_order_item
       (
-        item_order_id,item_product_id,item_num,item_color_id,item_product_type,
+        item_order_id,item_other_id,item_product_id,item_num,item_color_id,item_product_type,
         item_product_name,item_product_pic,item_product_color,item_color_bar,
         item_product_price,item_product_discount,item_total,item_cost,item_cost_total,item_create_time,item_is_source
       )
     VALUES
     <foreach collection="list" item="item" separator=",">
       (
-        #{item.itemOrderId},#{item.itemProductId},#{item.itemNum},#{item.itemColorId},
+        #{item.itemOrderId},#{item.itemOtherId},#{item.itemProductId},#{item.itemNum},#{item.itemColorId},
         #{item.itemProductType},#{item.itemProductName},#{item.itemProductPic},#{item.itemProductColor},
         #{item.itemColorBar},#{item.itemProductPrice},#{item.itemProductDiscount},#{item.itemTotal},
         #{item.itemCost},#{item.itemCostTotal}, #{item.itemCreateTime},#{item.itemIsSource}

+ 5 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/order/LogisticsInfoServiceImpl.java

@@ -48,6 +48,11 @@ public class LogisticsInfoServiceImpl  implements LogisticsInfoService {
         return name;
     }
 
+    @Override
+    public LogisticsInfo getLogisticsNameByRSTCode(String code) {
+        return  logisticsInfoMapper.getLogisticsNameByRSTCode(code);
+    }
+
     /**
      * 增加数据
      * @param  logisticsInfo

+ 427 - 115
watero-rst-service/src/main/java/com/iamberry/rst/service/order/OrderSyncLogServiceImpl.java

@@ -1,10 +1,13 @@
 package com.iamberry.rst.service.order;
 
+import com.google.common.annotations.VisibleForTesting;
 import com.iamberry.app.tool.util.MD5;
 import com.iamberry.rst.core.cm.SalesOrder;
 import com.iamberry.rst.core.cm.SalesOrderItem;
 import com.iamberry.rst.core.order.*;
+import com.iamberry.rst.core.tools.LogisticsInfo;
 import com.iamberry.rst.faces.cm.SalesOrderService;
+import com.iamberry.rst.faces.order.LogisticsInfoService;
 import com.iamberry.rst.faces.order.OrderBatchService;
 import com.iamberry.rst.faces.order.OrderSyncLogService;
 import com.iamberry.rst.service.order.mapper.OrderSyncLogMapper;
@@ -43,6 +46,8 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
     @Autowired
     private ProductColorMapper productColorMapper;
     @Autowired
+    private LogisticsInfoService logisticsInfoService;
+    @Autowired
     private SalesOrderService salesOrderService;
     @Autowired
     private OrderSyncPlatformMapper orderSyncPlatformMapper;
@@ -60,6 +65,7 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
         return XYT_PLATFORM;
     }
 
+
     /**
      * 获取集合
      * @param  orderSyncLog
@@ -96,29 +102,75 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
      * @return
      */
     @Override
-    public Integer syncXYTOrder(Integer type,Date creatTime) {
+    public synchronized Integer syncXYTOrder(Integer type,Date creatTime) {
         OrderSyncPlatform orderSyncPlatform =  getXYTPlatform();
-        Map<String,Object> map = new HashMap<>();
+        Map<String,Object> paramsMap = new HashMap<>();
+        List<Map<String,Object>> conditionTypeList = new ArrayList<>();
+        Map<String,Object> beginCreateTimeMap = new HashMap<>();
+        beginCreateTimeMap.put("condType","beginCreateTime");
         if(creatTime == null){
-//            OrderSyncLog orderSyncLog = orderSyncLogMapper.getSyncLogLast(orderSyncPlatform.getSyncPlatId());
-//            if(orderSyncLog == null){
-//                logger.info("XYT拉取订单-调用接口失败-缺少开始时间");
-//                return 0;
-//            }
-            map.put("beginCreateTime", sdf.format(orderSyncPlatform.getSyncOrderLastTime()));//生成开始时间
+            beginCreateTimeMap.put("condValue", sdf.format(orderSyncPlatform.getSyncOrderLastTime()));//生成开始时间
         }else{
-            map.put("beginCreateTime", sdf.format(creatTime));//生成开始时间
+            beginCreateTimeMap.put("condValue", sdf.format(creatTime));//生成开始时间
+        }
+        conditionTypeList.add(beginCreateTimeMap);
+
+        Date endCreateTime = new Date();
+        Map<String,Object> endCreateTimeMap = new HashMap<>();
+        endCreateTimeMap.put("condType","endCreateTime");     //receiverName 收件人姓名 //receiverMobile收件人手机号码 //outOrderId原始订单号 //orderId系统订单号
+        endCreateTimeMap.put("condValue",sdf.format(endCreateTime));//生成结束时间
+        conditionTypeList.add(endCreateTimeMap);
+
+        StringBuffer stringBuffer = new StringBuffer();
+        Integer amountAllNum = 0;   //同步总数量
+        Integer amountSuccessAllNum = 0;   //同步成功总数量
+        String batchId = ""; //批次id
+
+        //判断是否还有订单,继续拉取
+        boolean pullFlag = true;
+        Integer pageNumber = 1,pageSize=20; //控制分页
+        while (pullFlag){
+            Map<String,Object> condMap = new HashMap<>();
+            condMap.put("pageNumber",pageNumber);
+            condMap.put("pageSize",pageSize);
+            condMap.put("conditionType",conditionTypeList);
+            paramsMap.put("cond",condMap);
+            String json = this.syncXYT("IOrderServce.query",paramsMap);
+
+            //添加订单
+            Map<String,Object> map = this.saveOrder(1,json,batchId);
+            Integer status = (Integer) map.get("status");
+            batchId = (String) map.get("batchId");   //批次ID
+            Integer amountNum = (Integer) map.get("amountNum"); //拉取订单数量
+            Integer amountSuccessNum = (Integer) map.get("amountSuccessNum");//保存成功数量
+            if(status == 1){   //0.拉取订单失败   1.拉取订单成功
+                amountAllNum+=amountNum;
+                amountSuccessAllNum+=amountSuccessNum;
+            }else{
+                String errorMsg = (String) map.get("errorMsg");//失败订单号
+                stringBuffer.append(errorMsg);
+            }
+            if(amountNum < 20){
+                pullFlag = false;
+            }
         }
-        map.put("endCreateTime",sdf.format(new Date()));//生成结束时间
-//        map.put("receiverName","");//收件人姓名
-//        map.put("receiverMobile","");//收件人手机号码
-//        map.put("outOrderId","");//原始订单号
-//        map.put("orderId","");//系统订单号
-        String json = this.syncXYT("IOrderServce.query",map);
-
-        //添加订单
-        this.saveOrder(1,json);
 
+        OrderSyncLog orderSyncLog = new OrderSyncLog();
+        orderSyncLog.setSyncPlatId(orderSyncPlatform.getSyncPlatId());
+        orderSyncLog.setSyncLogType(1);
+        orderSyncLog.setSyncLogMode(type);
+        orderSyncLog.setSyncLogRecentNum(amountAllNum); //同步总数量
+        orderSyncLog.setSyncLogErrorNum(amountAllNum - amountSuccessAllNum); //同步失败数量
+        orderSyncLog.setSyncLogMsg("");   //备注
+        orderSyncLog.setSyncLogErrorMsg("同步失败订单号:"+stringBuffer.toString());  //失败信息
+        orderSyncLogMapper.save(orderSyncLog);
+
+        orderSyncPlatform.setSyncOrderLastTime(endCreateTime);
+
+        OrderSyncPlatform newOrderSyncPlatform = new OrderSyncPlatform();
+        newOrderSyncPlatform.setSyncOrderLastTime(endCreateTime);
+        newOrderSyncPlatform.setSyncPlatId(orderSyncPlatform.getSyncPlatId());
+        orderSyncPlatformMapper.update(newOrderSyncPlatform);
         return 1;
     }
 
@@ -130,104 +182,372 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
      */
     @Override
     public Integer syncXYTOrderOne(Integer type, String orderId) {
-        String json = syncOrderOnce(orderId);
-        this.saveOrder(2,json);
+        OrderSyncPlatform orderSyncPlatform =  getXYTPlatform();
+        Map<String,Object> paramsMap = new HashMap<>();
+        List<Map<String,Object>> conditionTypeList = new ArrayList<>();
+
+        //receiverName 收件人姓名 //receiverMobile收件人手机号码 //outOrderId原始订单号 //orderId系统订单号
+        Date endCreateTime = new Date();
+        Map<String,Object> orderIdMap = new HashMap<>();
+        orderIdMap.put("condType","orderId");
+        orderIdMap.put("condValue",sdf.format(endCreateTime));
+        conditionTypeList.add(orderIdMap);
+
+        StringBuffer stringBuffer = new StringBuffer();
+        Integer amountAllNum = 0;   //同步总数量
+        Integer amountSuccessAllNum = 0;   //同步成功总数量
+        String batchId = ""; //批次id
+
+        Map<String,Object> condMap = new HashMap<>();
+        condMap.put("pageNumber",1);
+        condMap.put("pageSize",20);
+        condMap.put("conditionType",conditionTypeList);
+        paramsMap.put("cond",condMap);
+        String json = this.syncXYT("IOrderServce.query",paramsMap);
+
+        //添加订单
+        Map<String,Object> map = this.saveOrder(1,json,batchId);
+        Integer status = (Integer) map.get("status");
+        batchId = (String) map.get("batchId");   //批次ID
+        Integer amountNum = (Integer) map.get("amountNum"); //拉取订单数量
+        Integer amountSuccessNum = (Integer) map.get("amountSuccessNum");//保存成功数量
+        String errorMsg = (String) map.get("errorMsg");//失败订单号
+        if(status == 1){   //0.拉取订单失败   1.拉取订单成功
+            amountAllNum+=amountNum;
+            amountSuccessAllNum+=amountSuccessNum;
+        }else{
+            stringBuffer.append(errorMsg);
+        }
+
+        OrderSyncLog orderSyncLog = new OrderSyncLog();
+        orderSyncLog.setSyncPlatId(orderSyncPlatform.getSyncPlatId());
+        orderSyncLog.setSyncLogType(1);
+        orderSyncLog.setSyncPlatId(type);
+        orderSyncLog.setSyncLogRecentNum(amountAllNum); //同步总数量
+        orderSyncLog.setSyncLogErrorNum(amountAllNum - amountSuccessAllNum); //同步失败数量
+        orderSyncLog.setSyncLogMsg("");   //备注
+        orderSyncLog.setSyncLogErrorMsg("同步失败订单号:"+stringBuffer.toString());  //失败信息
+        orderSyncLogMapper.save(orderSyncLog);
         return null;
     }
 
     /**
      * 检测发货
-     * @param orderId
+     * @param salesOrderId
      * @return
      */
     @Override
-    public boolean syncXYTOrderShipInspec(String orderId) {
-        String json = syncOrderOnce(orderId);
-        JSONObject jsonObj = new JSONObject(json);//转化为json格式
+    public boolean syncXYTOrderShipInspec(Integer salesOrderId) {
+        SalesOrder salesOrder = salesOrderService.getSalesOrderByIdConcise(salesOrderId);
+        if(!generateKeyUtil.isXytBatchId(salesOrder.getSalesBatchId())){    //不是小亚通第三方的订单,直接通过,不走该程序
+            return true;
+        }
+        List<SalesOrderItem>  salesOrderItemList = salesOrderService.getOrderItemListBySalesId(salesOrderId);
+
+        //删除因为拆单增加的订单后缀
+        String orderId  = salesOrder.getSalesDealCode();
+        if(orderId.indexOf("-")>-1){
+            orderId = orderId.substring(orderId.lastIndexOf("-"),orderId.length());
+        }
+
+        Map<String,Object> map = new HashMap<>();
+        map.put("orderId",orderId);//原始订单号
+        map.put("itemIds","");//订单项ID,如果为null 表示整个订单只有1 个包裹,否则只是部分订单项
+        map.put("companyCode","");//物流公司编码
+        map.put("deliveryNo","");//物流单号
+        map.put("deliveryTime","");//发货时间
+        String shipResultJson = this.syncXYT("IOrderServce.query",map);
+        JSONObject jsonObj = new JSONObject(shipResultJson);//转化为json格式
         String resultMsg = jsonObj.getString("result_msg");
         if(resultMsg.equals("success")){
-            //
-            return true;
+            JSONObject dataObj = jsonObj.getJSONObject("data");    //数据
+            JSONArray beanListArray = dataObj.getJSONArray("beanList");
+            if(beanListArray.length() > 0){  //数量大于0,就需要产品批次
+                JSONObject job = beanListArray.getJSONObject(0);
+                JSONObject infoObj = job.getJSONObject("info");   //订单基本信息
+                //订单状态::0 待支付;10 待成团;20 待发货;30 预售中;40 待审批;50 仓库代发货;60 已发货;70 已签收;80 已拒收;999 已作废
+                Integer orderStatus = infoObj.getInt("orderStatus");
+                //售后状态:0 没有售后 1 退款中  2 退款关闭 3 退款成功 4 退货中 5 退货关闭 6 退货成功 7 其它售后中  8 部分退货成功
+                Integer warrantyStatus = infoObj.getInt("warrantyStatus");
+                if(20 == orderStatus){    //20 待发货
+                    //售后状态分情况
+                    if(warrantyStatus == 0){    //0 没有售后
+                        return true;
+                    }else{
+                        //部分退货情况,应该考虑
+                        JSONArray itemsArray = job.getJSONArray("items");   //订单项基本信息
+                        //循环检测所有订单项是否能够发货
+                        boolean allStatus = true;
+                        for (SalesOrderItem salesOrderItem : salesOrderItemList) {
+                            Long otherId = Long.valueOf(salesOrderItem.getItemOtherId());   //外部订单id
+                            boolean sonStatus = true;
+                            for(int j=0;j<itemsArray.length();j++) {
+                                JSONObject item = itemsArray.getJSONObject(j);
+                                Long orderItemId = item.getLong("orderItemId"); //订单项id
+                                if(Objects.equals(orderItemId, otherId)){
+                                    //订单项状态: 0 待支付 10 待成团  20 待发货  30 预售中  40 待审批  50 仓库代发货  60 已发货  70 已签收  80 已拒收  999 已作废
+                                    Integer itemStatus = item.getInt("itemStatus");
+                                    if (itemStatus != 20) {
+                                        sonStatus = false;
+                                    }
+                                }
+                            }
+                            if(!sonStatus){
+                                allStatus = false;
+                            }
+                        }
+                        return allStatus;
+                    }
+                }else{
+                    if(999 == orderStatus){
+                        //如果该订单已作废,那么本系统将跟随作废
+                        SalesOrder so = new SalesOrder();
+                        so.setSalesId(salesOrderId);
+                        so.setSalesStatus(3);
+                        Integer res = salesOrderService.updateSalesOrder(so);
+                        if(res > 0){
+                            //添加操作跟踪信息
+                            OrderTracking orderTracking = new OrderTracking();
+                            orderTracking.setAdminId(1);
+                            orderTracking.setSalesDealCode(salesOrder.getSalesDealCode());
+                            orderTracking.setTrackingDesc("作废订单(发货验证-该订单已在第三方平台作废)");
+                            salesOrderService.addTracking(orderTracking);
+                        }
+                    }
+                    logger.info("小亚通调用检测该订单无法发货,该订单状态异常-订单状态:"+getStatusMsg(orderStatus));
+                    return false;
+                }
+            }
         }else{
-            logger.info("小亚通调用检测发货接口失败-拉取订单详情-失败原因:"+json);
+            logger.info("小亚通调用发货接口失败-失败原因:"+shipResultJson);
             return false;
         }
+        return false;
     }
 
     /**
      * 发货接口-小亚通
-     * @param orderId
+     * @param salesOrderId
      * @return
      */
     @Override
-    public boolean syncXYTOrderShip(String orderId) {
-        //查询订单
+    public boolean syncXYTOrderShip(Integer salesOrderId) {
+        SalesOrder salesOrder = salesOrderService.getSalesOrderByIdConcise(salesOrderId);
+        if(!generateKeyUtil.isXytBatchId(salesOrder.getSalesBatchId())){    //不是小亚通第三方的订单,直接通过,不走该程序
+            return true;
+        }
+        if(salesOrder.getSalesShippingStatus() != 1){
+            //1(已发货,即已扫描出库)
+            logger.info("小亚通发货失败,订单未发货!");
+            return false;
+        }
+        if(salesOrder.getSalesPostNum() == null || "".equals(salesOrder.getSalesPostNum())){
+            logger.info("小亚通发货失败,订单未发货!");
+            return false;
+        }
+        LogisticsInfo logisticsInfo = logisticsInfoService.getLogisticsNameByRSTCode(salesOrder.getSalesPostFirm());
+        List<SalesOrderItem>  salesOrderItemList = salesOrderService.getOrderItemListBySalesId(salesOrderId);
+
+        if(salesOrderItemList==null || salesOrderItemList.size()<1){
+            logger.info("小亚通发货失败,未查询到订单信息!");
+            return false;
+        }
+
+        HashSet<Long> itemIdSet = new HashSet();
+        for (SalesOrderItem salesOrderItem:salesOrderItemList) {
+            Long otherItemId =  Long.valueOf(salesOrderItem.getItemOtherId());
+            itemIdSet.add(otherItemId);
+        }
+
+        Long[] itemIds = new Long[itemIdSet.size()];
+        //通过加强for循环遍历HashSet
+        int i = 0;
+        for(Long item : itemIds) {
+            itemIds[i] = item;
+            i++;
+        }
+
+        //删除因为拆单增加的订单后缀
+        String orderId  = salesOrder.getSalesDealCode();
+        if(orderId.indexOf("-")>-1){
+            orderId = orderId.substring(orderId.lastIndexOf("-"),orderId.length());
+        }
+
+        Map<String,Object> deliveryInfosMap = new HashMap<>();
+        deliveryInfosMap.put("itemIds",itemIds);//订单项ID,如果为null 表示整个订单只有1 个包裹,否则只是部分订单项
+        deliveryInfosMap.put("companyCode",logisticsInfo.getLogisticsXytCode());//物流公司编码
+        deliveryInfosMap.put("deliveryNo",salesOrder.getSalesPostNum());//物流单号
+        deliveryInfosMap.put("deliveryTime",sdf.format(salesOrder.getSalesSendTime()));//发货时间
 
         Map<String,Object> map = new HashMap<>();
         map.put("orderId",orderId);//原始订单号
-        map.put("itemIds","");//订单项ID,如果为null 表示整个订单只有1 个包裹,否则只是部分订单项
-        map.put("companyCode","");//物流公司编码
-        map.put("deliveryNo","");//物流单号
-        map.put("deliveryTime","");//发货时间
-        String shipResultJson = this.syncXYT("IOrderServce.query",map);
+        map.put("deliveryInfos",deliveryInfosMap);//原始订单号
+
+        String shipResultJson = this.syncXYT("delivery",map);
         JSONObject jsonObj = new JSONObject(shipResultJson);//转化为json格式
         String resultMsg = jsonObj.getString("result_msg");
-        if(resultMsg.equals("success")){
-            //
+        if(resultMsg.equals("success")) {
+            //发货成功
             return true;
-        }else{
-            logger.info("小亚通调用发货接口失败-失败原因:"+shipResultJson);
-            return false;
         }
+        return false;
+    }
+
+    /**
+     * //订单状态::0 待支付;10 待成团;20 待发货;30 预售中;40 待审批;50 仓库代发货;60 已发货;70 已签收;80 已拒收;999 已作废
+     * @param orderStatus
+     * @return
+     */
+    private String getStatusMsg(Integer orderStatus){
+        String statusMsg = null;
+        switch (orderStatus){
+            case 0:
+                statusMsg = "待支付";
+                break;
+            case 10:
+                statusMsg = "待成团";
+                break;
+            case 20:
+                statusMsg = "待发货";
+                break;
+            case 30:
+                statusMsg = "预售中";
+                break;
+            case 40:
+                statusMsg = "待审批";
+                break;
+            case 50:
+                statusMsg = "仓库代发货";
+                break;
+            case 60:
+                statusMsg = "已发货";
+                break;
+            case 70:
+                statusMsg = "已签收";
+                break;
+            case 80:
+                statusMsg = "已拒收";
+                break;
+            case 999:
+                statusMsg = "已作废";
+                break;
+            default:
+                statusMsg = "订单状态异常";
+                break;
+        }
+        return statusMsg;
+    }
+
+    /**
+     * 售后状态:0 没有售后 1 退款中  2 退款关闭 3 退款成功 4 退货中 5 退货关闭 6 退货成功 7 其它售后中  8 部分退货成功
+     * @param warrantyStatus
+     * @return
+     */
+    private String getWarrantyStatusMsg(Integer warrantyStatus){
+        String statusMsg = null;
+        switch (warrantyStatus){
+            case 0:
+                statusMsg = "待支付";
+                break;
+            case 1:
+                statusMsg = "退款中";
+                break;
+            case 2:
+                statusMsg = "退款关闭";
+                break;
+            case 3:
+                statusMsg = "退款成功";
+                break;
+            case 4:
+                statusMsg = "退货中";
+                break;
+            case 5:
+                statusMsg = "退货关闭";
+                break;
+            case 6:
+                statusMsg = "退货成功";
+                break;
+            case 7:
+                statusMsg = "其它售后中";
+                break;
+            case 8:
+                statusMsg = "部分退货成功";
+                break;
+            default:
+                statusMsg = "售后状态异常";
+                break;
+        }
+        return statusMsg;
     }
 
     /**
      * 1:定时任务 2:手动同步
+     * return map.status 0.拉取订单失败   1.拉取订单成功
+     *        map.msg 信息
+     *        map.batchId 批次ID
+     *        map.amountNum 拉取订单数量
+     *        map.amountSuccessNum 保存成功数量
+     *        map.errorMsg 失败订单号
      * @return
      */
-    private boolean saveOrder(Integer type,String json){
+    private Map<String,Object> saveOrder(Integer type,String json,String batchId){
+        //返回保存订单结果
+        Map<String,Object> returnMap = new HashMap<>();
+
         OrderSyncPlatform orderSyncPlatform =  getXYTPlatform();
-        String batchId = "";    //批次编号
+
+        Integer amountNum = 0;  //本次拉取的订单数量
+        Integer amountSuccessNum = 0;  //保存成功数量
+        StringBuffer errorMsg = new StringBuffer(); //未防止部分拉取失败,所以加入失败原因
 //        JSONObject jsonObj = new JSONObject(json);//转化为json格式
         JSONObject jsonObj = new JSONObject(Alljson);//转化为json格式
         String resultMsg = jsonObj.getString("result_msg");
         if(resultMsg.equals("success")){
 
-            // 用户新建批次,系统自动新建
-            if("".equals(batchId)){
-                batchId = generateKeyUtil.getSalesBatchIdSX();
-                OrderBatch ob = new OrderBatch();
-                ob.setBatchId(batchId);
-                ob.setBatchStatus(1);
-                if(orderBatchService.save(ob) < 1){
-                    throw new RuntimeException("XYT拉取订单-创建订单批次失败");
-                }
-            }
-
             JSONObject dataObj = jsonObj.getJSONObject("data");    //数据
             JSONArray beanListArray = dataObj.getJSONArray("beanList");
+            amountNum = beanListArray.length();
+            if(beanListArray.length() > 0){  //数量大于0,就需要产品批次
+                // 用户新建批次,系统自动新建
+                if("".equals(batchId)){
+                    batchId = generateKeyUtil.getSalesBatchIdSX();
+                    OrderBatch ob = new OrderBatch();
+                    ob.setBatchId(batchId);
+                    ob.setBatchStatus(1);
+                    if(orderBatchService.save(ob) < 1){
+                        throw new RuntimeException("XYT拉取订单-创建订单批次失败");
+                    }
+                }
+            }else{
+                returnMap.put("status",0);  //拉取订单失败
+                returnMap.put("msg","未拉取到任何订单");  //拉取订单失败原因
+                return returnMap;
+            }
             for(int i=0;i<beanListArray.length();i++){
                 JSONObject job = beanListArray.getJSONObject(i);
+                Long otherOrderId = null;
                 try{
                     JSONObject consigneeObj = job.getJSONObject("consignee");   //用户信息
                     JSONObject infoObj = job.getJSONObject("info");   //订单基本信息
                     JSONArray itemsArray = job.getJSONArray("items");   //订单项基本信息
                     JSONObject memoObj = job.getJSONObject("memo");   //备注信息
 
-                    //订单项状态:0 待支付;10 待成团;20 待发货;30 预售中;40 待审批;50 仓库代发货;60 已发货;70 已签收;80 已拒收;999 已作废
-                    Integer itemStatus = infoObj.getInt("itemStatus");
-                    if(itemStatus != 20){   //20 待发货
+                    //订单状态::0 待支付;10 待成团;20 待发货;30 预售中;40 待审批;50 仓库代发货;60 已发货;70 已签收;80 已拒收;999 已作废
+                    Integer orderStatus = infoObj.getInt("orderStatus");
+                    if(20 != orderStatus){   //20 待发货
                         continue;
                     }
 
                     SalesOrder salesOrder = new SalesOrder();
-                    salesOrder.setSalesOrderId(infoObj.getString("orderId"));  //小亚通订单编号
-                    salesOrder.setSalesDealCode(infoObj.getString("orderId"));  //小亚通订单编号
+                    Long orderId = infoObj.getLong("orderId");
+                    otherOrderId = orderId;
+                    salesOrder.setSalesOrderId(String.valueOf(orderId));  //小亚通订单编号
+                    salesOrder.setSalesDealCode(String.valueOf(orderId));  //小亚通订单编号
 
                     //收货人信息
                     salesOrder.setSalesAddressPostcode(consigneeObj.getString("receiverZip"));//收件人邮政编码
                     salesOrder.setSalesAddressName(consigneeObj.getString("receiverName"));//收件人姓名
-                    salesOrder.setSalesAddressTel(consigneeObj.getString("receiverMobile"));//收件人电话
+                    salesOrder.setSalesAddressTel(consigneeObj.getString("receiverMobile"));//收件人手机号码
                     //salesOrder.setSalesAddressDesc(consigneeObj.getString(""));//地址详情
                     String receiverState = consigneeObj.getString("receiverState");//省
                     String receiverCity = consigneeObj.getString("receiverCity");//市
@@ -235,6 +555,7 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
                     String receiverAddress = consigneeObj.getString("receiverAddress");//地址
                     salesOrder.setSalesAddressInfo(receiverState+" "+receiverCity+" "+receiverDistrict+" "+receiverAddress);//详细地址
 
+                    salesOrder.setSalesOpenId(consigneeObj.getString("receiverMobile"));
                     //平台
                     String platformId = infoObj.getString("platformId");    //SELF- 自身  TMALL- 天猫  KDT- 有赞 LJSW-生活作风
                     switch (platformId){
@@ -258,7 +579,7 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
                     }
 
                     //支付金额
-                    Double totalFee = infoObj.getDouble("totalFee");
+                    Long totalFee = infoObj.getLong("totalFee");
                     totalFee = totalFee*100;
                     Integer amount = totalFee.intValue();
                     salesOrder.setSalesLastMoney(amount);//本次支付金额
@@ -266,7 +587,7 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
                     salesOrder.setSalesAmount(amount);//订单总金额
 
                     //优惠金额
-                    Double discountFee = infoObj.getDouble("discountFee");
+                    Long discountFee = infoObj.getLong("discountFee");
                     discountFee = discountFee*100;
                     Integer discountFeeInt = discountFee.intValue();
                     salesOrder.setSalesDiscountMoney(discountFeeInt);//优惠金额
@@ -284,7 +605,7 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
                     salesOrder.setSalesAdminRemark(sellerMemo);//后台的备注--卖家备注
 
                     //邮费
-                    Double postFee = memoObj.getDouble("postFee"); //邮费
+                    Long postFee = infoObj.getLong("postFee"); //邮费
                     postFee = postFee*100;
                     Integer postFeeInt = postFee.intValue();
                     salesOrder.setSalesPostageCost(postFeeInt);//邮费成本
@@ -303,6 +624,7 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
                     salesOrder.setSalesPledgeMoney(0);//押金金额
                     salesOrder.setSalesRemainDeposit(0);
                     salesOrder.setSalesWaitMoney(0);//待付金额
+                    salesOrder.setSalesSendType(2);//送货方式 1:线下送货,2:物流发货
 
                     //状态信息
                     salesOrder.setSalesIsSend(0);//是否通知配货0:否1:是
@@ -314,17 +636,32 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
                     salesOrder.setSalesAdminId(1);   //录入人id
 
                     List<SalesOrderItem> salesOrderItemList = new ArrayList<SalesOrderItem>();
+                    Integer itemNum = 0;    //判断该订单的订单项是否完整
                     for(int j=0;j<itemsArray.length();j++){
                         JSONObject item = itemsArray.getJSONObject(j);
+                        //订单项状态: 0 待支付 10 待成团  20 待发货  30 预售中  40 待审批  50 仓库代发货  60 已发货  70 已签收  80 已拒收  999 已作废
+                        Integer itemStatus = item.getInt("itemStatus"); //
+                        if(itemStatus != 20){
+                            continue;
+                        }
+                        itemNum++;
 
                         SalesOrderItem salesOrderItem = new SalesOrderItem();
 
-                        String extSkuId = memoObj.getString("extSkuId"); //sku - 69码
+                        String extSkuId = item.getString("extSkuId"); //sku - 69码
 
                         ProductColor productColor = productColorMapper.getProductColorByBar(extSkuId);
+                        if(productColor == null){
+                            logger.info("订单编号:"+orderId+"-订单项中的SKU未匹配到本地,SKU编号:"+extSkuId+"; ");
+                            errorMsg.append(orderId+"-订单项中的SKU未匹配到本地,SKU编号:"+extSkuId+";");
+                            break;
+                        }
+
+                        Long orderItemId = item.getLong("orderItemId"); //小亚通订单项编号
+                        salesOrderItem.setItemOtherId(String.valueOf(orderItemId));
 
-                        Integer num = memoObj.getInt("num"); //数量
-                        Double itemDiscountFee = memoObj.getDouble("discountFee"); //折扣费
+                        Integer num = item.getInt("num"); //数量
+                        Long itemDiscountFee = item.getLong("discountFee"); //折扣费
                         itemDiscountFee = itemDiscountFee*100;
                         Integer itemDiscountFeeInt = itemDiscountFee.intValue();
                         Integer itemTotal = itemDiscountFeeInt*num;
@@ -349,6 +686,10 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
                         salesOrderItem.setItemIsSource(1);//产品来源 1:产品颜色表,2:配件表
                         salesOrderItemList.add(salesOrderItem);
                     }
+                    if(salesOrderItemList.size() != itemNum){
+                        errorMsg.append(otherOrderId+"添加订单,订单项出现错误;");
+                        continue;
+                    }
                     salesOrder.setSalesOrderItemList(salesOrderItemList);
                     String[] detectIds = {};
                     salesOrderService.addRstOrderinfo(salesOrder,new ArrayList<SalesOrder>(),detectIds);
@@ -359,7 +700,9 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
                     orderTracking.setSalesDealCode(salesOrder.getSalesDealCode());
                     orderTracking.setTrackingDesc("创建订单(小亚通拉取订单)");
                     salesOrderService.addTracking(orderTracking);
+                    amountSuccessNum++;
                 }catch (Exception e){
+                    errorMsg.append(otherOrderId+"添加订单失败;");
                     e.printStackTrace();
                     logger.info("XYT拉取订单-添加订单错误-错误信息:"+e.getMessage());
                 }
@@ -376,7 +719,14 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
             orderSyncLogMapper.save(osl);
             logger.info("XYT拉取订单-调用小亚通业务错误-错误信息:"+json);
         }
-        return true;
+
+        returnMap.put("batchId",batchId);   //批次id
+        returnMap.put("status",1);  //拉取订单成功
+        returnMap.put("amountNum",amountNum);  //拉取订单成功
+        returnMap.put("amountSuccessNum",amountSuccessNum);  //保存成功数量
+        returnMap.put("msg","拉取订单成功");  //拉取订单成功
+        returnMap.put("errorMsg",errorMsg);  //失败订单号
+        return returnMap;
     }
 
     /**
@@ -394,66 +744,25 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
     /**
      * 分开组装小亚通api接口
      * @param type
-     * @param map
+     * @param paramsMap
      * @return
      */
-    private String syncXYT(String type, Map<String,Object> map) {
-        Map<String,Object> paramsMap = new HashMap<>();
-        String methodName = "";
+    private String syncXYT(String type, Map<String,Object> paramsMap) {
         switch (type){
-            case "allOrder":{ //订单查询
-                List<Map<String,Object>> conditionTypeList = new ArrayList<>();
-                for(String key:map.keySet()){//keySet获取map集合key的集合  然后在遍历key即可
-                    Map<String,Object> conditionTypeMap = new HashMap<>();
-                    conditionTypeMap.put(key,map.get(key).toString());
-                    conditionTypeList.add(conditionTypeMap);
-                }
-
-                Map<String,Object> condMap = new HashMap<>();
-                condMap.put("pageNumber",1);
-                condMap.put("pageSize",20);
-                condMap.put("conditionType",conditionTypeList);
-
-                paramsMap.put("cond","");
-                paramsMap.put("fullMode",false);   //fullMode Boolean 是 是否查询全部信息
-                paramsMap.put("includeArchive",false); //includeArchive Boolean 是 是否查询三个月前历史订单
-                methodName = "IOrderServce.query";
-                break;
-            }
-            case "oneOrder":{ //单个查询
-                List<Map<String,Object>> conditionTypeList = new ArrayList<>();
-                for(String key:map.keySet()){//keySet获取map集合key的集合  然后在遍历key即可
-                    Map<String,Object> conditionTypeMap = new HashMap<>();
-                    conditionTypeMap.put(key,map.get(key).toString());
-                    conditionTypeList.add(conditionTypeMap);
-                }
-
-                Map<String,Object> condMap = new HashMap<>();
-                condMap.put("pageNumber",1);
-                condMap.put("pageSize",20);
-                condMap.put("conditionType",conditionTypeList);
-
-
-                paramsMap.put("cond","");
+            case "IOrderServce.query":{ //订单查询
                 paramsMap.put("fullMode",false);   //fullMode Boolean 是 是否查询全部信息
                 paramsMap.put("includeArchive",false); //includeArchive Boolean 是 是否查询三个月前历史订单
-                methodName = "IOrderServce.query";
                 break;
             }
             case "delivery":{   //订单发货
-
-                methodName = "delivery";
                 break;
             }
-//            case "IConvertService.submitOrder":{   //提交订单
-//                break;
-//            }
             default:{
                 return "";
             }
         }
         OrderSyncPlatform orderSyncPlatform = getXYTPlatform();
-        JSONObject jsonObject = this.syncXYTFormat(methodName,paramsMap,orderSyncPlatform);
+        JSONObject jsonObject = this.syncXYTFormat(type,paramsMap,orderSyncPlatform);
         String rspJson = doPost(jsonObject,orderSyncPlatform.getSyncPlatApi());
         return rspJson;
     }
@@ -541,7 +850,7 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
             "          \"createTime\": \"2017-10-31 10:10:31\",\n" +
             "          \"doneTime\": \"2017-10-31 10:11:04\",\n" +
             "          \"orderId\": 100004540881,\n" +
-            "          \"receiverAddress\": \"A\",\n" +
+            "          \"receiverAddress\": \"民治大道328号\",\n" +
             "          \"receiverCity\": \"市辖区\",\n" +
             "          \"receiverDistrict\": \"和平区\",\n" +
             "          \"receiverMobile\": \"15757160000\",\n" +
@@ -573,7 +882,7 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
             "          \"paidPoints\": 0,\n" +
             "          \"payTime\": \"2017-10-31 10:10:41\",\n" +
             "          \"payType\": \"N/A\",\n" +
-            "          \"platformId\": \"IMEIHAO\",\n" +
+            "          \"platformId\": \"TMALL\",\n" +
             "          \"postFee\": 0,\n" +
             "          \"revokeStatus\": 0,\n" +
             "          \"shippingType\": \"express\",\n" +
@@ -598,7 +907,7 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
             "            \"extItemId\": \"15094158317087400\",\n" +
             "            \"extNumIid\": \"107617669\",\n" +
             "            \"extOrderId\": \"150941583170874\",\n" +
-            "            \"extSkuId\": \"MDMJ20170515ZNJKC\",\n" +
+            "            \"extSkuId\": \"6970465730443\",\n" +
             "            \"extSkuTitle\": \"博冠丨 Just Fit V2 云智能健康秤\",\n" +
             "            \"imageUrl\": \"https://cdn.imeihao.shop/mall-imeihao/product/main-1507617610718spQCphtyyi_750_750.jpg\",\n" +
             "            \"isSplit\": 0,\n" +
@@ -644,10 +953,13 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
             "          \n" +
             "        ],\n" +
             "        \"memo\": {\n" +
-            "          \"buyerMessage\": \"\",\n" +
+            "          \"orderMemo\": \"备注\",\n" +
+            "          \"buyerMessage\": \"买方信息\",\n" +
             "          \"createOp\": 100000000001,\n" +
             "          \"createTime\": \"2017-10-31 10:10:31\",\n" +
             "          \"doneTime\": \"2017-10-31 10:11:04\",\n" +
+            "          \"buyerMemo\": \"买家备注\",\n" +
+            "          \"sellerMemo\": \"卖家备注\",\n" +
             "          \"memoId\": 100004220937,\n" +
             "          \"orderId\": 100004540881,\n" +
             "          \"tenantId\": 100000000001\n" +

+ 8 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/order/mapper/LogisticsInfoMapper.java

@@ -22,6 +22,14 @@ public interface LogisticsInfoMapper {
      * @return  logisticsInfo
      */
     LogisticsInfo  getLogisticsInfoById(Integer  id);
+
+    /**
+     * 查询单条数据
+     * @param  code
+     * @return  logisticsInfo
+     */
+    LogisticsInfo  getLogisticsNameByRSTCode(String code);
+
     /**
      * 增加数据
      * @param  logisticsInfo

+ 6 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/order/mapper/logisticsInfoMapper.xml

@@ -51,6 +51,12 @@
         from tb_rst_logistics_info t
         where t.logistics_id= #{logisticsId}
     </select>
+    <select id="getLogisticsNameByRSTCode" resultMap="BaseResultMap" parameterType="String" >
+        select
+          t.*
+        from tb_rst_logistics_info t
+        where t.logistics_rst_code = #{logisticsRstCode}
+    </select>
     <insert id="save" parameterType="LogisticsInfo" >
         insert into
         tb_rst_logistics_info

+ 4 - 1
watero-rst-service/src/main/java/com/iamberry/rst/service/product/mapper/productColorMapper.xml

@@ -71,7 +71,10 @@
     <select id="getProductColorByBar" resultMap="BaseResultMap" parameterType="String" >
         select
             <include refid="Base_List" />,
-            pi.product_abbreviation
+            pi.product_name,
+            pi.product_abbreviation,
+            pi.product_number,
+            pi.product_type AS productType
         from tb_rst_product_color t
         LEFT JOIN tb_rst_product_info pi ON t.color_product_id = pi.product_id
         where t.color_bar= #{colorBar}

+ 13 - 0
watero-rst-service/src/main/java/com/iamberry/rst/util/GenerateKeyUtil.java

@@ -158,6 +158,19 @@ public class GenerateKeyUtil {
     }
 
     /**
+     * 识别是否为小亚通批次订单
+     * @param batchId
+     * @return
+     */
+    public boolean isXytBatchId(String batchId){
+        String xyt = "S"+ SX_BATCH;
+        if(batchId.indexOf(xyt) == 0){
+            return true;
+        }
+        return false;
+    }
+
+    /**
      * 获取最新的批次
      * @return
      */

+ 15 - 2
watero-rst-web/src/main/java/com/iamberry/rst/controllers/mq/MQTask.java

@@ -1,6 +1,5 @@
 package com.iamberry.rst.controllers.mq;
 
-import com.iamberry.rst.controllers.sys.SysController;
 import com.iamberry.rst.core.cm.CompanyInfo;
 import com.iamberry.rst.core.cm.Postage;
 import com.iamberry.rst.core.cm.PostageAuthority;
@@ -17,6 +16,7 @@ import com.iamberry.rst.faces.cm.*;
 import com.iamberry.rst.faces.fm.ComplaintDetectInfoService;
 import com.iamberry.rst.faces.order.EfastOrderService;
 import com.iamberry.rst.faces.order.LogisticsInfoService;
+import com.iamberry.rst.faces.order.OrderSyncLogService;
 import com.iamberry.rst.faces.sms.MessageService;
 import com.iamberry.rst.faces.sms.SmsService;
 import com.iamberry.rst.faces.sys.SysConfigService;
@@ -26,7 +26,6 @@ import com.iamberry.rst.utils.EfastUtil;
 import com.iamberry.wechat.tools.ResponseJson;
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
-import org.apache.poi.hssf.model.InternalWorkbook;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.InitializingBean;
@@ -77,6 +76,8 @@ public class MQTask implements InitializingBean {
 	@Autowired
 	private ComplaintDetectInfoService complaintDetectInfoService;
 	@Autowired
+	private OrderSyncLogService orderSyncLogService;
+	@Autowired
 	private  EfastUtil efastUtil;
 
 	private Object lock = new Object();
@@ -622,4 +623,16 @@ public class MQTask implements InitializingBean {
         }
 	}
 
+
+	/**
+	 * 定时拉取小亚通订单
+	 */
+	/*@Scheduled(cron = "0 0/3 * * * ?")//每三分钟执行一次*/
+	@Scheduled(cron = "0 0/30 * * * ?")//每半个小时执行一次
+	public void syncXytOrder(){
+		logger.info("-----定时拉取小亚通订单-开始----");
+		orderSyncLogService.syncXYTOrder(1,null);
+		logger.info("-----定时拉取小亚通订单-结束----");
+	}
+
 }

+ 14 - 1
watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AdminOrderPlatformController.java

@@ -29,9 +29,22 @@ public class AdminOrderPlatformController {
 
     @ResponseBody
     @RequestMapping("/pull")
-    public ResponseJson addOrder(HttpServletRequest request){
+    public ResponseJson pullOrder(HttpServletRequest request){
         orderSyncLogService.syncXYTOrder(2,null);
         return  new ResponseJson();
     }
 
+    @ResponseBody
+    @RequestMapping("/send")
+    public ResponseJson sendOrder(HttpServletRequest request,Integer orderId){
+        boolean flag = orderSyncLogService.syncXYTOrderShipInspec(orderId);
+        if(flag){
+            boolean shipFlag = orderSyncLogService.syncXYTOrderShip(orderId);
+            if(shipFlag){
+                return ResponseJson.getSUCCESS();
+            }
+        }
+        return  new ResponseJson();
+    }
+
 }