| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080 | 
							- <?php
 
- namespace app\admin\controller;
 
- use think\App;
 
- use think\Db;
 
- class RepairStatistics extends Auth
 
- {
 
-     public function addrType(){
 
-         $start = input('start',date('Y-m'));
 
-         $end = input('end',date('Y-m'));
 
-         if($start > $end){
 
-             $this->error('开始时间不能大于结束时间');
 
-         }
 
-         $map[] = ['o.create_yyyymm','>=',date('Ym',strtotime($start))];
 
-         $map[] = ['o.create_yyyymm','<=',date('Ym',strtotime($end))];
 
-         $typeIds = input('typeIds');
 
-         if($typeIds !=''){
 
-             $where[] = ['id','in',$typeIds];
 
-         }
 
-         $mode = [
 
-             ['type'=>1,'title'=>'需求数','value'=>[1]],
 
-             ['type'=>2,'title'=>'已派工','value'=>[4]],
 
-             ['type'=>3,'title'=>'已完成','value'=>[5,6]],
 
-             ['type'=>4,'title'=>'已取消','value'=>[2,3]],
 
-         ];
 
-         $addr = Db::name('address')
 
-             ->field('id,title')
 
-             ->where('org_id',$this->orgId)
 
-             ->where('del',0)
 
-             ->where('enable',1)
 
-             ->where('','exp',Db::raw("FIND_IN_SET(1,types)"))
 
-             ->select();
 
-         $where[] = ['org_id','=',$this->orgId];
 
-         $type = Db::name('order_type')
 
-             ->where($where)
 
-             ->where('parent_id',0)
 
-             ->where('del',0)
 
-             ->where('enable',1)
 
-             ->select();
 
-         $type = $type?$type:[];
 
-         $lists = [];
 
-         foreach ($addr as $k=>$v){
 
-             $a = [
 
-                 'title' => $v['title'],
 
-                 'total' => '',
 
-                 'status' => '',
 
-             ];
 
-             foreach ($type as $key=>$val){
 
-                 $a['type'.$val['id']] = '';
 
-             }
 
-             $lists[] = $a;
 
-             foreach ($mode as $kk=>$vv){
 
-                 $b = [
 
-                     'title' => '',
 
-                     'status' => $vv['title'],
 
-                 ];
 
-                 $total = 0;
 
-                 foreach ($type as $key=>$val){
 
-                     $subTypeId = Db::name('order_type')
 
-                         ->where('parent_id',$val['id'])
 
-                         ->where('del',0)
 
-                         ->where('enable',1)
 
-                         ->where('org_id',$this->orgId)
 
-                         ->column('id');
 
-                     $count  = Db::name('orders')
 
-                         ->alias('o')
 
-                         ->join('order_repair or','or.order_id=o.id')
 
-                         ->where('o.work_type_mode',1)
 
-                         ->where('o.del',0)
 
-                         ->where($map)
 
-                         ->whereIn('o.order_mode',$vv['value'])
 
-                         ->where('or.address_id',$v['id'])
 
-                         ->whereIn('or.type_id',$subTypeId)
 
-                         ->count();
 
-                     $total += $count;
 
-                     $b['type'.$val['id']] = $count;
 
-                 }
 
-                 $b['total'] = $total;
 
-                 $lists[] = $b;
 
-             }
 
-         }
 
-         $this->assign('lists',$lists);
 
-         $this->assign('addr',$addr);
 
-         $this->assign('type',$type);
 
-         $typeList = Db::name('order_type')
 
-             ->where('org_id',$this->orgId)
 
-             ->where('parent_id',0)
 
-             ->where('del',0)
 
-             ->where('enable',1)
 
-             ->select();
 
-         $this->assign('typeList',$typeList);
 
-         $this->assign('start',$start);
 
-         $this->assign('end',$end);
 
-         $this->assign('typeIds',$typeIds);
 
-         $this->assign('typeIds2',!empty($typeIds)?explode(',',$typeIds):[]);
 
-         return  $this->fetch();
 
-     }
 
-     public function addrTypeExport(){
 
-         $start = input('start',date('Y-m'));
 
-         $end = input('end',date('Y-m'));
 
-         if($start > $end){
 
-             $this->error('开始时间不能大于结束时间');
 
-         }
 
-         $map[] = ['o.create_yyyymm','>=',date('Ym',strtotime($start))];
 
-         $map[] = ['o.create_yyyymm','<=',date('Ym',strtotime($end))];
 
-         $typeIds = input('typeIds','','trim');
 
-         if($typeIds !=''){
 
-             $where[] = ['id','in',$typeIds];
 
-         }
 
-         $mode = [
 
-             ['type'=>1,'title'=>'需求数','value'=>[1]],
 
-             ['type'=>2,'title'=>'已派工','value'=>[4]],
 
-             ['type'=>3,'title'=>'已完成','value'=>[5,6]],
 
-             ['type'=>4,'title'=>'已取消','value'=>[2,3]],
 
-         ];
 
-         $addr = Db::name('address')
 
-             ->field('id,title')
 
-             ->where('org_id',$this->orgId)
 
-             ->where('del',0)
 
-             ->where('enable',1)
 
-             ->where('','exp',Db::raw("FIND_IN_SET(1,types)"))
 
-             ->select();
 
-         $where[] = ['org_id','=',$this->orgId];
 
-         $type = Db::name('order_type')
 
-             ->where($where)
 
-             ->where('parent_id',0)
 
-             ->where('del',0)
 
-             ->where('enable',1)
 
-             ->select();
 
-         $type = $type?$type:[];
 
-         $lists = [];
 
-         foreach ($addr as $k=>$v){
 
-             $a = [
 
-                 'title' => $v['title'],
 
-                 'total' => '',
 
-             ];
 
-             foreach ($type as $key=>$val){
 
-                 $a['type'.$val['id']] = '';
 
-             }
 
-             $lists[] = $a;
 
-             foreach ($mode as $kk=>$vv){
 
-                 $b = [
 
-                     'title' => $vv['title'],
 
-                 ];
 
-                 $total = 0;
 
-                 foreach ($type as $key=>$val){
 
-                     $subTypeId = Db::name('order_type')
 
-                         ->where('parent_id',$val['id'])
 
-                         ->where('del',0)
 
-                         ->where('enable',1)
 
-                         ->where('org_id',$this->orgId)
 
-                         ->column('id');
 
-                     $count  = Db::name('orders')
 
-                         ->alias('o')
 
-                         ->join('order_repair or','or.order_id=o.id')
 
-                         ->where('o.work_type_mode',1)
 
-                         ->where('o.del',0)
 
-                         ->where($map)
 
-                         ->whereIn('o.order_mode',$vv['value'])
 
-                         ->where('or.address_id',$v['id'])
 
-                         ->whereIn('or.type_id',$subTypeId)
 
-                         ->count();
 
-                     $total += $count;
 
-                     $b['type'.$val['id']] = $count;
 
-                 }
 
-                 $b['total'] = $total;
 
-                 $lists[] = $b;
 
-             }
 
-         }
 
-         include_once env('root_path').'/extend/phpexcel/Classes/PHPExcel.php';
 
-         //实例化PHPExcel类
 
-         $objPHPExcel =new \PHPExcel();
 
-         //激活当前的sheet表
 
-         $objPHPExcel->setActiveSheetIndex(0);
 
-         //设置表格头(即excel表格的第一行)
 
-         $sheet = $objPHPExcel->setActiveSheetIndex(0);
 
-         $arr = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T');
 
-         foreach ($arr as $k=>$v) {
 
-             $objPHPExcel->getActiveSheet()->getStyle($v)->getAlignment()->setWrapText(false);//换行
 
-             $objPHPExcel->getActiveSheet()->getStyle($v.'1')->getFont()->setBold(true);
 
-             $objPHPExcel->getActiveSheet()->getStyle($v.'1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-             $objPHPExcel->getActiveSheet()->getStyle($v.'1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
 
-             $objPHPExcel->getActiveSheet()->getStyle($v)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-             $objPHPExcel->getActiveSheet()->getStyle($v)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
 
-             $objPHPExcel->getActiveSheet()->getColumnDimension($v)->setWidth(18);
 
-         }
 
-         $sheet->setCellValueByColumnAndRow(0, 1, '地点');
 
-         if($type){
 
-             foreach ($type as $k=>$v){
 
-                 $sheet->setCellValueByColumnAndRow($k+1, 1, $v['title']);
 
-             }
 
-         }
 
-         $sheet->setCellValueByColumnAndRow(count($type)+1, 1, '总数');
 
-         foreach ($lists as $k=>$v) {
 
-             $sheet->setCellValueByColumnAndRow(0, $k + 2, $v['title']);
 
-             foreach ($type as $kk=>$vv){
 
-                 $sheet->setCellValueByColumnAndRow($kk+1, $k + 2, $v['type'.$vv['id']]);
 
-             }
 
-             $sheet->setCellValueByColumnAndRow(count($type)+1, $k + 2, $v['total']);
 
-         }
 
-         //设置保存的Excel表格名称
 
-         $filename = '报修地点报表_' . date('YmdHis', time()) . '.xls';
 
-         //设置当前激活的sheet表格名称
 
-         $objPHPExcel->getActiveSheet()->setTitle('报修地点报表');
 
-         //设置浏览器窗口下载表格
 
-         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');
 
-     }
 
-     public function todoXyTime(){
 
-         $list = Db::name('todo')
 
-             ->where('work_type_mode',1)
 
-             ->where('del',0)
 
-             ->where('todo_mode','in',[2,3])
 
-             ->where('org_id',$this->orgId)
 
-             ->order('id desc')
 
-             ->select();
 
-         $count = Db::name('todo')
 
-             ->where('work_type_mode',1)
 
-             ->where('del',0)
 
-             ->where('todo_mode','in',[2,3])
 
-             ->where('org_id',$this->orgId)
 
-             ->order('id desc')
 
-             ->sum('xy_time');
 
-         foreach ($list as $k=>$v){
 
-             $subType  = Db::name('order_type')
 
-                 ->alias('ot')
 
-                 ->join('order_repair or','or.type_id=ot.id')
 
-                 ->where('or.order_id',$v['order_id'])
 
-                 ->value('type_id');
 
-             $parentId = Db::name('order_type')->where('id',$subType)->value('parent_id');
 
-             $list[$k]['type_title'] = Db::name('order_type')->where('id',$parentId)->value('title');
 
-             $list[$k]['content'] = Db::name('orders')->where('id',$v['order_id'])->value('content');
 
-             $list[$k]['dep'] = Db::name('orders')->alias('o')->join('dep d','d.id=o.dep_id')->where('o.id',$v['order_id'])->value('d.title');
 
-             $list[$k]['user_name'] = Db::name('user')->where('id',$v['to_user_id'])->value('real_name');
 
-             $list[$k]['xy_time'] = round($v['xy_time']/60,1);
 
-         }
 
-         $this->assign('count',round($count/60,1));
 
-         $this->assign('list',$list);
 
-         return  $this->fetch();
 
-     }
 
-     public function xyTimeEcharts(){
 
-         $curTime = date('Y-m-d H:i:s');
 
-         $time = [
 
-             ['title'=>'24小时内','sTime'=>date('Y-m-d H:i:s',strtotime($curTime)-3600*24),'eTime'=>$curTime,'type'=>1],
 
-             ['title'=>'24~48小时','sTime'=>date('Y-m-d H:i:s',strtotime($curTime)-3600*48),'eTime'=>date('Y-m-d H:i:s',strtotime($curTime)-3600*24),'type'=>1],
 
-             ['title'=>'超过72小时','sTime'=>'','eTime'=>date('Y-m-d H:i:s',strtotime($curTime)-3600*72),'type'=>2],
 
-             ['title'=>'未响应','sTime'=>'','eTime'=>'','type'=>3],
 
-             ['title'=>'总数','sTime'=>'','eTime'=>'','type'=>4],
 
-         ];
 
-         $list = [];
 
-         foreach ($time as $k=>$v){
 
-             if($v['type'] == 1){
 
-                 $count = Db::name('todo')
 
-                     ->where('org_id',$this->orgId)
 
-                     ->where('work_type_mode',1)
 
-                     ->where('del',0)
 
-                     ->where('create_time','>',$v['sTime'])
 
-                     ->where('create_time','<=',$v['eTime'])
 
-                     ->where('todo_mode','in',[2,3])
 
-                     ->count();
 
-             }elseif ($v['type'] == 2){
 
-                 $count = Db::name('todo')
 
-                     ->where('org_id',$this->orgId)
 
-                     ->where('work_type_mode',1)
 
-                     ->where('del',0)
 
-                     ->where('create_time','<',$v['eTime'])
 
-                     ->where('todo_mode','in',[2,3])
 
-                     ->count();
 
-             }elseif ($v['type'] == 3){
 
-                 $count = Db::name('todo')
 
-                     ->where('org_id',$this->orgId)
 
-                     ->where('work_type_mode',1)
 
-                     ->where('del',0)
 
-                     ->where('todo_mode',1)
 
-                     ->count();
 
-             }elseif($v['type'] == 4){
 
-                 $count = Db::name('todo')
 
-                     ->where('org_id',$this->orgId)
 
-                     ->where('work_type_mode',1)
 
-                     ->where('del',0)
 
-                     ->count();
 
-             }
 
-             $list[$k]['title'] = $v['title'];
 
-             $list[$k]['value'] = $count;
 
-         }
 
-         $data = [
 
-             'title'=>array_column($time,'title'),
 
-             'list'=>$list,
 
-         ];
 
-         $this->success('','',$data);
 
-     }
 
-     public function xyTimeExport(){
 
-         $list = Db::name('todo')
 
-             ->where('work_type_mode',1)
 
-             ->where('del',0)
 
-             ->where('todo_mode','in',[2,3])
 
-             ->where('org_id',$this->orgId)
 
-             ->order('id desc')
 
-             ->select();
 
-         $count = Db::name('todo')
 
-             ->where('work_type_mode',1)
 
-             ->where('del',0)
 
-             ->where('todo_mode','in',[2,3])
 
-             ->where('org_id',$this->orgId)
 
-             ->order('id desc')
 
-             ->sum('xy_time');
 
-         foreach ($list as $k=>$v){
 
-             $subType  = Db::name('order_type')
 
-                 ->alias('ot')
 
-                 ->join('order_repair or','or.type_id=ot.id')
 
-                 ->where('or.order_id',$v['order_id'])
 
-                 ->value('type_id');
 
-             $parentId = Db::name('order_type')->where('id',$subType)->value('parent_id');
 
-             $list[$k]['type_title'] = Db::name('order_type')->where('id',$parentId)->value('title');
 
-             $list[$k]['content'] = Db::name('orders')->where('id',$v['order_id'])->value('content');
 
-             $list[$k]['dep'] = Db::name('orders')->alias('o')->join('dep d','d.id=o.dep_id')->where('o.id',$v['order_id'])->value('d.title');
 
-             $list[$k]['user_name'] = Db::name('user')->where('id',$v['to_user_id'])->value('real_name');
 
-             $list[$k]['xy_time'] = round($v['xy_time']/60,1);
 
-         }
 
-         include_once env('root_path').'/extend/phpexcel/Classes/PHPExcel.php';
 
-         //实例化PHPExcel类
 
-         $objPHPExcel =new \PHPExcel();
 
-         //激活当前的sheet表
 
-         $objPHPExcel->setActiveSheetIndex(0);
 
-         //设置表格头(即excel表格的第一行)
 
-         $sheet = $objPHPExcel->setActiveSheetIndex(0);
 
-         $arr = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N');
 
-         foreach ($arr as $k=>$v) {
 
-             $objPHPExcel->getActiveSheet()->getStyle($v)->getAlignment()->setWrapText(false);//换行
 
-             $objPHPExcel->getActiveSheet()->getStyle($v.'1')->getFont()->setBold(true);
 
-             $objPHPExcel->getActiveSheet()->getStyle($v.'1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-             $objPHPExcel->getActiveSheet()->getStyle($v.'1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
 
-             $objPHPExcel->getActiveSheet()->getStyle($v)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-             $objPHPExcel->getActiveSheet()->getStyle($v)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
 
-             $objPHPExcel->getActiveSheet()->getColumnDimension($v)->setWidth(18);
 
-         }
 
-         $sheet->setCellValueByColumnAndRow(0, 1, '类型');
 
-         $sheet->setCellValueByColumnAndRow(1, 1, '部门');
 
-         $sheet->setCellValueByColumnAndRow(2, 1, '员工');
 
-         $sheet->setCellValueByColumnAndRow(3, 1, '需求描述');
 
-         $sheet->setCellValueByColumnAndRow(4, 1, '状态');
 
-         $sheet->setCellValueByColumnAndRow(5, 1, '响应时间');
 
-         $sheet->setCellValueByColumnAndRow(6, 1, '合计');
 
-         foreach ($list as $k=>$v) {
 
-             $sheet->setCellValueByColumnAndRow(0, $k + 2, $v['type_title']);
 
-             $sheet->setCellValueByColumnAndRow(1, $k + 2, $v['dep']);
 
-             $sheet->setCellValueByColumnAndRow(2, $k + 2, $v['user_name']);
 
-             $sheet->setCellValueByColumnAndRow(3, $k + 2, $v['content']);
 
-             if($v['todo_mode'] == 2){
 
-                 $sheet->setCellValueByColumnAndRow(4, $k + 2, '进行中');
 
-             }
 
-             $sheet->setCellValueByColumnAndRow(5, $k + 2, $v['xy_time']);
 
-         }
 
-         $sheet->setCellValueByColumnAndRow(6, $k + 2, round($count/60,1));
 
-         //设置保存的Excel表格名称
 
-         $filename = '报修工单响应时间_' . date('YmdHis', time()) . '.xls';
 
-         //设置当前激活的sheet表格名称
 
-         $objPHPExcel->getActiveSheet()->setTitle('报修工单响应时间');
 
-         //设置浏览器窗口下载表格
 
-         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');
 
-     }
 
-     public function addrWorkHour(){
 
-         $start = input('start',date('Y-m'));
 
-         $end = input('end',date('Y-m'));
 
-         if($start > $end){
 
-             $this->error('开始时间不能大于结束时间');
 
-         }
 
-         $map[] = ['t.create_yyyymm','>=',date('Ym',strtotime($start))];
 
-         $map[] = ['t.create_yyyymm','<=',date('Ym',strtotime($end))];
 
-         $addrIds= input('addrIds','','trim');
 
-         if($addrIds !=''){
 
-             $where[] = ['id','in',$addrIds];
 
-         }
 
-         $where[] = ['org_id','=',$this->orgId];
 
-         $addr = Db::name('address')
 
-             ->field('id,title')
 
-             ->where($where)
 
-             ->where('org_id',$this->orgId)
 
-             ->where('del',0)
 
-             ->where('enable',1)
 
-             ->where('','exp',Db::raw("FIND_IN_SET(1,types)"))
 
-             ->select();
 
-         $addr = $addr?$addr:[];
 
-         $list = [];
 
-         $total = $total2 = 0;
 
-         foreach ($addr as $k=>$v){
 
-             $count = Db::name('todo')
 
-                 ->alias('t')
 
-                 ->join('order_repair or','or.order_id=t.order_id')
 
-                 ->where('or.address_id',$v['id'])
 
-                 ->where($map)
 
-                 ->where('t.del',0)
 
-                 ->where('t.work_type_mode',1)
 
-                 ->where('t.org_id',$this->orgId)
 
-                 ->where('t.todo_mode',3)
 
-                 ->count();
 
-             $total +=$count;
 
-             $count2 = Db::name('todo')
 
-                 ->alias('t')
 
-                 ->join('order_repair or','or.order_id=t.order_id')
 
-                 ->where('or.address_id',$v['id'])
 
-                 ->where($map)
 
-                 ->where('t.del',0)
 
-                 ->where('t.work_type_mode',1)
 
-                 ->where('t.org_id',$this->orgId)
 
-                 ->where('t.todo_mode',3)
 
-                 ->sum('wc_time');
 
-             $total2 +=$count2;
 
-             $list[$k]['title'] = $v['title'];
 
-             $list[$k]['count'] = $count;
 
-             $list[$k]['count2'] = round($count2/60,1);
 
-         }
 
-         $this->assign('list',$list);
 
-         $this->assign('total',$total);
 
-         $this->assign('total2',round($total2/60,1));
 
-         $addrList = Db::name('address')
 
-             ->field('id,title')
 
-             ->where('org_id',$this->orgId)
 
-             ->where('del',0)
 
-             ->where('enable',1)
 
-             ->where('','exp',Db::raw("FIND_IN_SET(1,types)"))
 
-             ->select();
 
-         $this->assign('addrList',$addrList);
 
-         $this->assign('start',$start);
 
-         $this->assign('end',$end);
 
-         $this->assign('addrIds',$addrIds);
 
-         $this->assign('addrIds2',!empty($addrIds)?explode(',',$addrIds):[]);
 
-         return  $this->fetch();
 
-     }
 
-     public function addrWorkHourExport(){
 
-         $start = input('start',date('Y-m'));
 
-         $end = input('end',date('Y-m'));
 
-         if($start > $end){
 
-             $this->error('开始时间不能大于结束时间');
 
-         }
 
-         $map[] = ['t.create_yyyymm','>=',date('Ym',strtotime($start))];
 
-         $map[] = ['t.create_yyyymm','<=',date('Ym',strtotime($end))];
 
-         $addrIds= input('addrIds','','trim');
 
-         if($addrIds !=''){
 
-             $where[] = ['id','in',$addrIds];
 
-         }
 
-         $where[] = ['org_id','=',$this->orgId];
 
-         $addr = Db::name('address')
 
-             ->field('id,title')
 
-             ->where($where)
 
-             ->where('org_id',$this->orgId)
 
-             ->where('del',0)
 
-             ->where('enable',1)
 
-             ->where('','exp',Db::raw("FIND_IN_SET(1,types)"))
 
-             ->select();
 
-         $addr = $addr?$addr:[];
 
-         $list = [];
 
-         $total = $total2 = 0;
 
-         foreach ($addr as $k=>$v){
 
-             $count = Db::name('todo')
 
-                 ->alias('t')
 
-                 ->join('order_repair or','or.order_id=t.order_id')
 
-                 ->where('or.address_id',$v['id'])
 
-                 ->where($map)
 
-                 ->where('t.del',0)
 
-                 ->where('t.work_type_mode',1)
 
-                 ->where('t.org_id',$this->orgId)
 
-                 ->where('t.todo_mode',3)
 
-                 ->count();
 
-             $total +=$count;
 
-             $count2 = Db::name('todo')
 
-                 ->alias('t')
 
-                 ->join('order_repair or','or.order_id=t.order_id')
 
-                 ->where('or.address_id',$v['id'])
 
-                 ->where($map)
 
-                 ->where('t.del',0)
 
-                 ->where('t.work_type_mode',1)
 
-                 ->where('t.org_id',$this->orgId)
 
-                 ->where('t.todo_mode',3)
 
-                 ->sum('wc_time');
 
-             $total2 +=$count2;
 
-             $list[$k]['title'] = $v['title'];
 
-             $list[$k]['count'] = $count;
 
-             $list[$k]['count2'] = round($count2/60,1);
 
-         }
 
-         include_once env('root_path').'/extend/phpexcel/Classes/PHPExcel.php';
 
-         //实例化PHPExcel类
 
-         $objPHPExcel =new \PHPExcel();
 
-         //激活当前的sheet表
 
-         $objPHPExcel->setActiveSheetIndex(0);
 
-         //设置表格头(即excel表格的第一行)
 
-         $sheet = $objPHPExcel->setActiveSheetIndex(0);
 
-         $arr = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N');
 
-         foreach ($arr as $k=>$v) {
 
-             $objPHPExcel->getActiveSheet()->getStyle($v)->getAlignment()->setWrapText(false);//换行
 
-             $objPHPExcel->getActiveSheet()->getStyle($v.'1')->getFont()->setBold(true);
 
-             $objPHPExcel->getActiveSheet()->getStyle($v.'1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-             $objPHPExcel->getActiveSheet()->getStyle($v.'1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
 
-             $objPHPExcel->getActiveSheet()->getStyle($v)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-             $objPHPExcel->getActiveSheet()->getStyle($v)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
 
-             $objPHPExcel->getActiveSheet()->getColumnDimension($v)->setWidth(18);
 
-         }
 
-         $sheet->setCellValueByColumnAndRow(0, 1, '地点');
 
-         $sheet->setCellValueByColumnAndRow(1, 1, '工单数');
 
-         $sheet->setCellValueByColumnAndRow(2, 1, '所需工时');
 
-         foreach ($list as $k=>$v) {
 
-             $sheet->setCellValueByColumnAndRow(0, $k + 2, $v['title']);
 
-             $sheet->setCellValueByColumnAndRow(1, $k + 2, $v['count']);
 
-             $sheet->setCellValueByColumnAndRow(2, $k + 2, $v['count2']);
 
-         }
 
-         $sheet->setCellValueByColumnAndRow(0, count($list)+3, '合计');
 
-         $sheet->setCellValueByColumnAndRow(1, count($list)+3, '总工单数');
 
-         $sheet->setCellValueByColumnAndRow(2, count($list)+3, $total);
 
-         $sheet->setCellValueByColumnAndRow(1, count($list)+4, '总工时');
 
-         $sheet->setCellValueByColumnAndRow(2, count($list)+4, round($total2/60,1));
 
-         $sheet->setCellValueByColumnAndRow(1, count($list)+5, '平均工时');
 
-         if($total > 0){
 
-             $sheet->setCellValueByColumnAndRow(2, count($list)+5, round($total2/60/$total,1));
 
-         }else{
 
-             $sheet->setCellValueByColumnAndRow(2, count($list)+5, 0);
 
-         }
 
-         //设置保存的Excel表格名称
 
-         $filename = '报修地点工时报表_' . date('YmdHis', time()) . '.xls';
 
-         //设置当前激活的sheet表格名称
 
-         $objPHPExcel->getActiveSheet()->setTitle('报修地点工时报表');
 
-         //设置浏览器窗口下载表格
 
-         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');
 
-     }
 
-     public function typeWorkHour(){
 
-         $start = input('start',date('Y-m'));
 
-         $end = input('end',date('Y-m'));
 
-         if($start > $end){
 
-             $this->error('开始时间不能大于结束时间');
 
-         }
 
-         $map[] = ['t.create_yyyymm','>=',date('Ym',strtotime($start))];
 
-         $map[] = ['t.create_yyyymm','<=',date('Ym',strtotime($end))];
 
-         $typeIds = input('typeIds');
 
-         if($typeIds !=''){
 
-             $where[] = ['id','in',$typeIds];
 
-         }
 
-         $addr = Db::name('address')
 
-             ->field('id,title')
 
-             ->where('org_id',$this->orgId)
 
-             ->where('del',0)
 
-             ->where('enable',1)
 
-             ->where('','exp',Db::raw("FIND_IN_SET(1,types)"))
 
-             ->select();
 
-         $where[] = ['org_id','=',$this->orgId];
 
-         $type = Db::name('order_type')
 
-             ->where($where)
 
-             ->where('parent_id',0)
 
-             ->where('del',0)
 
-             ->where('enable',1)
 
-             ->select();
 
-         $type = $type?$type:[];
 
-         $newType = [];
 
-         foreach ($type as $k=>$v){
 
-             $a = [
 
-                 'title'=>$v['title'],
 
-                 'id'=>$v['id'],
 
-                 'type'=>1
 
-             ];
 
-             $newType[]= $a;
 
-             $b= [
 
-                 'title'=>$v['title'].'工时',
 
-                 'id'=>$v['id'],
 
-                 'type'=>2
 
-             ];
 
-             $newType[]= $b;
 
-         }
 
-         $this->assign('newType',$newType);
 
-         $lists = [];
 
-         $total = $total2 = 0 ;
 
-         foreach ($addr as $k=>$v){
 
-             $a = [
 
-                 'title' => $v['title'],
 
-             ];
 
-             foreach ($newType as $key=>$val){
 
-                 $subTypeId = Db::name('order_type')
 
-                     ->where('parent_id',$val['id'])
 
-                     ->where('del',0)
 
-                     ->where('enable',1)
 
-                     ->where('org_id',$this->orgId)
 
-                     ->column('id');
 
-                 if($val['type']==1){
 
-                     $count  = Db::name('todo')
 
-                         ->alias('t')
 
-                         ->join('order_repair or','or.order_id=t.order_id')
 
-                         ->where('t.work_type_mode',1)
 
-                         ->where('t.del',0)
 
-                         ->where($map)
 
-                         ->where('t.todo_mode',3)
 
-                         ->where('or.address_id',$v['id'])
 
-                         ->whereIn('or.type_id',$subTypeId)
 
-                         ->count();
 
-                     $total +=$count;
 
-                 }elseif ($val['type']==2){
 
-                     $wx_time  = Db::name('todo')
 
-                         ->alias('t')
 
-                         ->join('order_repair or','or.order_id=t.order_id')
 
-                         ->where('t.work_type_mode',1)
 
-                         ->where('t.del',0)
 
-                         ->where($map)
 
-                         ->where('t.todo_mode',3)
 
-                         ->where('or.address_id',$v['id'])
 
-                         ->whereIn('or.type_id',$subTypeId)
 
-                         ->sum('wc_time');
 
-                     $count = round($wx_time/60,1);
 
-                     $total2 +=$count;
 
-                 }
 
-                 $a['type'.$key] = $count;
 
-             }
 
-             $lists[] = $a;
 
-         }
 
-         $this->assign('lists',$lists);
 
-         $this->assign('total',$total);
 
-         $this->assign('total2',$total2);
 
-         $this->assign('addr',$addr);
 
-         $this->assign('type',$type);
 
-         $typeList = Db::name('order_type')
 
-             ->where('org_id',$this->orgId)
 
-             ->where('parent_id',0)
 
-             ->where('del',0)
 
-             ->where('enable',1)
 
-             ->select();
 
-         $this->assign('typeList',$typeList);
 
-         $this->assign('start',$start);
 
-         $this->assign('end',$end);
 
-         $this->assign('typeIds',$typeIds);
 
-         $this->assign('typeIds2',!empty($typeIds)?explode(',',$typeIds):[]);
 
-         return  $this->fetch();
 
-     }
 
-     public function typeWorkHourExport(){
 
-         $start = input('start',date('Y-m'));
 
-         $end = input('end',date('Y-m'));
 
-         if($start > $end){
 
-             $this->error('开始时间不能大于结束时间');
 
-         }
 
-         $map[] = ['t.create_yyyymm','>=',date('Ym',strtotime($start))];
 
-         $map[] = ['t.create_yyyymm','<=',date('Ym',strtotime($end))];
 
-         $typeIds = input('typeIds');
 
-         if($typeIds !=''){
 
-             $where[] = ['id','in',$typeIds];
 
-         }
 
-         $addr = Db::name('address')
 
-             ->field('id,title')
 
-             ->where('org_id',$this->orgId)
 
-             ->where('del',0)
 
-             ->where('enable',1)
 
-             ->where('','exp',Db::raw("FIND_IN_SET(1,types)"))
 
-             ->select();
 
-         $where[] = ['org_id','=',$this->orgId];
 
-         $type = Db::name('order_type')
 
-             ->where($where)
 
-             ->where('parent_id',0)
 
-             ->where('del',0)
 
-             ->where('enable',1)
 
-             ->select();
 
-         $type = $type?$type:[];
 
-         $newType = [];
 
-         foreach ($type as $k=>$v){
 
-             $a = [
 
-                 'title'=>$v['title'],
 
-                 'id'=>$v['id'],
 
-                 'type'=>1
 
-             ];
 
-             $newType[]= $a;
 
-             $b= [
 
-                 'title'=>$v['title'].'工时',
 
-                 'id'=>$v['id'],
 
-                 'type'=>2
 
-             ];
 
-             $newType[]= $b;
 
-         }
 
-         $this->assign('newType',$newType);
 
-         $lists = [];
 
-         $total = $total2 = 0 ;
 
-         foreach ($addr as $k=>$v){
 
-             $a = [
 
-                 'title' => $v['title'],
 
-             ];
 
-             foreach ($newType as $key=>$val){
 
-                 $subTypeId = Db::name('order_type')
 
-                     ->where('parent_id',$val['id'])
 
-                     ->where('del',0)
 
-                     ->where('enable',1)
 
-                     ->where('org_id',$this->orgId)
 
-                     ->column('id');
 
-                 if($val['type']==1){
 
-                     $count  = Db::name('todo')
 
-                         ->alias('t')
 
-                         ->join('order_repair or','or.order_id=t.order_id')
 
-                         ->where('t.work_type_mode',1)
 
-                         ->where('t.del',0)
 
-                         ->where($map)
 
-                         ->where('t.todo_mode',3)
 
-                         ->where('or.address_id',$v['id'])
 
-                         ->whereIn('or.type_id',$subTypeId)
 
-                         ->count();
 
-                     $total +=$count;
 
-                 }elseif ($val['type']==2){
 
-                     $wx_time  = Db::name('todo')
 
-                         ->alias('t')
 
-                         ->join('order_repair or','or.order_id=t.order_id')
 
-                         ->where('t.work_type_mode',1)
 
-                         ->where('t.del',0)
 
-                         ->where($map)
 
-                         ->where('t.todo_mode',3)
 
-                         ->where('or.address_id',$v['id'])
 
-                         ->whereIn('or.type_id',$subTypeId)
 
-                         ->sum('wc_time');
 
-                     $count = round($wx_time/60,1);
 
-                     $total2 +=$count;
 
-                 }
 
-                 $a['type'.$key] = $count;
 
-             }
 
-             $lists[] = $a;
 
-         }
 
-         include_once env('root_path').'/extend/phpexcel/Classes/PHPExcel.php';
 
-         //实例化PHPExcel类
 
-         $objPHPExcel =new \PHPExcel();
 
-         //激活当前的sheet表
 
-         $objPHPExcel->setActiveSheetIndex(0);
 
-         //设置表格头(即excel表格的第一行)
 
-         $sheet = $objPHPExcel->setActiveSheetIndex(0);
 
-         $arr = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T');
 
-         foreach ($arr as $k=>$v) {
 
-             $objPHPExcel->getActiveSheet()->getStyle($v)->getAlignment()->setWrapText(false);//换行
 
-             $objPHPExcel->getActiveSheet()->getStyle($v.'1')->getFont()->setBold(true);
 
-             $objPHPExcel->getActiveSheet()->getStyle($v.'1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-             $objPHPExcel->getActiveSheet()->getStyle($v.'1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
 
-             $objPHPExcel->getActiveSheet()->getStyle($v)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-             $objPHPExcel->getActiveSheet()->getStyle($v)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
 
-             $objPHPExcel->getActiveSheet()->getColumnDimension($v)->setWidth(18);
 
-         }
 
-         $sheet->setCellValueByColumnAndRow(0, 1, '地点');
 
-         foreach ($newType as $k=>$v){
 
-             $sheet->setCellValueByColumnAndRow($k+1, 1, $v['title']);
 
-         }
 
-         foreach ($lists as $k=>$v) {
 
-             $sheet->setCellValueByColumnAndRow(0, $k + 2, $v['title']);
 
-             foreach ($newType as $kk=>$vv){
 
-                 $sheet->setCellValueByColumnAndRow($kk+1, $k + 2, $v['type'.$kk]);
 
-             }
 
-         }
 
-         $sheet->setCellValueByColumnAndRow(0, count($lists)+3, '合计');
 
-         $sheet->setCellValueByColumnAndRow(1, count($lists)+3, '总工单数');
 
-         $sheet->setCellValueByColumnAndRow(2, count($lists)+3, $total);
 
-         $sheet->setCellValueByColumnAndRow(1, count($lists)+4, '总工时');
 
-         $sheet->setCellValueByColumnAndRow(2, count($lists)+4, $total2);
 
-         $sheet->setCellValueByColumnAndRow(1, count($lists)+5, '平均工时');
 
-         if($total > 0){
 
-             $sheet->setCellValueByColumnAndRow(2, count($lists)+5, $total2/$total);
 
-         }else{
 
-             $sheet->setCellValueByColumnAndRow(2, count($lists)+5, 0);
 
-         }
 
-         //设置保存的Excel表格名称
 
-         $filename = '报修类型工时报表_' . date('YmdHis', time()) . '.xls';
 
-         //设置当前激活的sheet表格名称
 
-         $objPHPExcel->getActiveSheet()->setTitle('报修类型工时报表');
 
-         //设置浏览器窗口下载表格
 
-         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');
 
-     }
 
-     public function consumables(){
 
-         $month = input('month',date('Y-m'));
 
- //        $curYear = date('Y',strtotime($month));
 
- //        $curMonth = date('m',strtotime($month));
 
-         $map[] = ['create_yyyymm','=',date('Ym',strtotime($month))];
 
-         $goodsIds = input('goodsIds');
 
-         if($goodsIds !=''){
 
-             $where[] = ['id','in',$goodsIds];
 
-         }
 
-         $where[] = ['org_id','=',$this->orgId];
 
-         $where[] = ['del','=',0];
 
-         $where[] = ['enable','=',1];
 
-         $mate = Db::name('mate_goods')
 
-             ->field('id,title')
 
-             ->where($where)
 
-             ->select();
 
-         $this->assign('mate',$mate);
 
-         //获取某年某个月的总天数
 
- //        $t =  cal_days_in_month(CAL_GREGORIAN,$curMonth,$curYear);
 
-         $t = date('t',strtotime($month));
 
-         $sDay = strtotime($month.'-01');
 
-         $arr = [];
 
-         for ($i = 0;$i<$t;$i++){
 
-             $arr[$i]['date'] = date('m-d',$sDay+$i*86400);
 
-             $arr[$i]['ymd'] = date('Y-m-d',$sDay+$i*86400);
 
-         }
 
-         $lists = [];
 
-         foreach ($arr as $k=>$v){
 
-             $a = [
 
-                 'title' => $v['date'],
 
-             ];
 
-             foreach ($mate as $key=>$val){
 
-                 $count = Db::name('todo_mate_item')
 
-                     ->where('items_id',$val['id'])
 
-                     ->where('create_time','>=',$v['ymd'].' 00:00:00')
 
-                     ->where('create_time','<=',$v['ymd'].' 23:59:59')
 
-                     ->sum('total');
 
-                 $a['type'.$val['id']] = $count;
 
-             }
 
-             $lists[] = $a;
 
-         }
 
-         $subtotal = []; $total = 0 ;
 
-         foreach ($mate as $k=>$v){
 
-             $c = Db::name('todo_mate_item')
 
-                 ->where('items_id',$v['id'])
 
-                 ->where('create_time','>=',$month.'-01 00:00:00')
 
-                 ->where('create_time','<=',$month.'-31 23:59:59')
 
-                 ->sum('total');
 
-             $total +=$c;
 
-             $subtotal[$k] = $c;
 
-         }
 
-         $this->assign('lists',$lists);
 
-         $this->assign('subtotal',$subtotal);
 
-         $this->assign('total',$total);
 
-         $mateGoods = Db::name('mate_goods')
 
-             ->field('id,title')
 
-             ->where('org_id',$this->orgId)
 
-             ->where('del',0)
 
-             ->where('enable',1)
 
-             ->select();
 
-         $this->assign('mateGoods',$mateGoods);
 
-         $this->assign('month',$month);
 
-         $this->assign('goodsIds',$goodsIds);
 
-         $this->assign('goodsIds2',!empty($goodsIds)?explode(',',$goodsIds):[]);
 
-         return  $this->fetch();
 
-     }
 
-     public function consumablesExport(){
 
-         $month = input('month',date('Y-m'));
 
- //        $curYear = date('Y',strtotime($month));
 
- //        $curMonth = date('m',strtotime($month));
 
-         $map[] = ['create_yyyymm','=',date('Ym',strtotime($month))];
 
-         $goodsIds = input('goodsIds');
 
-         if($goodsIds !=''){
 
-             $where[] = ['id','in',$goodsIds];
 
-         }
 
-         $where[] = ['org_id','=',$this->orgId];
 
-         $where[] = ['del','=',0];
 
-         $where[] = ['enable','=',1];
 
-         $mate = Db::name('mate_goods')
 
-             ->field('id,title')
 
-             ->where($where)
 
-             ->select();
 
-         $this->assign('mate',$mate);
 
-         //获取某年某个月的总天数
 
- //        $t =  cal_days_in_month(CAL_GREGORIAN,$curMonth,$curYear);
 
-         $t = date('t',strtotime($month));
 
-         $sDay = strtotime($month.'-01');
 
-         $arr = [];
 
-         for ($i = 0;$i<$t;$i++){
 
-             $arr[$i]['date'] = date('m-d',$sDay+$i*86400);
 
-             $arr[$i]['ymd'] = date('Y-m-d',$sDay+$i*86400);
 
-         }
 
-         $lists = [];
 
-         foreach ($arr as $k=>$v){
 
-             $a = [
 
-                 'title' => $v['date'],
 
-             ];
 
-             foreach ($mate as $key=>$val){
 
-                 $count = Db::name('todo_mate_item')
 
-                     ->where('items_id',$val['id'])
 
-                     ->where('create_time','>=',$v['ymd'].' 00:00:00')
 
-                     ->where('create_time','<=',$v['ymd'].' 23:59:59')
 
-                     ->sum('total');
 
-                 $a['type'.$val['id']] = $count;
 
-             }
 
-             $lists[] = $a;
 
-         }
 
-         $subtotal = []; $total = 0 ;
 
-         foreach ($mate as $k=>$v){
 
-             $c = Db::name('todo_mate_item')
 
-                 ->where('items_id',$v['id'])
 
-                 ->where('create_time','>=',$month.'-01 00:00:00')
 
-                 ->where('create_time','<=',$month.'-31 23:59:59')
 
-                 ->sum('total');
 
-             $total +=$c;
 
-             $subtotal[$k] = $c;
 
-         }
 
-         include_once env('root_path').'/extend/phpexcel/Classes/PHPExcel.php';
 
-         //实例化PHPExcel类
 
-         $objPHPExcel =new \PHPExcel();
 
-         //激活当前的sheet表
 
-         $objPHPExcel->setActiveSheetIndex(0);
 
-         //设置表格头(即excel表格的第一行)
 
-         $sheet = $objPHPExcel->setActiveSheetIndex(0);
 
-         $arr = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T');
 
-         foreach ($arr as $k=>$v) {
 
-             $objPHPExcel->getActiveSheet()->getStyle($v)->getAlignment()->setWrapText(false);//换行
 
-             $objPHPExcel->getActiveSheet()->getStyle($v.'1')->getFont()->setBold(true);
 
-             $objPHPExcel->getActiveSheet()->getStyle($v.'1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-             $objPHPExcel->getActiveSheet()->getStyle($v.'1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
 
-             $objPHPExcel->getActiveSheet()->getStyle($v)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-             $objPHPExcel->getActiveSheet()->getStyle($v)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
 
-             $objPHPExcel->getActiveSheet()->getColumnDimension($v)->setWidth(18);
 
-         }
 
-         $sheet->setCellValueByColumnAndRow(0, 1, '日期');
 
-         foreach ($mate as $k=>$v){
 
-             $sheet->setCellValueByColumnAndRow($k+1, 1, $v['title']);
 
-         }
 
-         foreach ($lists as $k=>$v) {
 
-             $sheet->setCellValueByColumnAndRow(0, $k + 2, $v['title']);
 
-             foreach ($mate as $kk=>$vv){
 
-                 $sheet->setCellValueByColumnAndRow($kk+1, $k + 2, $v['type'.$vv['id']]);
 
-             }
 
-         }
 
-         $sheet->setCellValueByColumnAndRow(0, count($lists)+3, '小计');
 
-         foreach ($subtotal as $k=>$v){
 
-             $sheet->setCellValueByColumnAndRow($k+1, count($lists)+3, $v);
 
-         }
 
-         $sheet->setCellValueByColumnAndRow(0, count($lists)+4, '总计');
 
-         $sheet->setCellValueByColumnAndRow(1, count($lists)+4, $total);
 
-         //设置保存的Excel表格名称
 
-         $filename = '报修耗材报表_' . date('YmdHis', time()) . '.xls';
 
-         //设置当前激活的sheet表格名称
 
-         $objPHPExcel->getActiveSheet()->setTitle('报修耗材报表');
 
-         //设置浏览器窗口下载表格
 
-         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');
 
-     }
 
- }
 
 
  |