WarehouseService.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. namespace App\Services;
  3. use App\OracleBasCustomer;
  4. use App\Warehouse;
  5. use Illuminate\Support\Collection;
  6. Class WarehouseService
  7. {
  8. public function firstOrCreate(array $params, array $values = null){
  9. if ($values)return Warehouse::query()->firstOrCreate($params,$values);
  10. return Warehouse::query()->firstOrCreate($params);
  11. }
  12. public function getByWmsOrders($orderHeaders)
  13. {
  14. $wareHouse_Ids=array_diff(array_unique(data_get($orderHeaders,'*.warehouseid')),['',' ','*',null]);
  15. $wareHouses=Warehouse::query()->whereIn('code',$wareHouse_Ids)->get();
  16. if(count($wareHouse_Ids)>$wareHouses->count()){
  17. $需要添加_仓库编码=[];
  18. foreach ($wareHouse_Ids as $warehouse_id) {
  19. if($wareHouses->where('code')->count()==0){
  20. $需要添加_仓库编码[]=$warehouse_id;
  21. }
  22. }
  23. $create_wareHouse=$this->syncWmsWareHouse($需要添加_仓库编码);
  24. $wareHouses->concat($create_wareHouse);
  25. }
  26. return $wareHouses;
  27. }
  28. public function syncWmsWareHouse($warehouse_ids)
  29. {
  30. $collet = new Collection();
  31. if(!$warehouse_ids)return null;
  32. /** @var Collection $oracleBasCustomers */
  33. $oracleBasCustomers=app(OracleBasCustomerService::class)->getWareHouse($warehouse_ids);
  34. $warehouses=Warehouse::query()->where('code',data_get($oracleBasCustomers,'*.CustomerID'))->get();
  35. $oracleBasCustomers=$oracleBasCustomers->filter(function($oracleBasCustomer)use($warehouses){
  36. return $warehouses->where('code',$oracleBasCustomer->warehouseid)->count()>0;
  37. });
  38. foreach ($oracleBasCustomers as $oracleBasCustomer){
  39. $wereHouse=Warehouse::query()->create([
  40. 'code'=>$oracleBasCustomer->customerid,
  41. 'name'=>$oracleBasCustomer->descr_c
  42. ]);
  43. $collet->push($wereHouse);
  44. }
  45. return $collet;
  46. }
  47. }