ReportFormsService.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <?php
  2. namespace App\Service;
  3. use App\Model\SystemL;
  4. /**
  5. * 设备相关设置报表
  6. * Class ReportFormsService
  7. * @package App\Service
  8. */
  9. class ReportFormsService extends Service
  10. {
  11. /**
  12. * 数据分析图
  13. * @param $data
  14. * @return array
  15. */
  16. public function deviceStatisticsReportChart($data){
  17. if(empty($data['time'][0]) || empty($data['time'][1])) return [false, '时间必须选择!'];
  18. $day = $this->returnDays($data['time'], false);
  19. if($day > 31) return [false, '查询时间仅支持范围区间在31天内'];
  20. $return = [];
  21. foreach (SystemL::$device as $key => $value){
  22. $list = [];
  23. for ($i = $data['time'][0]; $i <= $data['time'][1]; $i+= 86400){
  24. $tmp['time'] = date("Y-m-d", $i);
  25. $tmp['num'] = mt_rand(1100, 1200);
  26. $list[] = $tmp;
  27. }
  28. $return[] = [
  29. "title" => $key,
  30. "list" => $list
  31. ];
  32. }
  33. return [true, $return];
  34. }
  35. /**
  36. * 数据OEE分析图
  37. * @param $data
  38. * @return array
  39. */
  40. public function deviceStatisticsReportOEEChart($data){
  41. if(empty($data['time'][0]) || empty($data['time'][1])) return [false, '时间必须选择!'];
  42. $day = $this->returnDays($data['time'], false);
  43. if($day > 10) return [false, '查询时间仅支持范围区间在10天内'];
  44. $return = [];
  45. foreach (SystemL::$device as $key => $value){
  46. $list = [];
  47. for ($i = $data['time'][0]; $i <= $data['time'][1]; $i+= 86400){
  48. $tmp['time'] = date("Y-m-d", $i);
  49. $tmp['num'] = $this->getRandomFloat(35);
  50. $list[] = $tmp;
  51. }
  52. $return[] = [
  53. "title" => $key,
  54. "list" => $list
  55. ];
  56. }
  57. return [true, $return];
  58. }
  59. function getRandomFloat($min = 40, $max = 43) {
  60. // 生成一个在[0, 100)范围内的随机整数(乘以100是为了扩大范围,便于计算)
  61. $randomInt = mt_rand(0, 99);
  62. // 将随机整数转换为浮点数,并乘以范围(45-40),然后加上最小值40
  63. $randomFloat = ($randomInt / 100) * ($max - $min) + $min;
  64. // 返回两位小数
  65. return round($randomFloat, 2);
  66. }
  67. /**
  68. * 用于计算时间
  69. * @param $minute
  70. * @return string
  71. */
  72. public function calTimeReturnMin($minute){
  73. return number_format($minute * 1.5 / 60,2);
  74. }
  75. function returnDays($time = [], $is_mirco_time = true){
  76. // 示例时间戳
  77. $timestamp1 = $time[0];
  78. $timestamp2 = $time[1];
  79. // 计算时间差
  80. $difference = abs($timestamp2 - $timestamp1);
  81. // 将时间差转换为天数
  82. $days = floor($difference / (60 * 60 * 24));
  83. if($is_mirco_time) $days = $days / 1000;
  84. return $days;
  85. }
  86. }