Station.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. namespace App;
  3. use App\Traits\ModelTimeFormat;
  4. use Illuminate\Database\Eloquent\Model;
  5. use Illuminate\Database\Eloquent\Relations\BelongsTo;
  6. use Illuminate\Database\Eloquent\Relations\HasOne;
  7. use App\Traits\ModelLogChanging;
  8. class Station extends Model
  9. {
  10. use ModelLogChanging;
  11. use ModelTimeFormat;
  12. protected $fillable=['name', 'code', 'station_type_id','sequence','parent_id',"material_box_id","status"];
  13. const STATUS=[
  14. 0 => "正常",
  15. 1 => "占用",
  16. ];
  17. /*站相关 CACHE说明
  18. * CACHE_SHELF_OCCUPANCY_{ID} //bool:缓存架占用标记,开启此标记后连续排灯无效
  19. * CACHE_SHELF_MAPPING //array(map):缓存架映射标记,用来映射入库任务的真实库位 CacheShelfTaskJob:materialBoxMappingCacheShelf详细描述此流程
  20. * CACHE_SHELF_AVAILABLE //array(map):缓存架可用标记,映射缓存架是否可以被下达出库任务
  21. * CACHE_SHELF_AVAILABLE //array(map):缓存架可用计数器,来标识这个已取出箱子的缓存架数量,这个标识用来判定缓存架一定时间内是否仍然被操作,如果缓存架停止操作则开启处理
  22. * */
  23. public function task()
  24. {
  25. return $this->hasOne(StationTaskMaterialBox::class,"station_id","id");
  26. }
  27. public function materialBox():BelongsTo
  28. {
  29. return $this->belongsTo(MaterialBox::class);
  30. }
  31. public function stationType(){
  32. return $this->belongsTo(StationType::class);
  33. }
  34. public function parent(){
  35. return $this->belongsTo(Station::class);
  36. }
  37. public function child(){
  38. return $this->hasOne(Station::class,'parent_id');
  39. }
  40. public function currentStationTask(){
  41. return $this->hasOne(StationTask::class)
  42. ->where('status','=','处理中');
  43. }
  44. public function stationTasks_today(){
  45. return $this->hasMany(StationTask::class)
  46. ->where('created_at','>=',now()->format('Y-m-d'))
  47. ->orderBy('status')
  48. ->orderByDesc('id');
  49. }
  50. public function stationTasks()
  51. { //站任务
  52. return $this->hasMany(StationTask::class,"id","station_type_id");
  53. }
  54. public function stationTypeBinMonitor()
  55. {
  56. return $this->hasOne(StationTypeBinMonitor::class);
  57. }
  58. public function pendingStationTask(): HasOne
  59. {
  60. return $this->hasOne(StationTask::class)
  61. ->where('status','=','待处理');
  62. }
  63. }