BatteryHandler.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Mead
  5. * Date: 2019/9/9
  6. * Time: 2:49 PM
  7. */
  8. namespace App\Handlers;
  9. class BatteryHandler
  10. {
  11. const max_ride_v = 10;
  12. const fangans = [
  13. [
  14. 'min' => 0,
  15. 'max' => 43,
  16. 'electric' => 0,
  17. 'mileage' => 0
  18. ],
  19. [
  20. 'min' => 43,
  21. 'max' => 44,
  22. 'electric' => 10,
  23. 'mileage' => 5
  24. ],
  25. [
  26. 'min' => 44,
  27. 'max' => 46,
  28. 'electric' => 20,
  29. 'mileage' => 10
  30. ],
  31. [
  32. 'min' => 46,
  33. 'max' => 47,
  34. 'electric' => 30,
  35. 'mileage' => 15
  36. ],
  37. [
  38. 'min' => 47,
  39. 'max' => 48,
  40. 'electric' => 40,
  41. 'mileage' => 20
  42. ],
  43. [
  44. 'min' => 48,
  45. 'max' => 49,
  46. 'electric' => 50,
  47. 'mileage' => 25
  48. ],
  49. [
  50. 'min' => 49,
  51. 'max' => 50,
  52. 'electric' => 60,
  53. 'mileage' => 30
  54. ],
  55. [
  56. 'min' => 50,
  57. 'max' => 51,
  58. 'electric' => 70,
  59. 'mileage' => 35
  60. ],
  61. [
  62. 'min' => 51,
  63. 'max' => 52,
  64. 'electric' => 80,
  65. 'mileage' => 40
  66. ],
  67. [
  68. 'min' => 52,
  69. 'max' => 53,
  70. 'electric' => 90,
  71. 'mileage' => 45
  72. ],
  73. [
  74. 'min' => 53,
  75. 'max' => false,
  76. 'electric' => 100,
  77. 'mileage' => 50
  78. ],
  79. ];
  80. public function byVoltageGetElectric($v)
  81. {
  82. foreach (self::fangans as $fangan) {
  83. if ($fangan['min'] === false && $fangan['max'] > $v) {
  84. return $fangan['electric'];
  85. }
  86. if ($fangan['max'] === false && $v['max'] <= $v) {
  87. return $fangan['electric'];
  88. }
  89. if ($fangan['min'] <= $v && $fangan['max'] > $v) {
  90. return $fangan['electric'];
  91. }
  92. }
  93. }
  94. public function byElectricGetMileage($e)
  95. {
  96. $eles = array_column(self::fangans, 'electric');
  97. $mils = array_column(self::fangans, 'mileage');
  98. $mil = 0;
  99. foreach ($eles as $key => $ele) {
  100. if ($ele > $e) {
  101. $k = $key - 1;
  102. $m = round(($e - $eles[$k]) / 10 * 5);
  103. $mil = (int)$mils[$k] + $m;
  104. break;
  105. }
  106. }
  107. return $mil;
  108. }
  109. }