|
|
@@ -0,0 +1,183 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+namespace App\Http\Controllers\Api\thirdPart\flux;
|
|
|
+
|
|
|
+use App\Batch;
|
|
|
+use App\Events\WmsReceiveNewEvent;
|
|
|
+use App\Http\Controllers\Controller;
|
|
|
+use App\Order;
|
|
|
+use App\OrderBarcode;
|
|
|
+use App\RejectedBill;
|
|
|
+use App\RejectedBillItem;
|
|
|
+use App\SkuNew;
|
|
|
+use App\WMSReflectReceive;
|
|
|
+use App\WMSReflectReceiveSku;
|
|
|
+use Illuminate\Http\Request;
|
|
|
+use Illuminate\Support\Facades\Auth;
|
|
|
+use Illuminate\Support\Facades\Validator;
|
|
|
+use Zttp\Zttp;
|
|
|
+
|
|
|
+class ReceiveController extends Controller
|
|
|
+{
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 收货任务下发
|
|
|
+ */
|
|
|
+ public function new_(Request $request)
|
|
|
+ {
|
|
|
+ $errors=$this->validatorForNew($request->all())->errors();
|
|
|
+ if(count($errors)>0){
|
|
|
+ $this->log(__METHOD__, 'error' . __FUNCTION__, json_encode($request->all()));
|
|
|
+ return ['response'=>['flag'=>'W','message'=>'fields wrong, see Errors report please.',
|
|
|
+ 'errors'=>$errors]];
|
|
|
+ }
|
|
|
+ $receiveInputs=$request->input('request');
|
|
|
+ foreach ($receiveInputs as $receiveInput){
|
|
|
+ $receive=new WMSReflectReceive($receiveInput);
|
|
|
+ $receive->save();
|
|
|
+ $skus=[];
|
|
|
+ foreach ($receiveInput['SKU_LIST'] as $skuInput){
|
|
|
+ $sku=new WMSReflectReceiveSku($skuInput);
|
|
|
+ $receive->skus()->save($sku);
|
|
|
+ $skus[]=$sku;
|
|
|
+ }
|
|
|
+ event(new WmsReceiveNewEvent($receive['ASNREFERENCE3'],$skus));
|
|
|
+ }
|
|
|
+ return response()->json(['response'=>['flag'=>'Y','code'=>'0000','message'=>'正确接收']])
|
|
|
+ ->setEncodingOptions(JSON_UNESCAPED_UNICODE);
|
|
|
+ }
|
|
|
+ protected function validatorForNew(array $data)
|
|
|
+ {
|
|
|
+ return Validator::make($data, [
|
|
|
+ 'request' => ['required', 'array', 'min:1'],
|
|
|
+ 'request.*.ASNNO' => ['required', 'string', 'max:191'],
|
|
|
+ 'request.*.WAREHOUSEID' => ['required', 'string', 'max:191'],
|
|
|
+ 'request.*.CUSTOMERID' => ['required', 'string', 'max:191'],
|
|
|
+ 'request.*.ASNTYPE' => ['nullable', 'string', 'max:191'],
|
|
|
+ 'request.*.ASNREFERENCE1' => ['required', 'string', 'max:191'],
|
|
|
+ 'request.*.ASNREFERENCE2' => ['nullable', 'string', 'max:191'],
|
|
|
+ 'request.*.ASNREFERENCE3' => ['required', 'string', 'max:191'],
|
|
|
+ 'request.*.ASNSTATUS' => ['nullable', 'string', 'max:191'],
|
|
|
+ 'request.*.NOTES' => ['nullable', 'string', 'max:191'],
|
|
|
+ 'request.*.USERDEFINE1' => ['nullable', 'string', 'max:191'],
|
|
|
+ 'request.*.USERDEFINE2' => ['nullable', 'string', 'max:191'],
|
|
|
+ 'request.*.USERDEFINE3' => ['nullable', 'string', 'max:191'],
|
|
|
+ 'request.*.SKU_LIST' => ['required', 'array', 'min:1'],
|
|
|
+ 'request.*.SKU_LIST.*.ASNLINENO' => ['nullable', 'string', 'max:191'],
|
|
|
+ 'request.*.SKU_LIST.*.SKU' => ['required', 'string', 'max:191'],
|
|
|
+ 'request.*.SKU_LIST.*.ALTERNATE_SKU1' => ['required', 'string', 'max:191'],
|
|
|
+ 'request.*.SKU_LIST.*.SKUDESCRC' => ['nullable', 'string', 'max:191'],
|
|
|
+ 'request.*.SKU_LIST.*.EXPECTEDQTY_EACH' => ['nullable', 'string', 'max:191'],
|
|
|
+ 'request.*.SKU_LIST.*.UOM' => ['nullable', 'string', 'max:191'],
|
|
|
+ 'request.*.SKU_LIST.*.LINESTATUS' => ['nullable', 'string', 'max:191'],
|
|
|
+ 'request.*.SKU_LIST.*.LOTATT05' => ['nullable', 'string', 'max:191'],
|
|
|
+ 'request.*.SKU_LIST.*.USERDEFINE4' => ['nullable', 'string', 'max:191'],
|
|
|
+ 'request.*.SKU_LIST.*.USERDEFINE5' => ['nullable', 'string', 'max:191'],
|
|
|
+ 'request.*.SKU_LIST.*.USERDEFINE6' => ['nullable', 'string', 'max:191'],
|
|
|
+ ],[],[
|
|
|
+ 'request.ASNNO' => 'ASNNO',
|
|
|
+ 'request.*.WAREHOUSEID' => 'WAREHOUSEID',
|
|
|
+ 'request.*.CUSTOMERID' => 'CUSTOMERID',
|
|
|
+ 'request.*.ASNTYPE' => 'ASNTYPE',
|
|
|
+ 'request.*.ASNREFERENCE1' => 'ASNREFERENCE1',
|
|
|
+ 'request.*.ASNREFERENCE2' => 'ASNREFERENCE2',
|
|
|
+ 'request.*.ASNREFERENCE3' => 'ASNREFERENCE3',
|
|
|
+ 'request.*.ASNSTATUS' => 'ASNSTATUS',
|
|
|
+ 'request.*.NOTES' => 'NOTES',
|
|
|
+ 'request.*.USERDEFINE1' => 'USERDEFINE1',
|
|
|
+ 'request.*.USERDEFINE2' => 'USERDEFINE2',
|
|
|
+ 'request.*.USERDEFINE3' => 'USERDEFINE3',
|
|
|
+ 'request.*.SKU_LIST' => 'SKU_LIST',
|
|
|
+ 'request.*.SKU_LIST.*.ASNLINENO' => 'SKU_LIST.ASNLINENO',
|
|
|
+ 'request.*.SKU_LIST.*.SKU' => 'SKU_LIST.SKU',
|
|
|
+ 'request.*.SKU_LIST.*.ALTERNATE_SKU1' => 'SKU_LIST.ALTERNATE_SKU1',
|
|
|
+ 'request.*.SKU_LIST.*.SKUDESCRC' => 'SKU_LIST.SKUDESCRC',
|
|
|
+ 'request.*.SKU_LIST.*.EXPECTEDQTY_EACH' => 'SKU_LIST.EXPECTEDQTY_EACH',
|
|
|
+ 'request.*.SKU_LIST.*.UOM' => 'SKU_LIST.UOM',
|
|
|
+ 'request.*.SKU_LIST.*.LINESTATUS' => 'SKU_LIST.LINESTATUS',
|
|
|
+ 'request.*.SKU_LIST.*.LOTATT05' => 'SKU_LIST.LOTATT05',
|
|
|
+ 'request.*.SKU_LIST.*.USERDEFINE4' => 'SKU_LIST.USERDEFINE4',
|
|
|
+ 'request.*.SKU_LIST.*.USERDEFINE5' => 'SKU_LIST.USERDEFINE5',
|
|
|
+ 'request.*.SKU_LIST.*.USERDEFINE6' => 'SKU_LIST.USERDEFINE6',
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 入库回传给WMS
|
|
|
+ */
|
|
|
+ static public function accomplishToWMS(RejectedBill $rejectedBill)
|
|
|
+ {
|
|
|
+ $wmsReceived=WMSReflectReceive::where('ASNREFERENCE3',$rejectedBill['logistic_number_return'])->first();
|
|
|
+ if(!$wmsReceived){
|
|
|
+ (new Controller())->log(__METHOD__,'error_'.__FUNCTION__,'没有WMS入库单');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ $orderNumberCode=$wmsReceived['ASNREFERENCE1']??$rejectedBill['order_number'];
|
|
|
+ $skuList=[];
|
|
|
+ $rejectedBill->items()->each(function(RejectedBillItem $item)use($wmsReceived){
|
|
|
+ if($item['is_loaded']){return;}
|
|
|
+ $STATUS=$item['id_quality_label']==1?'ZP':'CC';
|
|
|
+ $sku=$item->wmsReflectSku()->first();
|
|
|
+ $sku="
|
|
|
+ {
|
|
|
+ \"ORDERNUMBERCODE\": \"{$wmsReceived['ASNNO']}\",
|
|
|
+ \"ASNLINENO\": \"{$sku['ASNLINENO']}\",
|
|
|
+ \"SKUCODE\": \"{$sku['SKU']}\",
|
|
|
+ \"QUANTITY\": \"{$item['amount']}\",
|
|
|
+ \"LOTATT04\": \"{$sku['LOTATT04']}\",
|
|
|
+ \"LOTATT05\": \"{$sku['LOTATT05']}\",
|
|
|
+ \"STATUS\": \"{$STATUS}\",
|
|
|
+ \"PRODUCTION DATE\": \"{$item['made_at']}\",
|
|
|
+ \"EXPIRATION DATE\": \"{$item['validity_at']}\",
|
|
|
+ \"USERDEFINE4\": \"\",
|
|
|
+ \"USERDEFINE5\": \"\",
|
|
|
+ \"USERDEFINE6\": \"\",
|
|
|
+ \"UNIQUE_CODE_LIST\": [
|
|
|
+ {
|
|
|
+ \"ORDERNUMBERCODE\": \"{$wmsReceived['ASNNO']}\",
|
|
|
+ \"SKUCODE\": \"{$sku['SKU']}\",
|
|
|
+ \"STATUS\": \"{$STATUS}\",
|
|
|
+ \"PRODUCTION DATE\": \"{$item['made_at']}\",
|
|
|
+ \"EXPIRATION DATE\": \"{$item['validity_at']}\",
|
|
|
+ \"LOTATT05\": \"{$sku['LOTATT05']}\",
|
|
|
+ \"UNIQUE_CODE\": \"\"
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ";
|
|
|
+ $skuList[]=$sku;
|
|
|
+ });
|
|
|
+ $skuList = implode(',',$skuList);
|
|
|
+ $json="
|
|
|
+{
|
|
|
+ \"request\": [
|
|
|
+ {
|
|
|
+ \"ORDERNUMBERCODE\": \"{$wmsReceived['ASNNO']}\",
|
|
|
+ \"CUSTOMERID\": \"{$rejectedBill->owner()->first()['code']}\",
|
|
|
+ \"ASNTYPE\": \"{$wmsReceived['ASNTYPE']}\",
|
|
|
+ \"ASNREFERENCE1\": \"{$orderNumberCode}\",
|
|
|
+ \"ADDWHO\": \"WCS\",
|
|
|
+ \"USERDEFINE1\": \"\",
|
|
|
+ \"USERDEFINE2\": \"\",
|
|
|
+ \"USERDEFINE3\": \"\",
|
|
|
+ \"SKU_LIST\": [{$skuList}]
|
|
|
+ }
|
|
|
+ ]
|
|
|
+}
|
|
|
+ ";
|
|
|
+ $json = json_decode($json,true);
|
|
|
+ $url=url(config('api.receiveAccomplishToWMS_flux')); //TODO: del this line
|
|
|
+ (new Controller())->log(__METHOD__,__FUNCTION__,json_encode($json));
|
|
|
+ $response = Zttp::post($url, $json);
|
|
|
+ $noIssues=true;
|
|
|
+ $json = json_encode($response->body());
|
|
|
+ if(!$json||!isset($json['response'])||!$json['response']['return']['returnFlag']=='1'){
|
|
|
+ $noIssues=false;
|
|
|
+ }
|
|
|
+ if($noIssues&&$json['response']['return']['returnFlag']=='1'){
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ (new Controller())->log(__METHOD__,'error_'.__FUNCTION__,$response->body());
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+}
|