Browse Source

退货系统相关BUG追踪

LD 6 years ago
parent
commit
4e78183b2c

+ 1 - 1
app/Events/InformWMSReceivedEvent.php

@@ -20,7 +20,7 @@ class InformWMSReceivedEvent
     }
     public function directRun()
     {
-        if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,'直接调用推送WMS事件,退单号:'.$this->rejectedBill['logistic_number_return'],Auth::user()['id']);
+        if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,'直接调用推送WMS事件,退单号:'.$this->rejectedBill['logistic_number_return'],Auth::user()['id']);
         return (new InformWMSReceivedListener())->handle($this);
     }
 

+ 18 - 17
app/Http/Controllers/RejectedBillItemController.php

@@ -151,7 +151,7 @@ class RejectedBillItemController extends Controller
         }
         $item=$rejectedBillItems->first();
         $rejectedBill = RejectedBill::find($item['id_rejected_bill']);
-        if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,'请求处理退单:'.$rejectedBill['logistic_number_return'],Auth::user()['id']);
+        if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,'请求处理退单:'.$rejectedBill['logistic_number_return'],Auth::user()['id']);
         $downloadedSkus = WMSReflectReceive::downloadedSkus($rejectedBill['logistic_number_return'],true);
         $isGotMoreThenDownloaded=WMSReflectReceiveSku::isItemsOverDownloadedSkus($rejectedBillItems,$downloadedSkus);
         $isJianshang=(function($rejectedBill){
@@ -161,7 +161,7 @@ class RejectedBillItemController extends Controller
             }
             return false;
         })($rejectedBill);
-        if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"当前,实收件:(".json_encode($rejectedBillItems).")},下载件:("
+        if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"当前,实收件:(".json_encode($rejectedBillItems).")},下载件:("
             .json_encode($downloadedSkus).")},退单号:{$rejectedBill['logistic_number_return']}",null);
 
 
@@ -169,24 +169,25 @@ class RejectedBillItemController extends Controller
         if(!$isGotMoreThenDownloaded    //没有录入超过下载货物数
             && !($rejectedBill['is_loaded']==1||$rejectedBill['is_loaded']===null)//并且不是已入库或无需入库
             &&config('api.api_switch_receive_to_wms')){ //并且配置开
-            if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,'满足条件,准备从网页主动请求富勒入库:'.$rejectedBill['logistic_number_return'],Auth::user()['id']);
-            $informed=(new InformWMSReceivedEvent($rejectedBill))->directRun();  //!!!!
-            if(!$informed)return ['success'=>'false','fail_info'=>'提交至WMS错误,请重试并通知相关人员'];
+            if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,'满足条件,准备从网页主动请求富勒入库:'.$rejectedBill['logistic_number_return'],Auth::user()['id']);
+            $result_transferToWms=(new InformWMSReceivedEvent($rejectedBill))->directRun();  //!!!!
+            if($result_transferToWms=='fail')return ['success'=>'false','fail_info'=>'提交至WMS错误,请重试并通知相关人员'];
+            if($result_transferToWms=='exception')return ['success'=>'exception','fail_info'=>'提交至WMS部分成功,存在异常情况,请留意校对'];
             $isLoaded=false;
             if($isJianshang){
                 $isLoaded=true;
             }
-            if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,'标记前端是否入库为:'.$isLoaded,Auth::user()['id']);
+            if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,'标记前端是否入库为:'.$isLoaded,Auth::user()['id']);
             return ['success'=>'true','bill_is_loaded'=>$isLoaded];
         }
 
         $remoteResultStr='';
         if($isJianshang){
-            if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"不满足入库条件,准备发送给笕尚处理,退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']);
+            if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"不满足入库条件,准备发送给笕尚处理,退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']);
             $remoteResultStr=$this->sendRejectedToThirdPart2($rejectedBillItems,$rejectedBill);//不能入库所以发送给笕尚处理   !!!!
         }
 
-        if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"前端退单处理请求完成:笕尚入库状态为:{$remoteResultStr},退单号: {$rejectedBill['logistic_number_return']},退单ID:{$rejectedBill['id']},form表单:".json_encode($request->toArray()),Auth::user()['id']);
+        if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"前端退单处理请求完成:笕尚入库状态为:{$remoteResultStr},退单号: {$rejectedBill['logistic_number_return']},退单ID:{$rejectedBill['id']},form表单:".json_encode($request->toArray()),Auth::user()['id']);
         return ['success'=>'true','remote_result'=>$remoteResultStr];
     }
 
