LogController.php 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540
  1. <?php
  2. namespace Modules\Log\Http\Controllers;
  3. use Illuminate\Contracts\Support\Renderable;
  4. use Illuminate\Http\Request;
  5. use Illuminate\Routing\Controller;
  6. use DB;
  7. use Modules\Admin\Auxiliary\View\TableAuxiliary;
  8. use Modules\Admin\Http\Controllers\BaseController;
  9. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  10. use PhpOffice\PhpSpreadsheet\Style\Alignment;
  11. use PhpOffice\PhpSpreadsheet\Style\Border;
  12. use PhpOffice\PhpSpreadsheet\Style\Fill;
  13. use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
  14. class LogController extends BaseController
  15. {
  16. /**
  17. * Display a listing of the resource.
  18. * @return Renderable
  19. */
  20. public function index(Request $request)
  21. {
  22. $this->menusActive[0] = 'adminLog';
  23. //查询当前登录用户权限内的区域
  24. $user = DB::table('users')->where('staff_num',$request->user()->staff_num)->first();
  25. $mine_array = explode(';',$user->mine_role);//权限内的矿区
  26. $mine_all = DB::table('mine_list')->where('deleted_at',null)->get();//所有区域
  27. $mine_use = [];//权限内矿区下所有区域
  28. foreach($mine_all as $k=>$v){
  29. if(in_array(explode('|',$v->degree)[0],$mine_array)){
  30. $mine_use[] = $v->id;
  31. }
  32. }
  33. $log_list = DB::table('log')
  34. ->select('log.*','mine_list.title','mine_list.degree','camera_list.camera_name')
  35. ->leftJoin('mine_list','mine_list.id','=','log.mine_id')
  36. ->leftJoin('camera_list','camera_list.id','=','log.camera_id')
  37. ->whereIn('log.mine_id',$mine_use)
  38. ->orderBy('log.created_at', 'desc');
  39. if ($request->has('mine_id') && $request->input('mine_id')) {
  40. $log_list = $log_list->where('mine_list.degree','like',$request->input('mine_id').'|%');
  41. }
  42. if ($request->has('camera_name') && $request->input('camera_name')) {
  43. $log_list = $log_list->where('camera_list.camera_name','like','%'.$request->input('camera_name').'%');
  44. }
  45. if ($request->has('status') && $request->input('status')) {
  46. if($request->input('status') == 1){
  47. $log_list = $log_list->where('log.status',0);
  48. }elseif($request->input('status') == 2){
  49. $log_list = $log_list->where('log.status',1);
  50. }
  51. }
  52. if($request->input('start_time') != null && $request->input('end_time') != null){
  53. $start_time = $request->input('start_time')." 00:00:00";
  54. $end_time = $request->input('start_time')." 23:59:59";
  55. $log_list = $log_list->whereBetween('log.created_at',[$start_time,$end_time]);
  56. }
  57. if($request->input('start_time') == null && $request->input('end_time') != null){
  58. $end_time = $request->input('start_time')." 23:59:59";
  59. $log_list = $log_list->where('log.created_at','<=',$request->input('end_time'));
  60. }
  61. if($request->input('start_time') != null && $request->input('end_time') == null){
  62. $start_time = $request->input('start_time')." 00:00:00";
  63. $log_list = $log_list->where('log.created_at','>=',$request->input('start_time'));
  64. }
  65. $log_list = $log_list->paginate(50);
  66. if(count($log_list)>0){
  67. for($i=0;$i<count($log_list);$i++){
  68. $degree = explode('|',$log_list[$i]->degree);
  69. $mine = DB::table('mine_list')->where('id',$degree[0])->get();
  70. $log_list[$i]->mine_name = $mine[0]->title;
  71. $log_list[$i]->camera_id = $log_list[$i]->camera_id."(".$degree[0].")";
  72. $title = '';
  73. if(count($degree) == 1){
  74. for($j=0;$j<count($degree);$j++){
  75. $title = $title.DB::table('mine_list')->where('id',$degree[$j])->get()[0]->title.'/';
  76. }
  77. }
  78. if(count($degree) > 1){
  79. for($j=1;$j<count($degree);$j++){
  80. $title = $title.DB::table('mine_list')->where('id',$degree[$j])->get()[0]->title.'/';
  81. }
  82. }
  83. $log_list[$i]->title = substr($title,0,strlen($title)-1);
  84. }
  85. }
  86. //权限内矿区列表
  87. $mine_list = DB::table('mine_list')->whereIn('id',$mine_array)->get()->toArray();
  88. $mine_search = [];
  89. foreach($mine_list as $k=>$v){
  90. $mine_search[$v->id] = $v->title;
  91. }
  92. //摄像头状态
  93. $status = [1=>'正常',2=>'异常'];
  94. $tableObj = new TableAuxiliary('log', $log_list);
  95. $tableObj->topActions = ['export_condition'];
  96. $tableObj->actionBtns = [];
  97. $tableObj->search('select', 'mine_id', '选择矿区', $mine_search);
  98. $tableObj->search('input', 'camera_name', '摄像头名称');
  99. $tableObj->search('select', 'status', '摄像头状态', $status);
  100. $tableObj->search('date', 'start_time', '开始时间');
  101. $tableObj->search('date', 'end_time', '结束时间');
  102. $tableObj->column('mine_name', '矿区名称');
  103. $tableObj->column('title', '区域名称');
  104. $tableObj->column('camera_id', '摄像头ID');
  105. $tableObj->column('camera_name', '摄像头名称');
  106. $tableObj->column('status', '状态',function ($state, $item) {
  107. if ($item->status == 0) {
  108. $state = '正常';
  109. }else{
  110. $state = '异常';
  111. }
  112. return $state;
  113. });
  114. $tableObj->column('log', '返回信息');
  115. $tableObj->column('created_at', '开始时间');
  116. return $this->tableList($tableObj);
  117. }
  118. public function export(Request $request){
  119. //查询当前登录用户权限内的区域
  120. $user = DB::table('users')->where('staff_num',$request->user()->staff_num)->first();
  121. $mine_array = explode(';',$user->mine_role);//权限内的矿区
  122. $mine_all = DB::table('mine_list')->where('deleted_at',null)->get();//所有区域
  123. $mine_use = [];//权限内矿区下所有区域
  124. foreach($mine_all as $k=>$v){
  125. if(in_array(explode('|',$v->degree)[0],$mine_array)){
  126. $mine_use[] = $v->id;
  127. }
  128. }
  129. $log_list = DB::table('log')
  130. ->select('log.*','mine_list.title','mine_list.degree','camera_list.camera_name')
  131. ->leftJoin('mine_list','mine_list.id','=','log.mine_id')
  132. ->leftJoin('camera_list','camera_list.id','=','log.camera_id')
  133. ->whereIn('log.mine_id',$mine_use)
  134. ->orderBy('camera_list.camera_name', 'desc');
  135. if ($request->has('mine_id') && $request->input('mine_id')) {
  136. $log_list = $log_list->where('mine_list.degree','like',$request->input('mine_id').'|%');
  137. $mine_export = DB::table('mine_list')->where('id',$request->input('mine_id'))->get()[0]->title;
  138. }else{
  139. $mine_export = '全矿';
  140. }
  141. if ($request->has('camera_name') && $request->input('camera_name')) {
  142. $log_list = $log_list->where('camera_list.camera_name','like','%'.$request->input('camera_name').'%');
  143. }
  144. if ($request->has('status') && $request->input('status')) {
  145. if($request->input('status') == 1){
  146. $log_list = $log_list->where('log.status',0);
  147. $status_export = '正常摄像头';
  148. }elseif($request->input('status') == 2){
  149. $log_list = $log_list->where('log.status',1);
  150. $status_export = '异常摄像头';
  151. }
  152. }else{
  153. $status_export = '';
  154. }
  155. if($request->input('start_time') != null && $request->input('end_time') != null){
  156. $start_time = $request->input('start_time')." 00:00:00";
  157. $end_time = $request->input('start_time')." 23:59:59";
  158. $log_list = $log_list->whereBetween('log.created_at',[$start_time,$end_time]);
  159. $time_export = $request->input('start_time').'到'.$request->input('end_time');
  160. }
  161. elseif($request->input('start_time') == null && $request->input('end_time') != null){
  162. $end_time = $request->input('start_time')." 23:59:59";
  163. $log_list = $log_list->where('log.created_at','<=',$request->input('end_time'));
  164. $time_export = '截止'.$request->input('end_time').'前';
  165. }
  166. elseif($request->input('start_time') != null && $request->input('end_time') == null){
  167. $start_time = $request->input('start_time')." 00:00:00";
  168. $log_list = $log_list->where('log.created_at','>=',$request->input('start_time'));
  169. $time_export = $request->input('end_time').'至今';
  170. }
  171. else{
  172. $time_export = '';
  173. }
  174. $log_list = $log_list->get()->toArray();
  175. if(count($log_list)>0){
  176. for($i=0;$i<count($log_list);$i++){
  177. $degree = explode('|',$log_list[$i]->degree);
  178. $mine = DB::table('mine_list')->where('id',$degree[0])->get();
  179. $log_list[$i]->mine_name = $mine[0]->title;
  180. if($log_list[$i]->status == 0){
  181. $log_list[$i]->status = '正常';
  182. }else{
  183. $log_list[$i]->status = '异常';
  184. }
  185. }
  186. }
  187. //去掉重复数据改为次数
  188. $new_log_list = [];
  189. foreach($log_list as $log){
  190. $repeat = 0;//不在新数组
  191. if(count($new_log_list)>0){
  192. for($i=0;$i<count($new_log_list);$i++){
  193. if($log->camera_name==$new_log_list[$i]['camera_name'] && $log->status==$new_log_list[$i]['status']){
  194. $new_log_list[$i]['count']++;
  195. $repeat = 1;//在新数组
  196. }
  197. }
  198. }
  199. if($repeat == 0){//不在新数组
  200. $size = count($new_log_list);
  201. $new_log_list[$size]['mine_name'] = $log->mine_name;
  202. $new_log_list[$size]['title'] = $log->title;
  203. $new_log_list[$size]['camera_id'] = $log->camera_id;
  204. $new_log_list[$size]['camera_name'] = $log->camera_name;
  205. $new_log_list[$size]['status'] = $log->status;
  206. $new_log_list[$size]['log'] = $log->log;
  207. $new_log_list[$size]['created_at'] = $log->created_at;
  208. $new_log_list[$size]['count'] = 1;
  209. }
  210. }
  211. $spreadsheet = new Spreadsheet();
  212. $sheet = $spreadsheet->getActiveSheet();
  213. $sheet->getDefaultRowDimension()->setRowHeight(40);
  214. $sheet->getColumnDimension('A')->setWidth(25);
  215. $sheet->getColumnDimension('B')->setWidth(25);
  216. $sheet->getColumnDimension('C')->setWidth(20);
  217. $sheet->getColumnDimension('D')->setWidth(40);
  218. $sheet->getColumnDimension('E')->setWidth(20);
  219. $sheet->getColumnDimension('F')->setWidth(20);
  220. $sheet->getColumnDimension('G')->setWidth(30);
  221. $sheet->getColumnDimension('H')->setWidth(20);
  222. $sheet->setCellValue('A1', $mine_export.$status_export.$time_export.'访问记录')
  223. ->mergeCells('A1:H1')->getStyle('A1:H1')->getFont()->setSize(22)->setBold(true);
  224. $sheet->setCellValue('A2', '矿区名称');
  225. $sheet->setCellValue('B2', '区域名称');
  226. $sheet->setCellValue('C2', '摄像头ID');
  227. $sheet->setCellValue('D2', '摄像头名称');
  228. $sheet->setCellValue('E2', '状态');
  229. $sheet->setCellValue('F2', '返回信息');
  230. $sheet->setCellValue('G2', '访问时间');
  231. $sheet->setCellValue('H2', '次数');
  232. $rowNum = 3;
  233. $row_start = 3;
  234. $row_end = 0;
  235. if(count($new_log_list)>0){
  236. for($i=0;$i<count($new_log_list);$i++){
  237. $row_start = $rowNum;
  238. $sheet->setCellValue('A'.$rowNum, $new_log_list[$i]['mine_name']);
  239. $sheet->setCellValue('B'.$rowNum, $new_log_list[$i]['title']);
  240. $sheet->setCellValue('C'.$rowNum, $new_log_list[$i]['camera_id']);
  241. $sheet->setCellValue('D'.$rowNum, $new_log_list[$i]['camera_name']);
  242. $sheet->setCellValue('E'.$rowNum, $new_log_list[$i]['status']);
  243. $sheet->setCellValue('F'.$rowNum, $new_log_list[$i]['log']);
  244. $sheet->setCellValue('G'.$rowNum, $new_log_list[$i]['created_at']);
  245. $sheet->setCellValue('H'.$rowNum, $new_log_list[$i]['count']);
  246. $rowNum++;
  247. }
  248. $row_end = $rowNum-1;
  249. $sheet->mergeCells('A'.$row_start.':A'.$row_end.'')->mergeCells('B'.$row_start.':B'.$row_end.'')->mergeCells('C'.$row_start.':C'.$row_end.'')->mergeCells('D'.$row_start.':D'.$row_end.'')->mergeCells('E'.$row_start.':E'.$row_end.'')->mergeCells('F'.$row_start.':F'.$row_end.'')->mergeCells('G'.$row_start.':G'.$row_end.'')->mergeCells('H'.$row_start.':H'.$row_end.'');
  250. }
  251. $sheet->getStyle('A1:H' . ($rowNum-1))
  252. ->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER)->setVertical(Alignment::VERTICAL_CENTER);
  253. $sheet->getStyle('A2:H2' . ($rowNum))->getFont()->setSize(18);
  254. $sheet->getStyle('A3:H' . ($rowNum))->getFont()->setSize(14);
  255. $sheet->getStyle('A1:H1')->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('FFD9D9D9');
  256. header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');//告诉浏览器输出07Excel文件
  257. header('Content-Disposition: attachment;filename='.$mine_export.$status_export.$time_export.'访问记录'.'.xlsx');//告诉浏览器输出浏览器名称
  258. header('Cache-Control: max-age=0');//禁止缓存
  259. $writer = new Xlsx($spreadsheet);
  260. unset($spreadsheet);
  261. $writer->save('php://output');
  262. // return redirect('/admin/product/list');
  263. dd($new_log_list);
  264. dd($mine_export.$status_export.$time_export.'访问记录');
  265. }
  266. public function exportcamera(Request $request){
  267. $mine_all = DB::table('mine_list')->where('deleted_at',null)->get();//所有区域
  268. //宁煤下各矿在离线数量
  269. $mine_list = DB::table('mine_list')->where('parent_id',968)->where('deleted_at',null)->get();
  270. $mine_use = [];//宁煤下每个矿所有区域
  271. foreach($mine_all as $key=>$value){
  272. if(count(explode('|',$value->degree)) > 1){
  273. if(explode('|',$value->degree)[0] == 968 && explode('|',$value->degree)[1] == 2429){
  274. $mine_use[] = $value->id;
  275. }
  276. }
  277. }
  278. $total = DB::table('camera_list')
  279. ->select('camera_list.camera_name','camera_list.camera_status','mine_list.title')
  280. ->leftJoin('mine_list','mine_list.id','=','camera_list.mine_id')
  281. ->whereIn('camera_list.mine_id',$mine_use)
  282. ->where('camera_list.deleted_at',null)
  283. ->where('mine_list.deleted_at',null)
  284. ->orderBy('mine_list.title')
  285. ->get();
  286. foreach($total as $k=>$v){
  287. if($v->camera_status == 1){
  288. $v->camera_status = '在线';
  289. }else{
  290. $v->camera_status = '离线';
  291. }
  292. }
  293. $spreadsheet = new Spreadsheet();
  294. $sheet = $spreadsheet->getActiveSheet();
  295. $sheet->getDefaultRowDimension()->setRowHeight(40);
  296. $sheet->getColumnDimension('A')->setWidth(40);
  297. $sheet->getColumnDimension('B')->setWidth(40);
  298. $sheet->getColumnDimension('C')->setWidth(40);
  299. $sheet->getColumnDimension('D')->setWidth(40);
  300. $sheet->setCellValue('A1', '宁煤集团--洗选中心摄像头列表')
  301. ->mergeCells('A1:D1')->getStyle('A1:D1')->getFont()->setSize(22)->setBold(true);
  302. $sheet->setCellValue('A2', '序号');
  303. $sheet->setCellValue('B2', '区域名称');
  304. $sheet->setCellValue('C2', '摄像头名称');
  305. $sheet->setCellValue('D2', '摄像头状态');
  306. $rowNum = 3;
  307. $row_start = 3;
  308. $row_end = 0;
  309. if(count($total)>0){
  310. for($i=0;$i<count($total);$i++){
  311. $row_start = $rowNum;
  312. $sheet->setCellValue('A'.$rowNum, $i+1);
  313. $sheet->setCellValue('B'.$rowNum, $total[$i]->title);
  314. $sheet->setCellValue('C'.$rowNum, $total[$i]->camera_name);
  315. $sheet->setCellValue('D'.$rowNum, $total[$i]->camera_status);
  316. $rowNum++;
  317. }
  318. $row_end = $rowNum-1;
  319. $sheet->mergeCells('A'.$row_start.':A'.$row_end.'')->mergeCells('B'.$row_start.':B'.$row_end.'')->mergeCells('C'.$row_start.':C'.$row_end.'')->mergeCells('D'.$row_start.':D'.$row_end.'');
  320. }
  321. $sheet->getStyle('A1:D' . ($rowNum-1))
  322. ->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER)->setVertical(Alignment::VERTICAL_CENTER);
  323. $sheet->getStyle('A2:D2' . ($rowNum))->getFont()->setSize(18);
  324. $sheet->getStyle('A3:D' . ($rowNum))->getFont()->setSize(14);
  325. $sheet->getStyle('A1:D1')->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('FFD9D9D9');
  326. header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');//告诉浏览器输出07Excel文件
  327. header('Content-Disposition: attachment;filename=宁煤--洗选中心摄像头列表'.'.xlsx');//告诉浏览器输出浏览器名称
  328. header('Cache-Control: max-age=0');//禁止缓存
  329. $writer = new Xlsx($spreadsheet);
  330. unset($spreadsheet);
  331. $writer->save('php://output');
  332. dd($total);
  333. //查询当前登录用户权限内的区域
  334. $user = DB::table('users')->where('staff_num',$request->user()->staff_num)->first();
  335. $mine_array = explode(';',$user->mine_role);//权限内的矿区
  336. $mine_all = DB::table('mine_list')->where('deleted_at',null)->get();//所有区域
  337. $mine_use = [];//权限内矿区下所有区域
  338. foreach($mine_all as $k=>$v){
  339. if(in_array(explode('|',$v->degree)[0],$mine_array)){
  340. $mine_use[] = $v->id;
  341. }
  342. }
  343. $log_list = DB::table('log')
  344. ->select('log.*','mine_list.title','mine_list.degree','camera_list.camera_name')
  345. ->leftJoin('mine_list','mine_list.id','=','log.mine_id')
  346. ->leftJoin('camera_list','camera_list.id','=','log.camera_id')
  347. ->whereIn('log.mine_id',$mine_use)
  348. ->orderBy('camera_list.camera_name', 'desc');
  349. if ($request->has('mine_id') && $request->input('mine_id')) {
  350. $log_list = $log_list->where('mine_list.degree','like',$request->input('mine_id').'|%');
  351. $mine_export = DB::table('mine_list')->where('id',$request->input('mine_id'))->get()[0]->title;
  352. }else{
  353. $mine_export = '全矿';
  354. }
  355. if ($request->has('camera_name') && $request->input('camera_name')) {
  356. $log_list = $log_list->where('camera_list.camera_name','like','%'.$request->input('camera_name').'%');
  357. }
  358. if ($request->has('status') && $request->input('status')) {
  359. if($request->input('status') == 1){
  360. $log_list = $log_list->where('log.status',0);
  361. $status_export = '正常摄像头';
  362. }elseif($request->input('status') == 2){
  363. $log_list = $log_list->where('log.status',1);
  364. $status_export = '异常摄像头';
  365. }
  366. }else{
  367. $status_export = '';
  368. }
  369. if($request->input('start_time') != null && $request->input('end_time') != null){
  370. $start_time = $request->input('start_time')." 00:00:00";
  371. $end_time = $request->input('start_time')." 23:59:59";
  372. $log_list = $log_list->whereBetween('log.created_at',[$start_time,$end_time]);
  373. $time_export = $request->input('start_time').'到'.$request->input('end_time');
  374. }
  375. elseif($request->input('start_time') == null && $request->input('end_time') != null){
  376. $end_time = $request->input('start_time')." 23:59:59";
  377. $log_list = $log_list->where('log.created_at','<=',$request->input('end_time'));
  378. $time_export = '截止'.$request->input('end_time').'前';
  379. }
  380. elseif($request->input('start_time') != null && $request->input('end_time') == null){
  381. $start_time = $request->input('start_time')." 00:00:00";
  382. $log_list = $log_list->where('log.created_at','>=',$request->input('start_time'));
  383. $time_export = $request->input('end_time').'至今';
  384. }
  385. else{
  386. $time_export = '';
  387. }
  388. $log_list = $log_list->get()->toArray();
  389. if(count($log_list)>0){
  390. for($i=0;$i<count($log_list);$i++){
  391. $degree = explode('|',$log_list[$i]->degree);
  392. $mine = DB::table('mine_list')->where('id',$degree[0])->get();
  393. $log_list[$i]->mine_name = $mine[0]->title;
  394. if($log_list[$i]->status == 0){
  395. $log_list[$i]->status = '正常';
  396. }else{
  397. $log_list[$i]->status = '异常';
  398. }
  399. }
  400. }
  401. //去掉重复数据改为次数
  402. $new_log_list = [];
  403. foreach($log_list as $log){
  404. $repeat = 0;//不在新数组
  405. if(count($new_log_list)>0){
  406. for($i=0;$i<count($new_log_list);$i++){
  407. if($log->camera_name==$new_log_list[$i]['camera_name'] && $log->status==$new_log_list[$i]['status']){
  408. $new_log_list[$i]['count']++;
  409. $repeat = 1;//在新数组
  410. }
  411. }
  412. }
  413. if($repeat == 0){//不在新数组
  414. $size = count($new_log_list);
  415. $new_log_list[$size]['mine_name'] = $log->mine_name;
  416. $new_log_list[$size]['title'] = $log->title;
  417. $new_log_list[$size]['camera_id'] = $log->camera_id;
  418. $new_log_list[$size]['camera_name'] = $log->camera_name;
  419. $new_log_list[$size]['status'] = $log->status;
  420. $new_log_list[$size]['log'] = $log->log;
  421. $new_log_list[$size]['created_at'] = $log->created_at;
  422. $new_log_list[$size]['count'] = 1;
  423. }
  424. }
  425. $spreadsheet = new Spreadsheet();
  426. $sheet = $spreadsheet->getActiveSheet();
  427. $sheet->getDefaultRowDimension()->setRowHeight(40);
  428. $sheet->getColumnDimension('A')->setWidth(25);
  429. $sheet->getColumnDimension('B')->setWidth(25);
  430. $sheet->getColumnDimension('C')->setWidth(20);
  431. $sheet->getColumnDimension('D')->setWidth(40);
  432. $sheet->getColumnDimension('E')->setWidth(20);
  433. $sheet->getColumnDimension('F')->setWidth(20);
  434. $sheet->getColumnDimension('G')->setWidth(30);
  435. $sheet->getColumnDimension('H')->setWidth(20);
  436. $sheet->setCellValue('A1', $mine_export.$status_export.$time_export.'访问记录')
  437. ->mergeCells('A1:H1')->getStyle('A1:H1')->getFont()->setSize(22)->setBold(true);
  438. $sheet->setCellValue('A2', '矿区名称');
  439. $sheet->setCellValue('B2', '区域名称');
  440. $sheet->setCellValue('C2', '摄像头ID');
  441. $sheet->setCellValue('D2', '摄像头名称');
  442. $sheet->setCellValue('E2', '状态');
  443. $sheet->setCellValue('F2', '返回信息');
  444. $sheet->setCellValue('G2', '访问时间');
  445. $sheet->setCellValue('H2', '次数');
  446. $rowNum = 3;
  447. $row_start = 3;
  448. $row_end = 0;
  449. if(count($new_log_list)>0){
  450. for($i=0;$i<count($new_log_list);$i++){
  451. $row_start = $rowNum;
  452. $sheet->setCellValue('A'.$rowNum, $new_log_list[$i]['mine_name']);
  453. $sheet->setCellValue('B'.$rowNum, $new_log_list[$i]['title']);
  454. $sheet->setCellValue('C'.$rowNum, $new_log_list[$i]['camera_id']);
  455. $sheet->setCellValue('D'.$rowNum, $new_log_list[$i]['camera_name']);
  456. $sheet->setCellValue('E'.$rowNum, $new_log_list[$i]['status']);
  457. $sheet->setCellValue('F'.$rowNum, $new_log_list[$i]['log']);
  458. $sheet->setCellValue('G'.$rowNum, $new_log_list[$i]['created_at']);
  459. $sheet->setCellValue('H'.$rowNum, $new_log_list[$i]['count']);
  460. $rowNum++;
  461. }
  462. $row_end = $rowNum-1;
  463. $sheet->mergeCells('A'.$row_start.':A'.$row_end.'')->mergeCells('B'.$row_start.':B'.$row_end.'')->mergeCells('C'.$row_start.':C'.$row_end.'')->mergeCells('D'.$row_start.':D'.$row_end.'')->mergeCells('E'.$row_start.':E'.$row_end.'')->mergeCells('F'.$row_start.':F'.$row_end.'')->mergeCells('G'.$row_start.':G'.$row_end.'')->mergeCells('H'.$row_start.':H'.$row_end.'');
  464. }
  465. $sheet->getStyle('A1:H' . ($rowNum-1))
  466. ->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER)->setVertical(Alignment::VERTICAL_CENTER);
  467. $sheet->getStyle('A2:H2' . ($rowNum))->getFont()->setSize(18);
  468. $sheet->getStyle('A3:H' . ($rowNum))->getFont()->setSize(14);
  469. $sheet->getStyle('A1:H1')->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('FFD9D9D9');
  470. header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');//告诉浏览器输出07Excel文件
  471. header('Content-Disposition: attachment;filename='.$mine_export.$status_export.$time_export.'访问记录'.'.xlsx');//告诉浏览器输出浏览器名称
  472. header('Cache-Control: max-age=0');//禁止缓存
  473. $writer = new Xlsx($spreadsheet);
  474. unset($spreadsheet);
  475. $writer->save('php://output');
  476. // return redirect('/admin/product/list');
  477. dd($new_log_list);
  478. dd($mine_export.$status_export.$time_export.'访问记录');
  479. }
  480. }