CameraController.php 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867
  1. <?php
  2. namespace Modules\Camera\Http\Controllers;
  3. use Box\Spout\Reader\Common\Creator\ReaderEntityFactory;
  4. use Illuminate\Contracts\Support\Renderable;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Routing\Controller;
  7. use Illuminate\Support\Facades\Input;
  8. use Illuminate\Support\Facades\Log;
  9. use Illuminate\Support\Facades\Storage;
  10. use Modules\Admin\Auxiliary\View\FromAuxiliary;
  11. use Modules\Admin\Auxiliary\View\TableAuxiliary;
  12. use Modules\Admin\Auxiliary\View\TreeAuxiliary;
  13. use Modules\Admin\Http\Controllers\BaseController;
  14. use Modules\Camera\Entities\CameraFieldList;
  15. use Modules\Camera\Entities\CameraList;
  16. use Modules\Camera\Enum\CameraEnum;
  17. use Modules\Camera\Jobs\CameraListExcel;
  18. use Modules\Camera\Services\CameraServices;
  19. use Modules\Mine\Entities\MineList;
  20. use Modules\Mine\Entities\WorkingSurface;
  21. use Modules\Mine\Entities\WorkingSurfaceCamera;
  22. use Modules\Mine\Services\MineServices;
  23. use Modules\Mine\Services\SurfaceServices;
  24. use DB;
  25. class CameraController extends BaseController
  26. {
  27. /**
  28. * Display a listing of the resource.
  29. * @return Renderable
  30. */
  31. public function index()
  32. {
  33. return view('camera::index');
  34. }
  35. //摄像头列表
  36. public function cameraList(Request $request)
  37. {
  38. $start_time = '2022-07-20 08:00:00';
  39. $start_time = date('Y-m-d H:i:s',strtotime($start_time.'+34 minutes'));
  40. dd($start_time);
  41. $this->menusActive[0] = 'adminCamera';
  42. $this->menusActive[1] = 'adminCameraList';
  43. //查询当前登录用户权限内的区域
  44. $user = DB::table('users')->where('staff_num',$request->user()->staff_num)->first();
  45. $mine_array = explode(';',$user->mine_role);//权限内的矿区
  46. $mine_all = DB::table('mine_list')->where('deleted_at',null)->get();//所有区域
  47. $mine_use = [];//权限内矿区下所有区域
  48. foreach($mine_all as $k=>$v){
  49. if(in_array(explode('|',$v->degree)[0],$mine_array)){
  50. $mine_use[] = $v->id;
  51. }
  52. }
  53. $camera_list = CameraList::join(
  54. 'mine_list', 'camera_list.mine_id', '=', 'mine_list.id'
  55. )->whereIn('mine_list.id',$mine_use)->orderBy('camera_list.sort', 'desc');
  56. if ($request->has('mine_name') && $request->input('mine_name')) {
  57. $mine_id = MineList::where('title', 'like', '%' . $request->input('mine_name') . '%')->where('parent_id', 0)->get();
  58. if(sizeof($mine_id) == 0){
  59. $camera_list = $camera_list->where('mine_list.title', 'like', '%' . $request->input('mine_name') . '%')->where('parent_id', 0);
  60. }
  61. $camera_list = $camera_list->where(function ($query) use ($mine_id) {
  62. foreach($mine_id as $k=>$v){
  63. $query->orWhere('mine_list.degree', $v->id );
  64. $query->orWhere('mine_list.degree', 'like', $v->id . '|' . '%');
  65. }
  66. });
  67. // foreach($mine_id as $k=>$v){
  68. // $camera_list = $camera_list->orWhere('mine_list.degree', $v->id );
  69. // $camera_list = $camera_list->orWhere('mine_list.degree', 'like', $v->id . '|' . '%');
  70. // }
  71. // $camera_list = $camera_list->orWhere('mine_list.degree', 'like', 1 . '|' . '%');
  72. // $camera_list = $camera_list->orWhere('mine_list.degree', 'like', 2 . '|' . '%');
  73. // $camera_list = $camera_list->where('mine_list.title', 'like', '%' . $request->input('mine_name') . '%')->where('parent_id', 0);
  74. }
  75. if ($request->has('area_name') && $request->input('area_name')) {
  76. $area_id = MineList::where('title', 'like', '%' . $request->input('area_name') . '%')->get();
  77. if(sizeof($area_id) == 0){
  78. $camera_list = $camera_list->where('mine_list.title', 'like', '%' . $request->input('area_name') . '%')->where('parent_id','!=', 0);
  79. }
  80. $camera_list = $camera_list->where(function ($query) use ($area_id) {
  81. foreach($area_id as $k=>$v){
  82. $query->orWhere('mine_list.degree', $v->id)->where('mine_list.parent_id',0);
  83. $query->orWhere('mine_list.degree', 'like', '%' . '|' .$v->id);
  84. }
  85. });
  86. // foreach($area_id as $k=>$v){
  87. //// $camera_list = $camera_list->orWhere('mine_list.degree', $v->id );
  88. // $camera_list = $camera_list->orWhere('mine_list.degree', $v->id)->where('mine_list.parent_id',0);
  89. // $camera_list = $camera_list->orWhere('mine_list.degree', 'like', '%' . '|' .$v->id);
  90. // }
  91. // $camera_list = $camera_list->where('title', 'like', '%' . $request->input('area_name') . '%');
  92. // dd($camera_list);exit;
  93. // $camera_list = $camera_list->where('mine_list.degree', 'like', '%' . '|' . $area_id);
  94. // $camera_list = $camera_list->where('mine_list.title', 'like', '%' . $request->input('mine_name') . '%')->where('parent_id','!=', 0);
  95. }
  96. $data['mine_default'] = "";
  97. if ($request->has('mine_id') && $request->input('mine_id')) {
  98. $camera_list = $camera_list->where('mine_list.id',$request->input('mine_id'));
  99. $data['mine_default'] = $request->input('mine_id');
  100. }
  101. if ($request->has('camera_name') && $request->input('camera_name')) {
  102. $camera_list = $camera_list->where('camera_list.camera_name', 'like', '%' . $request->input('camera_name') . '%');
  103. }
  104. if ($request->has('camera_type') && $request->input('camera_type')) {
  105. $camera_list = $camera_list->where('camera_list.camera_type', $request->input('camera_type'));
  106. }
  107. if ($request->has('camera_source') && $request->input('camera_source')) {
  108. $camera_list = $camera_list->where('camera_list.camera_source', $request->input('camera_source'));
  109. }
  110. $camera_list = $camera_list->select(
  111. 'camera_list.id',
  112. 'camera_list.camera_url',
  113. 'camera_list.camera_name',
  114. 'camera_list.revert_id',
  115. 'camera_list.sort',
  116. 'camera_list.camera_type',
  117. 'camera_list.camera_source',
  118. 'camera_list.is_show',
  119. 'mine_list.title',
  120. 'mine_list.degree'
  121. )->paginate(CameraEnum::PAGE_SIZE);
  122. foreach ($camera_list as $key => $val) {
  123. $camera_list[$key]->parent_title = MineList::where('id', explode('|', $val->degree)[0])->value('title');
  124. //判断是否是海康视频服务器
  125. if($val->camera_source == CameraEnum::CAMERA_SOURCE_2){
  126. $is_hak = DB::table('mine_list_ext')->where('mine_id',explode('|', $val->degree)[0])->value('is_hak');
  127. if($is_hak == CameraEnum::VIDEO_RECORDER_HK){
  128. $camera_list[$key]->playback = 0;//显示
  129. }else{
  130. $camera_list[$key]->playback = 1;//不显示
  131. }
  132. }else{
  133. $camera_list[$key]->playback = 1;//不显示
  134. }
  135. }
  136. $tableObj = new TableAuxiliary('camera/list', $camera_list);
  137. // $tableObj->search('input', 'mine_name', '矿区名称');
  138. // $tableObj->search('input', 'area_name', '区域名称');
  139. $tableObj->search('input', 'camera_name', '摄像头名称');
  140. $tableObj->search('select', 'camera_type', '摄像头类型', CameraEnum::CAMERA_TYPE_EXCHANGE);
  141. $tableObj->search('select', 'camera_source', '摄像头来源', CameraEnum::CAMERA_SOURCE_EXCHANGE);
  142. $tableObj->topActions = ['add', 'import', 'importTemplate'];
  143. $tableObj->column('parent_title', '矿区名称');
  144. $tableObj->column('title', '区域名称');
  145. $tableObj->column('camera_name', '摄像头名称');
  146. // $tableObj->column('camera_type', '摄像头类型', function ($camera_type) {
  147. // return CameraEnum::CAMERA_TYPE_EXCHANGE[$camera_type];
  148. // });
  149. $tableObj->column('camera_url', '链接');
  150. // $tableObj->column('camera_source', '摄像头来源', function ($camera_source) {
  151. // return CameraEnum::CAMERA_SOURCE_EXCHANGE[$camera_source];
  152. // });
  153. // $tableObj->column('revert_id', '流媒体id');
  154. $tableObj->column('is_show', '是否显示', function ($is_show, $item) {
  155. return '<span class="layui-form"><input type="checkbox" name="is_show" data-href="camera/list/edit?type=show&id=' . $item['id'] . '" lay-skin="switch" lay-text="是|否" ' . ($is_show == CameraEnum::IS_SHOW_YES ? 'checked' : '') . '></span>';
  156. });
  157. $tableObj->column('sort', '排序');
  158. $data['pagesize'] = ceil($camera_list->total()/CameraEnum::PAGE_SIZE);
  159. $data['path'] = $tableObj->path;
  160. $data['items'] = $tableObj->items;
  161. $data['columns'] = $tableObj->columns;
  162. $data['searchs'] = $tableObj->searchColumns;
  163. $data['primaryKey'] = $tableObj->primaryKey;
  164. $data['displayActions'] = $tableObj->displayActions;
  165. if (is_string($data['displayActions']['value'])) {
  166. $data['displayActions']['value'] = [$data['displayActions']['value']];
  167. }
  168. $data['actionBtns'] = ['view', 'edit', 'del','playback'];
  169. $data['actionBtnsAttribute'] = $tableObj->actionBtnsAttribute;
  170. $data['topActions'] = $tableObj->topActions;
  171. $data['displayActionOthers'] = $tableObj->displayActionOthers;
  172. $data['topActionOthers'] = $tableObj->topActionOthers;
  173. $data += \Illuminate\Support\Facades\Request::except('_token');
  174. //区域列表
  175. $mine_list = DB::table('mine_list')->whereIn('id',$mine_array)->where('parent_id',0)->where('deleted_at',null)->get();
  176. $tree_data = [];
  177. foreach($mine_list as $k=>$v){
  178. $tree_data[$v->id]['id'] = $v->id;
  179. $tree_data[$v->id]['name'] = $v->title;
  180. $child_list = DB::table('mine_list')->where('parent_id',$v->id)->where('deleted_at',null)->orderBy('sort','desc')->get();
  181. if(count($child_list)>0){
  182. $tree_data[$v->id]['type'] = 'folder';
  183. $tree_data[$v->id]['additionalParameters']['children'] = $this->mineTree($child_list,$v->id);
  184. }else{
  185. $tree_data[$v->id]['type'] = 'item';
  186. }
  187. }
  188. $data['tree_data'] = $tree_data;
  189. return $this->view('camera::camera_list', $data);
  190. }
  191. //摄像头管理区域列表ajax
  192. public function mineList(Request $request){
  193. //查询当前登录用户权限内的区域
  194. $user = DB::table('users')->where('staff_num',$request->user()->staff_num)->first();
  195. $mine_array = explode(';',$user->mine_role);//权限内的矿区
  196. $mine_all = DB::table('mine_list')->where('deleted_at',null)->get();//所有区域
  197. $mine_use = [];//权限内矿区下所有区域
  198. foreach($mine_all as $k=>$v){
  199. if(in_array(explode('|',$v->degree)[0],$mine_array)){
  200. $mine_use[] = $v->id;
  201. }
  202. }
  203. //区域列表
  204. $mine_list = DB::table('mine_list')->whereIn('id',$mine_use)->where('parent_id',0)->where('deleted_at',null)->get();
  205. $tree_data = [];
  206. foreach($mine_list as $k=>$v){
  207. $tree_data[$v->id]['id'] = $v->id;
  208. $tree_data[$v->id]['name'] = $v->title;
  209. $child_list = DB::table('mine_list')->where('parent_id',$v->id)->where('deleted_at',null)->get();
  210. if(count($child_list)>0){
  211. $tree_data[$v->id]['type'] = 'folder';
  212. $tree_data[$v->id]['additionalParameters']['children'] = $this->mineTree($child_list,$v->id);
  213. }else{
  214. $tree_data[$v->id]['type'] = 'item';
  215. }
  216. }
  217. return $tree_data;
  218. }
  219. //摄像头管理区域列表ajax
  220. public function cameraUpdate(Request $request){
  221. //查询当前登录用户权限内的区域
  222. $user = DB::table('users')->where('staff_num',$request->user()->staff_num)->first();
  223. $mine_array = explode(';',$user->mine_role);//权限内的矿区
  224. $mine_all = DB::table('mine_list')->where('deleted_at',null)->get();//所有区域
  225. $mine_use = [];//权限内矿区下所有区域
  226. foreach($mine_all as $k=>$v){
  227. if(in_array(explode('|',$v->degree)[0],$mine_array)){
  228. $mine_use[] = $v->id;
  229. }
  230. }
  231. $camera_list = CameraList::join(
  232. 'mine_list', 'camera_list.mine_id', '=', 'mine_list.id'
  233. )->whereIn('mine_list.id',$mine_use)->orderBy('camera_list.sort', 'desc');
  234. if ($_GET['mine_id'] != '' && $_GET['mine_id'] != null) {
  235. $camera_list = $camera_list->where('camera_list.mine_id', $_GET['mine_id']);
  236. }
  237. if ($_GET['camera_name'] != '' && $_GET['camera_name'] != null) {
  238. $camera_list = $camera_list->where('camera_list.camera_name', 'like', '%' . $_GET['camera_name'] . '%');
  239. }
  240. if ($_GET['camera_type'] != 0) {
  241. $camera_list = $camera_list->where('camera_list.camera_type', $_GET['camera_type']);
  242. }
  243. if ($_GET['camera_source'] != 0) {
  244. $camera_list = $camera_list->where('camera_list.camera_source', $_GET['camera_source']);
  245. }
  246. $camera_list = $camera_list->select(
  247. 'camera_list.id',
  248. 'camera_list.camera_url',
  249. 'camera_list.camera_name',
  250. 'camera_list.revert_id',
  251. 'camera_list.sort',
  252. 'camera_list.camera_type',
  253. 'camera_list.camera_source',
  254. 'camera_list.is_show',
  255. 'mine_list.title',
  256. 'mine_list.degree'
  257. )->paginate(CameraEnum::PAGE_SIZE);
  258. foreach ($camera_list as $key => $val) {
  259. $camera_list[$key]->parent_title = MineList::where('id', explode('|', $val->degree)[0])->value('title');
  260. //判断是否是海康视频服务器
  261. if($val->camera_source == CameraEnum::CAMERA_SOURCE_2){
  262. $is_hak = DB::table('mine_list_ext')->where('mine_id',explode('|', $val->degree)[0])->value('is_hak');
  263. if($is_hak == CameraEnum::VIDEO_RECORDER_HK){
  264. $camera_list[$key]->playback = 0;//显示0
  265. }else{
  266. $camera_list[$key]->playback = 1;//不显示1
  267. }
  268. }else{
  269. $camera_list[$key]->playback = 1;//不显示1
  270. }
  271. $val->camera_type = CameraEnum::CAMERA_TYPE_EXCHANGE[$val->camera_type];
  272. $val->camera_source = CameraEnum::CAMERA_SOURCE_EXCHANGE[$val->camera_source];
  273. }
  274. return $camera_list;
  275. }
  276. //摄像头管理区域列表ajax
  277. public function camerapage(Request $request){
  278. //查询当前登录用户权限内的区域
  279. $user = DB::table('users')->where('staff_num',$request->user()->staff_num)->first();
  280. $mine_array = explode(';',$user->mine_role);//权限内的矿区
  281. $mine_all = DB::table('mine_list')->where('deleted_at',null)->get();//所有区域
  282. $mine_use = [];//权限内矿区下所有区域
  283. foreach($mine_all as $k=>$v){
  284. if(in_array(explode('|',$v->degree)[0],$mine_array)){
  285. $mine_use[] = $v->id;
  286. }
  287. }
  288. $camera_list = CameraList::join(
  289. 'mine_list', 'camera_list.mine_id', '=', 'mine_list.id'
  290. )->whereIn('mine_list.id',$mine_use)->orderBy('camera_list.sort', 'desc');
  291. if ($_GET['mine_id'] != '' && $_GET['mine_id'] != null) {
  292. $camera_list = $camera_list->where('camera_list.mine_id', $_GET['mine_id']);
  293. }
  294. if ($_GET['camera_name'] != '' && $_GET['camera_name'] != null) {
  295. $camera_list = $camera_list->where('camera_list.camera_name', 'like', '%' . $_GET['camera_name'] . '%');
  296. }
  297. if ($_GET['camera_type'] != 0) {
  298. $camera_list = $camera_list->where('camera_list.camera_type', $_GET['camera_type']);
  299. }
  300. if ($_GET['camera_source'] != 0) {
  301. $camera_list = $camera_list->where('camera_list.camera_source', $_GET['camera_source']);
  302. }
  303. $camera_list = $camera_list->select(
  304. 'camera_list.id',
  305. 'camera_list.camera_url',
  306. 'camera_list.camera_name',
  307. 'camera_list.revert_id',
  308. 'camera_list.sort',
  309. 'camera_list.camera_type',
  310. 'camera_list.camera_source',
  311. 'camera_list.is_show',
  312. 'mine_list.title',
  313. 'mine_list.degree'
  314. )->paginate(CameraEnum::PAGE_SIZE);
  315. foreach ($camera_list as $key => $val) {
  316. $camera_list[$key]->parent_title = MineList::where('id', explode('|', $val->degree)[0])->value('title');
  317. //判断是否是海康视频服务器
  318. if($val->camera_source == CameraEnum::CAMERA_SOURCE_2){
  319. $is_hak = DB::table('mine_list_ext')->where('mine_id',explode('|', $val->degree)[0])->value('is_hak');
  320. if($is_hak == CameraEnum::VIDEO_RECORDER_HK){
  321. $camera_list[$key]->playback = 0;//显示
  322. }else{
  323. $camera_list[$key]->playback = 1;//不显示
  324. }
  325. }else{
  326. $camera_list[$key]->playback = 1;//不显示
  327. }
  328. $val->camera_type = CameraEnum::CAMERA_TYPE_EXCHANGE[$val->camera_type];
  329. $val->camera_source = CameraEnum::CAMERA_SOURCE_EXCHANGE[$val->camera_source];
  330. }
  331. return $camera_list;
  332. }
  333. public function mineTree($regions, $parent_id)
  334. {
  335. $arr = [];
  336. foreach ($regions as $key => $value) {
  337. $arr[$key]['id'] = $value->id;
  338. $arr[$key]['name'] = $value->title;
  339. $mine_child = DB::table('mine_list')->where('parent_id', $value->id)->where('deleted_at',null)->get();
  340. if (count($mine_child) > 0) {
  341. $arr[$key]['type'] = 'folder';
  342. $arr[$key]['additionalParameters']['children'] = self::mineTree($mine_child, $value->id);
  343. } else {
  344. $arr[$key]['type'] = 'item';
  345. }
  346. }
  347. return array_values($arr);
  348. }
  349. //查看摄像头列表详情
  350. public function cameraListView(Request $request)
  351. {
  352. if (!$request->has('id')) {
  353. return $this->redirect('admin/camera/list');
  354. }
  355. $camera_list = CameraList::join(
  356. 'mine_list', 'camera_list.mine_id', '=', 'mine_list.id'
  357. )->where('camera_list.id', $request->input('id'))->select(
  358. 'camera_list.id',
  359. 'camera_list.ip',
  360. 'camera_list.port',
  361. 'camera_list.user_name',
  362. 'camera_list.password',
  363. 'camera_list.com_number',
  364. 'camera_list.camera_url',
  365. 'camera_list.camera_name',
  366. 'camera_list.revert_id',
  367. 'camera_list.sort',
  368. 'camera_list.camera_type',
  369. 'camera_list.camera_source',
  370. 'camera_list.cover_picture',
  371. 'camera_list.video_recorder',
  372. 'mine_list.title',
  373. 'mine_list.degree'
  374. )->first();
  375. //工作面列表
  376. $working_surface = WorkingSurfaceCamera::join(
  377. 'working_surface', 'working_surface_camera.surface_id', '=', 'working_surface.id'
  378. )->where('working_surface_camera.camera_id', $request->input('id'))->value('surface_name');
  379. $camera_list->parent_title = MineList::where('id', explode('|', $camera_list->degree)[0])->value('title');
  380. $camera_list->working_surface = $working_surface;
  381. $tableObj = new TableAuxiliary('', $camera_list);
  382. $tableObj->column('parent_title', '矿区名称');
  383. $tableObj->column('title', '区域名称');
  384. $tableObj->column('camera_name', '摄像头名称');
  385. $tableObj->column('camera_type', '摄像头类型', function ($camera_type) {
  386. return CameraEnum::CAMERA_TYPE_EXCHANGE[$camera_type];
  387. });
  388. $tableObj->column('camera_source', '摄像头来源', function ($camera_source) {
  389. return CameraEnum::CAMERA_SOURCE_EXCHANGE[$camera_source];
  390. });
  391. $tableObj->column('video_recorder', '视频服务器来源', function ($video_recorder) {
  392. return CameraEnum::VIDEO_RECORDER_EXCHANGE[$video_recorder];
  393. });
  394. if($camera_list->revert_id != '' && $camera_list->revert_id != null){
  395. $tableObj->column('revert_id', '流媒体id');
  396. }
  397. if($camera_list->user_name != '' && $camera_list->user_name != null){
  398. $tableObj->column('user_name', '用户名');
  399. }
  400. if($camera_list->password != '' && $camera_list->password != null){
  401. $tableObj->column('password', '密码');
  402. }
  403. if($camera_list->ip != '' && $camera_list->ip != null){
  404. $tableObj->column('ip', 'ip地址');
  405. }
  406. if($camera_list->port != '' && $camera_list->port != null){
  407. $tableObj->column('port', '端口');
  408. }
  409. if($camera_list->com_number != '' && $camera_list->com_number != null){
  410. $tableObj->column('com_number', '通道号');
  411. }
  412. if($camera_list->camera_url != '' && $camera_list->camera_url != null){
  413. $tableObj->column('camera_url', '链接');
  414. }
  415. if($camera_list->sort != '' && $camera_list->sort != null){
  416. $tableObj->column('sort', '排序');
  417. }
  418. if($camera_list->working_surface != '' && $camera_list->working_surface != null){
  419. $tableObj->column('working_surface', '所属矿区区域');
  420. }
  421. if($camera_list->cover_picture != '' && $camera_list->cover_picture != null){
  422. $tableObj->column('cover_picture', '封面图片', function($cover_picture) {
  423. return '<img src="'.$cover_picture.'">';
  424. });
  425. }
  426. $tableObj->title = '摄像头详情';
  427. return $this->tableView($tableObj);
  428. }
  429. //添加摄像头列表
  430. public function cameraListAdd(Request $request)
  431. {
  432. $mineService = new MineServices();
  433. $mineService->initMineList();
  434. $titleList = $mineService->getTierList();
  435. $formObj = new FromAuxiliary('camera/list/add');
  436. if(isset($_GET['mine_id']) && $_GET['mine_id'] != ''){
  437. $formObj->tree_select('mine_id', '所属区域', $titleList,$_GET['mine_id']);
  438. }else{
  439. $formObj->tree_select('mine_id', '所属区域', $titleList);
  440. }
  441. $formObj->input('camera_name', '摄像头名称');
  442. $formObj->select('camera_type', '摄像头类型', CameraEnum::CAMERA_TYPE_EXCHANGE, CameraEnum::CAMERA_TYPE_NORMAL);
  443. $formObj->select('camera_source', '摄像头来源', CameraEnum::CAMERA_SOURCE_EXCHANGE, CameraEnum::CAMERA_SOURCE_1);
  444. $formObj->radio('video_recorder', '硬盘录像机品牌',CameraEnum::VIDEO_RECORDER_EXCHANGE, CameraEnum::VIDEO_RECORDER_HK);
  445. $formObj->input('camera_url', '摄像头链接');
  446. $formObj->input('user_name', '用户名');
  447. $formObj->input('password', '密码');
  448. $formObj->input('ip', 'ip地址');
  449. $formObj->input('port', '端口');
  450. $formObj->input('com_number', '通道号');
  451. $formObj->select('code_stream', '视频码流', CameraEnum::CODE_STREAM_EXCHANGE, CameraEnum::CODE_STREAM_SUB);
  452. $formObj->input('sort', '排序', CameraEnum::DEFAULT_SORT);
  453. $formObj->uploadImg('cover_picture', '封面图片', '/admin/camera/upload/cover_picture', '');
  454. $formObj->title = '添加摄像头';
  455. return $this->from($formObj);
  456. }
  457. //添加摄像头列表操作
  458. public function cameraListAddPost(Request $request)
  459. {
  460. if (!$request->input('mine_id')) {
  461. return $this->error(1, '请选择区域');
  462. }
  463. if (!$request->input('camera_type')) {
  464. return $this->error(1, '请选择摄像头类型');
  465. }
  466. if (!$request->input('camera_name')) {
  467. return $this->error(1, '请输入摄像头名称');
  468. }
  469. if ($request->input('camera_source') == CameraEnum::CAMERA_SOURCE_1 && (!$request->input('ip') || !$request->input('port') || !$request->input('user_name')
  470. || !$request->input('pass') ||!$request->input('com_number'))) {
  471. return $this->error(1, '请输入必填字段');
  472. }
  473. if ($request->input('camera_source') == CameraEnum::CAMERA_SOURCE_2 && $request->input('code_stream') == 0) {
  474. return $this->error(1, '请选择视频码流');
  475. }
  476. if ($request->input('camera_source') == CameraEnum::CAMERA_SOURCE_3 && !$request->input('camera_url')) {
  477. return $this->error(1, '请输入摄像头链接');
  478. }
  479. if (!$request->input('code_stream')) {
  480. return $this->error(1, '请选择视频码流类型');
  481. }
  482. $result = CameraServices::addCameraList($request->all());
  483. if (!$result['status']) {
  484. return $this->error(1, $result['msg']);
  485. }
  486. return $this->redirect('admin/camera/list');
  487. }
  488. //编辑回放
  489. public function cameraListPlayback(Request $request)
  490. {
  491. $id = $request->input('id');
  492. if (empty($id)) {
  493. return $this->redirect('admin/camera/list');
  494. }
  495. if ($request->isMethod('post')) {
  496. $params = $request->all();
  497. if(isset($params['title'])) {
  498. for ($i = 0; $i < count($params['title']); $i++) {
  499. if ($params['title'][$i] == null || $params['start_time'][$i] == null || $params['end_time'][$i] == null) {
  500. return $this->error(1, '请输入必填字段');
  501. }
  502. if(strtotime($params['end_time'][$i]) < strtotime($params['start_time'][$i])){
  503. return $this->error(1, '开始时间不能大于结束时间');
  504. }
  505. }
  506. }
  507. DB::table('playback')->where('camera_id',$params['id'])->delete();
  508. $camera['playback'] = $params['playback'];
  509. DB::table('camera_list')->where('id',$params['id'])->update($camera);
  510. if($params['playback'] == 1){//可回放
  511. if(isset($params['title'])){
  512. for($i=0;$i<count($params['title']);$i++){
  513. $playback['camera_id'] = $params['id'];
  514. $playback['title'] = $params['title'][$i];
  515. $playback['start_time'] = $params['start_time'][$i];
  516. $playback['end_time'] = $params['end_time'][$i];
  517. $playback['created_at'] = date('Y-m-d H:i:s');
  518. $playback['updated_at'] = date('Y-m-d H:i:s');
  519. DB::table('playback')->insert($playback);
  520. }
  521. }
  522. }
  523. return $this->redirect('admin/camera/list');
  524. }
  525. $camera = CameraList::find($id);
  526. $playback = DB::table('playback')->where('camera_id',$id)->where('deleted_at',null)->get();
  527. $formObj = new FromAuxiliary('camera/list/edit', $camera);
  528. $formObj->radio('playback', '是否可回放',CameraEnum::VIDEO_PLAY_BACK);
  529. $formObj->title = '摄像头回放';
  530. $data['path'] = '/admin/' . $formObj->path;
  531. $data['fromTitle'] = $formObj->title;
  532. $data['columns'] = $formObj->columns;
  533. $data['item'] = $formObj->item;
  534. $data['hasHr'] = $formObj->hasHr;
  535. $data['primaryKey'] = $formObj->primaryKey;
  536. $data['footBtns'] = $formObj->footBtns;
  537. $data['colWidth'] = $formObj->colWidth;
  538. $data['playback'] = $playback;
  539. $data['camera_name'] = $camera->camera_name;
  540. return $this->view('camera::playback_edit', $data);
  541. }
  542. //编辑摄像头列表
  543. public function cameraListEdit(Request $request)
  544. {
  545. $id = $request->input('id');
  546. if (empty($id)) {
  547. return $this->redirect('admin/camera/list');
  548. }
  549. $mineService = new MineServices();
  550. $mineService->initMineList();
  551. $titleList = $mineService->getTierList();
  552. $camera_list = CameraList::find($id);
  553. if ($request->has('type') && $request->input('type') == 'show') {
  554. if ($camera_list->is_show == 1) {
  555. $camera_list->is_show = 2;
  556. } else {
  557. $camera_list->is_show = 1;
  558. }
  559. $camera_list->save();
  560. return $this->success();
  561. }
  562. //工作面列表
  563. $degree = MineList::where('id', $camera_list->mine_id)->value('degree');
  564. $parent_id = explode('|', $degree)[0];
  565. $surface_list = WorkingSurface::where('mine_id', $parent_id)->get()->toArray();
  566. $surface_arr = [];
  567. foreach ($surface_list as $key => $val) {
  568. $surface_arr[$val['id']] = $val['surface_name'];
  569. }
  570. $default_surface = WorkingSurfaceCamera::where('camera_id', $id)->value('surface_id');
  571. $formObj = new FromAuxiliary('camera/list/edit', $camera_list);
  572. $formObj->tree_select('mine_id', '所属区域', $titleList);
  573. $formObj->input('camera_name', '摄像头名称');
  574. $formObj->select('camera_type', '摄像头类型', CameraEnum::CAMERA_TYPE_EXCHANGE);
  575. $formObj->select('camera_source', '摄像头来源', CameraEnum::CAMERA_SOURCE_EXCHANGE);
  576. $formObj->radio('video_recorder', '视频服务器来源',CameraEnum::VIDEO_RECORDER_EXCHANGE);
  577. $formObj->input('camera_url', '摄像头链接');
  578. $formObj->input('user_name', '用户名');
  579. $formObj->input('password', '密码');
  580. $formObj->input('ip', 'ip地址');
  581. $formObj->input('port', '端口');
  582. $formObj->input('com_number', '通道号');
  583. $formObj->select('code_stream', '视频码流', CameraEnum::CODE_STREAM_EXCHANGE);
  584. $formObj->input('sort', '排序');
  585. $formObj->select('surface_id', '所属矿区区域', $surface_arr, $default_surface);
  586. $formObj->uploadImg('cover_picture', '封面图片', '/admin/camera/upload/cover_picture', $camera_list->cover_picture);
  587. $formObj->title = '编辑摄像头';
  588. return $this->from($formObj);
  589. }
  590. //编辑摄像头操作
  591. public function cameraListEditPost(Request $request)
  592. {
  593. if (!$request->input('mine_id')) {
  594. return $this->error(1, '请选择所属区域');
  595. }
  596. if (!$request->input('camera_type')) {
  597. return $this->error(1, '请选择摄像头类型');
  598. }
  599. if (!$request->input('camera_name')) {
  600. return $this->error(1, '请输入摄像头名称');
  601. }
  602. if ($request->input('camera_source') == CameraEnum::CAMERA_SOURCE_3 && !$request->input('camera_url')) {
  603. return $this->error(1, '请输入摄像头链接');
  604. }
  605. if (!$request->input('code_stream')) {
  606. return $this->error(1, '请选择视频码流类型');
  607. }
  608. // if (
  609. // !$request->input('ip') || !$request->input('port') || !$request->input('user_name')
  610. // || !$request->input('password') ||!$request->input('com_number')
  611. // ) {
  612. // return $this->error(1, '请输入必填字段');
  613. // }
  614. $result = CameraServices::editCameraList($request->all());
  615. if (!$result['status']) {
  616. return $this->error(1, $result['msg']);
  617. }
  618. //更新摄像头与工作面关联表
  619. SurfaceServices::updateSrufaceCamera($request->all());
  620. return $this->redirect('admin/camera/list');
  621. }
  622. //删除摄像头列表记录
  623. public function cameraListDelPost(Request $request)
  624. {
  625. if (!$request->has('id')) {
  626. return $this->error(1, '缺少必要参数');
  627. }
  628. $result = CameraServices::delCameraList($request->all());
  629. if (!$result['status']) {
  630. return $this->error(1, $result['msg']);
  631. }
  632. return $this->success();
  633. }
  634. //导入摄像头列表
  635. public function cameraListImport(Request $request)
  636. {
  637. if (!$request->hasFile('excel')) {
  638. return $this->error(9001, '缺少上传文件');
  639. }
  640. ini_set('memory_limit', '500M');
  641. set_time_limit(300);
  642. $reader = ReaderEntityFactory::createReaderFromFile($request->file('excel')->getClientOriginalName());
  643. $reader->open($request->file('excel')->getRealPath());
  644. $sheet = $reader->getSheetIterator(); // 获取sheet对象
  645. $sheet->rewind(); // 指定当前sheet序数
  646. $sheet = $sheet->current(); // 获取指定sheet
  647. $arr = [];
  648. foreach ($sheet->getRowIterator() as $index => $row) { // 读取每行记录
  649. $arr[] = $row->toArray();
  650. }
  651. $reader->close();
  652. $result = CameraListExcel::dispatch($arr);
  653. if (!$result) {
  654. return $this->error(1, '所传矿区信息不存在');
  655. }
  656. return $this->success();
  657. }
  658. //下载摄像头列表导入模板
  659. public function cameraListTemplate()
  660. {
  661. return $this->redirect('/template/摄像头列表导入模板_v3.0.xlsx');
  662. }
  663. //字段列表
  664. public function fieldList(Request $request)
  665. {
  666. $this->menusActive[0] = 'adminCamera';
  667. $this->menusActive[1] = 'adminCameraFieldlist';
  668. $field_list = CameraFieldList::get();
  669. $tableObj = new TableAuxiliary('camera/field_list', $field_list);
  670. $tableObj->actionBtns = ['edit', 'del'];
  671. $tableObj->column('field_name', '字段名称');
  672. return $this->tableList($tableObj);
  673. }
  674. //添加字段
  675. public function fieldListAdd(Request $request)
  676. {
  677. $formObj = new FromAuxiliary('camera/field_list/add');
  678. $formObj->input('field_name', '字段名称');
  679. $formObj->title = '添加字段';
  680. return $this->from($formObj);
  681. }
  682. //添加字段操作
  683. public function fieldListAddPost(Request $request)
  684. {
  685. if (!$request->input('field_name')) {
  686. return $this->error(1, '请输入字段名称');
  687. }
  688. $result = CameraServices::addCameraFieldList($request->all());
  689. if (!$result['status']) {
  690. return $this->error(1, $result['msg']);
  691. }
  692. return $this->redirect('admin/camera/field_list');
  693. }
  694. //编辑字段
  695. public function fieldListEdit(Request $request)
  696. {
  697. $field_list_id = $request->input('id');
  698. if (empty($field_list_id)) {
  699. return $this->redirect('admin/camera/field_list');
  700. }
  701. $field_list = CameraFieldList::find($field_list_id);
  702. $fromObj = new FromAuxiliary('camera/field_list/edit', $field_list);
  703. $fromObj->input("field_name", "字段名称", $field_list->field_name);
  704. $fromObj->title = '修改字段';
  705. return $this->from($fromObj);
  706. }
  707. //编辑字段操作
  708. public function fieldListEditPost(Request $request)
  709. {
  710. if (!$request->input('field_name')) {
  711. return $this->error(1, '请输入字段名称');
  712. }
  713. $result = CameraServices::editCameraFieldList($request->all());
  714. if (!$result['status']) {
  715. return $this->error(1, $result['msg']);
  716. }
  717. return $this->redirect('admin/camera/field_list');
  718. }
  719. //删除字段
  720. public function fieldListDelPost(Request $request)
  721. {
  722. if (!$request->has('id')) {
  723. return $this->error(1, '缺少必要参数');
  724. }
  725. $result = CameraServices::delCameraFieldList($request->all());
  726. if (!$result['status']) {
  727. return $this->error(1, $result['msg']);
  728. }
  729. return $this->success();
  730. }
  731. //上传摄像头封面图片
  732. public function cameraUploadCpicture(Request $request)
  733. {
  734. $file = $request->file('file');
  735. $file_name = CameraServices::uploadFile($file);
  736. $file_path = public_path() . '/filedownload/';
  737. $res = CameraServices::uploadOssFile($file_name, $file_path);
  738. CameraServices::delUploadFile();
  739. $result['image_path'] = $res;
  740. return $this->success($result);
  741. }
  742. }