DeviceStatsController.php 5.79 KB
<?php

namespace app\ht\modules\datas\controllers;

use Yii;
use yii\data\Pagination;
use app\ht\controllers\BaseController;
use domain\device\DeviceStatsRepository;
use domain\device\DeviceStats;
use stdClass;
use function strtotime;
use function count;
/**
 * 机器状态码管理
 * 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 = '')
    {
        $searchCondition = $this->searchWhere();
        $where = $searchCondition[0];
        $gets = $searchCondition[1];

        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);
    }

    /**
     * @param int $requestType
     * @return array
     */
    private function searchWhere($requestType = 1)
    {
        $request     = Yii::$app->request;
        $reqName = 'get';
        if (2 == $requestType) {
            $reqName = 'post';
        }
        $createTime   = $request->$reqName('createTime');
        $endTime     = $request->$reqName('endTime');
        $software_version = $this->filterVar($request->$reqName('software_version'));
        $hardware_version  = $this->filterVar($request->$reqName('hardware_version'));
        $manufacture_name = $this->filterVar($request->$reqName('manufacture_name'));
        $model_name = $this->filterVar($request->$reqName('model_name'));
        $device_id   = $this->filterVar($request->$reqName('device_id'));
        $barcode     = $this->filterVar($request->$reqName('barcode'));
        $city  = $this->filterVar($request->$reqName('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];
        }

        return [$where, $gets];
    }

    /**
     * @return string
     */
    public function actionDelSearch()
    {
        $request     = Yii::$app->request;
        $e = new stdClass();
        $e->success = false;
        $e->message = '失败';

        $searchCondition = $this->searchWhere(2);
        $where = $searchCondition[0];

        $post = $request->post();
        if (empty($post)) {
            $e->message = '请录入搜索条件';
            return $this->renderJson($e);
        }

        $upgrades = DeviceStatsRepository::getPageList($where, 0 , 0);
        $ids = [];
        foreach($upgrades as $k => $v) {
            if ($v) {
                $ids[] = $v['id'];
            }
        }
        if (!$ids) {
            $e->message = '没有满足条件的记录';
            return $this->renderJson($e);
        }
        $result = DeviceStats::deleteAll(['id' => $ids]);
        if ($result) {
            $e->message = '成功删除'.count($ids).'记录';
            $e->success = true;
            return $this->renderJson($e);
        } else {
            $e->message = '删除失败';
            return $this->renderJson($e);
        }
    }

    /**
     * @return string
     */
    public function actionDelItem()
    {
        $request     = Yii::$app->request;
        $e = new stdClass();
        $e->success = false;
        $e->message = '失败';
        $id = $request->post('id');
        if (empty($id)) {
            $e->message = 'ID为空,删除失败';
            return $this->renderJson($e);
        }
        if (DeviceStats::delete($id)) {
            $e->message = '删除成功';
            $e->success = true;
            return $this->renderJson($e);
        } else {
            $e->message = '删除失败';
            return $this->renderJson($e);
        }
    }
}