where('is_uploaded',0)->get(); if($wmsReceiveds->isEmpty()){ (new Controller())->log(__METHOD__,'error_'.__FUNCTION__,'没有WMS入库单'); return false; } $items=$store->items()->get(); $amountsItem=(function()use($items){ $result=[]; $items->each(function($item)use(&$result){ $result[$item['id']]= $item['amount']; }); return $result; })(); $success=true; $wmsReceiveds->each(function ($wmsReceived)use(&$store,&$amountsItem,$items,&$success){ if(!$store && $store['is_loaded']!=0)return; $wmsSkus=$wmsReceived->skus()->get(); $orderNumberCode=$wmsReceived['ASNREFERENCE1']??$store['order_number']; $amountsSku=(function()use($wmsSkus){ $result=[]; $wmsSkus->each(function($sku)use(&$result){ $result[$sku['id']]= $sku['EXPECTEDQTY_EACH']; }); return $result; })(); $skuStrList=[]; $customerCode=$store->owner()->first()['code']; $wmsSkus->each(function(WMSReflectReceiveSku $sku)use(&$items,&$skuList,&$amountsItem,&$amountsSku,&$skuStrList,$wmsReceived,$customerCode){ $items->each(function(RejectedBillItem $item)use(&$sku,&$amountsItem,&$amountsSku,&$skuStrList,$wmsReceived,$customerCode){ if($item['barcode_goods']!=$sku['ALTERNATE_SKU1'])return; if($amountsItem[$item['id']]==0||$amountsSku[$sku['id']]==0)return; $uploadingAmount=(function()use(&$item,&$sku,&$amountsItem,&$amountsSku){ if($amountsItem[$item['id']]>$amountsSku[$sku['id']]){ $amountsItem[$item['id']]-=$amountsSku[$sku['id']]; $amount= $amountsSku[$sku['id']]; $amountsSku[$sku['id']]=0; return $amount; } if($amountsItem[$item['id']]<$amountsSku[$sku['id']]){ $amount=$amountsItem[$item['id']]; $amountsSku[$sku['id']]-=$amount; $amountsItem[$item['id']]=0; return $amount; } $amount=$amountsItem[$item['id']]; $amountsItem[$item['id']]=0; $amountsSku[$sku['id']]=0; return $amount; })(); if($item['is_loaded']=='已入库'){return;} $STATUS=$item['id_quality_label']==1?'ZP':'CC'; $STATUS_code=$item['id_quality_label']==1?'01':'02'; $skuStr=" { \"ORDERNUMBERCODE\": \"{$wmsReceived['ASNNO']}\", \"ASNLINENO\": \"{$sku['ASNLINENO']}\", \"SKUCODE\": \"{$sku['SKU']}\", \"QUANTITY\": \"{$uploadingAmount}\", \"LOTATT04\": \"{$sku['LOTATT04']}\", \"LOTATT05\": \"{$sku['LOTATT05']}\", \"STATUS\": \"{$STATUS}\", \"PRODUCTION DATE\": \"{$item['made_at']}\", \"EXPIRATION DATE\": \"{$item['validity_at']}\", \"USERDEFINE1\": \"{$customerCode}{$STATUS_code}\", \"USERDEFINE2\": \"\", \"USERDEFINE3\": \"\", \"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\": \"\" // } "] } "; $skuStrList[]=$skuStr; }); }); if(count($skuStrList)==0)return; $skuStrList = implode(',',$skuStrList); $json=" { \"request\": [ { \"ORDERNUMBERCODE\": \"{$wmsReceived['ASNNO']}\", \"CUSTOMERID\": \"{$customerCode}\", \"ASNTYPE\": \"{$wmsReceived['ASNTYPE']}\", \"ASNREFERENCE1\": \"{$orderNumberCode}\", \"ADDWHO\": \"WCS\", \"USERDEFINE1\": \"\", \"USERDEFINE2\": \"\", \"USERDEFINE3\": \"\", \"SKU_LIST\": [{$skuStrList}] } ] } "; $sendingJson = json_decode($json,true); $url=url(config('api.flux.receive.new')); $response = Zttp::post($url, $sendingJson); $noIssues=true; $json = $response->json(); (new Controller())->log(__METHOD__,__FUNCTION__,$response->body().'|'.json_encode($sendingJson)); if(!$json||!isset($json['Response'])||!$json['Response']['return']['returnFlag']=='1'){ $noIssues=false; } if($json&&isset($json['Response'])){ if($json['Response']['return']['returnFlag']=='2'){ return true; } if(isset($json['Response']['return']['returnDesc'])&&strpos($json['Response']['return']['returnDesc'],'唯一约束')!==false){ (new Controller())->log(__METHOD__,'error_'.__FUNCTION__,$response->body().'|'.json_encode($sendingJson)); return true; } if(isset($json['Response']['return']['errordescr'])&&strpos($json['Response']['return']['errordescr'],'已完成')!==false){ (new Controller())->log(__METHOD__,'error_'.__FUNCTION__,$response->body().'|'.json_encode($sendingJson)); return true; } } if($noIssues&&$json['Response']['return']['returnFlag']=='1'){ $wmsReceived['is_uploaded']=1; $wmsReceived->save(); return true; }else{ $success=false; (new Controller())->log(__METHOD__,'error_'.__FUNCTION__,$response->body().'|'.json_encode($sendingJson)); } }); return $success; } }