| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 | <?phpuse Illuminate\Database\Seeder;class InnerOrderSeeder extends Seeder{    /**     * Run the database seeds.     *     * @return void     */    public function run()    {        $total = 20;        $this->call([            InnerDeviceStatusSeeder::class        ]);        $statuses = \App\Models\Option::get('inner_devices', 'status');        \App\Models\InnerDevice::truncate();        $specs = \App\Models\Spec::all();        for($i = 0; $i < $total * 10; ++$i) {            $spec = $specs->random();            \App\Models\InnerDevice::create([                'name' => '内部设备' . ($i + 1),                'device_id' => $spec->device_id,                'device_name_id' => $spec->device_name_id,                'spec_id' => $spec->id,                'status' => $statuses->whereIn('key', ['free', 'error'])->first()->id,                'number' => mt_rand(10000, 99999),                'produce_date' => '2020-01-01',                'shape' => '180cm*180cm',                'buy_origin' => '100',                'manufacturer' => '机械制造厂'            ]);            \App\Models\InnerDevice::create([                'name' => '内部设备' . ($i + 1),                'device_id' => $spec->device_id,                'device_name_id' => $spec->device_name_id,                'spec_id' => $spec->id,                'status' => $statuses->where('key', 'free')->first()->id,                'number' => mt_rand(10000, 99999),                'produce_date' => '2020-01-01',                'shape' => '180cm*180cm',                'buy_origin' => '100',                'manufacturer' => '机械制造厂'            ]);        }        $project = \App\Models\Project::first();        $work_points = \App\Models\WorkPoint::all();        $user = \App\Models\User::first();        $project_roles = \App\Models\ProjectRole::limit(7)->get();        $project_role = $project_roles->where('key', 'machine')->first();        // 草稿        for($i = 1; $i < $total; ++$i) {            $order = \App\Models\Order::create([                'work_point_id' => $work_points->random()->id,                'is_draft' => 1,                'status' => \App\Models\Option::get('orders', 'status', 'checking'),                'order_number' => \App\Models\Order::createOrderNumber(),                'project_id' => $project->id,                'user_id' => $user->id,                'project_role_id' => $project_role->id,                'type' => 2            ]);            $this->createOrderDevice($order);        }        // 待审核,checking        for($i = 1; $i < $total; ++$i) {            $order = \App\Models\Order::create([                'work_point_id' => $work_points->random()->id,                'is_draft' => 2,                'status' => \App\Models\Option::get('orders', 'status', 'checking'),                'order_number' => \App\Models\Order::createOrderNumber(),                'project_id' => $project->id,                'user_id' => $user->id,                'project_role_id' => $project_roles->first()->id,                'type' => 2            ]);            $this->createOrderDevice($order);        }        // 已审核,checked        for($i = 1; $i < $total; ++$i) {            $last_project_role = $project_roles->whereIn('key', ['assist', 'manager', 'admin'])->random();            $project_role = $project_roles->where('key', 'machine')->first();            if($last_project_role->key != 'admin') {                $project_role = $project_roles->where('need_check_inner', 1)->where('level', '>', $last_project_role->level)->first();            }            $order = \App\Models\Order::create([                'work_point_id' => $work_points->random()->id,                'is_draft' => 2,                'status' => \App\Models\Option::get('orders', 'status', 'checked'),                'order_number' => \App\Models\Order::createOrderNumber(),                'project_id' => $project->id,                'user_id' => $user->id,                'project_role_id' => $project_role->id,                'last_project_role_id' => $last_project_role->id,                'type' => 2            ]);            $this->createOrderDevice($order);        }        // 已完成,pass        for($i = 1; $i < $total; ++$i) {            $last_project_role = $project_roles->where('key', 'admin')->first();            $project_role = $project_roles->where('key', 'machine')->first();            $order = \App\Models\Order::create([                'work_point_id' => $work_points->random()->id,                'is_draft' => 2,                'status' => \App\Models\Option::get('orders', 'status', 'pass'),                'order_number' => \App\Models\Order::createOrderNumber(),                'project_id' => $project->id,                'user_id' => $user->id,                'project_role_id' => $project_role->id,                'last_project_role_id' => $last_project_role->id,                'type' => 2            ]);            $this->createOrderDevice($order);        }        // 已驳回,pass        for($i = 1; $i < $total; ++$i) {            $last_project_role = $project_roles->whereIn('key', ['assist', 'manager', 'admin'])->random();            $project_role = $project_roles->where('key', 'machine')->first();            $order = \App\Models\Order::create([                'work_point_id' => $work_points->random()->id,                'is_draft' => 2,                'status' => \App\Models\Option::get('orders', 'status', 'reject'),                'order_number' => \App\Models\Order::createOrderNumber(),                'project_id' => $project->id,                'user_id' => $user->id,                'project_role_id' => $project_role->id,                'last_project_role_id' => $last_project_role->id,                'type' => 2            ]);            $this->createOrderDevice($order);        }        $this->call([            NotificationSeeder::class        ]);    }    public function createOrderDevice(\App\Models\Order $order)    {        $free_id = \App\Models\Option::get('inner_devices', 'status', 'free');        $using_id = \App\Models\Option::get('inner_devices', 'status', 'using');        for($j = 1; $j < 3; ++$j) {            $start_date = \Carbon\Carbon::now()->addDay(mt_rand(1, 4))->toDateString();            $end_date = \Carbon\Carbon::now()->addDay(mt_rand(5, 10))->toDateString();            $device = \App\Models\InnerDevice::where('status', $free_id)->where('id', '>', 10)->first();            \App\Models\OrderDevice::create([                'order_id' => $order['id'],                'project_id' => $order['project_id'],                'inner_device_id' => $device->id,                'start_date' => $start_date,                'end_date' => $end_date            ]);//            \Illuminate\Support\Facades\Log::info($order['work_point_id']);            $device->update([                'project_id' => $order['project_id'],                'status' => $using_id,                'start_date' => $start_date,                'end_date' => $end_date,                'work_point_id' => $order['work_point_id']            ]);        }    }}
 |