123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- <?php
- namespace App\Service;
- use App\Model\SystemL;
- /**
- * 设备相关设置报表
- * Class ReportFormsService
- * @package App\Service
- */
- class ReportFormsService extends Service
- {
- /**
- * 数据分析图
- * @param $data
- * @return array
- */
- public function deviceStatisticsReportChart($data){
- if(empty($data['time'][0]) || empty($data['time'][1])) return [false, '时间必须选择!'];
- $day = $this->returnDays($data['time'], false);
- if($day > 31) return [false, '查询时间仅支持范围区间在31天内'];
- $return = [];
- foreach (SystemL::$device as $key => $value){
- $list = [];
- for ($i = $data['time'][0]; $i <= $data['time'][1]; $i+= 86400){
- $tmp['time'] = date("Y-m-d", $i);
- $tmp['num'] = mt_rand(1100, 1200);
- $list[] = $tmp;
- }
- $return[] = [
- "title" => $key,
- "list" => $list
- ];
- }
- return [true, $return];
- }
- /**
- * 数据OEE分析图
- * @param $data
- * @return array
- */
- public function deviceStatisticsReportOEEChart($data){
- if(empty($data['time'][0]) || empty($data['time'][1])) return [false, '时间必须选择!'];
- $day = $this->returnDays($data['time'], false);
- if($day > 10) return [false, '查询时间仅支持范围区间在10天内'];
- $return = [];
- foreach (SystemL::$device as $key => $value){
- $list = [];
- for ($i = $data['time'][0]; $i <= $data['time'][1]; $i+= 86400){
- $tmp['time'] = date("Y-m-d", $i);
- $tmp['num'] = $this->getRandomFloat(35);
- $list[] = $tmp;
- }
- $return[] = [
- "title" => $key,
- "list" => $list
- ];
- }
- return [true, $return];
- }
- function getRandomFloat($min = 40, $max = 43) {
- // 生成一个在[0, 100)范围内的随机整数(乘以100是为了扩大范围,便于计算)
- $randomInt = mt_rand(0, 99);
- // 将随机整数转换为浮点数,并乘以范围(45-40),然后加上最小值40
- $randomFloat = ($randomInt / 100) * ($max - $min) + $min;
- // 返回两位小数
- return round($randomFloat, 2);
- }
- /**
- * 用于计算时间
- * @param $minute
- * @return string
- */
- public function calTimeReturnMin($minute){
- return number_format($minute * 1.5 / 60,2);
- }
- function returnDays($time = [], $is_mirco_time = true){
- // 示例时间戳
- $timestamp1 = $time[0];
- $timestamp2 = $time[1];
- // 计算时间差
- $difference = abs($timestamp2 - $timestamp1);
- // 将时间差转换为天数
- $days = floor($difference / (60 * 60 * 24));
- if($is_mirco_time) $days = $days / 1000;
- return $days;
- }
- }
|