<?php
namespace app\admin\controller;

use app\common\model\Config;
use think\App;
use think\Db;
use think\Exception;
use think\Model;

class Complain extends Auth
{

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

    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;
            $content = input('content','','trim');
            if($content){
                $map[] = ['content','like','%'.$content.'%'];
            }

            $user = input('user','','trim');
            if($user != ''){
                $userIds = Db::name('user')->where('del',0)->where('real_name','like','%'.$user.'%')->column('id');
                $map[] = ['create_user_id','in',$userIds];
            }

            $st = input('start','','trim');
            if($st !=''){
                $map[] = ['create_time','>=',$st.' 00:00:00'];
            }

            $et = input('end','','trim');
            if($et !=''){
                $map[] = ['create_time','<=',$et.' 23:59:59'];
            }


            $map[] = ['del','=',0];
            $map[] = ['org_id','=',$this->orgId];

            $hour = (new Config())->getConfig('org_complain_hour',$this->orgId);
            $hour = $hour>0?$hour:0;
            $endTime = date('Y-m-d H:i:s',time() - $hour*60*60);
//            $type = input('type/d',0);
//            if($hour > 0 && $type == 1){
//                $map[] = ['create_time','<',$endTime];
//                $map[] = ['status','=',0];
//            }
            $from = input('from', '', 'trim');
            if ($from!='') {
                if($from == 1){
                    $map[] = ['order_id','>',0];
                    $map[] = ['bus_type','<>',0];
                    $map[] = ['to_from','=',0];
                }else{
                    $map[] = ['order_id','>',0];
                    $map[] = ['bus_type','<>',0];
                    $map[] = ['to_from','<>',0];
                }
            }
            $map= empty($map) ? true: $map;
            //数据查询
            $lists = db($this->table)
                ->where($map)
                ->limit($start,$length)
                ->order($order)
                ->select();

            foreach ($lists as $k=>$v){
                $lists[$k]['depName'] = Db::name('dep')
                    ->where('id',$v['dep_id'])
                    ->value('title');
//                $lists[$k]['fromName'] =$this->model->from[$v['from']];
                $lists[$k]['fromName'] = '';

                if($v['order_id'] > 0 && $v['bus_type'] != 0){
                    if($v['to_from'] == 0){
                        $lists[$k]['fromName'] = '一键呼叫';
                    }else{
                        $lists[$k]['fromName'] = '隐患';
                    }
                }
                $lists[$k]['worktypemode'] = '';
                if($v['order_id'] > 0 && in_array($v['bus_type'],[0,1])){
                    $worktype = Db::name('orders')
                        ->alias('o')
                        ->join('work_type_mode w','o.work_type_mode = w.id')
                        ->where('o.id',$v['order_id'])
                        ->value('w.name');
                    $lists[$k]['worktypemode'] = $worktype?$worktype:'';
                }

                if($v['hide'] == 1){
                    $lists[$k]['realName'] = '匿名';
                }else{
                    $lists[$k]['realName'] = Db::name('user')
                        ->where('id',$v['create_user_id'])
                        ->value('real_name');
                }


                $orderMode = 0;
                if($v['order_id'] > 0){
                    $orderMode = Db::name('orders')->where('id',$v['order_id'])->value('order_mode');
                }

                $lists[$k]['statusTxt'] = model('Complain')->formatStatus($v['status'],$v['order_id'],$v['id']);
                $lists[$k]['order_mode'] = $orderMode;

                if($v['create_time'] < $endTime && $v['status']==0){
                    $lists[$k]['statusTxt'] = $lists[$k]['statusTxt'].'<span style="color:red;">(已超时)</span>';
                }

            }

