Pārlūkot izejas kodu

包裹跳过WMS接口的逻辑和BUG修复

LD 5 gadi atpakaļ
vecāks
revīzija
5f5d785ac6

+ 77 - 82
app/Http/Controllers/PackageController.php

@@ -48,9 +48,9 @@ class PackageController extends Controller
         if ($request->input('logistic_number')){
             $packages=$this->preciseQuery('logistic_number',$request,$packages);
         }
-/*        if ($request->input('delivery_number')){
-            $packages=$this->preciseQuery('delivery_number',$request,$packages);
-        }*/
+        /*        if ($request->input('delivery_number')){
+                    $packages=$this->preciseQuery('delivery_number',$request,$packages);
+                }*/
         if ($request->input('created_at_start')){
             $created_at_start=$request->input('created_at_start')." 00:00:00";
             $packages=$packages->where('created_at','>=',$created_at_start);
@@ -115,9 +115,27 @@ class PackageController extends Controller
         $batch_number=strtoupper($request->input('batch_number'));
         $order_code=$request->input('order_code');
         $paper_box_id=$request->input('paper_box_id');
-        $isSamePackBatch=$request->input('is_same_pack_batch');
+//        $isSamePackBatch=$request->input('is_same_pack_batch');
         if($logistic_number&&$batch_number)return redirect('package/create')->with('successError','录入失败!波次号和快递单号只能填一项!');
         $package=null;
+        $successTip = '操作成功';
+
+        $accomplishToWMS=new Api\thirdPart\flux\PackageController();
+        if($batch_number){
+            $this->log(__METHOD__,'活动波次开始同步_'.__FUNCTION__,json_encode($package),Auth::user()['name']);
+//            $this->syncBatch($package->batch_number,$weight,null,null,null,Carbon::now(),null);
+            if($package->isActivityBatch())
+                $package->unifyThisMeasureUnderBatch();
+            $result=$accomplishToWMS->markWMSOnBatch($batch_number,$weight);
+
+            if ($result['result']){
+                Controller::logS(__METHOD__,'SUCCESS_'.__FUNCTION__,'批量更改波次上传成功'.$batch_number);
+                return redirect('package/create')->with('successTip', $successTip);
+            }
+            Controller::logS(__METHOD__,'error_'.__FUNCTION__,'批量更改波次上传异常:'.$result['message'].$batch_number);
+            return redirect('package/create')->with('successError','录入失败!'.$result['message']);
+        }
+
         if ($order_code){
             $package=Package::where('order_code',$order_code)->first();
         }else{
@@ -127,49 +145,26 @@ class PackageController extends Controller
                 $package=Package::where('logistic_number',$logistic_number)->first();
             }
         }
-
-        $accomplishToWMS=new Api\thirdPart\flux\PackageController();
-        $result=$accomplishToWMS->markWMSOnBatch($batch_number,$weight);
-        if ($result['result']){
-            $newValues['status']='已上传';
-            Controller::logS(__METHOD__,'SUCCESS_'.__FUNCTION__,'批量更改波次上传成功'.$batch_number);
-        }else{
-            $newValues['status']='上传异常';
-            Controller::logS(__METHOD__,'error_'.__FUNCTION__,'批量更改波次上传异常:'.$result['message'].$batch_number);
-        }
-
-        if (!$result['result']){
-            return redirect('package/create')->with('successError','录入失败!'.$result['message']);
-        }
-
-//        if (!$package && !$logistic_number)return redirect('package/create')->with('successError','录入失败!系统内没有对应波次的包裹!');
-        $successTip = '操作成功';
+        if (!$package && !$logistic_number)return redirect('package/create')->with('successError','录入失败!系统内没有对应波次的包裹!');
         if ($package){
-            $accomplishToWMS=new Api\thirdPart\flux\PackageController();
-            if ($isSamePackBatch||($package->batch_rule&&strstr($package->batch_rule,'组合'))){
-                $this->log(__METHOD__,'活动波次开始同步_'.__FUNCTION__,json_encode($package),Auth::user()['name']);
-                $this->syncBatch($package->batch_number,$weight,null,null,null,Carbon::now(),null);
+            if(!$package->batch_number)$package->batch_number=$batch_number;
+            if(!$package->order_code)$package->order_code=$order_code;
+            $package->fetchAllFromOracle();
+            $package->weight=$weight;
+            if(!$package->paper_box_id)$package->paper_box_id=$paper_box_id;
+            $result=$accomplishToWMS->accomplishToWMS($package);
+            if ($result['result']){
+                $package->status="已上传";
             }else{
-                if($batch_number){
-                    return redirect('package/create')->with('successError','录入失败!该波次不是组合提总!');
-                }
-                $package->weight=$weight;
-                $package->paper_box_id=$paper_box_id;
-                $package->batch_number=$batch_number;
-                $package->order_code=$order_code;
-                $result=$accomplishToWMS->accomplishToWMS($package);
-                if ($result['result']){
-                    if ($package->status=="记录异常")$package->status="已上传异常";
-                    else $package->status="已上传";
-                }else{
-                    $package->status="上传异常";
-                }
+                $package->status="上传异常";
             }
             $package->save();
             $this->log(__METHOD__,'create_'.__FUNCTION__,json_encode($package),Auth::user()['name']);
-            event(new WeighedEvent($package));
+//            event(new WeighedEvent($package));
         }else{
-            $this->syncBatch($batch_number,$weight,null,null,null,Carbon::now(),null);
+//            $this->syncBatch($batch_number,$weight,null,null,null,Carbon::now(),null);
+            if($package->isActivityBatch())
+                $package->unifyThisMeasureUnderBatch();
             $successTip = "批量录入波次成功!波次号:$batch_number";
         }
         return redirect('package/create')->with('successTip', $successTip);
@@ -364,47 +359,47 @@ class PackageController extends Controller
         return $validator;
     }
 
