databaseService = $service->db ; $this->error = $service->error; } /** * 获取错误信息 * * @return string|null */ public function getError() { return $this->error; } /** * 同步人员部门 * * @param array $data * @param array $user * @return array */ public function synPersonDepart($data, $user) { try { $this->databaseService->table('AA_Department') ->select('id','idparent as parent_id','name as title','code','disabled as is_use') ->chunkById(100, function ($data) { DB::transaction(function () use ($data) { $dataArray = Collect($data)->map(function ($object) { return (array)$object; })->toArray(); $d_id = Depart::whereIn('id', array_column($dataArray,'id')) ->pluck('id') ->toArray(); $insert = $update = []; foreach ($dataArray as $value){ $is_use = $value['is_use'] ? 0 : 1; if(in_array($value['id'], $d_id)){ $update[] = [ 'id' => $value['id'], 'parent_id' => $value['parent_id'], 'title' => $value['title'], 'code' => $value['code'], 'is_use' => $is_use ]; }else{ $insert[] = [ 'id' => $value['id'], 'parent_id' => $value['parent_id'], 'title' => $value['title'], 'code' => $value['code'], 'is_use' => $is_use ]; } } if(! empty($insert)) Depart::insert($insert); if(! empty($update)) { foreach ($update as $value){ Depart::where('id', $value['id']) ->update($value); } } }); }); $this->databaseService->table('AA_Person') ->select('id','code as number','name as emp_name','mobilePhoneNo as mobile','iddepartment as depart_id','disabled as state') ->chunkById(100, function ($data) { DB::transaction(function () use ($data) { $dataArray = Collect($data)->map(function ($object) { return (array)$object; })->toArray(); $employee_id = Employee::whereIn('id', array_column($dataArray,'id')) ->pluck('id') ->toArray(); $insert = $update = $depart_update = []; foreach ($dataArray as $value){ $state = $value['state'] ? Employee::NOT_USE : Employee::USE; if(in_array($value['id'], $employee_id)){ $update[] = [ 'id' => $value['id'], 'number' => $value['number'], 'emp_name' => $value['emp_name'], 'mobile' => $value['mobile'], 'state' => $state ]; }else{ $insert[] = [ 'id' => $value['id'], 'number' => $value['number'], 'emp_name' => $value['emp_name'], 'mobile' => $value['mobile'], 'state' => $state ]; } $depart_update[] = [ 'employee_id' => $value['id'], 'depart_id' => $value['depart_id'] ]; } if(! empty($insert)) Employee::insert($insert); if(! empty($update)) { foreach ($update as $value){ Employee::where('id', $value['id']) ->update($value); } } if(! empty($depart_update)){ EmployeeDepartPermission::whereIn('employee_id',array_column($depart_update,'employee_id'))->delete(); EmployeeDepartPermission::insert($depart_update); } }); }); } catch (\Throwable $e) { return [false, $e->getMessage()]; } return [true, '']; } }