CompanyInfoImport.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. namespace App\Imports;
  3. use App\Models\CompanyContactsModel;
  4. use App\Models\CompanyInfoModel;
  5. use Illuminate\Contracts\Queue\ShouldQueue;
  6. use Illuminate\Support\Collection;
  7. use Maatwebsite\Excel\Concerns\ToCollection;
  8. use Maatwebsite\Excel\Concerns\WithBatchInserts;
  9. use Maatwebsite\Excel\Concerns\WithChunkReading;
  10. class CompanyInfoImport implements ToCollection, WithChunkReading, ShouldQueue
  11. {
  12. /**
  13. * @param Collection $collection
  14. */
  15. public function collection(Collection $collection)
  16. {
  17. ini_set("memory_limit", "-1");
  18. set_time_limit(0);
  19. foreach ($collection as $key => $row) {
  20. ob_flush();
  21. flush();
  22. if ($key == 0) continue;
  23. if (strpos($row[0], '国税局') || strpos($row[0], '税务')) {
  24. $data['company_name'] = $row[3];
  25. $data['legal_person'] = $row[5];
  26. $data['start_date'] = str_replace('/', '-', $row[1]);
  27. $data['reg_addr'] = $row[4];
  28. $data['scope'] = $row[7];
  29. $data['industry'] = $row[10];
  30. $data['reg_no'] = $row[2];
  31. $res = CompanyInfoModel::create($data);
  32. $company_id = $res->id;
  33. if ($row[6]) {
  34. CompanyContactsModel::create([
  35. 'company_id' => $company_id,
  36. 'linkman' => $row[5],
  37. 'phone' => $row[6],
  38. ]);
  39. }
  40. if ($row[9]) {
  41. CompanyContactsModel::create([
  42. 'company_id' => $company_id,
  43. 'linkman' => $row[8],
  44. 'phone' => $row[9],
  45. ]);
  46. }
  47. } else {
  48. $isExisted = CompanyInfoModel::where('company_name', $row[1])->first();
  49. if ($isExisted) {
  50. $company_id = $isExisted->id;
  51. } else {
  52. $data['company_name'] = $row[1];
  53. $data['legal_person'] = $row[8];
  54. $data['start_date'] = $row[9];
  55. $data['reg_capital'] = (int)$row[10];
  56. $data['reg_addr'] = $row[11];
  57. $res = CompanyInfoModel::create($data);
  58. $company_id = $res->id;
  59. }
  60. CompanyContactsModel::create([
  61. 'company_id' => $company_id,
  62. 'linkman' => $row[2],
  63. 'phone' => $row[3] ? $row[3] : $row[4],
  64. 'email' => $row[5],
  65. 'qq' => $row[6]
  66. ]);
  67. }
  68. }
  69. unset($collection);
  70. ob_flush();
  71. flush();
  72. }
  73. public function chunkSize(): int
  74. {
  75. return 2000;
  76. }
  77. }