|
@@ -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"));//收件人手机号码
|
|
@@ -809,8 +832,6 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
|
|
|
String shopIdStr = String.valueOf(shopId);
|
|
|
switch (platformId){
|
|
|
case "TMALL":{
|
|
|
- /*if(Objects.equals("天猫店铺号",shopIdStr)){
|
|
|
- }*/
|
|
|
salesOrder.setSalesStoreId(86); //天猫爱贝源旗舰店
|
|
|
salesOrder.setSalesCompanyId(1); //深圳爱贝源
|
|
|
salesOrder.setSalesPayType(5);//付款方式5:支付宝支付
|
|
@@ -910,8 +931,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 +1277,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("请求异常");
|