ProjectImport.php 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  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. * 如果不是项目经理就替换掉原来的项目经理,当前这个用户就变成项目经理
  87. * 如果不在项目里,判断原来是否有项目经理
  88. * 如果有就替换掉
  89. * 如果没有就新建项目经理
  90. *
  91. * */
  92. // dd($user_id);
  93. //判断当前用户是否在项目里 计数不等于0就是在项目里
  94. $has_user = ProjectUser::where('project_id',$project_id->id)->where('user_id',$user_id->id)->get()->count();
  95. if ($has_user != 0)
  96. {
  97. //该用户在当前项目的职位
  98. $in_project_user = ProjectUser::where('project_id',$project_id['id'])->where('user_id',$user_id->id)->value('project_role_id');
  99. //如果职位不是项目经理就替换
  100. if ($in_project_user != 4){
  101. //查找项目经理人数
  102. $manager_num = ProjectUser::where('project_id',$project_id['id'])->where('project_role_id',4)->count();
  103. //如果有项目经理就替换
  104. if ($manager_num != 0)
  105. {
  106. //获取到项目经理的数据
  107. $manager_user_project_id = ProjectUser::where('project_id',$project_id['id'])->where('project_role_id',4)->value('project_id');
  108. $manager_user_user_id = ProjectUser::where('project_id',$project_id['id'])->where('project_role_id',4)->value('user_id');
  109. //替换成项目副经理
  110. ProjectUser::where('project_id',$manager_user_project_id)->where('user_id',$manager_user_user_id)->update(['project_role_id'=>3]);
  111. }
  112. ProjectUser::where('project_id',$project_id['id'])->where('user_id',$user_id->id)->update(['project_role_id'=> 4]);
  113. }
  114. }else
  115. {
  116. //判断项目里是否有项目经理
  117. $manager_num = ProjectUser::where('project_id',$project_id['id'])->where('project_role_id',4)->count();
  118. //如果有项目经理
  119. if ($manager_num != 0)
  120. {
  121. //获取到项目经理的数据
  122. $manager_user_project_id = ProjectUser::where('project_id',$project_id['id'])->where('project_role_id',4)->value('project_id');
  123. $manager_user_user_id = ProjectUser::where('project_id',$project_id['id'])->where('project_role_id',4)->value('user_id');
  124. //替换项目经理
  125. ProjectUser::where('project_id',$manager_user_project_id)->where('user_id',$manager_user_user_id)->update(['project_role_id'=>3]);
  126. $data =[
  127. 'project_id' => $project_id['id'],
  128. 'user_id' => $user_id['id'],
  129. 'project_role_id' => 4
  130. ];
  131. ProjectUser::create($data);
  132. }else
  133. {
  134. $data =[
  135. 'project_id' => $project_id['id'],
  136. 'user_id' => $user_id['id'],
  137. 'project_role_id' => 4
  138. ];
  139. ProjectUser::create($data);
  140. }
  141. }
  142. // $manager_num = ProjectUser::where('project_id',$project_id['id'])->where('project_role_id',4)->count();
  143. // if ($manager_num != 0)
  144. // {
  145. // $manager_user = ProjectUser::where('project_id',$project_id['id'])->where('project_role_id',4)->first();
  146. // ProjectUser::where('id',$manager_user['id'])->update(['project_role_id'=>3]);
  147. // }
  148. // $data =[
  149. // 'project_id' => $project_id['id'],
  150. // 'user_id' => $user_id['id'],
  151. // 'project_role_id' => 4
  152. // ];
  153. // ProjectUser::create($data);
  154. }
  155. return true;
  156. }
  157. }