InnerOrderSeeder.php 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. <?php
  2. use Illuminate\Database\Seeder;
  3. class InnerOrderSeeder extends Seeder
  4. {
  5. /**
  6. * Run the database seeds.
  7. *
  8. * @return void
  9. */
  10. public function run()
  11. {
  12. $total = 20;
  13. $this->call([
  14. InnerDeviceStatusSeeder::class
  15. ]);
  16. $statuses = \App\Models\Option::get('inner_devices', 'status');
  17. \App\Models\InnerDevice::truncate();
  18. $specs = \App\Models\Spec::all();
  19. for($i = 0; $i < $total * 10; ++$i) {
  20. $spec = $specs->random();
  21. \App\Models\InnerDevice::create([
  22. 'name' => '内部设备' . ($i + 1),
  23. 'device_id' => $spec->device_id,
  24. 'device_name_id' => $spec->device_name_id,
  25. 'spec_id' => $spec->id,
  26. 'status' => $statuses->whereIn('key', ['free', 'error'])->first()->id,
  27. 'number' => mt_rand(10000, 99999),
  28. 'produce_date' => '2020-01-01',
  29. 'shape' => '180cm*180cm',
  30. 'buy_origin' => '100',
  31. 'manufacturer' => '机械制造厂'
  32. ]);
  33. \App\Models\InnerDevice::create([
  34. 'name' => '内部设备' . ($i + 1),
  35. 'device_id' => $spec->device_id,
  36. 'device_name_id' => $spec->device_name_id,
  37. 'spec_id' => $spec->id,
  38. 'status' => $statuses->where('key', 'free')->first()->id,
  39. 'number' => mt_rand(10000, 99999),
  40. 'produce_date' => '2020-01-01',
  41. 'shape' => '180cm*180cm',
  42. 'buy_origin' => '100',
  43. 'manufacturer' => '机械制造厂'
  44. ]);
  45. }
  46. $project = \App\Models\Project::first();
  47. $work_points = \App\Models\WorkPoint::all();
  48. $user = \App\Models\User::first();
  49. $project_roles = \App\Models\ProjectRole::limit(7)->get();
  50. $project_role = $project_roles->where('key', 'machine')->first();
  51. // 草稿
  52. for($i = 1; $i < $total; ++$i) {
  53. $order = \App\Models\Order::create([
  54. 'work_point_id' => $work_points->random()->id,
  55. 'is_draft' => 1,
  56. 'status' => \App\Models\Option::get('orders', 'status', 'checking'),
  57. 'order_number' => \App\Models\Order::createOrderNumber(),
  58. 'project_id' => $project->id,
  59. 'user_id' => $user->id,
  60. 'project_role_id' => $project_role->id,
  61. 'type' => 2
  62. ]);
  63. $this->createOrderDevice($order);
  64. }
  65. // 待审核,checking
  66. for($i = 1; $i < $total; ++$i) {
  67. $order = \App\Models\Order::create([
  68. 'work_point_id' => $work_points->random()->id,
  69. 'is_draft' => 2,
  70. 'status' => \App\Models\Option::get('orders', 'status', 'checking'),
  71. 'order_number' => \App\Models\Order::createOrderNumber(),
  72. 'project_id' => $project->id,
  73. 'user_id' => $user->id,
  74. 'project_role_id' => $project_roles->first()->id,
  75. 'type' => 2
  76. ]);
  77. $this->createOrderDevice($order);
  78. }
  79. // 已审核,checked
  80. for($i = 1; $i < $total; ++$i) {
  81. $last_project_role = $project_roles->whereIn('key', ['assist', 'manager', 'admin'])->random();
  82. $project_role = $project_roles->where('key', 'machine')->first();
  83. if($last_project_role->key != 'admin') {
  84. $project_role = $project_roles->where('need_check_inner', 1)->where('level', '>', $last_project_role->level)->first();
  85. }
  86. $order = \App\Models\Order::create([
  87. 'work_point_id' => $work_points->random()->id,
  88. 'is_draft' => 2,
  89. 'status' => \App\Models\Option::get('orders', 'status', 'checked'),
  90. 'order_number' => \App\Models\Order::createOrderNumber(),
  91. 'project_id' => $project->id,
  92. 'user_id' => $user->id,
  93. 'project_role_id' => $project_role->id,
  94. 'last_project_role_id' => $last_project_role->id,
  95. 'type' => 2
  96. ]);
  97. $this->createOrderDevice($order);
  98. }
  99. // 已完成,pass
  100. for($i = 1; $i < $total; ++$i) {
  101. $last_project_role = $project_roles->where('key', 'admin')->first();
  102. $project_role = $project_roles->where('key', 'machine')->first();
  103. $order = \App\Models\Order::create([
  104. 'work_point_id' => $work_points->random()->id,
  105. 'is_draft' => 2,
  106. 'status' => \App\Models\Option::get('orders', 'status', 'pass'),
  107. 'order_number' => \App\Models\Order::createOrderNumber(),
  108. 'project_id' => $project->id,
  109. 'user_id' => $user->id,
  110. 'project_role_id' => $project_role->id,
  111. 'last_project_role_id' => $last_project_role->id,
  112. 'type' => 2
  113. ]);
  114. $this->createOrderDevice($order);
  115. }
  116. // 已驳回,pass
  117. for($i = 1; $i < $total; ++$i) {
  118. $last_project_role = $project_roles->whereIn('key', ['assist', 'manager', 'admin'])->random();
  119. $project_role = $project_roles->where('key', 'machine')->first();
  120. $order = \App\Models\Order::create([
  121. 'work_point_id' => $work_points->random()->id,
  122. 'is_draft' => 2,
  123. 'status' => \App\Models\Option::get('orders', 'status', 'reject'),
  124. 'order_number' => \App\Models\Order::createOrderNumber(),
  125. 'project_id' => $project->id,
  126. 'user_id' => $user->id,
  127. 'project_role_id' => $project_role->id,
  128. 'last_project_role_id' => $last_project_role->id,
  129. 'type' => 2
  130. ]);
  131. $this->createOrderDevice($order);
  132. }
  133. $this->call([
  134. NotificationSeeder::class
  135. ]);
  136. }
  137. public function createOrderDevice(\App\Models\Order $order)
  138. {
  139. $free_id = \App\Models\Option::get('inner_devices', 'status', 'free');
  140. $using_id = \App\Models\Option::get('inner_devices', 'status', 'using');
  141. for($j = 1; $j < 3; ++$j) {
  142. $start_date = \Carbon\Carbon::now()->addDay(mt_rand(1, 4))->toDateString();
  143. $end_date = \Carbon\Carbon::now()->addDay(mt_rand(5, 10))->toDateString();
  144. $device = \App\Models\InnerDevice::where('status', $free_id)->where('id', '>', 10)->first();
  145. \App\Models\OrderDevice::create([
  146. 'order_id' => $order['id'],
  147. 'project_id' => $order['project_id'],
  148. 'inner_device_id' => $device->id,
  149. 'start_date' => $start_date,
  150. 'end_date' => $end_date
  151. ]);
  152. // \Illuminate\Support\Facades\Log::info($order['work_point_id']);
  153. $device->update([
  154. 'project_id' => $order['project_id'],
  155. 'status' => $using_id,
  156. 'start_date' => $start_date,
  157. 'end_date' => $end_date,
  158. 'work_point_id' => $order['work_point_id']
  159. ]);
  160. }
  161. }
  162. }