@@ -222,9 +223,9 @@ class RejectedBillItemController extends Controller
     }
 
     public function sendRejectedToThirdPart2(Collection $items,$rejectedBill):bool {
-        if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"进入发送方法,发送给笕尚处理,退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']);
+        if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"进入发送方法,发送给笕尚处理,退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']);
         if($rejectedBill['is_loaded']!=0){
-            if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"进入发送方法,但退单已入库,跳出!退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']);
+            if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"进入发送方法,但退单已入库,跳出!退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']);
             return true;
         }
         $rejected=new Rejected();
@@ -235,17 +236,17 @@ class RejectedBillItemController extends Controller
         });
         $rejectedJianshang=new api\thirdPart\jianshang\RejectedController();
         $rejected['goodses']=$goodses;
-        if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"进入发送方法,将商品转成数组,准备进入接口!退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']);
+        if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"进入发送方法,将商品转成数组,准备进入接口!退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']);
         $resultStr= $rejectedJianshang->sendRejected2($rejected);   //!!!
 
-        if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"发送笕尚取得结果是:{$resultStr}!退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']);
+        if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"发送笕尚取得结果是:{$resultStr}!退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']);
         if($resultStr=='fail'){
-            if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"发送失败,笕尚取得结果是:{$resultStr}!返回前端。退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']);
+            if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"发送失败,笕尚取得结果是:{$resultStr}!返回前端。退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']);
             return $resultStr;
         }
         //
         if($resultStr=='storable'){
-            if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"发送成功,可入,但待推单,笕尚取得结果是:{$resultStr}!返回前端。退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']);
+            if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"发送成功,可入,但待推单,笕尚取得结果是:{$resultStr}!返回前端。退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']);
             $rejectedBill = RejectedBill::find($rejectedBill['id']);
             $rejectedBill->is_loaded=2;
             $rejectedBill->save();
@@ -254,16 +255,16 @@ class RejectedBillItemController extends Controller
                 $item->save();
             });
 
-            if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"标记退单和商品为待推单!退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']);
+            if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"标记退单和商品为待推单!退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']);
             //标记WMS所有该退单下的作废(为已上传) 。应检查这里是否正确!
             $receives=WMSReflectReceive::where('ASNREFERENCE3',$rejectedBill['logistic_number_return'])->where('is_uploaded',0)->get();
             $receives->each(function ($receive){
                 $receive['is_uploaded']=1;
                 $receive->save();
             });
-            if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"标记退单在WMS映身表为已上传!退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']);
+            if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"标记退单在WMS映身表为已上传!退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']);
         }
-        if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"处理完成,返回前端入库状态,标记笕尚取得结果是:{$resultStr}!退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']);
+        if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"处理完成,返回前端入库状态,标记笕尚取得结果是:{$resultStr}!退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']);
         return $resultStr;
     }
 

+ 1 - 1
app/Http/Controllers/TestController.php

@@ -44,7 +44,7 @@ class TestController extends Controller
         return call_user_func([$this, $method],$request);
     }
     function t1(Request $request){ //x
-        dd(date('Y-m-d h:i:s',1586481486));
+        if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"123",null);
     }
     function tj(Request $request){
         $bills=RejectedBill::where('is_loaded',2)->where('created_at','<',Carbon::now()->subHours(10)->toDateTimeString());

+ 22 - 21
app/Http/Controllers/api/thirdPart/flux/ReceiveController.php

@@ -58,7 +58,7 @@ class ReceiveController extends Controller
                 $receive->skus()->save($sku);
             }
             if(isset($receive['ASNREFERENCE3'])){
-                if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"接收到WMS下发退货单号:{$receive['ASNREFERENCE3']},准备进入事件WmsReceiveNewEvent",null);
+                if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"接收到WMS下发退货单号:{$receive['ASNREFERENCE3']},准备进入事件WmsReceiveNewEvent",null);
                 event(new WmsReceiveNewEvent($receive['ASNREFERENCE3'],$receive));
             }
         }
