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); return response()->json(['response' => ['flag' => 'Y', 'code' => '0000', 'message' => '正确接收']]) ->setEncodingOptions(JSON_UNESCAPED_UNICODE); } //package不存在 $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'=>'记录异常' ]); } $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' => ['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.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']; } }