Browse Source

优化改进目前拆单后,有部分订单无法出库的问题。

xian 4 years ago
parent
commit
9b13b0086a

+ 1 - 1
watero-common-tool/src/main/java/com/iamberry/wechat/tools/payUtil/StringUtil.java

@@ -74,7 +74,7 @@ public class StringUtil {
 	 */
 	public static boolean isInteger(String str){
 		try {
-			int num = Integer.valueOf(str);//把字符串强制转换为数字
+			Long.parseLong(str);//把字符串强制转换为数字
 			return true;//如果是数字,返回True
 		} catch (Exception e) {
 			return false;//如果抛出异常,返回False

+ 46 - 34
watero-rst-service/src/main/java/com/iamberry/rst/service/order/OrderSyncLogServiceImpl.java

@@ -755,7 +755,7 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
         //生成结束时间
         conditionTypeList.add(orderMap);
 
-        Map<String,Object> condMap = new HashMap<>();
+        Map<String,Object> condMap = new HashMap<>(3);
         condMap.put("pageNumber",1);
         condMap.put("pageSize",20);
         condMap.put("conditionType",conditionTypeList);
@@ -764,12 +764,12 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
         //转化为json格式
         JSONObject jsonObj = new JSONObject(json);
         String resultMsg = jsonObj.getString("result_msg");
-        if(resultMsg.equals("success")){
-            JSONObject dataObj = jsonObj.getJSONObject("data");    //数据
+        if("success".equals(resultMsg)){
+            //数据
+            JSONObject dataObj = jsonObj.getJSONObject("data");
             JSONArray beanListArray = dataObj.getJSONArray("beanList");
             if(beanListArray.length() > 0){
                 JSONObject job = beanListArray.getJSONObject(0);
-
                 //为了避免小亚通同一个订单查询多次,将订单保存在MAP中
                 // 该map数据存活周期仅为一个选中打单发货,在AwaitSendController中,调用完了会直接清掉,这样数据不会重复,又能让每次重复的订单项快速查询
                 orderJsonMap.put(orderId,job);
@@ -788,26 +788,32 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
      * @return
      */
     private boolean getIsShip(JSONObject job,SalesOrder salesOrder){
-        JSONObject infoObj = job.getJSONObject("info");   //订单基本信息
+        //订单基本信息
+        JSONObject infoObj = job.getJSONObject("info");
         //订单状态::0 待支付;10 待成团;20 待发货;30 预售中;40 待审批;50 仓库代发货;60 已发货;70 已签收;80 已拒收;999 已作废
-        Integer orderStatus = infoObj.getInt("orderStatus");
+        int orderStatus = infoObj.getInt("orderStatus");
         //售后状态:0 没有售后 1 退款中  2 退款关闭 3 退款成功 4 退货中 5 退货关闭 6 退货成功 7 其它售后中  8 部分退货成功
-        Integer warrantyStatus = infoObj.getInt("warrantyStatus");
-        if(20 == orderStatus){    //20 待发货
-            JSONArray itemsArray = job.getJSONArray("items");   //订单项基本信息
+        int warrantyStatus = infoObj.getInt("warrantyStatus");
+        if(20 == orderStatus){
+            //20 待发货
+
+            //订单项基本信息
+            JSONArray itemsArray = job.getJSONArray("items");
             //循环检测所有订单项是否能够发货
             boolean allStatus = true;
             for (SalesOrderItem salesOrderItem : salesOrder.getSalesOrderItemList()) {
                 if(salesOrderItem.getItemOtherId() == null || "".equals(salesOrderItem.getItemOtherId())){
                     continue;
                 }
-                Long otherId = Long.valueOf(salesOrderItem.getItemOtherId());   //外部订单id
+                //外部订单id
+                Long otherId = Long.valueOf(salesOrderItem.getItemOtherId());
                 boolean sonStatus = true;
-                Integer itemStatus = 0;
-                Integer itemWarrantyStatus = 0;
+                int itemStatus = 0;
+                int itemWarrantyStatus = 0;
                 for(int j=0;j<itemsArray.length();j++) {
                     JSONObject item = itemsArray.getJSONObject(j);
-                    Long orderItemId = item.getLong("orderItemId"); //订单项id
+                    //订单项id
+                    Long orderItemId = item.getLong("orderItemId");
                     itemStatus = item.getInt("itemStatus");
                     itemWarrantyStatus = item.getInt("warrantyStatus");
                     if(Objects.equals(orderItemId, otherId)){
@@ -850,8 +856,10 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
                     SalesOrder sonOrder = new SalesOrder();
                     sonOrder.setSalesId(so.getSalesId());
                     sonOrder.setSalesShippingStatus(0);
-                    sonOrder.setSalesStatus(0);   //确认状态  0(未确认)1(确认)2(挂起)3(作废)
-                    sonOrder.setSalesWarrantyStatus(1); //有退款
+                    // 确认状态  0(未确认)1(确认)2(挂起)3(作废)
+                    sonOrder.setSalesStatus(0);
+                    // 有退款
+                    sonOrder.setSalesWarrantyStatus(1);
                     if(salesOrderService.update(sonOrder) > 0){
                         //添加操作跟踪信息
                         OrderTracking orderTracking = new OrderTracking();
@@ -866,8 +874,10 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
                 SalesOrder order = new SalesOrder();
                 order.setSalesId(mainSalesId);
                 order.setSalesShippingStatus(0);
-                order.setSalesStatus(0);   //确认状态  0(未确认)1(确认)2(挂起)3(作废)
-                order.setSalesWarrantyStatus(1); //有退款
+                //确认状态  0(未确认)1(确认)2(挂起)3(作废)
+                order.setSalesStatus(0);
+                //有退款
+                order.setSalesWarrantyStatus(1);
                 if(salesOrderService.update(order) > 0){
                     //添加操作跟踪信息
                     OrderTracking orderTracking = new OrderTracking();
@@ -878,23 +888,25 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
                 }
             }
             return allStatus;
-        }else if(60 == orderStatus || 70 == orderStatus || 80 == orderStatus ){   //该产品已发货
-            //如果该订单已发货,无需判断其他,直接return true
+        }else if(60 == orderStatus || 70 == orderStatus || 80 == orderStatus ){
+            // 该产品已发货
+            // 如果该订单已发货,无需判断其他,直接return true
             return true;
-        }else if(999 == orderStatus){ //实际应该不可能为0
-                //如果该订单已作废,那么本系统将跟随作废
-                SalesOrder so = new SalesOrder();
-                so.setSalesId(salesOrder.getSalesId());
-                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);
-                }
+        }else if(999 == orderStatus){
+            //实际应该不可能为0
+            //如果该订单已作废,那么本系统将跟随作废
+            SalesOrder so = new SalesOrder();
+            so.setSalesId(salesOrder.getSalesId());
+            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;
@@ -917,7 +929,7 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
             Integer salesOrderId = salesOrderIds[m];
             SalesOrder salesOrder = salesOrderService.getSalesOrderByIdConcise(salesOrderId);
             if(!generateKeyUtil.isXytBatchId(salesOrder.getSalesBatchId())){
-                //不是小亚通第三方的订单,直接通过,不走该程序
+                // 不是小亚通第三方的订单,直接通过,不走该程序
                 logger.info("不是小亚通订单,退出!");
                 continue;
             }