| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 | 
							- <?php
 
- namespace App\Service;
 
- use App\Model\Depart;
 
- use App\Model\Employee;
 
- use App\Model\EmployeeDepartPermission;
 
- use Illuminate\Support\Facades\DB;
 
- class TPlusServerService extends Service
 
- {
 
-     /**
 
-      * @var TPlusDatabaseServerService
 
-      */
 
-     protected $databaseService;
 
-     /**
 
-      * @var string|null
 
-      */
 
-     protected $error;
 
-     /**
 
-      * TPlusServerService constructor.
 
-      */
 
-     public function __construct()
 
-     {
 
-         $service = new TPlusDatabaseServerService();
 
-         $this->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, ''];
 
-     }
 
- }
 
 
  |