WorkOrder.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. <?php
  2. namespace App\Models;
  3. use App\Traits\ModelHelpers;
  4. use Carbon\Carbon;
  5. use Illuminate\Database\Eloquent\Model;
  6. use Illuminate\Support\Facades\Log;
  7. class WorkOrder extends Model
  8. {
  9. use ModelHelpers;
  10. //
  11. const NO_TAG = 'W';
  12. protected $table = "work_orders";
  13. protected $guarded = [];
  14. const TYPE_OTHER = 0; //其他
  15. const TYPE_CHARGE = 1; // 充电
  16. const TYPE_WATCH = 2; // 查看
  17. const TYPE_POWER_FAILURE = 3; // 断电
  18. // const TYPE_GPS_FAILURE = 4;// GPS故障
  19. const TYPE_ALERT = 5; // 警报
  20. const TYPE_STEAL = 6; // 偷盗
  21. const TYPE_HEADMAN = 7; // 组长工单
  22. const TYPE_TROUBLE = 8; // 故障
  23. const TYPE_HELP = 9; // 救援
  24. const TYPE_LOW_SPARE_BATTERY = 10; //备用电池电量低报警
  25. const TYPE_OFFLINE = 11; //离线
  26. public static $typeMaps = [
  27. self::TYPE_CHARGE => '充电工单',
  28. self::TYPE_WATCH => '查看工单',
  29. self::TYPE_POWER_FAILURE => '断电工单',
  30. // self::TYPE_GPS_FAILURE => 'GPS故障工单',
  31. self::TYPE_ALERT => '警报工单',
  32. self::TYPE_STEAL => '偷盗工单',
  33. self::TYPE_HEADMAN => '组长工单',
  34. self::TYPE_TROUBLE => '故障工单',
  35. self::TYPE_HELP => '道路救援工单',
  36. self::TYPE_OTHER => '其他工单',
  37. self::TYPE_LOW_SPARE_BATTERY => '备用电池电量低报警',
  38. self::TYPE_OFFLINE => '离线工单',
  39. ];
  40. const PLANNED_STATUS_MEET = 1;
  41. const PLANNED_STATUS_WORK = 2;
  42. const PLANNED_STATUS_WORKED = 3;
  43. const PLANNED_STATUS_OVER = 4;
  44. public static $plannedMaps = [
  45. self::PLANNED_STATUS_MEET => '待接单',
  46. self::PLANNED_STATUS_WORK => '处理中',
  47. self::PLANNED_STATUS_WORKED => '已处理',
  48. self::PLANNED_STATUS_OVER => '已完成',
  49. ];
  50. const STATUS_OK = 1;
  51. const STATUS_NO = 0;
  52. public static $statusMaps = [
  53. self::STATUS_NO => '未确认',
  54. self::STATUS_OK => '已确认'
  55. ];
  56. const SOURCE_SYSTEM = 1;
  57. const SOURCE_ADMIN = 2;
  58. const SOURCE_REPAIR = 3;
  59. public static $sourceMaps = [
  60. self::SOURCE_SYSTEM => '系统生成',
  61. self::SOURCE_ADMIN => '管理员创建',
  62. self::SOURCE_REPAIR=>'地勤报修'
  63. ];
  64. public static $warningMaps = [
  65. 'battery' => '电池锁故障',
  66. 'bluetooth' => '蓝牙设备故障',
  67. 'ecu' => 'ECU通信故障',
  68. 'yixianzhi' => '一线制通信故障',
  69. 'wheel_lock' => '后轮锁故障',
  70. 'bms' => 'BMS故障',
  71. 'voice' => '语音喇叭故障',
  72. 'default' => '保留',
  73. ];
  74. public static function makeWorkNo(){
  75. // 订单流水号前缀
  76. $prefix = self::NO_TAG . date('YmdHis');
  77. for ($i = 0; $i < 10; $i++) {
  78. // 随机生成 6 位的数字
  79. $no = $prefix . str_pad(random_int(0, 999999), 6, '0', STR_PAD_LEFT);
  80. // 判断是否已经存在
  81. if (!static::query()->where('work_no', $no)->exists()) {
  82. return $no;
  83. }
  84. }
  85. Log::warning('find order no failed');
  86. return false;
  87. }
  88. public function worker(){
  89. // 实际接单人员
  90. return $this->belongsTo(AdminUser::class,'worker_id','id');
  91. }
  92. public function workerOver(){
  93. // 实际维修人员
  94. return $this->belongsTo(AdminUser::class,'work_over_id','id');
  95. }
  96. public function bike(){
  97. return $this->belongsTo(Bike::class,'bike_id','id');
  98. }
  99. // public function user(){
  100. // return $this->belongsTo(User::class,'user_id','id');
  101. // }
  102. public function area(){
  103. return $this->belongsTo(Area::class,'area_id','id');
  104. }
  105. public function area_worker(){
  106. // 故障区域 所有维修人员
  107. return $this->hasMany(AdminUser::class,'area_id','area_id');
  108. }
  109. }