ProjectImport.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <?php
  2. namespace App\Imports;
  3. use App\Exceptions\ImportError;
  4. use App\Models\Device;
  5. use App\Models\DeviceName;
  6. use App\Models\InnerDevice;
  7. use App\Models\InnerDeviceNamesModel;
  8. use App\Models\Option;
  9. use App\Models\Project;
  10. use App\Models\ProjectUser;
  11. use App\Models\ProjectZone;
  12. use App\Models\Road;
  13. use App\Models\Spec;
  14. use App\Models\User;
  15. use App\Models\WorkPoint;
  16. use App\Models\Zone;
  17. use Illuminate\Support\Collection;
  18. use Illuminate\Support\Facades\Auth;
  19. use Illuminate\Support\Facades\Log;
  20. use Maatwebsite\Excel\Concerns\ToCollection;
  21. use PhpOffice\PhpSpreadsheet\Shared\Date;
  22. class ProjectImport implements ToCollection
  23. {
  24. protected $model;
  25. protected $zone;
  26. protected $road;
  27. protected $project_zone;
  28. public function __construct()
  29. {
  30. $this->model = new Project();
  31. }
  32. public function collection(Collection $rows)
  33. {
  34. if(count($rows) <= 1) {
  35. /** @noinspection PhpUnhandledExceptionInspection */
  36. return false;
  37. };
  38. foreach ($rows as $key => $row) {
  39. if($key == 0) continue;
  40. if(empty($row[0])&&empty($row[1])&&empty($row[2]))
  41. {
  42. break;
  43. }
  44. //项目id
  45. $project_id = null;
  46. //用户id
  47. $user_id = null;
  48. $password = '123456';
  49. $password = bcrypt($password);
  50. /*
  51. * 项目名称
  52. * 逻辑
  53. * 1.如果不存在该项目,那么就创建一个项目,并且active为激活状态
  54. * 2.如果存在该项目,返回项目id
  55. * */
  56. if ($row[0])
  57. {
  58. $project_id = Project::firstOrCreate([
  59. 'name' => $row[0],
  60. ],[
  61. 'name' => $row[0],
  62. 'active' => 1
  63. ]);
  64. }
  65. //手机号
  66. if ($row[1]&&$row[2])
  67. {
  68. $user_id = User::firstOrCreate([
  69. 'phone' => $row[2]
  70. ],[
  71. 'name' => $row[1],
  72. 'phone'=> $row[2],
  73. 'password' => $password
  74. ]);
  75. }
  76. //如果相同电话号码,不同名字的话就替换原来的名字
  77. if ($user_id->name != $row[1])
  78. {
  79. User::where('id',$user_id->id)->update(['name'=>$row[1]]);
  80. }
  81. /*
  82. * 导入到项目成员表里
  83. * 如果原本这个项目存在项目经理,那就把这个项目经理替换成项目副经理
  84. * 然后再插入新的数据
  85. * */
  86. $manager_num = ProjectUser::where('project_id',$project_id['id'])->where('project_role_id',4)->count();
  87. if ($manager_num != 0)
  88. {
  89. $manager_user = ProjectUser::where('project_id',$project_id['id'])->where('project_role_id',4)->first();
  90. ProjectUser::where('id',$manager_user['id'])->update(['project_role_id'=>3]);
  91. }
  92. $data =[
  93. 'project_id' => $project_id['id'],
  94. 'user_id' => $user_id['id'],
  95. 'project_role_id' => 4
  96. ];
  97. ProjectUser::create($data);
  98. }
  99. return true;
  100. }
  101. }