|
@@ -221,4 +221,145 @@ class ConveyStatistics extends Auth
|
|
|
return $objWriter->save('php://output');
|
|
|
}
|
|
|
|
|
|
+ public function conveyOrder(){
|
|
|
+ $start = input('start',date('Y-m-d',strtotime('-7 day')));
|
|
|
+ $end = input('end',date('Y-m-d'));
|
|
|
+ $address = input('address');
|
|
|
+ if(request()->isAjax()){
|
|
|
+ $sTime = $start.' 00:00:00';
|
|
|
+ $eTime = $end.' 23:59:59';
|
|
|
+ $map = [];
|
|
|
+ if(!empty($address)){
|
|
|
+ $ids = explode(',',$address);
|
|
|
+ $map[] = ['id','in',$ids];
|
|
|
+ }
|
|
|
+ $list = Db::name('address')
|
|
|
+ ->field('id,title')
|
|
|
+ ->where('enable',1)
|
|
|
+ ->where('del',0)
|
|
|
+ ->where($map)
|
|
|
+ ->where('org_id',$this->orgId)
|
|
|
+ ->where('find_in_set(2,types)')
|
|
|
+ ->select();
|
|
|
+
|
|
|
+ foreach ($list as $k=>$v){
|
|
|
+ $list[$k]['nums'] = Db::name('orders')
|
|
|
+ ->alias('a')
|
|
|
+ ->join('order_convey b','a.id=b.order_id')
|
|
|
+ ->where('a.org_id',$this->orgId)
|
|
|
+ ->where('a.del',0)
|
|
|
+ ->where('a.work_type_mode',3)
|
|
|
+ ->where('a.order_mode','in',[5,6])
|
|
|
+ ->where('b.start',$v['id'])
|
|
|
+ ->where('a.create_time','>=',$sTime)
|
|
|
+ ->where('a.create_time','<=',$eTime)
|
|
|
+ ->count('a.id');
|
|
|
+ }
|
|
|
+
|
|
|
+ $result['rows'] = $list;
|
|
|
+ return json($result);
|
|
|
+ }else{
|
|
|
+ $addressList = Db::name('address')
|
|
|
+ ->field('id,title')
|
|
|
+ ->where('enable',1)
|
|
|
+ ->where('del',0)
|
|
|
+ ->where('org_id',$this->orgId)
|
|
|
+ ->where('find_in_set(2,types)')
|
|
|
+ ->select();
|
|
|
+ $this->assign('addressList',$addressList);
|
|
|
+ $this->assign('start',$start);
|
|
|
+ $this->assign('end',$end);
|
|
|
+ $this->assign('addressVal',$address?explode(',',$address):[]);
|
|
|
+ $this->assign('address',$address);
|
|
|
+ return $this->fetch();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public function conveyOrderExport(){
|
|
|
+ $start = input('start',date('Y-m-d',strtotime('-7 day')));
|
|
|
+ $end = input('end',date('Y-m-d'));
|
|
|
+ $sTime = $start.' 00:00:00';
|
|
|
+ $eTime = $end.' 23:59:59';
|
|
|
+ $address = input('address');
|
|
|
+
|
|
|
+ $map = [];
|
|
|
+ if(!empty($address)){
|
|
|
+ $ids = explode(',',$address);
|
|
|
+ $map[] = ['id','in',$ids];
|
|
|
+ }
|
|
|
+ $list = Db::name('address')
|
|
|
+ ->field('id,title')
|
|
|
+ ->where('enable',1)
|
|
|
+ ->where('del',0)
|
|
|
+ ->where($map)
|
|
|
+ ->where('org_id',$this->orgId)
|
|
|
+ ->where('find_in_set(2,types)')
|
|
|
+ ->select();
|
|
|
+
|
|
|
+ foreach ($list as $k=>$v){
|
|
|
+ $list[$k]['nums'] = Db::name('orders')
|
|
|
+ ->alias('a')
|
|
|
+ ->join('order_convey b','a.id=b.order_id')
|
|
|
+ ->where('a.org_id',$this->orgId)
|
|
|
+ ->where('a.del',0)
|
|
|
+ ->where('a.work_type_mode',3)
|
|
|
+ ->where('a.order_mode','in',[5,6])
|
|
|
+ ->where('b.start',$v['id'])
|
|
|
+ ->where('a.create_time','>=',$sTime)
|
|
|
+ ->where('a.create_time','<=',$eTime)
|
|
|
+ ->count('a.id');
|
|
|
+ }
|
|
|
+
|
|
|
+ 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', '单量');
|
|
|
+
|
|
|
+ // 设置表格头水平居中
|
|
|
+ $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('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)->getColumnDimension('A')->setWidth(30);
|
|
|
+ $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(30);
|
|
|
+ $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(30);
|
|
|
+
|
|
|
+ //循环刚取出来的数组,将数据逐一添加到excel表格。
|
|
|
+ for ($i = 0; $i < count($list); $i++) {
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('A' . ($i + 2), $list[$i]['title']);
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('B' . ($i + 2), $list[$i]['nums']);
|
|
|
+
|
|
|
+ }
|
|
|
+ //设置保存的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');
|
|
|
+ }
|
|
|
}
|