StorageService.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php
  2. namespace App\Services;
  3. use App\StationTask;
  4. use App\StationTaskMaterialBox;
  5. use App\Traits\ServiceAppAop;
  6. use App\Storage;
  7. use Illuminate\Database\Eloquent\Builder;
  8. use Illuminate\Support\Collection;
  9. class StorageService
  10. {
  11. use ServiceAppAop;
  12. protected $modelClass=Storage::class;
  13. /**
  14. * 填充缓存架
  15. *
  16. * @param \Illuminate\Database\Eloquent\Collection $stations
  17. */
  18. public function paddingCacheShelf($stations)
  19. {
  20. $collection = new Collection();
  21. $stationCollection = new Collection();
  22. $blacklist = [];
  23. foreach ($stations as $station){
  24. $box = app("MaterialBoxService")->getAnEmptyBox($blacklist);
  25. if (!$box)continue;
  26. $task = StationTask::query()->create([
  27. 'status' => "待处理",
  28. 'station_id' => $station->id,
  29. ]);
  30. $collection->add(StationTaskMaterialBox::query()->create([
  31. 'station_id' => $station->id,
  32. 'material_box_id'=>$box->id,
  33. 'status'=>"待处理",
  34. 'type' => '取',
  35. 'station_task_id' => $task->id,
  36. ]));
  37. $stationCollection->add($station->code);
  38. $blacklist[] = $box->id;
  39. }
  40. app("ForeignHaiRoboticsService")->fetchGroup_multiLocation($stationCollection,$collection,'','立架出至缓存架');
  41. }
  42. /**
  43. * 标记指定库位为占用
  44. *
  45. * @param string $location
  46. *
  47. * @return int
  48. */
  49. public function markOccupy($location)
  50. {
  51. return Storage::query()->whereHas("station",function (Builder $query)use($location){
  52. $query->where("code",$location);
  53. })->update(["status"=>1]);
  54. }
  55. }