StorageService.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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. use Illuminate\Support\Facades\DB;
  10. class StorageService
  11. {
  12. use ServiceAppAop;
  13. protected $modelClass=Storage::class;
  14. /**
  15. * 填充缓存架
  16. *
  17. * @param \Illuminate\Database\Eloquent\Collection $stations
  18. */
  19. public function paddingCacheShelf($stations)
  20. {
  21. $collection = new Collection();
  22. $stationCollection = new Collection();
  23. $blacklist = [];
  24. foreach ($stations as $station){
  25. $box = app("MaterialBoxService")->getAnEmptyBox($blacklist);
  26. if (!$box)continue;
  27. $task = StationTask::query()->create([
  28. 'status' => "待处理",
  29. 'station_id' => $station->id,
  30. ]);
  31. $collection->add(StationTaskMaterialBox::query()->create([
  32. 'station_id' => $station->id,
  33. 'material_box_id'=>$box->id,
  34. 'status'=>"待处理",
  35. 'type' => '取',
  36. 'station_task_id' => $task->id,
  37. ]));
  38. $stationCollection->add($station->code);
  39. $blacklist[] = $box->id;
  40. }
  41. app("ForeignHaiRoboticsService")->fetchGroup_multiLocation($stationCollection,$collection,'','立架出至缓存架');
  42. }
  43. /**
  44. * 释放库位占用
  45. *
  46. * @param StationTaskMaterialBox|\stdClass $stationTaskMaterialBox
  47. */
  48. public function releaseOccupation($stationTaskMaterialBox)
  49. {
  50. $stationTaskMaterialBox->loadMissing("station");
  51. if ($stationTaskMaterialBox->station->station_type_id != 5)return;
  52. $storage = Storage::query()->where("material_box_id",$stationTaskMaterialBox->material_box_id)->first();
  53. if (!$storage)return;
  54. $update = [];
  55. if ($storage->status == 1)$update["status"] = 0;
  56. if ($storage->station_id)$update["station_id"] = null;
  57. if ($update)$storage->update($update);
  58. }
  59. /**
  60. * 入库
  61. *
  62. * @param integer $stationId
  63. * @param integer $boxId
  64. * @param integer $commodityId
  65. * @param integer $amount
  66. */
  67. public function enterWarehouse($stationId, $boxId, $commodityId, $amount)
  68. {
  69. $storage = Storage::query()->where("material_box_id",$boxId)->first();
  70. $obj = [
  71. "station_id" => $stationId,
  72. "material_box_id" => $boxId,
  73. "commodity_id" => $commodityId,
  74. "amount" => $amount,
  75. "status" => 1,
  76. ];
  77. if ($storage){
  78. $obj["amount"] = DB::raw("amount+{$amount}");
  79. $storage->update($obj);
  80. } else Storage::query()->create($obj);
  81. }
  82. }