@@ -128,13 +128,13 @@ class ReceiveController extends Controller
      */
     static public function accomplishToWMS(RejectedBill $rejectedBill)
     {
-        if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"进入推送WMS入库接口。退单号:".$rejectedBill['logistic_number_return'],Auth::user()['id']);
+        if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"进入推送WMS入库接口。退单号:".$rejectedBill['logistic_number_return'],Auth::user()['id']);
         ini_set('max_execution_time',2500);
         $bill=$rejectedBill;
         $wmsReceiveds=WMSReflectReceive::where('ASNREFERENCE3',$rejectedBill['logistic_number_return'])
             ->where('is_uploaded',0)->get();
         if($wmsReceiveds->isEmpty()){
-            if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,'error_'.__FUNCTION__,"错误,WMS入库接口找不到对应富勒映射表未入库记录。退单号:".$rejectedBill['logistic_number_return'],Auth::user()['id']);
+            if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,'error_'.__FUNCTION__,"错误,WMS入库接口找不到对应富勒映射表未入库记录。退单号:".$rejectedBill['logistic_number_return'],Auth::user()['id']);
             return false;
         }
         $items=$bill->items()->get();
@@ -145,11 +145,11 @@ class ReceiveController extends Controller
             });
             return $result;
         })();
-        $success=true;
-        $wmsReceiveds->each(function ($wmsReceived)use(&$bill,&$amountsItem,$items,&$success){
-            if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"循环WMS映射表(WMS入库接口中)。ASN号:{$wmsReceived['ASNNO']},退单号:".$wmsReceived['ASNREFERENCE3'],Auth::user()['id']);
+        $successed=$wmsReceiveds->count();
+        $wmsReceiveds->each(function ($wmsReceived)use(&$bill,&$amountsItem,$items,&$successed){
+            if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"循环WMS映射表(WMS入库接口中)。ASN号:{$wmsReceived['ASNNO']},退单号:".$wmsReceived['ASNREFERENCE3'],Auth::user()['id']);
             if(!$bill && $bill['is_loaded']!=0){
-                if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,'error_'.__FUNCTION__,"跳过!!不上传。(WMS入库接口中)。对应循环WMS映射表本地退单记录已入库。退单号:".$bill['logistic_number_return'],Auth::user()['id']);
+                if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,'error_'.__FUNCTION__,"跳过!!不上传。(WMS入库接口中)。对应循环WMS映射表本地退单记录已入库。退单号:".$bill['logistic_number_return'],Auth::user()['id']);
                 return;
             }
 
@@ -212,7 +212,7 @@ class ReceiveController extends Controller
             });
 
             if(count($skuStrList)==0){
-                if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,'error_'.__FUNCTION__,"错误!没有商品项。(WMS入库接口中)。ASN号:{$wmsReceived['ASNNO']},退单号:{$wmsReceived['ASNREFERENCE3']}",Auth::user()['id']);
+                if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,'error_'.__FUNCTION__,"错误!没有商品项。(WMS入库接口中)。ASN号:{$wmsReceived['ASNNO']},退单号:{$wmsReceived['ASNREFERENCE3']}",Auth::user()['id']);
                 return;
             }
             $skuStrList = implode(',',$skuStrList);
@@ -233,23 +233,23 @@ class ReceiveController extends Controller
                     ]
                 }
                 ";
-            if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"完成拼接JSON,准备发送给WMS。(WMS入库接口中)。退单号:{$wmsReceived['ASNREFERENCE3']},商品项JSON:{$json}",Auth::user()['id']);
+            if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"完成拼接JSON,准备发送给WMS。(WMS入库接口中)。退单号:{$wmsReceived['ASNREFERENCE3']},商品项JSON:{$json}",Auth::user()['id']);
 
             $sendingJson = json_decode($json,true);
             $url=url(config('api.flux.receive.new'));
             $response = Zttp::post($url, $sendingJson);
             $noIssues=true;
             $json = $response->json();
