all(); $receiveInputs=$requestInputs['request']; $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($receiveInputs).'||'.json_encode($errors),null); return ['response'=>['flag'=>'W','message'=>'fields wrong, see Errors report please.', 'errors'=>$errors]]; } $package=Package::where('logistic_number',$receiveInputs['SOReference5'])->first(); $owner=Owner::select('id')->where('code',$receiveInputs['Customer'])->first(); $carrier=Logistic::select('id')->where('code',$receiveInputs['CarrierID'])->first(); 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 ($carrier)$package->logistic_id=$carrier->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="上传异常"; } if (!$owner||!$carrier){ $this->log(__METHOD__,'fluxPackageApi(no owner or carrier)'.__FUNCTION__,json_encode($request->all()),null); } $package->save(); $this->log(__METHOD__,'fluxPackageApi'.__FUNCTION__,json_encode($request->all()),null); }else{ $receive = new WMSReflectPackage($receiveInputs); $receive->save(); if (isset($owner->id)&&isset($carrier->id)){ $createPackage = new Package([ 'logistic_number'=>$receiveInputs['SOReference5'], 'delivery_number'=>$receiveInputs['palletid'], 'recipient'=>$receiveInputs['Consigneename'], 'owner_id'=>$owner->id, 'logistic_id'=>$carrier->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'=>'记录异常' ]); } //活动波次同步 组合提总 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="上传异常"; } }else{ WeightQueue::dispatch($createPackage)->delay(Carbon::now()->addMinutes(1440)); } }else{ WeightQueue::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); } protected function validatorForNew(array $data) { return Validator::make($data, [ 'request.TASKID' => ['required', 'string', 'max:191'], 'request.Orderno' => ['required', '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' => 'consigmeema,e', 'request.CarrierID' => 'carrierid', 'request.USERDEFINE1' => 'userdefine1', 'request.USERDEFINE2' => 'userdefine2', 'request.USERDEFINE3' => 'userdefine3', ]); } /** * 完成的包裹称量发送给WMS */ public function accomplishToWMS(Package $package) { $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.packageAccomplishTOWMS_flux')); $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($package),null); return ['result'=>'success']; } $this->log(__METHOD__,'ERROR_'.__FUNCTION__,json_encode($package),null); return ['result'=>'false']; } }