Parcourir la source

小亚通接口修改

wangxiaoming il y a 5 ans
Parent
commit
4925fa14b0

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

@@ -76,6 +76,8 @@ public class SalesOrder implements Serializable {
     private Integer salesWarrantyStatus;        //订单售后状态 同步第三方平台售后状态:0 没有售后 1 退款中
     private Integer salesMainOrderId;       //主订单id(拆单用)
 
+    private String salesExOrderId;       //第三方平台订单号
+
     private String companyName;             //销售公司名称
     private String storeName;               //店铺名称
 
@@ -1143,4 +1145,12 @@ public class SalesOrder implements Serializable {
     public void setStoreIds(Integer[] storeIds) {
         this.storeIds = storeIds;
     }
+
+    public String getSalesExOrderId() {
+        return salesExOrderId;
+    }
+
+    public void setSalesExOrderId(String salesExOrderId) {
+        this.salesExOrderId = salesExOrderId;
+    }
 }

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

@@ -56,7 +56,7 @@ public interface OrderSyncLogService {
      * @param
      * @return Integer
      */
-    boolean syncXYTOrderShip(Integer salesOrderId);
+    boolean syncXYTOrderShip(Integer[] salesOrderId);
 
     /**
      * 清空Map

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

@@ -90,14 +90,7 @@
   <!-- 根据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,
-      t.sales_address_info,t.sales_address_tel,t.sales_address_name,t.sales_amount,t.sales_pay_money,t.sales_shipping_fee,
-      t.sales_pay_time,t.sales_create_time,t.sales_admin_remark,t.sales_user_remark,t.sales_type,t.sales_order_status,t.sales_status,
-      t.sales_shipping_status,t.sales_deliver,t.sales_pay_status,t.sales_process_status,
-      t.sales_is_send,t.sales_is_locked,t.sales_is_separate,t.sales_is_download,t.sales_main_order_id,t.sales_batch_id,t.sales_add_type,
-      t.sales_admin_id,t.sales_deliver_time,t.sales_distribution_time,t.sales_warehouse_id,t.sales_return_status,
-      t.sales_address_postcode,t.sales_postage_cost,t.sales_is_sublist,t.sales_belong_orderId,t.sales_process_refund,
-      t.sales_is_ship,t.sales_warranty_status
+      t.*
     from tb_rst_sales_order_info t
     where
       sales_id IN
@@ -934,7 +927,8 @@
                 sales_address_postcode,
                 sales_warehouse_id,
                 sales_is_sublist,
-                sales_belong_orderId
+                sales_belong_orderId,
+                sales_ex_orderId
             )
         values
             (
@@ -984,7 +978,8 @@
                 #{salesAddressPostcode},
                 #{salesWarehouseId},
                 #{salesIsSublist},
-                #{salesBelongOrderId}
+                #{salesBelongOrderId},
+                #{salesExOrderId}
             )
   </insert>
 

+ 95 - 72
watero-rst-service/src/main/java/com/iamberry/rst/service/order/OrderSyncLogServiceImpl.java

@@ -203,8 +203,17 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
         orderSyncLog.setSyncLogMode(type);
         orderSyncLog.setSyncLogRecentNum(amountAllNum); //同步总数量
         orderSyncLog.setSyncLogErrorNum(amountAllNum - amountSuccessAllNum); //同步失败数量
-        orderSyncLog.setSyncLogMsg("");   //备注
-        orderSyncLog.setSyncLogErrorMsg(stringBuffer.toString());  //失败信息
+        if(batchId != ""){
+            batchId = "批次编号:"+batchId;
+        }
+        orderSyncLog.setSyncLogMsg("批量拉取,"+batchId);   //备注
+        if(!stringBuffer.toString().equals("")){
+            String newErrorMsg = stringBuffer.toString();
+            if(newErrorMsg.length() > 5000){
+                newErrorMsg = newErrorMsg.substring(0,4999);
+            }
+            orderSyncLog.setSyncLogErrorMsg(newErrorMsg);  //失败信息
+        }
         orderSyncLogMapper.save(orderSyncLog);
 
         if(type == 1){
@@ -281,9 +290,13 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
         orderSyncLog.setSyncLogMode(type);
         orderSyncLog.setSyncLogRecentNum(amountAllNum); //同步总数量
         orderSyncLog.setSyncLogErrorNum(amountAllNum - amountSuccessAllNum); //同步失败数量
-        orderSyncLog.setSyncLogMsg("");   //备注
+        orderSyncLog.setSyncLogMsg("单个拉取订单:"+orderId);   //备注
         if(!stringBuffer.toString().equals("")){
-            orderSyncLog.setSyncLogErrorMsg("同步失败订单号:"+stringBuffer.toString());  //失败信息
+            String newErrorMsg = stringBuffer.toString();
+            if(newErrorMsg.length() > 5000){
+                newErrorMsg.substring(0,4999);
+            }
+            orderSyncLog.setSyncLogErrorMsg(newErrorMsg);  //失败信息
         }
         orderSyncLogMapper.save(orderSyncLog);
         return null;
@@ -477,75 +490,81 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
 
     /**
      * 发货接口-小亚通
-     * @param salesOrderId
+     * @param salesOrderIds
      * @return
      */
     @Override
-    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 : itemIdSet) {
-            itemIds[i] = item;
-            i++;
-        }
+    public boolean syncXYTOrderShip(Integer[] salesOrderIds) {
+        for (int m = 0; m < salesOrderIds.length; m++) {
+            Integer salesOrderId = salesOrderIds[m];
+            SalesOrder salesOrder = salesOrderService.getSalesOrderByIdConcise(salesOrderId);
+            if(!generateKeyUtil.isXytBatchId(salesOrder.getSalesBatchId())){    //不是小亚通第三方的订单,直接通过,不走该程序
+                logger.info("不是小亚通订单,退出!");
+                continue;
+            }
+            if(salesOrder.getSalesShippingStatus() != 1){
+                //1已发货
+                logger.info("小亚通发货失败,订单未发货!");
+                continue;
+            }
+            if(salesOrder.getSalesPostNum() == null || "".equals(salesOrder.getSalesPostNum())){
+                logger.info("小亚通发货失败,订单未发货!");
+                continue;
+            }
 
-        //删除因为拆单增加的订单后缀
-        String orderId  = salesOrder.getSalesDealCode();
-        if(orderId.indexOf("-")>-1){
-            orderId = orderId.substring(0,orderId.indexOf("-"));
-        }
-        Long otherOrderId = Long.valueOf(orderId);
+            LogisticsInfo logisticsInfo = logisticsInfoService.getLogisticsNameByRSTCode(salesOrder.getSalesPostFirm());
 
-        Map[] maps = new Map[1];
+            List<SalesOrderItem>  salesOrderItemList = salesOrderService.getOrderItemListBySalesId(salesOrderId);
 
-        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()));//发货时间
+            if(salesOrderItemList==null || salesOrderItemList.size()<1){
+                logger.info("小亚通发货失败,未查询到订单信息!");
+                continue;
+            }
 
-        maps[0]=deliveryInfosMap;
+            HashSet<Long> itemIdSet = new HashSet();
+            for (SalesOrderItem salesOrderItem:salesOrderItemList) {
+                Long otherItemId =  Long.valueOf(salesOrderItem.getItemOtherId());
+                itemIdSet.add(otherItemId);
+            }
 
-        Map<String,Object> map = new HashMap<>();
-        map.put("orderId",otherOrderId);//原始订单号
-        map.put("deliveryInfos",maps);//原始订单号
+            Long[] itemIds = new Long[itemIdSet.size()];
+            //通过加强for循环遍历HashSet
+            int i = 0;
+            for(Long item : itemIdSet) {
+                itemIds[i] = item;
+                i++;
+            }
 
-        String shipResultJson = this.syncXYT("delivery",map);
-        JSONObject jsonObj = new JSONObject(shipResultJson);//转化为json格式
-        String resultMsg = jsonObj.getString("result_msg");
-        if(resultMsg.equals("success")) {
-            //发货成功
-            return true;
+            //删除因为拆单增加的订单后缀
+            String orderId  = salesOrder.getSalesDealCode();
+            if(orderId.indexOf("-")>-1){
+                orderId = orderId.substring(0,orderId.indexOf("-"));
+            }
+            Long otherOrderId = Long.valueOf(orderId);
+
+            Map[] maps = new Map[1];
+            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()));//发货时间
+            maps[0]=deliveryInfosMap;
+            Map<String,Object> map = new HashMap<>();
+            map.put("orderId",otherOrderId);//原始订单号
+            map.put("deliveryInfos",maps);//原始订单号
+
+            String shipResultJson = this.syncXYT("delivery",map);
+            JSONObject jsonObj = new JSONObject(shipResultJson);//转化为json格式
+            String resultMsg = jsonObj.getString("result_msg");
+            if(resultMsg.equals("success")) {
+                //修改同步物流状态
+                SalesOrder shipSalesOrder = new SalesOrder();
+                shipSalesOrder.setSalesIsShip(1);   //同步物流状态到第三方平台 1:是
+                shipSalesOrder.setSalesId(salesOrderId);
+                salesOrderService.update(shipSalesOrder);
+            }
         }
