Auto seed added

pull/1/head
Rustem 2024-12-08 20:24:58 +05:00
parent db7b80bae5
commit 3fddf8f343
4 changed files with 2137 additions and 12 deletions

View File

@ -14,7 +14,6 @@ return new class extends Migration
foreach ($segments as $segment) { foreach ($segments as $segment) {
Schema::connection($segment->connector)->create('pipi_auto', static function (Blueprint $table) { Schema::connection($segment->connector)->create('pipi_auto', static function (Blueprint $table) {
$table->id(); $table->id();
$table->string('link')->nullable()->comment('Ссылка');
$table->string('code')->unique()->comment('Код'); $table->string('code')->unique()->comment('Код');
$table->string('name')->nullable()->comment('Наименование'); $table->string('name')->nullable()->comment('Наименование');
$table->unsignedBigInteger('type_id')->nullable()->comment('Тип'); $table->unsignedBigInteger('type_id')->nullable()->comment('Тип');
@ -27,17 +26,15 @@ return new class extends Migration
$table->date('manufacture_year')->nullable()->comment('Год производства'); $table->date('manufacture_year')->nullable()->comment('Год производства');
$table->string('passport_number')->nullable()->comment('Номер техпаспорта'); $table->string('passport_number')->nullable()->comment('Номер техпаспорта');
$table->date('passport_date')->nullable()->comment('Дата техпаспорта'); $table->date('passport_date')->nullable()->comment('Дата техпаспорта');
$table->unsignedBigInteger('estimated_cost')->nullable()->comment('Оценочная стоимость'); $table->float('estimated_cost')->nullable()->comment('Оценочная стоимость');
$table->unsignedBigInteger('owner_id')->nullable()->comment('Владелец имущества'); $table->unsignedBigInteger('owner_id')->nullable()->comment('Владелец имущества');
$table->boolean('is_trust_management')->default(false)->comment('В доверенном управлении'); $table->boolean('is_trust_management')->default(false)->comment('В доверенном управлении');
$table->integer('owner_percentage')->nullable()->comment('Процент владельца'); $table->integer('owner_percentage')->nullable()->comment('Процент владельца');
$table->string('owner_contract')->nullable()->comment('Договор владельца имущества'); $table->string('owner_contract')->nullable()->comment('Договор владельца имущества');
$table->boolean('is_inactive')->default(false)->comment('Не использовать'); $table->boolean('is_inactive')->default(false)->comment('Не использовать');
$table->text('inspection_kit_container')->nullable()->comment('Комплектация для осмотра (контейнер)'); $table->json('inspection_kit')->nullable()->comment('Комплектация для осмотра');
$table->text('inspection_kit')->nullable()->comment('Комплектация для осмотра');
$table->boolean('is_predefined')->default(false)->comment('Предопределенный'); $table->boolean('is_predefined')->default(false)->comment('Предопределенный');
$table->string('predefined_data_name')->nullable()->comment('Имя предопределенных данных'); $table->string('predefined_data_name')->nullable()->comment('Имя предопределенных данных');
$table->string('representation')->nullable()->comment('Представление');
$table->timestamps(); $table->timestamps();
$table->softDeletes(); $table->softDeletes();

View File

@ -9,6 +9,7 @@ use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
use \A7kz\Platform\Commands\InstallScript; use \A7kz\Platform\Commands\InstallScript;
use JetBrains\PhpStorm\NoReturn;
return new class extends \A7kz\Platform\Commands\InstallScript { return new class extends \A7kz\Platform\Commands\InstallScript {
@ -19,6 +20,70 @@ return new class extends \A7kz\Platform\Commands\InstallScript {
public function update($module_name, $module_version): void public function update($module_name, $module_version): void
{ {
$this->upgrade(); $this->upgrade();
$this->seed();
}
#[NoReturn] private function seed(): void
{
$seed = Storage::disk('pipicar_crm')->get('auto/seeds/seed.json');
if (str_starts_with($seed, "\xef\xbb\xbf")) {
$seed = substr($seed, 3); // Удаляем первые 3 байта
}
$data = json_decode($seed, true);
$segments = Segment::listActive();
foreach ($segments as $segment) {
foreach ($data as $value) {
$car = UniModel::model('pipi_auto', $segment->connector);
$car->code = $value['Код'];
$car->name = $value['Наименование'];
$car->type_id = UniModel::model('pipi_auto_types', $segment->connector)
->firstOrCreate([
'name' => $value['Тип']
])->id;
$car->class_id = UniModel::model('pipi_auto_classes', $segment->connector)
->firstOrCreate([
'name' => $value['Класс']
])->id;
$autoBrand = UniModel::model('pipi_auto_brands', $segment->connector)
->firstOrCreate([
'name' => $value['Марка']
]);
$car->brand_id = $autoBrand->id;
$car->model_id = UniModel::model('pipi_brand_models', $segment->connector)
->firstOrCreate([
'name' => $value['Модель'],
'brand_id' => $autoBrand->id,
])->id;
$car->color_id = UniModel::model('pipi_auto_colors', $segment->connector)
->firstOrCreate([
'name' => $value['Цвет']
])->id;
$car->serial_number = $value['СерийныйНомер'];
$car->state_number = $value['ГосНомер'];
$car->manufacture_year = $value['ГодПроизводства'];
$car->passport_number = $value['НомерТехПаспорта'];
$car->passport_date = $value['ДатаТехпаспорта'];
$car->estimated_cost = $value['ОценочнаяСтоимость'];
$owner = UniModel::model('pipi_owners', $segment->connector)
->firstOrCreate([
'fio' =>$value['ВладелецИмущества']
]);
$car->owner_id = $owner->id;
$car->is_trust_management = (bool) $value['ВДоверенномУправлении'];
$car->owner_percentage = $value['ПроцентВладельца'];
$car->owner_contract = $owner->contract_file_path;
$car->is_inactive = (bool) $value['НеИспользовать'];
$car->is_predefined = (bool) $value['Предопределенный'];
$car->predefined_data_name = $value['ИмяПредопределенныхДанных'];
$car->save();
}
}
} }
private function upgrade(): void private function upgrade(): void
@ -28,7 +93,6 @@ return new class extends \A7kz\Platform\Commands\InstallScript {
if (!Schema::connection($segment->connector)->hasTable('pipi_auto')) { if (!Schema::connection($segment->connector)->hasTable('pipi_auto')) {
Schema::connection($segment->connector)->create('pipi_auto', static function (Blueprint $table) { Schema::connection($segment->connector)->create('pipi_auto', static function (Blueprint $table) {
$table->id(); $table->id();
$table->string('link')->nullable()->comment('Ссылка');
$table->string('code')->unique()->comment('Код'); $table->string('code')->unique()->comment('Код');
$table->string('name')->nullable()->comment('Наименование'); $table->string('name')->nullable()->comment('Наименование');
$table->unsignedBigInteger('type_id')->nullable()->comment('Тип'); $table->unsignedBigInteger('type_id')->nullable()->comment('Тип');
@ -41,18 +105,15 @@ return new class extends \A7kz\Platform\Commands\InstallScript {
$table->date('manufacture_year')->nullable()->comment('Год производства'); $table->date('manufacture_year')->nullable()->comment('Год производства');
$table->string('passport_number')->nullable()->comment('Номер техпаспорта'); $table->string('passport_number')->nullable()->comment('Номер техпаспорта');
$table->date('passport_date')->nullable()->comment('Дата техпаспорта'); $table->date('passport_date')->nullable()->comment('Дата техпаспорта');
$table->unsignedBigInteger('estimated_cost')->nullable()->comment('Оценочная стоимость'); $table->float('estimated_cost')->nullable()->comment('Оценочная стоимость');
$table->unsignedBigInteger('owner_id')->nullable()->comment('Владелец имущества'); $table->unsignedBigInteger('owner_id')->nullable()->comment('Владелец имущества');
$table->boolean('is_trust_management')->default(false)->comment('В доверенном управлении'); $table->boolean('is_trust_management')->default(false)->comment('В доверенном управлении');
$table->integer('owner_percentage')->nullable()->comment('Процент владельца'); $table->integer('owner_percentage')->nullable()->comment('Процент владельца');
$table->string('owner_contract')->nullable()->comment('Договор владельца имущества'); $table->string('owner_contract')->nullable()->comment('Договор владельца имущества');
$table->unsignedBigInteger('owner_contract_id')->nullable()->comment('Договор владельца');
$table->boolean('is_inactive')->default(false)->comment('Не использовать'); $table->boolean('is_inactive')->default(false)->comment('Не использовать');
$table->text('inspection_kit_container')->nullable()->comment('Комплектация для осмотра (контейнер)'); $table->json('inspection_kit')->nullable()->comment('Комплектация для осмотра');
$table->text('inspection_kit')->nullable()->comment('Комплектация для осмотра');
$table->boolean('is_predefined')->default(false)->comment('Предопределенный'); $table->boolean('is_predefined')->default(false)->comment('Предопределенный');
$table->string('predefined_data_name')->nullable()->comment('Имя предопределенных данных'); $table->string('predefined_data_name')->nullable()->comment('Имя предопределенных данных');
$table->string('representation')->nullable()->comment('Представление');
$table->timestamps(); $table->timestamps();
$table->softDeletes(); $table->softDeletes();
@ -63,7 +124,6 @@ return new class extends \A7kz\Platform\Commands\InstallScript {
$table->foreign('model_id')->references('id')->on('pipi_brand_models'); $table->foreign('model_id')->references('id')->on('pipi_brand_models');
$table->foreign('color_id')->references('id')->on('pipi_auto_colors'); $table->foreign('color_id')->references('id')->on('pipi_auto_colors');
$table->foreign('owner_id')->references('id')->on('pipi_owners'); $table->foreign('owner_id')->references('id')->on('pipi_owners');
$table->foreign('owner_contract_id')->references('id')->on('pipi_contracts');
}); });
} }
} }

2067
modules/auto/seeds/seed.json Normal file

File diff suppressed because it is too large Load Diff

View File

@ -29,6 +29,7 @@ return new class extends \A7kz\Platform\Commands\InstallScript {
Schema::connection($segment->connector)->create('pipi_owners', static function (Blueprint $table) { Schema::connection($segment->connector)->create('pipi_owners', static function (Blueprint $table) {
$table->id(); $table->id();
$table->string('fio')->nullable()->comment('ФИО владельца'); $table->string('fio')->nullable()->comment('ФИО владельца');
$table->string('contract_file_path')->nullable()->comment('Путь до договора');
$table->timestamps(); $table->timestamps();
$table->softDeletes(); $table->softDeletes();