| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- <?php
- namespace App\Services;
- use App\OracleBasCustomer;
- use App\Warehouse;
- use Illuminate\Support\Collection;
- Class WarehouseService
- {
- public function firstOrCreate(array $params, array $values = null){
- if ($values)return Warehouse::query()->firstOrCreate($params,$values);
- return Warehouse::query()->firstOrCreate($params);
- }
- public function getByWmsOrders($orderHeaders)
- {
- $wareHouse_Ids=array_diff(array_unique(data_get($orderHeaders,'*.warehouseid')),['',' ','*',null]);
- $wareHouses=Warehouse::query()->whereIn('code',$wareHouse_Ids)->get();
- if(count($wareHouse_Ids)>$wareHouses->count()){
- $需要添加_仓库编码=[];
- foreach ($wareHouse_Ids as $warehouse_id) {
- if($wareHouses->where('code')->count()==0){
- $需要添加_仓库编码[]=$warehouse_id;
- }
- }
- $create_wareHouse=$this->syncWmsWareHouse($需要添加_仓库编码);
- $wareHouses->concat($create_wareHouse);
- }
- return $wareHouses;
- }
- public function syncWmsWareHouse($warehouse_ids)
- {
- $collet = new Collection();
- if(!$warehouse_ids)return null;
- /** @var Collection $oracleBasCustomers */
- $oracleBasCustomers=app(OracleBasCustomerService::class)->getWareHouse($warehouse_ids);
- $warehouses=Warehouse::query()->where('code',data_get($oracleBasCustomers,'*.CustomerID'))->get();
- $oracleBasCustomers=$oracleBasCustomers->filter(function($oracleBasCustomer)use($warehouses){
- return $warehouses->where('code',$oracleBasCustomer->warehouseid)->count()>0;
- });
- foreach ($oracleBasCustomers as $oracleBasCustomer){
- $wereHouse=Warehouse::query()->create([
- 'code'=>$oracleBasCustomer->customerid,
- 'name'=>$oracleBasCustomer->descr_c
- ]);
- $collet->push($wereHouse);
- }
- return $collet;
- }
- }
|