djc-new/database/seeders/migrations/PersonSeeder.php

154 lines
7.6 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
namespace Database\Seeders\Migrations;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
use Throwable;
use App\Models\Keyword;
class PersonSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
DB::table('persons')->truncate();
DB::connection('djc_mysql')->table('t_person')->orderBy('id', 'ASC')->chunk(100, function($persons){
// $newPersons = [];
if($persons->count() > 0){
$typeArr = [
5=>'刑满释放人员',
6=>'社区矫正人员',
7=>'肇事肇祸等严重精神障碍患者',
8=>'吸毒人员',
9=>'重点青少年',
10=>'上访信访人员',
11=>'艾滋病危险人员',
13=>'残疾人',
14=>'低保五保',
15=>'失独家庭',
16=>'失业农民',
17=>'其他困难人员',
18=>'困难家庭',
20=>'党员'];
foreach($persons as $person){
if($person->valid){//有效的记录
if(!empty($person->idcard) && DB::table('persons')->where('idcard', $person->idcard)->exists()){
DB::table('persons')->where('idcard', $person->idcard)->delete();
}
$_person = [
'id' => $person->id,
'name'=> $person->useName,
'used_name' => $person->usedName ?: null,
'idcard' => $person->idcard ?: null,
'gender' => $person->gender == '男' ? 1:($person->gender == '女' ? 2:0),
'birthday' => (!empty(strtotime($person->birth)) && ($person->birth == date('Y-m-d', strtotime($person->birth)))) ? $person->birth:null,
'origin_province_id'=> null,
'origin_city_id' => null,
'origin_complete_address' => $person->nativePlace,
'card_complete_address' => $person->birthAddr,
'housing_estate' => null,
'building' => null,
'house_number' => null,
'house_complete_address' => null,
'real_address' => null,
'nation' => Keyword::where('parent_key', 'nation')->where('oid', $person->folkId)->value('id'),
'political_face' => Keyword::where('parent_key', 'political_face')->where('oid', $person->politicsId)->value('id'),
'educational_level' => Keyword::where('parent_key', 'educational_level')->where('oid', $person->educationId)->value('id'),
'marry_state' => Keyword::where('parent_key', 'marry_state')->where('name', $person->marryStatus)->value('id'),
'job_cate' => Keyword::where('parent_key', 'job_cate')->where('name', $person->workType)->value('id'),
'job' => $person->career,
'health'=> $person->health,
'phone' => $person->phone,
'remark'=> $person->remark,
'type'=>$person->type,
'has_benefit' => $person->benefit == '是' ? 1:0,
'organized_body' => Keyword::where('parent_key', 'organized_body')->where('oid', $person->societyId)->value('id'),
'domicile'=> Keyword::where('parent_key', 'domicile')->where('oid', $person->houseHoldTypeId)->value('id'),
'domicile_code' => $person->houseHoldNumber,
'master_id' => $person->houseHoldMasterId,
'is_master' => $person->houseHoldMasterRelative == '户主' ? 1:0,
'master_connect' => $person->houseHoldMasterRelative ?: null,
'is_voter' => $person->voter == '是' ? 1:0,
'wx_openid' => $person->openid ?: null,
'baidu_face_id' => $person->baiduUserId ?: null,
'state' => $person->status,
't_ids' => null,
'created_at' => now(),
'updated_at' => now(),
];
//处理人物标签
if(!empty($person->type1)){
$_tIds = [];
$_typeIds = explode(',',$person->type1);
foreach($typeArr as $k => $typeName){
if(in_array($k, $_typeIds)){
$_tIds[] = Keyword::where('parent_key', 'person_tag')->where('name', $typeName)->value('id');
}
}
if($_tIds){
$_person['t_ids'] = implode(',', $_tIds);
}
}
//处理籍贯地址选中问题-todo如果是重庆市-巴南区,重庆市-九龙坡,重庆-巴县,重庆市-綦江区
if(Str::startsWith($person->nativePlace, '重庆市') || Str::startsWith($person->nativePlace, '重庆')){
$_person['origin_province_id'] = 2221;
$_person['origin_city_id'] = 2222;
}
//处理户籍地址选中问题*-doto
//处理居住地址
if($person->courtId){
$houseCompleteAddress = '';
$housingEstate = Keyword::where('parent_key', 'housing_estate')->where('oid', $person->courtId)->first();
$building = Keyword::where('parent_key', 'like', 'housing_estate%')->where('oid', $person->buildingId ?:0)->first();
if($housingEstate){
$_person['housing_estate'] = $housingEstate->id;
$houseCompleteAddress .= $housingEstate->name;
}
if($building){
$_person['building'] = $building->id;
$houseCompleteAddress .= $building->name;
}
$_person['house_number'] = $person->door;
$houseCompleteAddress .= ' '.$person->door;
if($houseCompleteAddress){
$_person['house_complete_address'] = $houseCompleteAddress;
}
}
$_person['real_address'] = $person->addr2;
// $newPersons[] = $_person;
if($_person['is_master']){
$_person['master_id'] = $person->id;
}
DB::table('persons')->insert($_person);
}
}
}
// if(count($newPersons) > 0){
// DB::table('persons')->insert($newPersons);
// }
});
}
}