| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 | <?phpnamespace 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;    }}
 |