-        return false;
+        return true;
     }
 
     @Override
@@ -676,6 +695,7 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
                 for(int i=0;i<beanListArray.length();i++){
                     JSONObject job = beanListArray.getJSONObject(i);
                     Long otherOrderId = null;
+                    String otherExtOrderId = null;
                     try{
                         JSONObject consigneeObj = job.getJSONObject("consignee");   //用户信息
                         JSONObject infoObj = job.getJSONObject("info");   //订单基本信息
@@ -685,20 +705,23 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
                             memoObj = job.getJSONObject("memo");   //备注信息  如果没有备注,将为null
                         }
 
-                        //订单编号
-                        Long orderId = infoObj.getLong("orderId");
-                        otherOrderId = orderId;
+                        //小亚通订单编号
+                        otherOrderId = infoObj.getLong("orderId");
+
+                        //商城订单编号
+                        otherExtOrderId = infoObj.getString("extOrderId");
 
                         //订单状态::0 待支付;10 待成团;20 待发货;30 预售中;40 待审批;50 仓库代发货;60 已发货;70 已签收;80 已拒收;999 已作废
                         Integer orderStatus = infoObj.getInt("orderStatus");
                         if(20 != orderStatus){   //20 待发货
-                            errorMsg.append(otherOrderId+"该订单状态异常,"+ getStatusMsg(orderStatus) +";");
+                            errorMsg.append("商城订单编号:"+otherExtOrderId+"该订单状态异常,"+ getStatusMsg(orderStatus) +";");
                             continue;
                         }
 
                         SalesOrder salesOrder = new SalesOrder();
-                        salesOrder.setSalesOrderId(String.valueOf(orderId));  //小亚通订单编号
-                        salesOrder.setSalesDealCode(String.valueOf(orderId));  //小亚通订单编号
+                        salesOrder.setSalesOrderId(String.valueOf(otherOrderId));  //小亚通订单编号
+                        salesOrder.setSalesDealCode(String.valueOf(otherOrderId));  //小亚通订单编号
+                        salesOrder.setSalesExOrderId(otherExtOrderId);
                         //收货人信息
                         salesOrder.setSalesAddressName(consigneeObj.getString("receiverName"));//收件人姓名
                         salesOrder.setSalesAddressTel(consigneeObj.getString("receiverMobile"));//收件人手机号码
@@ -910,8 +933,8 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
 
                             ProductColor productColor = productColorMapper.getProductColorByBar(extSkuId);
                             if(productColor == null){
-                                logger.info("订单编号:"+orderId+"-订单项中的SKU未匹配到本地,SKU编号:"+extSkuId+"; ");
-                                errorMsg.append(orderId+"-订单项中的SKU未匹配到本地,SKU编号:"+extSkuId+";");
+                                logger.info("商城订单编号:"+otherExtOrderId+"-订单项中的SKU未匹配到本地,SKU编号:"+extSkuId+"; ");
+                                errorMsg.append(otherExtOrderId+"-订单项中的SKU未匹配到本地,SKU编号:"+extSkuId+";");
                                 break;
                             }
 
@@ -1256,7 +1279,7 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
             in.close();
             result = strber.toString();
             if(response.getStatusLine().getStatusCode()!=HttpStatus.SC_OK){
-                result = "服务器异常";
+                result = "服务器异常"+result;
             }
         } catch (Exception e){
             System.out.println("请求异常");

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

@@ -48,9 +48,11 @@ public class AdminOrderPlatformController {
     @ResponseBody
     @RequestMapping("/send")
     public ResponseJson sendOrder(HttpServletRequest request,Integer orderId){
+        Integer[] orderIds = new Integer[1];
+        orderIds[0] = orderId;
         boolean flag = orderSyncLogService.syncXYTOrderShipInspec(orderId);
         if(flag){
-            boolean shipFlag = orderSyncLogService.syncXYTOrderShip(orderId);
+            boolean shipFlag = orderSyncLogService.syncXYTOrderShip(orderIds);
             if(shipFlag){
                 return ResponseJson.getSUCCESS();
             }

+ 12 - 8
watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AwaitSendController.java

@@ -54,7 +54,6 @@ import java.util.*;
 @Controller
 @RequestMapping("/admin/await_send")
 public class AwaitSendController {
-
     @Autowired
     private SalesOrderService salesOrderService;
     @Autowired
@@ -403,6 +402,11 @@ public class AwaitSendController {
         }else{
             eOrderRequestData.Quantity = 1;
         }
+
+        //第三方发货,传入的id
+        Set<Integer> salesIdsset = new HashSet<Integer>();
+        salesIdsset.add(salesOrderInfo.getSalesId());
+
         try {
             // 向第三方系统【快递鸟】提交订单数据,第三方系统会检测订单是否重复
             String json = OrderUtils.orderOnlineByJson(eOrderRequestData);
@@ -462,6 +466,7 @@ public class AwaitSendController {
                             order.setSalesId(orders.get(i).getSalesId());
                             order.setSalesOldOrderStatus(11);
                             Integer msg = salesOrderService.updateSalesOrder(order);
+                            salesIdsset.add(orders.get(i).getSalesId());
                             if (msg == null || msg <= 0) {
                                 return ResponseJson.getFAILURE().addResponseKeyValue("error", "子订单状态非通知配货,无法打印");
                             }
@@ -503,13 +508,12 @@ public class AwaitSendController {
                 }
 
                 //小亚通订单,调用接口发货
-                boolean isShip = orderSyncLogService.syncXYTOrderShip(salesOrderInfo.getSalesId());
-                if(isShip){
-                    //修改同步物流状态
-                    SalesOrder shipSalesOrder = new SalesOrder();
-                    shipSalesOrder.setSalesIsShip(1);   //同步物流状态到第三方平台 1:是
-                    shipSalesOrder.setSalesId(salesOrderInfo.getSalesId());
-                    salesOrderService.update(shipSalesOrder);
+                try{
+                    Integer[] saleIds = salesIdsset.toArray(new Integer[] {});
+                    boolean isShip = orderSyncLogService.syncXYTOrderShip(saleIds);
+                }catch (Exception e){
+                    LOGGER.error("小亚通发货接口调用失败");
+                    e.printStackTrace();
                 }
 
                 //添加操作跟踪信息

+ 2 - 2
watero-rst-web/src/main/webapp/WEB-INF/views/product/add_product.ftl

@@ -275,7 +275,7 @@
                     </div>
                     <label class="form-label col-1 col-sm-1">添加库存:</label>
                     <div class="formControls col-2 col-sm-2">
-                        <input type="text" class="input-text add_color str colorInventory" value="" placeholder="库存" id="" name=""  myMaxlength="10"  errormsg="库存非必填,可填写1-10个字符!">
+                        <input type="text" class="input-text add_color str colorInventory" value="10000" placeholder="库存" id="" name=""  myMaxlength="10"  errormsg="库存非必填,可填写1-10个字符!">
                     </div>
                 </div>
 
@@ -319,7 +319,7 @@
                 <div class="row cl" id="" style="">
                     <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>库存数量:</label>
                     <div class="formControls col-2 col-sm-2">
-                        <input type="text" class="input-text  str inventoryGoodProductNum" value="" placeholder="填写库存数量" id="inventoryGoodProductNum" name="inventoryGoodProductNum" myMinlength="1" myMaxlength="12" errormsg="库存数量必填!" >
+                        <input type="text" class="input-text  str inventoryGoodProductNum" value="10000" placeholder="填写库存数量" id="inventoryGoodProductNum" name="inventoryGoodProductNum" myMinlength="1" myMaxlength="12" errormsg="库存数量必填!" >
                     </div>
                 </div>
                 <div class="row cl" id="" style="">

+ 1 - 0
watero-rst-web/src/main/webapp/common/js/product/product.js

@@ -362,6 +362,7 @@ function colorClear() {
     });
     $(".colorNoMachine").iCheck('check');
     $(".colorIsStatus").iCheck('check');
+    $(".colorInventory").val(10000);
 }
 
 /**