StationService.php 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. namespace App\Services;
  3. use App\Events\BroadcastToStation;
  4. use App\Station;
  5. use App\StationTask;
  6. use App\StationType;
  7. use Exception;
  8. use Illuminate\Support\Facades\Cache;
  9. use App\Traits\ServiceAppAop;
  10. class StationService
  11. {
  12. use ServiceAppAop;
  13. /**
  14. * @param string $typeName
  15. * @return Station
  16. * @throws Exception
  17. */
  18. function getStation_byType(string $typeName):Station{
  19. $station= Cache::remember('Station_typeName_'.$typeName,
  20. config('cache.expirations.rarelyChange'),
  21. function ()use($typeName) {
  22. $stationType= StationType::query()->where('name',$typeName)->orderBy('id')->get('id')->first();
  23. if(!$stationType) throw new Exception('指定站类型获取不到');
  24. return Station::query()->where('station_type_id',$stationType['id'])->first();
  25. });
  26. if(!$station)throw new Exception('默认站获取不到');
  27. return $station;
  28. }
  29. function broadcast($station_id, $json_data){
  30. broadcast(new BroadcastToStation($station_id,$json_data));
  31. }
  32. function broadcastBinMonitor($station_id, StationTask $stationTask){
  33. $stationTask->loadMissing(["taskCommodities.commodity.barcodes","taskCommodities.materialBox","taskBatches.batch"/*,"taskMaterialBoxes.box"*/]);
  34. $stationTask->toJson();
  35. $this->broadcast($station_id, $stationTask->toJson());
  36. //...
  37. //$stationTask->stationTaskBatch
  38. //$stationTask->stationTaskMaterialBox
  39. //$stationTask->stationTaskCommodities //'待处理', '处理中' blue,'完成',green
  40. //$batch= $stationTask->stationTaskBatch->batch
  41. //$orders= $batch->....
  42. //.....
  43. //$json_data=['batch','stationCommodities','stationMaterialBin','$currentStationTaskCommodity']
  44. //$this->broadcast($station_id, $json_data)
  45. }
  46. function broadcastBinChange($station_id, StationTask $stationTask, int $currentStationTaskCommodity_id){
  47. //...
  48. //$stationTask->stationTaskBatch
  49. //$stationTask->stationTaskMaterialBox
  50. //$stationTask->stationTaskCommodities //'待处理', '处理中' blue,'完成',green
  51. //$batch= $stationTask->stationTaskBatch->batch
  52. //$orders= $batch->....
  53. //.....
  54. //$json_data=['batch','stationCommodities','stationMaterialBin','$currentStationTaskCommodity']
  55. //$this->broadcast($station_id, $json_data)
  56. }
  57. function broadcastBinMonitorWarning($warnText, $station_id, StationTask $stationTask){
  58. //...
  59. //...
  60. //$json_data=['warn']
  61. //$this->broadcast($station_id, $json_data)
  62. }
  63. }