|
|
@@ -5,6 +5,9 @@ namespace App\Services;
|
|
|
use App\OracleDOCOrderHeader;
|
|
|
use App\OrderIssue;
|
|
|
use App\RejectedBill;
|
|
|
+use App\Services\common\BatchUpdateService;
|
|
|
+use App\Services\common\DataHandlerService;
|
|
|
+use Carbon\Carbon;
|
|
|
|
|
|
Class RejectedBillService
|
|
|
{
|
|
|
@@ -58,6 +61,66 @@ Class RejectedBillService
|
|
|
}
|
|
|
}
|
|
|
public function syncLoadedStatusByAsnHerder($asnHerders){
|
|
|
-
|
|
|
+ if ($asnHerders->isEmpty())return null;
|
|
|
+ $updateCollect=collect();
|
|
|
+ foreach ($asnHerders as $asnHerder){
|
|
|
+ if (($asnHerder->asnType->codename_c=='退货入库'
|
|
|
+ || $asnHerder->asnType->codename_c=='其他入库')
|
|
|
+ &&$asnHerder->asnStatus->codename_c=='完全收货'){
|
|
|
+ $updateCollect->add($asnHerder);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ($updateCollect->isEmpty())return null;
|
|
|
+ $updated_at=Carbon::now()->toDateTimeString();
|
|
|
+ $updateParams = [[
|
|
|
+ 'logistic_number_return','is_loaded','updated_at'
|
|
|
+ ]];
|
|
|
+ $logisticNumberReturn=[];
|
|
|
+ foreach ($updateCollect as $data){
|
|
|
+ if(!$data->asnreference3&&!$data->notes){continue;}
|
|
|
+ $result=[];
|
|
|
+ if ($data->asnreference3){
|
|
|
+ array_push($logisticNumberReturn,$data->asnreference3);
|
|
|
+ }else{
|
|
|
+ preg_match("/[a-zA-Z]{0,5}\d{6,20}/",$data->notes, $result);
|
|
|
+ array_push($logisticNumberReturn,$result[0]);
|
|
|
+ $result=[];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $rejectedBills=$this->getRejectedBills($logisticNumberReturn);
|
|
|
+ /** @var DataHandlerService $dataHandlerService */
|
|
|
+ $dataHandlerService = app(DataHandlerService::class);
|
|
|
+ $rejectedBills_map = $dataHandlerService->dataHeader(['logistic_number_return'],$rejectedBills);
|
|
|
+ foreach ($updateCollect as $data){
|
|
|
+ if(!$data->asnreference3&&!$data->notes){continue;}
|
|
|
+ $result=[];
|
|
|
+ if ($data->asnreference3){
|
|
|
+ $rejectedBill=$dataHandlerService->getKeyValue(['logistic_number_return'=>$data->asnreference3],$rejectedBills_map);
|
|
|
+ if ($rejectedBill) $updateParams[] = [
|
|
|
+ 'logistic_number_return'=>$data->asnreference3,
|
|
|
+ 'is_loaded' => 1,
|
|
|
+ 'updated_at' =>$updated_at,
|
|
|
+ ];
|
|
|
+ }else{
|
|
|
+ preg_match("/[a-zA-Z]{0,5}\d{6,20}/",$data->notes, $result);
|
|
|
+ $rejectedBill=$dataHandlerService->getKeyValue(['logistic_number_return'=>$result[0]],$rejectedBills_map);
|
|
|
+ if ($rejectedBill) $updateParams[] = [
|
|
|
+ 'logistic_number_return'=>$result[0],
|
|
|
+ 'is_loaded' => 1,
|
|
|
+ 'updated_at' =>$updated_at,
|
|
|
+ ];
|
|
|
+ unset($result);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(count($updateParams) > 1){
|
|
|
+ $this->batchUpdate($updateParams);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ public function batchUpdate($params){
|
|
|
+ return app(BatchUpdateService::class)->batchUpdate('rejected_bills',$params);
|
|
|
+ }
|
|
|
+ public function getRejectedBills(array $logisticNumberReturn){
|
|
|
+ if(count($logisticNumberReturn)<1){return null;}
|
|
|
+ return RejectedBill::query()->whereIn('logistic_number_return',$logisticNumberReturn)->get();
|
|
|
}
|
|
|
}
|