DeviceStatsController.php 3.54 KB
<?php

namespace app\ht\modules\datas\controllers;

use Yii;
use yii\data\Pagination;
use app\ht\controllers\BaseController;
use domain\device\DeviceStatsRepository;

use function strtotime;
/**
 * 机器状态码管理
 * Class DeviceStatsController
 * @package app\ht\modules\upgrade\controllers
 */
class DeviceStatsController extends BaseController
{
    /**
     * 版本日志管理
     */
    public function actionIndex()
    {
        $params = $this->dataList(1);
        /**
         * 渲染模板
         */
        return $this->render('index', $params);
    }

    /**
     * 查询数据列表
     */
    protected function dataList($type = '')
    {
        $request     = Yii::$app->request;
        $createTime   = $request->get('createTime');
        $endTime     = $request->get('endTime');
        $software_version = $this->filterVar($request->get('software_version'));
        $hardware_version  = $this->filterVar($request->get('hardware_version'));
        $manufacture_name = $this->filterVar($request->get('manufacture_name'));
        $model_name = $this->filterVar($request->get('model_name'));
        $device_id   = $this->filterVar($request->get('device_id'));
        $barcode     = $this->filterVar($request->get('barcode'));
        $city  = $this->filterVar($request->get('city'));

        $gets = [
            'createTime'        => $createTime,
            'endTime'           => $endTime,
            'software_version'   => $software_version,
            'hardware_version'    => $hardware_version,
            'manufacture_name'  => $manufacture_name,
            'device_id'         => $device_id,
            'barcode'           => $barcode,
            'model_name'        => $model_name,
            'city'              => $city,
        ];

        $where = ['and'];
        if ($createTime) {
            $createTime = strtotime($createTime);
            $where[] = ['>=', 'ds.timestamp', $createTime];
        }
        if ($endTime) {
            $endTime = strtotime($endTime) + 86400;
            $where[] = ['<=', 'ds.timestamp', $endTime];
        }

        if ($software_version) {
            $where[] = ['like', 'ds.software_version', $software_version];
        }
        if ($hardware_version) {
            $where[] = ['like', 'ds.hardware_version', $hardware_version];
        }
        if ($manufacture_name) {
            $where[] = ['like', 'mf.name', $manufacture_name];
        }
        if ($model_name) {
            $where[] = ['like', 'md.name', $model_name];
        }
        if ($device_id) {
            $where[] = ['like', 'ds.device_id', $device_id];
        }
        if ($barcode) {
            $where[] = ['like', 'ds.barcode', $barcode];
        }
        if ($city) {
            $where[] = ['like', 'ds.city', $city];
        }

        if ($type == 0) {
            $pageList = DeviceStatsRepository::getPageList($where, 0 , 0);
            $pages = null;
        } else {
            $pageSize = 20;
            $pages = new Pagination(['totalCount' => DeviceStatsRepository::getPageCount($where), 'pageSize' => $pageSize]);
            $pageList = DeviceStatsRepository::getPageList($where, $pages->offset, $pages->limit);
        }

        /**
         * 数据整理
         */
        return [
            'listdata'   => $pageList,
            'pages'      => $pages,
            'gets'       => $gets
        ];
    }

    /**
     * 导出设备状态数据
     * @return string
     */
    public function actionExport()
    {
        $params = $this->dataList(0);
        return $this->renderPartial('export', $params);
    }
}