-    public function syncBatch($batch_number,$weight,$max,$centre,$min,$date,$paperBox_id){
-//        $accomplishToWMS=new Api\thirdPart\flux\PackageController();
-//        $packageBatch=Package::where('batch_number',$batch_number)->first();
-        $newValues = ['weight' => $weight];
-        $newValues['batch_number']=$batch_number;
-        if($max)$newValues['length']=$max;
-        if($centre)$newValues['width']=$centre;
-        if($min)$newValues['height']=$min;
-        if($date)$newValues['weighed_at']=$date;
-        if($paperBox_id)$newValues['paper_box_id']=$paperBox_id;
-        if($max&&$centre&&$min){
-            $newValues['bulk']=$max*$centre*$min;
-        }
-//        $weightChanged=$packageBatch['weight']!=$weight;
-//        Package::where('batch_number',$batch_number)->update($newValues);
-//        $packageBatch['forceUpload']=$weightChanged;
-        Controller::logS(__METHOD__,__FUNCTION__,"批量更新时批次号传入:{$batch_number}");
-//        $result=$accomplishToWMS->markWMSOnBatch($packageBatch['batch_number']);
-//        if ($result['result']){
-//            $newValues['status']='已上传';
-//            Controller::logS(__METHOD__,'SUCCESS_'.__FUNCTION__,'批量更改波次上传成功'.json_encode($packageBatch));
-//        }else{
-//            $newValues['status']='上传异常';
-//            Controller::logS(__METHOD__,'error_'.__FUNCTION__,'批量更改波次上传异常:'.$result['message'].json_encode($packageBatch));
-//        }picktotraceid
-        $packagesInOracle=OracleDOCWaveDetails::where('doc_wave_details.waveno',$batch_number)
-            ->leftJoin('act_allocation_details','act_allocation_details.orderno','doc_wave_details.orderno')
-            ->get();
-        foreach ($packagesInOracle as $packageInOracle) {
-            $newValues['logistic_number']=$packageInOracle['picktotraceid'];
-            $package = Package::where('logistic_number', $packageInOracle['picktotraceid'])->first();
-            if(!$package){
-                Package::create($newValues);
-            }else{
-                $package->fill($newValues);
-                $package->update();
-            }
-        }
-//        Package::where('batch_number',$batch_number)->update($newValues);
-
-    }
+//    public function syncBatch($batch_number,$weight,$max,$centre,$min,$date,$paperBox_id){
+////        $accomplishToWMS=new Api\thirdPart\flux\PackageController();
+////        $packageBatch=Package::where('batch_number',$batch_number)->first();
+//        $newValues = ['weight' => $weight];
+//        $newValues['batch_number']=$batch_number;
+//        if($max)$newValues['length']=$max;
+//        if($centre)$newValues['width']=$centre;
+//        if($min)$newValues['height']=$min;
+//        if($date)$newValues['weighed_at']=$date;
+//        if($paperBox_id)$newValues['paper_box_id']=$paperBox_id;
+//        if($max&&$centre&&$min){
+//            $newValues['bulk']=$max*$centre*$min;
+//        }
+////        $weightChanged=$packageBatch['weight']!=$weight;
+////        Package::where('batch_number',$batch_number)->update($newValues);
+////        $packageBatch['forceUpload']=$weightChanged;
+//        Controller::logS(__METHOD__,__FUNCTION__,"批量更新时批次号传入:{$batch_number}");
+////        $result=$accomplishToWMS->markWMSOnBatch($packageBatch['batch_number']);
+////        if ($result['result']){
+////            $newValues['status']='已上传';
+////            Controller::logS(__METHOD__,'SUCCESS_'.__FUNCTION__,'批量更改波次上传成功'.json_encode($packageBatch));
+////        }else{
+////            $newValues['status']='上传异常';
+////            Controller::logS(__METHOD__,'error_'.__FUNCTION__,'批量更改波次上传异常:'.$result['message'].json_encode($packageBatch));
+////        }picktotraceid
+//        $packagesInOracle=OracleDOCWaveDetails::where('doc_wave_details.waveno',$batch_number)
+//            ->leftJoin('act_allocation_details','act_allocation_details.orderno','doc_wave_details.orderno')
+//            ->get();
+//        foreach ($packagesInOracle as $packageInOracle) {
+//            $newValues['logistic_number']=$packageInOracle['picktotraceid'];
+//            $package = Package::where('logistic_number', $packageInOracle['picktotraceid'])->first();
+//            if(!$package){
+//                Package::create($newValues);
+//            }else{
+//                $package->fill($newValues);
+//                $package->update();
+//            }
+//        }
+////        Package::where('batch_number',$batch_number)->update($newValues);
+//
+//    }
 
     public function statisticExport($packages,$owners,$logistics){
         if (!$packages||!$owners||!$logistics) return;

+ 22 - 4
app/Http/Controllers/TestController.php

@@ -10,6 +10,7 @@ use App\Events\CancelOrder;
 use App\Events\WmsReceiveNewEvent;
 use App\Http\Controllers\Api\thirdPart\flux\WaybillController;
 use App\Logistic;
+use App\OracleActAllocationDetails;
 use App\OracleDOCOrderHeader;
 use App\OracleDocOrderPackingSummary;
 use App\OracleDOCWaveDetails;
@@ -192,10 +193,27 @@ class TestController extends Controller
 
     public function delme()
     {
-        $unpackedOrders = OracleDOCWaveDetails::select('doc_order_header.SOSTATUS')->where('doc_wave_details.waveno', 'W190630000042')->leftJoin('doc_order_header','doc_order_header.orderno','doc_wave_details.orderno')->where(function ($query){
-            $query->where('doc_order_header.SOSTATUS','<>','99')->where('doc_order_header.SOSTATUS','<>','63');
-        })->toSql();
-        dd($unpackedOrders);
+
+
+        $fields = [
+            'doc_order_header.userdefine1',
+            'doc_order_header.userdefine2',
+            'doc_order_header.SOReference5',
+            'doc_order_header.waveno',
+            'doc_order_header.orderno',
+            'doc_order_header.customerid',
+            'doc_order_header.Consigneename'
+        ];
+        if(''){
+            $resultOracleObj=OracleDOCOrderHeader::select($fields)->where('orderno','SO200603004708');
+        }else{
+            $resultOracleObj=OracleActAllocationDetails::select($fields);
+            $resultOracleObj->where('picktotraceid','546152742096');
+            $resultOracleObj->leftJoin('DOC_Order_Header','act_allocation_details.orderno','doc_order_header.orderno');
+        }
+        $_temOracleInfo=$resultOracleObj->first();
+
+        dd($_temOracleInfo);
     }
     public function excelIt()
     {

+ 14 - 11
app/Http/Controllers/api/thirdPart/weight/PackageController.php

@@ -175,7 +175,7 @@ class PackageController extends Controller
             return json_encode(["msg"=>$errors,"code"=>500,"data"=>null]);
         }
 
-        $measuringMachine=MeasuringMachine::firstOrCreate('code',$request['id']);
+        $measuringMachine=MeasuringMachine::firstOrCreate(['code'=>$request['id']]);
         $measuringMachine->turnOn();
         $measuringMachine->turnOffInMinutes(30);
 
@@ -217,7 +217,7 @@ class PackageController extends Controller
         }
         if (!$package){
             $logisticNumber=$request['barcode'];
-            $createPackage=new Package([
+            $package=new Package([
                 'logistic_number'=>$logisticNumber,
                 'delivery_number'=>$logisticNumber,
                 'measuring_machine_id'=>$measuringMachine->id,
@@ -229,24 +229,27 @@ class PackageController extends Controller
                 'weighed_at'=>$reqDate,
                 'status'=>"无",
             ]);
-            $createPackage->fetchAllFromOracle();
-            $createPackage->fetchPaperBox($edges[0], $edges[1], $edges[2]);
-            $result=$fluxController->accomplishToWMS($createPackage);
-            if(!$createPackage['batch_number'])
-                FetchPackageFromOracle::dispatch($createPackage)->delay(Carbon::now()->addMinutes(1440));
+            $package->fetchAllFromOracle();
+            $package->fetchPaperBox($edges[0], $edges[1], $edges[2]);
+            $result=$fluxController->accomplishToWMS($package);
+            if(!$package['batch_number'])
+                FetchPackageFromOracle::dispatch($package)->delay(Carbon::now()->addMinutes(1440));
             if(!$result['result']){
-                $this->log(__METHOD__,'weightApi'.__FUNCTION__,json_encode($request).'||'.json_encode($createPackage),null);
+                $this->log(__METHOD__,'weightApi'.__FUNCTION__,json_encode($request).'||'.json_encode($package),null);
                 $response=["msg"=>"写入WMS失败!","code"=>500,"data"=>null];
                 return json_encode($response,JSON_UNESCAPED_UNICODE);
             }
-            if(!$createPackage->save()){
+            try{
+                $package->save();
+            }catch (\Exception $e){
                 $response=["msg"=>"保存时发生错误(未下发)!","code"=>500,"data"=>null];
                 $this->log(__METHOD__,'weightApi(ERROR)'.__FUNCTION__,json_encode($request).'||'.json_encode($response),null);
                 return json_encode($response,JSON_UNESCAPED_UNICODE);
             }
         }
-        Waybill::setWeightByOrderCode($package->order_code,$package->weight);
-        event(new WeighedEvent($createPackage));
+        if(!empty($package->order_code))
+            Waybill::setWeightByOrderCode($package->order_code,$package->weight);
+        event(new WeighedEvent($package));
         $response=["msg"=>"保存成功",
             "code"=>200,
             "data"=>true,

+ 14 - 8
app/Package.php

@@ -2,6 +2,7 @@
 
 namespace App;
 
+use App\Http\Controllers\Controller;
 use Illuminate\Database\Eloquent\Model;
 use App\Traits\ModelTimeFormat;
 
@@ -72,7 +73,7 @@ class Package extends Model
         $logistic= Logistic::where('code',$this['oracleInfo']['SOReference5'])->first();
         if(!$logistic){
             Logistic::create(['code'=>$this['oracleInfo']['SOReference5'],'name'=>$this['oracleInfo']['SOReference5']]);
-            $this->log(__METHOD__, __FUNCTION__, "富勒下发找不到快递公司,添加{$this['oracleInfo']['customerid']}" , null);
+            Controller::logs(__METHOD__, __FUNCTION__, "富勒下发找不到快递公司,添加{$this['oracleInfo']['customerid']}" , null);
         }
         if(!$logistic)return null;
         $this['temLogistic']=$logistic;
@@ -85,7 +86,7 @@ class Package extends Model
         $owner= Owner::where('code',$this['oracleInfo']['customerid'])->first();
         if(!$owner){
             Owner::create(['code'=>$this['oracleInfo']['customerid'],'name'=>$this['oracleInfo']['customerid']]);
-            $this->log(__METHOD__, __FUNCTION__, "富勒下发找不到货主,添加{$this['oracleInfo']['customerid']}" , null);
+            Controller::logs(__METHOD__, __FUNCTION__, "富勒下发找不到货主,添加{$this['oracleInfo']['customerid']}" , null);
         }
         if(!$owner)return null;
         $this['temOwner']=$owner;
@@ -105,9 +106,9 @@ class Package extends Model
 
     public function getOracleInfoAttribute()
     {
-        if(!$this['logistic_number'])return '';
         if(isset($this->_temOracleInfo)&&$this->_temOracleInfo)return $this->_temOracleInfo;
-        $allocationDetail=OracleActAllocationDetails::select([
+        if(!$this['logistic_number']&&!$this['order_code'])return '';
+        $fields = [
             'doc_order_header.userdefine1',
             'doc_order_header.userdefine2',
             'doc_order_header.SOReference5',
@@ -115,10 +116,15 @@ class Package extends Model
             'doc_order_header.orderno',
             'doc_order_header.customerid',
             'doc_order_header.Consigneename'
-        ])
-            ->where('picktotraceid',$this['logistic_number'])
-            ->leftJoin('DOC_Order_Header','act_allocation_details.orderno','doc_order_header.orderno');
-        $this->_temOracleInfo=$allocationDetail->first();
+        ];
+        if($this['order_code']){
+            $resultOracleObj=OracleDOCOrderHeader::select($fields)->where('orderno',$this['order_code']);
+        }else{
+            $resultOracleObj=OracleActAllocationDetails::select($fields);
+            $resultOracleObj->where('picktotraceid',$this['logistic_number']);
+            $resultOracleObj->leftJoin('DOC_Order_Header','act_allocation_details.orderno','doc_order_header.orderno');
+        }
+        $this->_temOracleInfo=$resultOracleObj->first();
         return $this->_temOracleInfo;
     }
     public function getOwnerNameAttribute()

+ 1 - 1
tests/package.http

@@ -1,4 +1,4 @@
 POST http://bswas/api/thirdPart/weight/new
 Content-Type: application/json
 
-{"id": "abc","barcode": "546642250091","weight": "3","length": 3,"width": 1,"height": 2}
+{"id": "abc6","barcode": "5466422500912e","weight": "13","length": 3,"width": 1,"height": 2}