-            if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"得到WMS返回。退单号:{$wmsReceived['ASNREFERENCE3']}},返回:{$response->body()}",Auth::user()['id']);
+            if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"得到WMS返回。退单号:{$wmsReceived['ASNREFERENCE3']}},返回:{$response->body()}",Auth::user()['id']);
             if(!$json||!isset($json['Response'])||!$json['Response']['return']['returnFlag']=='1'){
-                if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,'error_'.__FUNCTION__,"WMS入库失败,ASN号:{$wmsReceived['ASNNO']}。退单号:{$wmsReceived['ASNREFERENCE3']}},返回:{$response->body()}",Auth::user()['id']);
+                if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,'error_'.__FUNCTION__,"WMS入库失败,ASN号:{$wmsReceived['ASNNO']}。退单号:{$wmsReceived['ASNREFERENCE3']}},返回:{$response->body()}",Auth::user()['id']);
                 $noIssues=false;
             }
             if($json&&isset($json['Response'])){
-                if($json['Response']['return']['returnFlag']=='2'){
-                    Controller::logS(__METHOD__,'exception_'.__FUNCTION__,"状态2, WMS返回不正常!按成功跳过。退单号:{$wmsReceived['ASNREFERENCE3']}}",Auth::user()['id']);
-                    return true;
-                }
+//                if($json['Response']['return']['returnFlag']=='2'){
+//                    Controller::logS(__METHOD__,'exception_'.__FUNCTION__,"状态2, WMS返回不正常!按成功跳过。退单号:{$wmsReceived['ASNREFERENCE3']}}",Auth::user()['id']);
+//                    return true;
+//                }
                 if(isset($json['Response']['return']['returnDesc'])&&strpos($json['Response']['return']['returnDesc'],'唯一约束')!==false){
                     Controller::logS(__METHOD__,'exception_'.__FUNCTION__,"违反唯一约束, WMS返回不正常!按成功跳过。退单号:{$wmsReceived['ASNREFERENCE3']}}",Auth::user()['id']);
                     return true;
@@ -265,19 +265,20 @@ class ReceiveController extends Controller
                 Controller::logS(__METHOD__,__FUNCTION__,"成功入库WMS。ASN号:{$wmsReceived['ASNNO']}。退单号:{$wmsReceived['ASNREFERENCE3']}}",Auth::user()['id']);
                 return true;
             }else{
-                $success=false;
-                if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,'error'.__FUNCTION__,"入库WMS失败!!ASN号:{$wmsReceived['ASNNO']}。退单号:{$wmsReceived['ASNREFERENCE3']}}",Auth::user()['id']);
+                $successed-=1;
+                if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,'error'.__FUNCTION__,"入库WMS失败!!ASN号:{$wmsReceived['ASNNO']}。退单号:{$wmsReceived['ASNREFERENCE3']}}",Auth::user()['id']);
             }
         });
 
-        if($success){ //bad patch, 正常不需要这两句,作为未知原因的保险
+        if($successed==$wmsReceiveds->count()){ //bad patch, 正常不需要这两句,作为未知原因的保险
             $rejectedBill = RejectedBill::find($rejectedBill['id']);
             $rejectedBill->is_loaded=1;
             $rejectedBill->save();
         }
-        if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"入库WMS处理完成,结果为:{$success}。退单号:{$rejectedBill['logistic_number_return']}}",Auth::user()['id']);
-
-        return $success;
+        if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"入库WMS处理完成,结果为:{$successed}。退单号:{$rejectedBill['logistic_number_return']}}",Auth::user()['id']);
+        if($successed==$wmsReceiveds->count())return 'success';
+        if(!$successed)return 'fail';
+        return 'exception';
     }
 
 }

+ 11 - 10
app/Http/Controllers/api/thirdPart/jianshang/RejectedController.php

@@ -112,7 +112,7 @@ class RejectedController extends Controller
     }
 
     function sendRejected2(Rejected $rejected){
-        $this->log(__METHOD__,__FUNCTION__,'informed: '.json_encode($rejected),Auth::user()['id']);
+        if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"发送笕尚接口,进入入口。退单号:{$rejected['logistic_number_return']}",Auth::user()['id']);
         $created_at = $rejected['created_at'] ?? '';
         $fee_collected = $rejected['fee_collected'] ?? '';
         $goodses=[];
@@ -132,21 +132,22 @@ class RejectedController extends Controller
         $json = $this->packSendToRemote2($created_at,$fee_collected,$goodses,
             $logistic_name_return,$logistic_number,$logistic_number_return,$order_number,
             $sender_mobile,$sender_name);