            //数据返回
            $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{
            return $this->fetch('index');

        }
    }
    public function del($id=0){
        if(!$id){
            $this->error('参数错误');
        }
        $res = Db::name($this->table)
            ->where('id',$id)
        ->update([
            'del'=>1,
            'del_user_id'=>$this->userId,
            'del_time'=>getTime(),
        ]);
        if(!$res){
            $this->error('删除失败');
        }
        $this->success('删除成功');
    }

    public function edit($id){
        if(request()->isGet()){

            $this->assign('id',$id);
            return $this->fetch();
        }else{
            $info = Db::name('complain')
            ->where('id',$id)
            ->find();
            if(!$info){
                $this->error('记录不存在');
            }
            if($info['status'] == 1){
                $this->error('该记录已处理');
            }
            $curRoles = Db::name('user_roles')
                ->where('user_id',$this->userId)
                ->value('roles_id');
            $data = array(
                'curr_roles_id' => $curRoles,
                'note' => input('note','','trim'),
                'status' => 1,
                'update_time' => date('Y-m-d H:i:s'),
                'hand_user_id' => $this->userId
            );
            $res =Db::name('complain')
                ->where(array('id'=>$id))
                ->update($data);
            if($res){
                model('Complain')->pushCreateUser(0,$info['create_user_id']);
                $this->success('处理成功');
            }else{
                $this->error('处理失败');
            }
        }
    }
    public function detail($id){

        $info = Db::name('complain')
            ->where('id',$id)
            ->find();
        $info['depName'] = Db::name('dep')
            ->where('id',$info['dep_id'])
            ->value('title');
        if($info['hide']==1){
            $info['realName'] = '匿名';
        }else{
            $info['realName'] = Db::name('user')
                ->where('id',$info['create_user_id'])
                ->value('real_name');;
        }
//        $info['statusTxt'] = $info['status']==1?'已处理':"未处理";
        $info['images'] = !empty($info['images'])?explode(',',$info['images']):'';

        $orderMode = 0;
        if($info['order_id'] > 0){
            $orderMode = Db::name('orders')->where('id',$info['order_id'])->value('order_mode');
        }

        $info['statusTxt'] = model('Complain')->formatStatus($info['status'],$info['order_id'],$info['id']);
        $info['order_mode'] = $orderMode;
        $comment = Db::name('comment')
            ->alias('c')
            ->join('user u','u.id = c.user_id')
            ->where('c.from_id',$id)
            ->where('c.type',16)
            ->field('c.id,c.score,c.content,c.create_time,u.real_name,u.head_image')
            ->order('c.id desc')
            ->find();
        $info['comment'] = $comment?$comment:[];
        $this->assign('info',$info);
        return $this->fetch();
    }
    public function tsDetail($id){

        $info = Db::name('complain')
            ->where('id',$id)
            ->find();
        $info['depName'] = Db::name('dep')
            ->where('id',$info['dep_id'])
            ->value('title');
        if($info['hide']==1){
            $info['realName'] = '匿名';
        }else{
            $info['realName'] = Db::name('user')
                ->where('id',$info['create_user_id'])
                ->value('real_name');;
        }
//        $info['statusTxt'] = $info['status']==1?'已处理':"未处理";
        $info['images'] = !empty($info['images'])?explode(',',$info['images']):'';

        $orderMode = 0;
        if($info['order_id'] > 0){
            $orderMode = Db::name('orders')->where('id',$info['order_id'])->value('order_mode');
        }

        $info['statusTxt'] = model('Complain')->formatStatus($info['status'],$info['order_id'],$info['id']);
        $info['order_mode'] = $orderMode;

        $this->assign('info',$info);
        return $this->fetch();
    }
    //派单
    public function send($id) {
        if (request()->isGet()) {
            $this->assign('id', $id);
            $complainInfo = Db::name($this->table)->where('id',$id)->find();
            $this->assign('complain',$complainInfo);
            $order_type = (new \app\common\model\OrderType())->getList();
            $address = (new \app\common\model\Address())->getListByType(1);
            $this->assign('order_type_list', $order_type);
            $this->assign('address_list', $address);
            $order_repair = Db::name('order_repair')
                ->where('order_id', $id)
                ->find();
            $this->assign('order_repair', $order_repair);

            $workType = Db::name('work_type_mode')
                ->where('type',1)
                ->select();
            $config = Db::name('config')
                ->where('name','web_order_transfer_type')
                ->value('value');
            if(empty($config)){
                $workType = [];
            }else{
                $ll = explode('|',$config);
                foreach ($workType as $kk=>$vv){
                    if(!in_array($vv['id'],$ll)){
                        unset($workType[$kk]);
                    }
                }
            }
            foreach ($workType as $k=>$v){
                $this->assign('send_user_num'.$v['id'], model('Orders')->sendUserNum($v['id'], $this->orgId));
                $this->assign('user_list'.$v['id'], (new \app\common\model\WorkTypeMode())->getRolesUserByNum($v['id'], $this->orgId, 1));
                $two_dispatch_roles = model('user')->get_two_dispatch_role($this->orgId, $v['id']);
                $this->assign('dispatch_roles'.$v['id'], $two_dispatch_roles);
            }

            $this->assign('dispatch_type', check_two_dispatch($this->userId));
            $this->assign('two_dispatch_off', two_dispatch_off($this->orgId));
            $this->assign('workType', $workType);
            $address = (new \app\common\model\Address())->getListByType(2);
            $conveyCate = (new \app\common\model\ConveyCate());
            $priority = $conveyCate->priority;
            $order_convey = $conveyCate->getList();
            $order_device = (new \app\common\model\ConveyDevice())->getList();
            $this->assign('address', $address);
            $this->assign('priority', $priority);
            $this->assign('order_convey_type', $order_convey);
            $this->assign('order_device', $order_device);
            $oCid = Db::name('order_convey')
                ->where('order_id',$id)
                ->find();
            $opt = Db::name('order_convey_patient')
                ->where('order_id',$id)
                ->find();

            $this->assign('ocid',$oCid);
            $this->assign('opt',$opt);
            $this->assign('ps',empty($opt)?1:0);
            $auths = [1,2,3,4,15,0];
            if(!is_admin($this->userId)){
                $auth = get_dispatch_auth($this->userId);
                if($auth){
                    $auths = array_intersect($auths,$auth);
                }else{
                    $auths = [];
                }
            }
            $this->assign('auths',$auths);
            return $this->fetch();
        }
        else {
            $data = request()->post();
            $data['org_id'] = $this->orgId;
            $res = model('Complain')->send($id, $this->userId, $data);

            if (!$res) {
                $this->error(model('Complain')->getError());
            }
            $this->success('操作成功');
        }
    }
    //转单
    public function ts_send($id) {
        if (request()->isGet()) {
            $this->assign('id', $id);
            $complainInfo = Db::name($this->table)->where('id',$id)->find();
            $this->assign('complain',$complainInfo);
            $order_type = (new \app\common\model\OrderType())->getList();
            $address = (new \app\common\model\Address())->getListByType(1);
            $this->assign('order_type_list', $order_type);
            $this->assign('address_list', $address);
//            $order_repair = Db::name('order_repair')
//                ->where('order_id', $id)
//                ->find();
            $this->assign('order_repair', []);

            $workType = Db::name('work_type_mode')
                ->where('type',1)
                ->select();
            $config = Db::name('config')
                ->where('name','web_order_transfer_type')
                ->value('value');
            if(empty($config)){
                $workType = [];
            }else{
                $ll = explode('|',$config);
                foreach ($workType as $kk=>$vv){
                    if(!in_array($vv['id'],$ll)){
                        unset($workType[$kk]);
                    }
                }
            }
            foreach ($workType as $k=>$v){
                $this->assign('send_user_num'.$v['id'], model('Orders')->sendUserNum($v['id'], $this->orgId));
                $this->assign('user_list'.$v['id'], (new \app\common\model\WorkTypeMode())->getRolesUserByNum($v['id'], $this->orgId, 1));
                $two_dispatch_roles = model('user')->get_two_dispatch_role($this->orgId, $v['id']);
                $this->assign('dispatch_roles'.$v['id'], $two_dispatch_roles);
            }
            foreach ($workType as $k=>$v){
                if($v['id']!==0){
                    unset($workType[$k]);
                }
            }
            $this->assign('dispatch_type', check_two_dispatch($this->userId));
            $this->assign('two_dispatch_off', two_dispatch_off($this->orgId));
            $this->assign('workType', $workType);
            $address = (new \app\common\model\Address())->getListByType(2);
            $conveyCate = (new \app\common\model\ConveyCate());
            $priority = $conveyCate->priority;
            $order_convey = $conveyCate->getList();
            $order_device = (new \app\common\model\ConveyDevice())->getList();
            $this->assign('address', $address);
            $this->assign('priority', $priority);
            $this->assign('order_convey_type', $order_convey);
            $this->assign('order_device', $order_device);
            $oCid = Db::name('order_convey')
                ->where('order_id',-1)
                ->find();
            $opt = Db::name('order_convey_patient')
                ->where('order_id',-1)
                ->find();


            $this->assign('ocid',$oCid);
            $this->assign('opt',$opt);
            $this->assign('ps',empty($opt)?1:0);
            $auths = [1,2,3,4,15,0];
            if(!is_admin($this->userId)){
                $auth = get_dispatch_auth($this->userId);
                if($auth){
                    $auths = array_intersect($auths,$auth);
                }else{
                    $auths = [];
                }
            }
            $this->assign('auths',$auths);
            return $this->fetch();
        }
        else {
            $data = request()->post();
            $data['org_id'] = $this->orgId;
            $res = model('complain')->zd_send($id, $data,$this->userId);
            if (!$res) {
                $this->error(model('complain')->getError());
            }
            $this->success('操作成功');
        }
    }

    public function summary($id){
        if(request()->isGet()){
            $info = Db::name('complain')
                ->where('id',$id)
                ->find();
            $this->assign('info',$info);
            $this->assign('id',$id);
            return $this->fetch();
        }else{

            $data = array(
                'summary' => input('summary','','trim'),
                'update_time' => date('Y-m-d H:i:s'),
            );
            $res =Db::name('complain')
                ->where(array('id'=>$id))
                ->update($data);
            $res?$this->success('操作成功'):$this->error('操作失败');
        }
    }

    public function export(){
        $meta_title = '投诉订单';
        if (request()->isGet()) {
            $content = input('content','','trim');
            if($content){
                $map[] = ['content','like','%'.$content.'%'];
            }

            $user = input('user','','trim');
            if($user != ''){
                $userIds = Db::name('user')->where('del',0)->where('real_name','like','%'.$user.'%')->column('id');
                $map[] = ['create_user_id','in',$userIds];
            }

            $map[] = ['del','=',0];
            $map[] = ['org_id','=',$this->orgId];

            $st = input('start','','trim');
            if($st !=''){
                $map[] = ['create_time','>=',$st.' 00:00:00'];
            }

            $et = input('end','','trim');
            if($et !=''){
                $map[] = ['create_time','<=',$et.' 23:59:59'];
            }

            $hour = (new Config())->getConfig('org_complain_hour',$this->orgId);
            $hour = $hour>0?$hour:0;
            $endTime = date('Y-m-d H:i:s',time() - $hour*60*60);
//            $type = input('type/d',0);
//            if($hour > 0 && $type == 1){
//                $map[] = ['create_time','<',$endTime];
//                $map[] = ['status','=',0];
//            }
            $from = input('from', '', 'trim');
            if ($from!='') {
                if($from == 1){
                    $map[] = ['order_id','>',0];
                    $map[] = ['bus_type','<>',0];
                    $map[] = ['to_from','=',0];
                }else{
                    $map[] = ['order_id','>',0];
                    $map[] = ['bus_type','<>',0];
                    $map[] = ['to_from','<>',0];
                }
            }
            $map= empty($map) ? true: $map;
            //数据查询
            $lists = db($this->table)->where($map)
               ->order('id','desc')->select();

            foreach ($lists as $k=>$v){
                $lists[$k]['depName'] = Db::name('dep')
                    ->where('id',$v['dep_id'])
                    ->value('title');
//                $lists[$k]['fromName'] =$this->model->from[$v['from']];
                $lists[$k]['fromName'] = '';
                if($v['order_id'] > 0 && $v['bus_type'] != 0){
                    if($v['to_from'] == 0){
                        $lists[$k]['fromName'] = '一键呼叫';
                    }else{
                        $lists[$k]['fromName'] = '隐患';
                    }
                }
                if($v['hide'] == 1){
                    $lists[$k]['realName'] = '匿名';
                }else{
                    $lists[$k]['realName'] = Db::name('user')
                        ->where('id',$v['create_user_id'])
                        ->value('real_name');
                }


                $orderMode = 0;
                if($v['order_id'] > 0){
                    $orderMode = Db::name('orders')->where('id',$v['order_id'])->value('order_mode');
                }

                $lists[$k]['statusTxt'] = model('Complain')->formatStatus($v['status'],$v['order_id'],$v['id']);
                $lists[$k]['order_mode'] = $orderMode;

//                if($v['create_time'] < $endTime){
//                    $lists[$k]['statusTxt'] = $lists[$k]['statusTxt'].'<span style="color:red;">(已超时)</span>';
//                }
                $lists[$k]['jdsc'] = $v['update_time']?getM1($v['update_time'],$v['create_time']):'';
                $lists[$k]['clsc'] = $v['finish_time'] && $v['update_time']?getM1($v['finish_time'],$v['update_time']):'';

            }
            include_once env('root_path').'/extend/phpexcel/Classes/PHPExcel.php';
            //实例化PHPExcel类
            $objPHPExcel = new \PHPExcel();
            //激活当前的sheet表
            $objPHPExcel->setActiveSheetIndex(0);
            //设置表格头(即excel表格的第一行)
            $objPHPExcel->setActiveSheetIndex(0)
                ->setCellValue('A1', '编号')
                ->setCellValue('B1', '时间')
                ->setCellValue('C1', '处理时间')
                ->setCellValue('D1', '完成时间')
                ->setCellValue('E1', '内容')
                ->setCellValue('F1', '部门')
                ->setCellValue('G1', '用户')
                ->setCellValue('H1', '状态')
                ->setCellValue('I1', '来源')
                ->setCellValue('J1', '去向')
                ->setCellValue('K1', '接单反应时长')
                ->setCellValue('L1', '处理时长');
            // 设置表格头水平居中
            $objPHPExcel->setActiveSheetIndex(0)->getStyle('A1')->getAlignment()
                ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            $objPHPExcel->setActiveSheetIndex(0)->getStyle('B1')->getAlignment()
                ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            $objPHPExcel->setActiveSheetIndex(0)->getStyle('C1')->getAlignment()
                ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            $objPHPExcel->setActiveSheetIndex(0)->getStyle('D1')->getAlignment()
                ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            $objPHPExcel->setActiveSheetIndex(0)->getStyle('E1')->getAlignment()
                ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            $objPHPExcel->setActiveSheetIndex(0)->getStyle('F1')->getAlignment()
                ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            $objPHPExcel->setActiveSheetIndex(0)->getStyle('G1')->getAlignment()
                ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            $objPHPExcel->setActiveSheetIndex(0)->getStyle('H1')->getAlignment()
                ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            //设置列水平居中
            $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()
                ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            $objPHPExcel->setActiveSheetIndex(0)->getStyle('B')->getAlignment()
                ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            $objPHPExcel->setActiveSheetIndex(0)->getStyle('C')->getAlignment()
                ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            $objPHPExcel->setActiveSheetIndex(0)->getStyle('D')->getAlignment()
                ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            $objPHPExcel->setActiveSheetIndex(0)->getStyle('E')->getAlignment()
                ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            $objPHPExcel->setActiveSheetIndex(0)->getStyle('F')->getAlignment()
                ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            $objPHPExcel->setActiveSheetIndex(0)->getStyle('G')->getAlignment()
                ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            $objPHPExcel->setActiveSheetIndex(0)->getStyle('H')->getAlignment()
                ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            //设置单元格宽度
            $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(10);
            $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(20);
            $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(20);
            $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('D')->setWidth(20);
            $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('E')->setWidth(20);
            $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('F')->setWidth(50);
            $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('G')->setWidth(20);
            $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('H')->setWidth(20);
            //循环刚取出来的数组,将数据逐一添加到excel表格。
            for ($i = 0; $i < count($lists); $i++) {
                $objPHPExcel->getActiveSheet()->setCellValue('A' . ($i + 2), $lists[$i]['id']);
                $objPHPExcel->getActiveSheet()->setCellValue('B' . ($i + 2), $lists[$i]['create_time']);
                $objPHPExcel->getActiveSheet()->setCellValue('C' . ($i + 2), $lists[$i]['update_time']);
                $objPHPExcel->getActiveSheet()->setCellValue('D' . ($i + 2), $lists[$i]['finish_time']);
                $objPHPExcel->getActiveSheet()->setCellValue('E' . ($i + 2), $lists[$i]['content']);
                $objPHPExcel->getActiveSheet()->setCellValue('F' . ($i + 2), $lists[$i]['depName']);
                $objPHPExcel->getActiveSheet()->setCellValue('G' . ($i + 2), $lists[$i]['realName']);
                $objPHPExcel->getActiveSheet()->setCellValue('H' . ($i + 2), $lists[$i]['statusTxt']);
                if($lists[$i]['from'] > 0){
                    $objPHPExcel->getActiveSheet()->setCellValue('I' . ($i + 2), '投诉');
                }else{
                    $objPHPExcel->getActiveSheet()->setCellValue('I' . ($i + 2), '');
                }
                $objPHPExcel->getActiveSheet()->setCellValue('J' . ($i + 2), $lists[$i]['fromName']);
                $objPHPExcel->getActiveSheet()->setCellValue('K' . ($i + 2), $lists[$i]['jdsc']);
                $objPHPExcel->getActiveSheet()->setCellValue('L' . ($i + 2), $lists[$i]['clsc']);

            }
            //设置保存的Excel表格名称
            $filename = $meta_title.'_' . date('YmdHis', time()) . '.xls';
            //设置当前激活的sheet表格名称
            $objPHPExcel->getActiveSheet()->setTitle($meta_title);
            //设置浏览器窗口下载表格
            ob_end_clean();
            header("Content-Type: application/force-download");
            header("Content-Type: application/octet-stream");
            header("Content-Type: application/download");
            header('Content-Disposition:inline;filename="' . $filename);
            //生成excel文件
            $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
            //下载文件在浏览器窗口
            return $objWriter->save('php://output');
       }
    }
}