| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281 |
- <?php
- namespace App\Imports;
- use App\Http\Controllers\api\thirdPart\jianshang\RejectedController;
- use App\Http\Controllers\Controller;
- use App\Logistic;
- use App\Owner;
- use App\Rejected;
- use App\RejectedBill;
- use App\RejectedBillItem;
- use App\Services\LogisticService;
- use App\Services\OwnerService;
- use Illuminate\Support\Collection;
- use Illuminate\Support\Facades\Session;
- use Maatwebsite\Excel\Concerns\ToCollection;
- use Maatwebsite\Excel\Concerns\WithHeadingRow;
- use Maatwebsite\Excel\Imports\HeadingRowFormatter;
- HeadingRowFormatter::default('none');
- class RejectedImport implements ToCollection, WithHeadingRow
- {
- // protected $isOverride=false;
- // public function __construct($isOverride)
- // {
- // if($isOverride=='1')
- // $this->isOverride=true;
- // }
- /**
- * @param Collection $collections
- */
- public function collection(Collection $collections)
- {
- foreach ($collections as $row)
- {
- $logistic_number_return = trim($row['退回单号']??$row['退货单号']??$row['快递单号']??$row['logistic_number_return']??'');
- $mobile_sender = trim($row['手机号']??$row['mobile_sender']??'');
- $logistic_name = trim($row['快递公司']??$row['logistic_name']??'');
- $barcode = trim($row['条码']??$row['barcode']??'');
- $amount = trim($row['数量']??$row['amount']??'');
- $quality_label_name = trim($row['品质']??$row['quality_label_name']??'');
- $remark = trim($row['备注']??$row['remark']??'');
- $owner=trim($row['货主']??$row['owner']??'');
- // $lastReturnNumber = Session::get('jianshangLastImportedBill');
- // if(!$logistic_number_return)$logistic_number_return=$lastReturnNumber;
- // $lastMobile = Session::get('jianshangLastImportedMobile');
- // if(!$mobile_sender)$mobile_sender=$lastMobile;
- // $lastlogistic_name = Session::get('jianshangLastImportedLogisticName');
- // if(!$logistic_name)$logistic_name=$lastlogistic_name;
- $owner=Owner::query()->where('name','like',$owner.'%')->first();
- $id_logistic_return=Logistic::query()->where('name','like',"%{$logistic_name}%")->first()['id'];
- if(!$id_logistic_return){
- $id_logistic_return=Logistic::query()->where('name','like',"%其它%")->first()['id'];
- }
- $id_quality_label=3;
- if(trim($quality_label_name)=='正品'){
- $id_quality_label=1;
- }elseif(trim($quality_label_name)=='残次'){
- $id_quality_label=2;
- }
- if(!$amount)$amount=1;
- $bill=RejectedBill::query()->where('logistic_number_return',trim($logistic_number_return))->first();
- if($bill){
- $item=RejectedBillItem::query()->where('id_rejected_bill',$bill['id'])
- ->where('barcode_goods',trim($barcode))->where('id_quality_label',$id_quality_label)->first();
- if($item){
- $item['amount']+=$amount;
- $item->update();
- }else{
- $item=new RejectedBillItem([
- 'id_rejected_bill'=>$bill['id'],
- 'barcode_goods'=>trim($barcode),
- 'amount'=>trim($amount),
- 'id_quality_label'=>$id_quality_label,
- 'remark'=>$remark,
- ]);
- $item->save();
- }
- $bill->syncOrderIssue();
- }else{
- $bill=new RejectedBill([
- 'id_owner'=>$owner['id'],
- 'mobile_sender'=>$mobile_sender,
- 'logistic_number_return'=>$logistic_number_return,
- 'id_logistic_return'=>$id_logistic_return,
- 'is_loaded'=>0,
- ]);
- $bill->save();
- $bill->joinOrderIssue();
- $bill->syncOrderIssue();
- $item=RejectedBillItem::query()->where('id_rejected_bill',$bill['id'])
- ->where('barcode_goods',trim($barcode))->where('id_quality_label',$id_quality_label)->first();
- if($item){
- $item['amount']+=$amount;
- $item->update();
- }else{
- $item=new RejectedBillItem([
- 'id_rejected_bill'=>$bill['id'],
- 'barcode_goods'=>trim($barcode),
- 'amount'=>trim($amount),
- 'id_quality_label'=>$id_quality_label,
- 'remark'=>$remark,
- ]);
- $item->save();
- }
- }
- $lastBill = Session::get('jianshangLastImportedBill');
- if($owner['name']=='笕尚'&&$lastBill&&$lastBill !=trim($logistic_number_return)){
- $this->submitToApi($bill);
- }
- Session::put('jianshangLastImportedLogisticName',trim($logistic_name));
- Session::put('jianshangLastImportedBill',trim($logistic_number_return));
- Session::put('jianshangLastImportedMobile',trim($mobile_sender));
- }
- }
- // public function collection(Collection $collections)
- // {
- // $rejectedBill_index=[];
- // $errers=[];
- // foreach ($collections as $i=>$row) {
- // $logistic_number_return = trim($row['退回单号'] ?? $row['退货单号'] ?? $row['快递单号'] ?? $row['logistic_number_return'] ?? '');
- // $mobile_sender = trim($row['手机号'] ?? $row['mobile_sender'] ?? '');
- // $logistic_name = trim($row['快递公司'] ?? $row['logistic_name'] ?? '');
- // $barcode = trim($row['条码'] ?? $row['barcode'] ?? '');
- // $amount = trim($row['数量'] ?? $row['amount'] ?? '');
- // $quality_label_name = trim($row['品质'] ?? $row['quality_label_name'] ?? '正品');
- // $remark = trim($row['备注'] ?? $row['remark'] ?? '');
- // $ownerName = trim($row['货主'] ?? $row['owner'] ?? '');
- // if(!$logistic_number_return){$errers[$i][]='第'.($i+1).'行退回单号不能为空,该行没有录入,请手动编辑';continue;}
- // if(!$logistic_name){$errers[$i][]='第'.($i+1).'行快递公司不能为空,该行没有录入,请手动编辑';continue;}
- // if(!$barcode){$errers[$i][]='第'.($i+1).'行条码不能为空,该行没有录入,请手动编辑';continue;}
- // if(!$amount){$errers[$i][]='第'.($i+1).'行数量不能为空,该行没有录入,请手动编辑';continue;}
- // if(!$ownerName){$errers[$i][]='第'.($i+1).'行货主不能为空,该行没有录入,请手动编辑';continue;}
- // /** @var OwnerService $ownerService */
- // $ownerService=app('OwnerService');
- // /** @var LogisticService $logisticService */
- // $logisticService=app('LogisticService');
- // if(!isset($rejectedBill_index[$logistic_number_return])){
- // $rejectedBill=RejectedBill::query()->where('logistic_number_return',$logistic_number_return)->get();
- // if($rejectedBill){$errers[$i][]='第'.($i+1).'行的退货单在导入前已有记录,需要先删除掉再导入或手动添加,该行没有录入';continue;}
- // $owner_id = $ownerService->get(['name' => $ownerName])->first()['id'];
- // if($rejectedBill){$errers[$i][]='第'.($i+1).'行的货主不存在,请检查是否输错货主名或未录入系统,该行没有录入,请手动编辑';continue;}
- // $logistic_id = $logisticService->get(['name' => $logistic_name])->first()['id'];
- // if($rejectedBill){$errers[$i][]='第'.($i+1).'行的快递不存在,请检查是否输错快递名或未录入系统,该行没有录入,请手动编辑';continue;}
- // $rejectedBill=new RejectedBill([
- // 'id_owner'=> $owner_id,
- // 'mobile_sender'=>$mobile_sender,
- // 'logistic_number_return'=>$logistic_number_return,
- // 'id_logistic_return'=>$logistic_id,
- // 'is_loaded'=>0,
- // ]);
- // $rejectedBill_index[$logistic_number_return]=$rejectedBill;
- // }
- // }
- //
- // foreach ($collections as $row)
- // {
- // $logistic_number_return = trim($row['退回单号']??$row['退货单号']??$row['快递单号']??$row['logistic_number_return']??'');
- // $mobile_sender = trim($row['手机号']??$row['mobile_sender']??'');
- // $logistic_name = trim($row['快递公司']??$row['logistic_name']??'');
- // $barcode = trim($row['条码']??$row['barcode']??'');
- // $amount = trim($row['数量']??$row['amount']??'');
- // $quality_label_name = trim($row['品质']??$row['quality_label_name']??'');
- // $remark = trim($row['备注']??$row['remark']??'');
- // $owner=trim($row['货主']??$row['owner']??'');
- //
- //// $lastReturnNumber = Session::get('jianshangLastImportedBill');
- //// if(!$logistic_number_return)$logistic_number_return=$lastReturnNumber;
- //// $lastMobile = Session::get('jianshangLastImportedMobile');
- //// if(!$mobile_sender)$mobile_sender=$lastMobile;
- //// $lastlogistic_name = Session::get('jianshangLastImportedLogisticName');
- //// if(!$logistic_name)$logistic_name=$lastlogistic_name;
- //
- //
- // $owner=Owner::query()->where('name','like',$owner.'%')->first();
- // $id_logistic_return=Logistic::query()->where('name','like',"%{$logistic_name}%")->first()['id'];
- // if(!$id_logistic_return){
- // $id_logistic_return=Logistic::query()->where('name','like',"%其它%")->first()['id'];
- // }
- //
- // $id_quality_label=3;
- // if(trim($quality_label_name)=='正品'){
- // $id_quality_label=1;
- // }elseif(trim($quality_label_name)=='残次'){
- // $id_quality_label=2;
- // }
- // if(!$amount)$amount=1;
- //
- //
- // $bill=RejectedBill::query()->where('logistic_number_return',trim($logistic_number_return))->first();
- // if($bill){
- // $item=RejectedBillItem::query()->where('id_rejected_bill',$bill['id'])
- // ->where('barcode_goods',trim($barcode))->where('id_quality_label',$id_quality_label)->first();
- // if($item){
- // $item['amount']+=$amount;
- // $item->update();
- // }else{
- // $item=new RejectedBillItem([
- // 'id_rejected_bill'=>$bill['id'],
- // 'barcode_goods'=>trim($barcode),
- // 'amount'=>trim($amount),
- // 'id_quality_label'=>$id_quality_label,
- // 'remark'=>$remark,
- // ]);
- // $item->save();
- // }
- // $bill->syncOrderIssue();
- // }else{
- // $bill=new RejectedBill([
- // 'id_owner'=>$owner['id'],
- // 'mobile_sender'=>$mobile_sender,
- // 'logistic_number_return'=>$logistic_number_return,
- // 'id_logistic_return'=>$id_logistic_return,
- // 'is_loaded'=>0,
- // ]);
- // $bill->save();
- // $bill->joinOrderIssue();
- // $bill->syncOrderIssue();
- // $item=RejectedBillItem::query()->where('id_rejected_bill',$bill['id'])
- // ->where('barcode_goods',trim($barcode))->where('id_quality_label',$id_quality_label)->first();
- // if($item){
- // $item['amount']+=$amount;
- // $item->update();
- // }else{
- // $item=new RejectedBillItem([
- // 'id_rejected_bill'=>$bill['id'],
- // 'barcode_goods'=>trim($barcode),
- // 'amount'=>trim($amount),
- // 'id_quality_label'=>$id_quality_label,
- // 'remark'=>$remark,
- // ]);
- // $item->save();
- // }
- // }
- //
- // $lastBill = Session::get('jianshangLastImportedBill');
- // if($owner['name']=='笕尚'&&$lastBill&&$lastBill !=trim($logistic_number_return)){
- // $this->submitToApi($bill);
- // }
- // Session::put('jianshangLastImportedLogisticName',trim($logistic_name));
- // Session::put('jianshangLastImportedBill',trim($logistic_number_return));
- // Session::put('jianshangLastImportedMobile',trim($mobile_sender));
- // }
- // }
- private function submitToApi(RejectedBill $bill){
- if(!$bill||$bill->items()->get()->isEmpty())return;
- $havingFail=0;
- if(!config('api.API_FAKING'))
- $bill->items()->get()->each(function(RejectedBillItem $item)use(&$havingFail){
- $rejectedBill=RejectedBill::query()->find($item['id_rejected_bill']);
- if($rejectedBill['is_loaded']!=0){
- return false;
- }
- $owner = Owner::query()->find($rejectedBill['id_owner']);
- if(strstr($owner->name??'','笕尚')){
- $rejected=new Rejected();
- app('LogService')->log(__METHOD__,'找不到表','132行');
- $rejected->fill($rejectedBill->toArray());
- $rejected->fill($item->toArray());
- $rejectedJianshang=new RejectedController();
- $sended=$rejectedJianshang->sendRejected($rejected);
- if(!$sended){
- (new Controller())->log(__METHOD__,'error','数据发送给笕尚失败');
- $havingFail++;
- return false;
- }
- }
- });
- (new Controller())->log(__METHOD__,'error',json_encode(['success'=>'false','failure_info'=>"$havingFail/{$bill->items->count()} 条记录没有发送成功"]));
- }
- }
|