select($column)->get(); } function firstOrCreate(array $param, array $values = null){ $shop = Shop::query(); if ($values) return $shop->firstOrCreate($param,$values); return $shop->firstOrCreate($param); } public function insert(array $params) { return Shop::query()->insert($params); } public function batchUpdate(array $params) { return app(BatchUpdateService::class)->batchUpdate('shops',$params); } public function getByWmsOrders($orderHeaders) { //issuepartyname $maps = []; foreach ($orderHeaders as $orderHeader) { $value = ['owner_code'=>$orderHeader->customerid,'issuepartyname'=>$orderHeader->issuepartyname]; if(!in_array($value,$maps)) $maps[] = $value; } $issuepartynames = array_diff(array_unique(data_get($maps,'*.issuepartyname')),['','*',null]); $owner_codes = array_diff(array_unique(data_get($maps,'*.owner_code')),['','*',null]); $shops = Shop::query()->with('owner') ->whereHas('owner',function($query)use($owner_codes){ $query->whereIn('code',$owner_codes); })->whereIn('name',$issuepartynames)->get(); if($shops->count() < count($issuepartynames)){ $shops_code = data_get($shops,'*.name'); $issuepartynames = array_diff($issuepartynames,$shops_code); $params = []; foreach ($maps as $item){ if(in_array($item['issuepartyname'],$issuepartynames)) $params[] = $item; } $shops_list = $this->createByNameAndOwnerCode($params); $shops = $shops->concat($shops_list??[]); } return $shops; } public function createByNameAndOwnerCode(array $params){ $owners = Owner::query() ->whereIn('code',data_get($params,'*.owner_code')) ->get(); $owners_map = []; foreach ($owners as $owner) { $owners_map[$owner->code] = $owner; } $insert_params = []; $created_at = Carbon::now()->format('Y-m-d H:i:s'); foreach ($params as $param) { $owner = $owners_map[$param['owner_code']] ?? ''; $insert_params[] = [ 'name' => $param['issuepartyname'] ?? '', 'owner_id' => $owner['id'] ?? '', 'created_at' => $created_at, ]; } try { if (count($insert_params) > 0) { $this->insert($insert_params); app('LogService')->log(__METHOD__, __FUNCTION__, '批量创建 shop ' . count($insert_params) . json_encode($insert_params)); } } catch (\Exception $e) { app('LogService')->log(__METHOD__, __FUNCTION__, '批量创建 shop ' . json_encode($insert_params) .'||'.$e->getMessage().'||'.$e->getTraceAsString()); } finally { return Shop::query() ->whereIn('name',data_get($params,'*.issuepartyname')) ->get(); } } }