From 2db4ae73fc87764cbce856507dbb9c632a2a1342 Mon Sep 17 00:00:00 2001 From: vine_liutk <961510893@qq.com> Date: Tue, 27 Feb 2024 10:20:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=BA=E5=8F=A3=E5=8F=98?= =?UTF-8?q?=E5=8A=A8=E8=BF=81=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Models/Person.php | 4 +- database/seeders/DatabaseSeeder.php | 3 +- database/seeders/MigrationSeeder.php | 9 +- .../seeders/migrations/PersonMoveSeeder.php | 85 +++++++++++++++++++ 4 files changed, 94 insertions(+), 7 deletions(-) create mode 100644 database/seeders/migrations/PersonMoveSeeder.php diff --git a/app/Models/Person.php b/app/Models/Person.php index 4ebd663..0f45535 100644 --- a/app/Models/Person.php +++ b/app/Models/Person.php @@ -33,13 +33,13 @@ class Person extends Model $person->is_master = 1; $person->save(); } - //处理新增时变动记录-todo + //处理新增时变动记录 if(in_array($person->type, [11, 12])){ PersonChange::create([ 'person_id' => $person->id, 'type' => $person->type == 11 ? PersonChange::TYPE_BIRTH : PersonChange::TYPE_IN, 'changed_at' => $person->type == 11 ? $person->birthday : $person->created_at, - 'new_master' => $person->master_id + 'new_master' => $person->master_id, ]); } }); diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index f45fa1b..d9db366 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -16,6 +16,7 @@ class DatabaseSeeder extends Seeder $this->call(AdminMenuSeeder::class); $this->call(KeywordSeeder::class); - //执行老数据迁移-todo; + //执行老数据迁移; + $this->call(MigrationSeeder::class); } } diff --git a/database/seeders/MigrationSeeder.php b/database/seeders/MigrationSeeder.php index fd6d35a..0c243d7 100644 --- a/database/seeders/MigrationSeeder.php +++ b/database/seeders/MigrationSeeder.php @@ -3,7 +3,7 @@ namespace Database\Seeders; use Illuminate\Database\Seeder; -use Database\Seeders\Migrations\{ArticleCategorySeeder, KeywordSeeder, BuildingSeeder,PersonSeeder}; +use Database\Seeders\Migrations\{ArticleCategorySeeder, KeywordSeeder, BuildingSeeder,PersonSeeder,PersonMoveSeeder}; class MigrationSeeder extends Seeder { @@ -15,10 +15,11 @@ class MigrationSeeder extends Seeder public function run() { $this->call([ - // ArticleCategorySeeder::class, - // KeywordSeeder::class, - // BuildingSeeder::class, + ArticleCategorySeeder::class, + KeywordSeeder::class, + BuildingSeeder::class, PersonSeeder::class, + PersonMoveSeeder::class, ]); } } diff --git a/database/seeders/migrations/PersonMoveSeeder.php b/database/seeders/migrations/PersonMoveSeeder.php new file mode 100644 index 0000000..e3c6338 --- /dev/null +++ b/database/seeders/migrations/PersonMoveSeeder.php @@ -0,0 +1,85 @@ +truncate(); + + DB::connection('djc_mysql')->table('t_person_move')->orderBy('id', 'ASC')->chunk(1000, function($personMoves){ + $newlogs = []; + if($personMoves->count() > 0){ + foreach($personMoves as $log){ + if($log->valid){//有效的记录 + //处理原有时间字符串 + $occurDate = substr($log->occurDate, 0, 10); + $_log = [ + 'type' => $log->type, + 'person_id' => $log->personId, + 'changed_at' => $occurDate, + 'reason' => $log->reason, + 'old_master'=> Person::where('name', $log->oldMaster)->first()?->id ?: null, + 'new_master'=> Person::where('name', $log->currMaster)->first()?->id ?: null, + 'phone' => $log->phone, + ]; + //处理变更文案 + switch($_log['type']){ + case PersonChange::TYPE_IN: + case PersonChange::TYPE_BIRTH: + $_log['extends'] = null; + $_log['extends_mark'] = null; + break; + case PersonChange::TYPE_SPLIT: + $_log['extends'] = null; + $_log['extends_mark'] = $occurDate.'日'.(empty($_log['reason']) ? '':'因'.$_log['reason']).'分户'; + break; + case PersonChange::TYPE_MERGE: + $_log['extends'] = null; + $_log['extends_mark'] = $occurDate.'日'.(empty($_log['reason']) ? '':'因'.$_log['reason']).'合户'; + break; + case PersonChange::TYPE_OUT: + $_log['extends'] = json_encode([ + 'to_address' =>$log->newAddr, + ]); + $_log['extends_mark'] = $occurDate.'日'.(empty($_log['reason']) ? '':'因'.$_log['reason']).$log->newAddr; + break; + case PersonChange::TYPE_CHANGE: + $_log['extends'] = null; + $_log['extends_mark'] = $occurDate.'日'.(empty($_log['reason']) ? '':'因'.$_log['reason']).'户主变更'; + break; + case PersonChange::TYPE_MIGRATE: + $_log['extends'] = null; + $_log['extends_mark'] = $occurDate.'日'.(empty($_log['reason']) ? '':'因'.$_log['reason']).'迁移'; + break; + case PersonChange::TYPE_DIE: + $_log['extends'] = null; + $_log['extends_mark'] = $occurDate.'日'.(empty($_log['reason']) ? '': $_log['reason']); + break; + default: + $_log['extends'] = null; + $_log['extends_mark'] = null; + break; + } + + $newlogs[] = $_log; + } + } + } + !empty($newlogs) && DB::table('person_changes')->insert($newlogs); + }); + } +} \ No newline at end of file