CommodityImport.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. namespace App\Imports;
  3. use App\Commodity;
  4. use App\Owner;
  5. use Illuminate\Database\Eloquent\Builder;
  6. use Illuminate\Support\Collection;
  7. use Maatwebsite\Excel\Concerns\ToCollection;
  8. use Maatwebsite\Excel\Concerns\WithHeadingRow;
  9. use Maatwebsite\Excel\Imports\HeadingRowFormatter;
  10. HeadingRowFormatter::default('none');
  11. class CommodityImport implements ToCollection, WithHeadingRow
  12. {
  13. protected $isOverride=false;
  14. public function __construct($isOverride)
  15. {
  16. if($isOverride=='1')
  17. $this->isOverride=true;
  18. }
  19. /**
  20. * @param Collection $collections
  21. */
  22. public function collection(Collection $collections)
  23. {
  24. foreach ($collections as $row)
  25. {
  26. $barcode = $row['商品条码'] ?? $row['barcode'] ?? $row['BARCODE'] ?? $row['Barcode'];
  27. if(!$barcode)continue;
  28. $name = $row['商品名称'] ?? $row['name'] ?? $row['NAME'] ?? $row['Name'] ?? '';
  29. $sku = $row['商品编码'] ?? $row['sku'] ?? $row['SKU'] ?? $row['Sku'] ?? '';
  30. $owner = $row['货主'] ?? $row['owner'] ?? $row['owner_name'] ?? $row['OWNER'] ?? $row['Owner'] ?? '';
  31. $owner_id=Owner::where('name',$owner)->value('id');
  32. $commodity=Commodity::whereHas('barcodes', function (Builder $query)use($barcode){
  33. $query->where('code',$barcode);
  34. })->where('owner_id',$owner_id)->first();
  35. if($commodity){
  36. if($this->isOverride){
  37. $name?$commodity['name']= $name:false;
  38. $sku?$commodity['sku']= $sku:false;
  39. $owner?$commodity['owner_id']= $owner_id:false;
  40. $commodity->update();
  41. }
  42. }else{
  43. $commodity=new Commodity([
  44. 'name' => $name,
  45. 'sku' => $sku,
  46. 'owner_id' => $owner_id,
  47. ]);
  48. $commodity->save();
  49. $commodity->newBarcode($barcode);
  50. }
  51. }
  52. }
  53. }