LD 5 лет назад
Родитель
Сommit
b18c81f69e

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

@@ -44,11 +44,57 @@ class TestController extends Controller
     }
     function t1(Request $request){ //x        $packagesBatch=Package::where('batch_number',$batch_number)->first();
 
-        $waybills=Waybill::all();
-        $controller=(new WaybillController());
-        $waybills->each(function ($waybill)use($controller){
-            $controller->accomplishToWMS($waybill);
+        ini_set('max_execution_time',2500);
+        ini_set('memory_limit','1526M');
+        $uploaded=0;
+        $count=DB::table('logs')->where('operation','like',"%PackageController::new_%" )
+            ->where('created_at','>',"2020-06-03 14:02:00")
+            ->where('created_at','<',"2020-06-03 15:05:00")
+            ->where('type',"request_new_")
+            ->count();
+        $requests=DB::table('logs')->where('operation','like',"%PackageController::new_%" )
+            ->where('created_at','>',"2020-06-03 14:02:00")
+            ->where('created_at','<',"2020-06-03 15:05:00")
+            ->where('type',"request_new_")
+            ->get();
+        $requests->each(function($request)use(&$uploaded){
+            $requestJson=json_decode($request->description,true);
+            $response = Zttp::withHeaders([ 'content-type' => 'application/json',
+            ])->post('https://was.baoshi56.com/api/thirdPart/flux/package/new',
+                $requestJson
+            );
+            if($response->json()&&$response->json()['response']&&$response->json()['response']['flag']=='Y')
+                $uploaded+=1;
+        });
+        dd($uploaded.'/'.$count);
+
+
+    }
+    function t2(Request $request){ //x        $packagesBatch=Package::where('batch_number',$batch_number)->first();
+
+        $uploaded=0;
+        $count=DB::table('logs')->where('operation','like',"%PackageController::new_%" )
+            ->where('created_at','>',"2020-06-03 14:02:00")
+            ->where('created_at','<',"2020-06-03 15:05:00")
+            ->where('type',"request_new_")
+            ->where('description','like',"%W200603000117%")
+            ->count();
+        $requests=DB::table('logs')->where('operation','like',"%PackageController::new_%" )
+            ->where('created_at','>',"2020-06-03 14:02:00")
+            ->where('created_at','<',"2020-06-03 15:05:00")
+            ->where('description','like',"%W200603000117%")
+            ->where('type',"request_new_")
+            ->get();
+        $requests->each(function($request)use(&$uploaded){
+            $requestJson=json_decode($request->description,true);
+            $response = Zttp::withHeaders([ 'content-type' => 'application/json',
+            ])->post('https://was.baoshi56.com/api/thirdPart/flux/package/new',
+                $requestJson
+            );
+            if($response->json()&&$response->json()['response']&&$response->json()['response']['flag']=='Y')
+                $uploaded+=1;
         });
+        dd($uploaded.'/'.$count);
 
 
     }

+ 1 - 1
app/Http/Controllers/api/thirdPart/flux/PackageController.php

@@ -142,7 +142,7 @@ class PackageController extends Controller
     {
         return Validator::make($data, [
             'request.TASKID' => ['required', 'string', 'max:191'],
-            'request.Orderno' => ['required', 'string', 'max:191'],
+            'request.Orderno' => ['nullable', 'string', 'max:191'],
             'request.palletid' => ['required', 'string', 'max:191'],
             'request.SOReference5' => ['required', 'string', 'max:191'],
             'request.Customer' => ['nullable', 'string', 'max:191'],

+ 203 - 0
app/Http/Controllers/api/thirdPart/flux/PackageController2.php

@@ -0,0 +1,203 @@
+<?php
+
+namespace App\Http\Controllers\Api\thirdPart\flux;
+
+use App\Http\Controllers\Controller;
+use App\Jobs\MarkPackageExcepted;
+use App\Logistic;
+use App\Owner;
+use App\Package;
+use App\WMSReflectPackage;
+use Carbon\Carbon;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Validator;
+use Zttp\Zttp;
+
+class PackageController extends Controller
+{
+
+    public function new_(Request $request)
+    {
+        $requestInputs=$request->all();
+        $this->log(__METHOD__,'request_'.__FUNCTION__,json_encode($requestInputs),null);
+        $errors=$this->validatorForNew($requestInputs)->errors();
+        if(count($errors)>0){
+            $this->log(__METHOD__,'error2_'.__FUNCTION__,json_encode($requestInputs).'||'.json_encode($errors),null);
+            return ['response'=>['flag'=>'W','message'=>'fields wrong, see Errors report please.',
+                'errors'=>$errors]];
+        }
+        $receiveInputs=$requestInputs['request'];
+        $package=Package::where('logistic_number',$receiveInputs['SOReference5'])->first();
+        if (!$receiveInputs['Customer']) {
+            $this->log(__METHOD__, __FUNCTION__, '富勒没有下发货主!快递单号:'.$receiveInputs['SOReference5'] , null);
+        }
+        $owner=Owner::select('id')->where('code',$receiveInputs['Customer'])->first();
+        if (!$owner&&$receiveInputs['SOReference5']) {
+            Owner::create(['code'=>$receiveInputs['Customer'],'name'=>$receiveInputs['Customer']]);
+            $this->log(__METHOD__, __FUNCTION__, '富勒下发找不到货主,添加. 快递单号:'.$receiveInputs['SOReference5'] , null);
+        }
+        if (!$receiveInputs['CarrierID']) {
+            $this->log(__METHOD__, __FUNCTION__, '富勒没有下发快递公司!快递单号:'.$receiveInputs['SOReference5'] , null);
+        }
+        $logistic=Logistic::select('id')->where('code',$receiveInputs['CarrierID'])->first();
+        if (!$logistic&&$receiveInputs['CarrierID']) {
+            Logistic::create(['code'=>$receiveInputs['CarrierID'],'name'=>$receiveInputs['CarrierID']]);
+            $this->log(__METHOD__, __FUNCTION__, '富勒下发找不到承运商,添加. 快递单号:' .$receiveInputs['SOReference5'] , null);
+        }
+        if ($package) {
+            $package->delivery_number = $receiveInputs['palletid'];
+            if ($owner) {
+                $package->owner_id = $owner->id;
+                $packagePaperBox = new Package();
+                $paperBox_id = $packagePaperBox->checkPaperBox($package->length, $package->width, $package->height, $owner->id);
+                if ($paperBox_id) $package->paperBox_id = $paperBox_id;
+            } else {
+                $package->status = '记录异常';
+            }
+            $package->recipient = $receiveInputs['Consigneename'];
+            if ($logistic) $package->logistic_id = $logistic->id;
+            $package->batch_number = $receiveInputs['USERDEFINE1'];
+            $package->batch_rule = $receiveInputs['USERDEFINE2'];
+            $package->save();
+            $result = $this->accomplishToWMS($package);
+            if ($result['result'] == 'success') {
+                if ($package->status == "记录异常") $package->status = "已上传异常";
+                else $package->status = "已上传";
+            } else {
+                $package->status = "上传异常";
+            }
+            $package->save();
+            $this->log(__METHOD__, 'fluxPackageApi' . __FUNCTION__, json_encode($request->all()), null);
+            return response()->json(['response' => ['flag' => 'Y', 'code' => '0000', 'message' => '正确接收']])
+                ->setEncodingOptions(JSON_UNESCAPED_UNICODE);
+        }
+        if (isset($owner->id)&&isset($logistic->id)){
+            $createPackage = new Package([
+                'logistic_number'=>$receiveInputs['SOReference5'],
+                'delivery_number'=>$receiveInputs['palletid'],
+                'recipient'=>$receiveInputs['Consigneename'],
+                'owner_id'=>$owner->id,
+                'logistic_id'=>$logistic->id,
+                'batch_number'=>$receiveInputs['USERDEFINE1'],
+                'batch_rule'=>$receiveInputs['USERDEFINE2'],
+                'status'=>'未测量'
+            ]);
+        }else{
+            $this->log(__METHOD__,'fluxPackageApi(no owner or carrier)'.__FUNCTION__,json_encode($request->all()),null);
+            $createPackage = new Package([
+                'logistic_number'=>$receiveInputs['SOReference5'],
+                'delivery_number'=>$receiveInputs['palletid'],
+                'recipient'=>$receiveInputs['Consigneename'],
+                'batch_number'=>$receiveInputs['USERDEFINE1'],
+                'batch_rule'=>$receiveInputs['USERDEFINE2'],
+                'status'=>'记录异常'
+            ]);
+        }
+        $createPackage->order_code=$receiveInputs['Orderno'];
+        $createPackage->save();
+        //活动波次同步  组合提总
+        if ($receiveInputs['USERDEFINE2']&&strstr($receiveInputs['USERDEFINE2'],'组合')) {
+            $packageBatch = Package::whereRaw('batch_number = ? AND weight IS NOT NULL', [$receiveInputs['USERDEFINE1']])->first();
+            if ($receiveInputs['USERDEFINE1'] && $packageBatch) {
+                $createPackage->measuring_machine_id = $packageBatch->measuring_machine_id;
+                $createPackage->weight = $packageBatch->weight;
+                $createPackage->length = $packageBatch->length;
+                $createPackage->width = $packageBatch->width;
+                $createPackage->height = $packageBatch->height;
+                $createPackage->bulk = $packageBatch->bulk;
+                $createPackage->paper_box_id = $packageBatch->paper_box_id;
+                $createPackage->save();
+                $result = $this->accomplishToWMS($createPackage);
+                if ($result['result'] == 'success') {
+                    if ($createPackage->status == "记录异常") $createPackage->status = "已上传异常";
+                    else $createPackage->status = "已上传";
+                } else {
+                    $createPackage->status = "上传异常";
+                }
+            }
+            if (!$receiveInputs['USERDEFINE1'] || !$packageBatch) {
+                MarkPackageExcepted::dispatch($createPackage)->delay(Carbon::now()->addMinutes(1440));
+            }
+            $createPackage->save();
+            $this->log(__METHOD__, 'success_' . __FUNCTION__, json_encode($request->all()), null);
+            return response()->json(['response' => ['flag' => 'Y', 'code' => '0000', 'message' => '正确接收']])
+                ->setEncodingOptions(JSON_UNESCAPED_UNICODE);
+        }
+        MarkPackageExcepted::dispatch($createPackage)->delay(Carbon::now()->addMinutes(1440));
+        $this->log(__METHOD__,'success_'.__FUNCTION__,json_encode($request->all()),null);
+        return response()->json(['response'=>['flag'=>'Y','code'=>'0000','message'=>'正确接收']])
+            ->setEncodingOptions(JSON_UNESCAPED_UNICODE);
+    }
+
+    protected function validatorForNew(array $data)
+    {
+        return Validator::make($data, [
+            'request.TASKID' => ['required', 'string', 'max:191'],
+            'request.Orderno' => ['nullable', 'string', 'max:191'],
+            'request.palletid' => ['required', 'string', 'max:191'],
+            'request.SOReference5' => ['required', 'string', 'max:191'],
+            'request.Customer' => ['nullable', 'string', 'max:191'],
+            'request.Consigneename' => ['nullable', 'string', 'max:191'],
+            'request.CarrierID' => ['nullable', 'string', 'max:191'],
+            'request.USERDEFINE1' => ['nullable', 'string', 'max:191'],
+            'request.USERDEFINE2' => ['nullable', 'string', 'max:191'],
+            'request.USERDEFINE3' => ['nullable', 'string', 'max:191'],
+        ],[],[
+            'request.TASKID' => 'taskid',
+            'request.Orderno' => 'orderno',
+            'request.palletid' => 'palletid',
+            'request.SOReference5' => 'soreference5',
+            'request.Customer' => 'custmoer',
+            'request.Consigneename' => 'consigmeename',
+            'request.CarrierID' => 'carrierid',
+            'request.USERDEFINE1' => 'userdefine1',
+            'request.USERDEFINE2' => 'userdefine2',
+            'request.USERDEFINE3' => 'userdefine3',
+        ]);
+    }
+    /**
+     * 完成的包裹称量发送给WMS
+     */
+    public function accomplishToWMS(Package $package)
+    {
+        try{
+
+            if($package['status']=='已上传'&&strstr($package['batch_rule'],'组合')){
+                if(isset($package['forceUpload'])&&$package['forceUpload']!=true){
+                    $this->log(__METHOD__,'跳过_'.__FUNCTION__,'未实际上传,之前有上传成功且无变动:'.json_encode($package),null);
+                    return ['result'=>'success'];
+                }
+            }
+            $json=["request"=>['TASKID'=>$package->WMSReflectPackage_name,
+                'SOReference5'=>$package->logistic_number,
+                'Weigh'=>$package->weight,
+                'Addwho'=>'',
+                'Addtime'=>Carbon::now(),
+                'Package'=>$package->paperBox_name,
+                'USERDEFINE1'=>$package->batch_number,
+                'USERDEFINE2'=>$package->batch_rule,
+                'USERDEFINE3'=>'OK',
+            ]];
+            $json=json_encode($json);
+            $url=url(config('api.flux.package.new'));
+            $response = Zttp::post($url, json_decode($json));
+            $this->log(__METHOD__,'Sign'.__FUNCTION__,json_encode($response->json()),null);
+            $response=$response->json();
+            $noIssues=true;
+            if(!$response||!isset($response['response'])||!$response['response']['flag']=='Y'){
+                $noIssues=false;
+            }
+            if($noIssues&&$response['response']['flag']=='Y'){
+                $this->log(__METHOD__,'SUCCESS_'.__FUNCTION__,json_encode($json).'| response: '.json_encode($response),null);
+                return ['result'=>'success'];
+            }
+            $this->log(__METHOD__,'ERROR_'.__FUNCTION__,json_encode($json).'| response: '.json_encode($response),null);
+            return ['result'=>'false'];
+        }catch (\Exception $exception){
+            Controller::logS(__METHOD__,'Exception_'.__FUNCTION__,'CURL请求异常:'.$exception->getMessage(),null);
+            return ['result'=>'false'];
+        }
+    }
+
+
+}

+ 1 - 0
routes/api/thirdPart/flux.php

@@ -13,6 +13,7 @@ Route::post('receive/new', "ReceiveController@new_");//增加新波次消息
 文件地址前缀:/api/thirdPart/flux/package
 */
 Route::post('package/new', "PackageController@new_");//增加新包裹消息
+Route::post('package/new2', "PackageController2@new_");//增加新包裹消息
 //accomplishToWMS() 发往WMS的称重和纸条包裹信息
 
 /*