select($column)->get(); } public function getSelectionId($column = ['id']) { return Owner::filterAuthorities()->select($column)->get(); } /** *同步WMS全部货主至WAS */ public function syncOwnersData() { $basCustomers = OracleBasCustomer::query() ->select('CUSTOMERID', 'DESCR_C') ->where('DESCR_C', 'not like', '%换ERP%') ->where('DESCR_C', 'not like', '%退仓%') ->where('CUSTOMER_TYPE', 'OW') ->get(); $ownerCount = Owner::query()->count(); if (count($basCustomers) == $ownerCount) return null; foreach ($basCustomers as $basCustomer) { $owner = Owner::query()->where('code', $basCustomer['customerid'])->first(); if (!isset($owner)){ Owner::query()->create([ 'code' => $basCustomer['customerid'], 'name' => $basCustomer['descr_c'], 'created_at' => Carbon::now()->format('Y-m-d H:i:s'), ]); } if ($owner['name']!=$basCustomer['descr_c']){ $owner->update([ 'code' => $basCustomer['customerid'], 'name' => $basCustomer['descr_c'], ]); } } $owners = Owner::query()->select('id', 'name')->get(); return $owners; } public function first(array $params){ $owner = Owner::query(); foreach ($params as $column => $value){ $owner->where($column, $value); } return $owner->first(); } public function create(array $params){ $owner = Owner::query()->create($params); return $owner; } public function firstOrCreate(array $params, array $values = null){ if (!$values) return Owner::query()->firstOrCreate($params); return Owner::query()->firstOrCreate($params,$values); } public function 获取订单跟踪的货主(){ return Owner::query()->with('orderTrackingOwner')->whereHas('orderTrackingOwner',function($query){ $query->where('status','启用'); })->get(); } public function getByWmsOrders($orderHeaders){ $customerIds = array_unique(data_get($orderHeaders,'*.customerid')); $customerIds = array_diff($customerIds,[null,'','*']); $owners = Owner::query()->whereIn('code',data_get($orderHeaders,'*.customerid'))->get(); if($owners->count() < $customerIds){ $customerIds = array_diff($customerIds,data_get($owners,'*.code')); $owner_list = $this->createByWmsCustomerIds($customerIds); $owners->concat($owner_list); } return $owners; } public function createByWmsCustomerIds($codes){ if(!$codes) {return [];} $basCustomer = OracleBasCustomer::query() ->where('Customer_Type','OW') ->whereIn('CustomerID', $codes) ->get(); $insert_params = []; $created_at = Carbon::now()->format('Y-m-d H:i:s'); foreach ($basCustomer as $item) { $insert_params[] = [ 'code' => $item->customerid, 'name' => $item->descr_c, 'created_at' => $created_at, ]; } try { if (count($insert_params) > 0) { $this->insert($insert_params); LogService::log(__METHOD__, __FUNCTION__, '批量创建 owner error' . count($insert_params) . json_encode($insert_params) ); } } catch (\Exception $e) { LogService::log(__METHOD__, __FUNCTION__, '批量创建 owner error' . json_encode($insert_params) . '||' . $e->getMessage() . '||' . $e->getTraceAsString()); } finally { return Owner::query()->whereIn('code', $codes)->get(); } } public function insert($fillables){ return Owner::query()->insert($fillables); } public function getAuthorizedOwners(){ $user = Auth::user(); return Owner::query()->whereIn('id',$user->getPermittingOwnerIdsAttribute()??[])->get(); } }