+        if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"发送笕尚接口调度完成。退单号:{$rejected['logistic_number_return']}",Auth::user()['id']);
         if(!$json){
-            $this->log(__METHOD__,'error_null_'.__FUNCTION__,"返回错误:没有JSON,请检查笕尚直接返回内容");
+            if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,'error_'.__FUNCTION__,"发送笕尚接口异常,没有json返回。退单号:{$rejected['logistic_number_return']}",Auth::user()['id']);
             return 'fail';
         }else if(!isset($json['success'])||!$json['success']){
             if(strpos(json_encode($json),'已经接收过')!==false){
                 return 'received';
             }
-            $this->log(__METHOD__,'error1_'.__FUNCTION__,"返回错误:".json_encode($json));
+            if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,'error_'.__FUNCTION__,"发送笕尚接口错误。退单号:{$rejected['logistic_number_return']}。".json_encode($json),Auth::user()['id']);
             return 'fail';
         }
         if(!$json['goodses_feedback']){
-            $this->log(__METHOD__,'error_noGoodses_'.__FUNCTION__,"没有goodses信息:".json_encode($json));
+            if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,'error_'.__FUNCTION__,"发送笕尚接口返回不全,没有商品信息返回(goodses)。退单号:{$rejected['logistic_number_return']}。".json_encode($json),Auth::user()['id']);
         }
         if(!$json['logistic_number_return']){
-            $this->log(__METHOD__,'error_noLogisticNumber_'.__FUNCTION__,"没有退回快递单号:".json_encode($json));
+            if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,'error_'.__FUNCTION__,"发送笕尚接口返回不全,没有退回快递单号。退单号:{$rejected['logistic_number_return']}。".json_encode($json),Auth::user()['id']);
         }
         $storable = (function ()use($json) {
             if(count($json['goodses_feedback'])==0)return false;
@@ -158,10 +159,10 @@ class RejectedController extends Controller
             return true;
         })();
         if(!$storable){
-            $this->log(__METHOD__,__FUNCTION__.'_noPush_'.$rejected['logistic_number_return'],json_encode($json),Auth::user()['id']);
+            if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,'error_'.__FUNCTION__,"发送笕尚接口提示,商品不可入库。退单号:{$rejected['logistic_number_return']}".json_encode($json),Auth::user()['id']);
             return 'none';
         }
-        $this->log(__METHOD__,__FUNCTION__.'_'.$rejected['logistic_number_return'],'response: '.json_encode($json),Auth::user()['id']);
+        if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"发送笕尚接口完成,可入库,待其未来推单。退单号:{$rejected['logistic_number_return']}".json_encode($json),Auth::user()['id']);
 //        $this->markItemsIsLoaded($json);
         return 'storable';
     }
@@ -201,6 +202,7 @@ class RejectedController extends Controller
         $timestamp=intval(microtime(true)*1000);
         $nonce=md5(microtime(true));
         $sign=$sortParamsAndMd5(json_decode($data,true),$timestamp,$nonce,config('api.sign_key_rejected_send_jianshang'));
+        $this->log(__METHOD__,'笕尚接口发送请求:',$data);
         $url=config('api.url_rejected_send_jianshang2');
         if(env('api_faking'))$url=url(config('api.fakingUrl_rejected_send_jianshang'));
         $response=Zttp::withHeaders([
@@ -209,12 +211,11 @@ class RejectedController extends Controller
             'timestamp'=>$timestamp,
             'Content-Type'=>'application/json'
         ])->post($url,json_decode($data,true));
-        $this->log(__METHOD__,'json',$data);
         if(!$response){
-            $this->log(__METHOD__,'error','回复异常:'.$response->body());
+            $this->log(__METHOD__,'笕尚接口返回异常!!:',$response->body());
             return false;
         }
-        $this->log(__METHOD__,'response',$response->body());
+        $this->log(__METHOD__,'笕尚接口返回:',$response->body());
         return $response->json();
     }
 

+ 1 - 1
app/Jobs/ProcessReceiveCombinedJob.php

@@ -31,7 +31,7 @@ class ProcessReceiveCombinedJob implements ShouldQueue
     public function handle()
     {
         $wmsReceives=WMSReflectReceive::where('ASNREFERENCE3',$this->logisticNumberReturn)->get();
-        if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"执行队列任务,处理退单号:{$this->logisticNumberReturn}",null);
+        if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"执行队列任务,处理退单号:{$this->logisticNumberReturn}",null);
         event(new WmsReceiveNewEvent($this->logisticNumberReturn,$wmsReceives->first()));
     }
 }

+ 17 - 9
app/Listeners/InformWMSReceivedListener.php

