<?php
namespace app\admin\controller;

use app\common\util\ExcelUtil;
use think\App;
use think\Db;
use think\Exception;

class DeviceLog extends Auth
{

    public function __construct(App $app = null) {
        parent::__construct($app);
        $this->table='device_log';
        $this->model = new \app\common\model\DeviceLog();
    }
    public function index(){

        if(request()->isAjax()){
            //分页参数
            $length = input('rows',10,'intval');   //每页条数
            $page = input('page',1,'intval');      //第几页
            $start = ($page - 1) * $length;     //分页开始位置
            //排序
            $sortRow = input('sidx','id','trim');      //排序列
            $sort = input('sord','desc','trim');        //排序方式
            $order = $sortRow.' '.$sort;

            $title = input('title','','trim');
            if($title){
                $map[] = ['sn','like','%'.$title.'%'];
            }
            $type = input('type','','trim');
            if($type){
                $map[] = ['type','=',$type];
            }

            $map= empty($map) ? true: $map;
            //数据查询
            $lists = db($this->table)->where($map)->limit($start,$length)->order($order)->select();
            foreach ($lists as $k=>$v){
                $lists[$k]['typeName'] = $this->model->type[$v['type']];
            }
            //数据返回
            $totalCount = db($this->table)->where($map)->count();
            $totalPage = ceil($totalCount/$length);
            $result['page'] = $page;
            $result['total'] = $totalPage;
            $result['records'] = $totalCount;
            $result['rows'] = $lists;
            return json($result);
        }else{
            $this->assign('typeList',$this->model->type);
            return $this->fetch();
        }
    }

    /**
     * 新增/编辑
     */
    public function add($id=0){
        if(request()->isPost()){
            $res = $this->model->updates();
            if($res){
                $this->success('操作成功',url('index'));
            }else{
                $this->error($this->model->getError());
            }
        }else{
            if($id){
                $info =db($this->table)->where('id',$id)->find();
                $this->assign('info',$info);
            }

            $tt = $this->model->type;
            $ll = [];
            foreach ($tt as $k=>$v){

                $ll[] = [
                    'id'=>$k,
                    'title'=>$v,
                ];
            }
            $this->assign('typeList',$ll);
            return $this->fetch();
        }
    }

    /**
     * 删除记录
     * @param int $id
     */
    public function del($id=0){
        if(!$id){
            $this->error('参数错误');
        }
        $res = db($this->table)->where('id',$id)->setField('del',1);
        if($res){
            $this->success('删除成功');
        }else{
            $this->error('删除失败');
        }
    }



    /**
     * 下载点模板
     */
    public function downloadtem(){
        set_time_limit(0);
        ini_set("memory_limit","512M");

        $tt = $this->model->type;
        $ll = [];
        foreach ($tt as $k=>$v){

            $ll[] = $k.'='.$v;
        }
        $ts = implode(';',$ll);
        $header = [
            ['title' => '编号', 'name' => 'sn','width'=>'20'],
            ['title' => '类型'.$ts, 'name' => 'type','width'=>'20'],
        ];

        $lists = [
            [
                'sn' => '121212',
                'type' => '1',
            ]
        ];

        $filename = '设备记录模板';
        ExcelUtil::export($filename,$header,$lists);

    }


    public function import(){

        return $this->fetch();
    }

    /**
     * 导入
     */
    public function importexcel(){
        set_time_limit(0);
        ini_set("memory_limit", -1);
        ob_flush();//清空缓存
        flush();//刷新缓存

        try{
            $cols = ['sn','type'];
            $lists = ExcelUtil::importExcel('file',$cols,2);
            if($lists === false){
                exit(ExcelUtil::getError());
            }
            if(empty($lists)){
                exit('文件内容为空');
            }

            foreach ($lists as $k=>$v){

                if(!in_array($v['type'],array_keys($this->model->type))){
                    $msg = "第".($k+2)."行,类型格式错误,导入失败";
                    echo "<font color=\"red\">".$msg."</font><br />";
                    continue;
                }
                $dt = [
                    'id'=>0,
                    'sn'=>$v['sn'],
                    'type'=>$v['type'],
                    'create_time'=>date('Y-m-d H:i:s'),
                ];
                $result = validate('DeviceLog')->check($dt,[],'');
                if(true !== $result){
                    $error = validate('DeviceLog')->getError();
                    $msg = "第".($k+2)."行,".$error.",导入失败";
                    echo "<font color=\"red\">".$msg."</font><br />";
                    continue;
                }
                unset($dt['id']);
                $inset = Db::name('device_log')->insert($dt);
                if(!$inset){
                    $msg = "第".($k+2)."行,导入失败";
                    echo "<font color=\"red\">".$msg."</font><br />";
                    continue;
                }

            }
            echo "<font color=\"green\">导入完成</font><br />";
        }catch (Exception $e){
            trace($e->getMessage(),'error');
            echo $e->getMessage();
            echo "<font color=\"red\">数据异常,已停止导入</font><br />";
        }
    }

}