@@ -27,28 +27,36 @@ class InformWMSReceivedListener
      * Handle the event.
      *
      * @param InformWMSReceivedEvent $event`
-     * @return bool`
+     * @return string`
      */
     public function handle(InformWMSReceivedEvent $event)
     {
         $rejectedBill=$event->rejectedBill;
-        if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,'推送WMS入库事件进入,退单号:'.$rejectedBill['logistic_number_return'],Auth::user()['id']);
-        $hasAccomplishedToWMS=ReceiveController::accomplishToWMS($rejectedBill);
-        if(!$hasAccomplishedToWMS){
-            if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,'error_'.__FUNCTION__,'推送WMS入库失败!!退单号:'.$rejectedBill['logistic_number_return'],Auth::user()['id']);
-            return false;
+        if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,'推送WMS入库事件进入,退单号:'.$rejectedBill['logistic_number_return'],Auth::user()['id']);
+        $result_TransferToWMS=ReceiveController::accomplishToWMS($rejectedBill);
+        if ($result_TransferToWMS=='fail'){
+            if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,'error_'.__FUNCTION__,'推送WMS入库失败!!退单号:'.$rejectedBill['logistic_number_return'],Auth::user()['id']);
+            return $result_TransferToWMS;
         }
         $rejectedBill = RejectedBill::find($rejectedBill['id']);
+        if ($result_TransferToWMS=='exception'){
+            if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,'error_'.__FUNCTION__,'推送WMS入库异常!!退单号:'.$rejectedBill['logistic_number_return'],Auth::user()['id']);
+            $rejectedBill->is_loaded=3;
+            $rejectedBill->save();
+            $rejectedBill['is_loaded']=3; //奇怪,出现过要重保存才成功的情况,未知原因的保险
+            $rejectedBill->update();
+            return $result_TransferToWMS;
+        }
         $rejectedBill->is_loaded=1;
         $rejectedBill->save();
         $rejectedBill['is_loaded']=1; //奇怪,出现过要重保存才成功的情况,未知原因的保险
         $rejectedBill->update();
-        if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"推送WMS后退单改为已入库, 真实状态:{$rejectedBill['is_loaded']},退单号:".$rejectedBill['logistic_number_return'],Auth::user()['id']);
+        if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"推送WMS后退单改为已入库, 真实状态:{$rejectedBill['is_loaded']},退单号:".$rejectedBill['logistic_number_return'],Auth::user()['id']);
         $rejectedBill->items->each(function(RejectedBillItem $item){
             $item['is_loaded']='已入库';
             $item->save();
         });
-        if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"推送WMS后商品标记完为入库状态。退单号:".$rejectedBill['logistic_number_return'],Auth::user()['id']);
-        return true;
+        if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"推送WMS后商品标记完为入库状态。退单号:".$rejectedBill['logistic_number_return'],Auth::user()['id']);
+        return $result_TransferToWMS;
     }
 }

+ 10 - 9
app/Listeners/WmsReceiveNewListener.php

@@ -38,7 +38,7 @@ class WmsReceiveNewListener
      */
     public function handle(WmsReceiveNewEvent $event)
     {
-        if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"进入退单处理事件,由下发或队列启动,退单号:{$event->logisticNumberReturn}",null);
+        if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"进入退单处理事件,由下发或队列启动,退单号:{$event->logisticNumberReturn}",null);
         $logisticNumberReturn=$event->logisticNumberReturn;
         $wmsReceives=WMSReflectReceive::where('ASNREFERENCE3',$logisticNumberReturn)->where('is_uploaded',0)->orderBy('id','desc')->get();
         $downloadedSkuItems=[];
@@ -56,11 +56,11 @@ class WmsReceiveNewListener
     }
 
     private function handleJianshang($logisticNumberReturn, $downloadedSkuItems, $wmsReceives){
-        if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"进入笕尚退单处理事件,退单号:{$logisticNumberReturn}",null);
+        if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"进入笕尚退单处理事件,退单号:{$logisticNumberReturn}",null);
         $bills=RejectedBill::where('logistic_number_return',$logisticNumberReturn)->
         whereIn('is_loaded',[0,2])->get();
         if($bills->isEmpty()){//没有本地货单
-            Controller::logS(__METHOD__,'error_'.__FUNCTION__,"退单事件错误,没有本地对应退单,退单号:{$logisticNumberReturn}",null);
+            Controller::logS(__METHOD__,__FUNCTION__,"退单搁置,没有本地对应退单,退单号:{$logisticNumberReturn}",null);
             return;
         }
 
@@ -76,31 +76,31 @@ class WmsReceiveNewListener
             return new Collection($items);
         })();
         $isItemsReceivedOverDownloaded=WMSReflectReceiveSku::isItemsOverDownloadedSkus($actualGotItems,$downloadedSkuItems);
-        if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"退单事件中,同名退单数:("
+        if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"退单事件中,同名退单数:("
             .$bills->count().")},同名退单:(".json_encode($bills).")},实收件:(".json_encode($actualGotItems).")},下载件:("
             .json_encode($downloadedSkuItems).")},退单号:{$logisticNumberReturn}",null);
 
         if(!$isItemsReceivedOverDownloaded){//实收小于等于下发(下发大于等于实收),入库
-            if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"退单事件中,入库触发(实收小于等于下发),退单号:{$logisticNumberReturn}",null);
+            if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"退单事件中,入库触发(实收小于等于下发),退单号:{$logisticNumberReturn}",null);
             foreach ($bills as $bill){
                 if($bill['is_loaded']!==1){
                     event(new InformWMSReceivedEvent($bill));
                 }
             }
-            if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"退单事件中,入库完成并结束事件,退单号:{$logisticNumberReturn}",null);
+            if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"退单事件中,入库完成并结束事件,退单号:{$logisticNumberReturn}",null);
             return;
         }
 
 
-        if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"实收大于下发(不入库),退单号:{$logisticNumberReturn}",null);
+        if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"实收大于下发(不入库),退单号:{$logisticNumberReturn}",null);
         //(下发小于实收)
         //该单号在6小时前录入的(不是当前最新录入),直接不入库,将实收推给客户(笕尚),并且退单号下所有WMS本地单作废
         $lastReceive=$wmsReceives->first();
         if($lastReceive&&$lastReceive['created_at'])
             if(Carbon::now()->greaterThan(Carbon::make($lastReceive['created_at'])->addHours(6))){
-                if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"退单事件中,6小时内WMS下发的该退单,将不入库的单推给笕尚,准备进入推送接口,退单号:{$logisticNumberReturn}",null);
+                if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"退单事件中,6小时内WMS下发的该退单,将不入库的单推给笕尚,准备进入推送接口,退单号:{$logisticNumberReturn}",null);
                 (new RejectedBillItemController())->sendRejectedToThirdPart2($actualGotItems,$bills->first());  //!!!
-                if(config('jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"退单事件中,完成推单给笕尚,准备进入推送接口,退单号:{$logisticNumberReturn}",null);
+                if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"退单事件中,完成推单给笕尚,准备进入推送接口,退单号:{$logisticNumberReturn}",null);
                 return;
             }
 
@@ -108,6 +108,7 @@ class WmsReceiveNewListener
         if($wmsReceives->isNotEmpty()){
             Controller::logS(__METHOD__,  __FUNCTION__,  '推入任务,13小时后执行本事件,退单号:'.$logisticNumberReturn);
             ProcessReceiveCombinedJob::dispatch($logisticNumberReturn)->delay(now()->addHours(13));
+            return;
         }
         Controller::logS(__METHOD__,'error_'.__FUNCTION__,"退单事件已走完,但下载的WMS退单不存在! 退单号:{$logisticNumberReturn}",null);
     }

+ 1 - 0
app/RejectedBill.php

@@ -83,6 +83,7 @@ class RejectedBill extends Model
             case '0':return '否';
             case 1:return '是';
             case 2:return '待推单';
+            case 3:return '上传异常';
         }
         return '';
     }

+ 6 - 1
resources/views/rejected/create.blade.php

@@ -174,6 +174,7 @@
                                             <option value="0">否</option>
                                             <option value="1">是</option>
                                             <option value="null">无需入库</option>
+                                            <option value="3">上传异常</option>
                                         </select>
                                         <span class="invalid-feedback" v-if="errors.is_loaded"><strong>@{{errors.is_loaded[0]}}</strong></span>
                                     </div>
@@ -716,7 +717,11 @@
                         _this.cleanError();
                         tempTip.cancelWaitingTip();
                         if(response&&response.data&&response.data.success!=='false'){
-                            if(typeof(response.data.bill_is_loaded)!='undefined'){
+                            if(response.data.success=='exception'){
+                                    _this.status.lockingIsLoadedInput=true;
+                                    _this.billInputting.is_loaded=3;
+                                    tempTip.show('富勒入库异常,请手动校对');
+                            }else if(typeof(response.data.bill_is_loaded)!='undefined'){
                                 if(response.data.bill_is_loaded===true){
                                     _this.status.editingBill.is_loaded=1;
                                     _this.billInputting.is_loaded=1;