package com.ld.igds.sec.controller;
|
|
import com.bstek.bdf2.core.business.IUser;
|
import com.bstek.bdf2.core.model.DefaultDept;
|
import com.ld.igds.camera.CameraUtil;
|
import com.ld.igds.camera.data.ApiCameraResp;
|
import com.ld.igds.common.manager.CommonManager;
|
import com.ld.igds.constant.BizType;
|
import com.ld.igds.constant.Constant;
|
import com.ld.igds.data.ConfigHikMedia;
|
import com.ld.igds.data.PageResponse;
|
import com.ld.igds.models.Depot;
|
import com.ld.igds.sec.dto.*;
|
import com.ld.igds.camera.data.ApiCameraData;
|
import com.ld.igds.sec.manager.SecManager;
|
import com.ld.igds.util.ContextUtil;
|
import com.ld.igds.util.FilesUtil;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.time.DateFormatUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.servlet.ModelAndView;
|
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* 安防--视频监控管理控制层
|
* @author
|
*/
|
@Slf4j
|
@RestController
|
@RequestMapping("basic/security")
|
public class SecurityController {
|
|
@Autowired
|
private SecManager securityManager;
|
@Autowired
|
private ConfigHikMedia configHikMedia;
|
@Autowired
|
private CommonManager commonManager;
|
|
/**
|
* 监控概览
|
*
|
* @param type 1.表示2.5D鸟瞰图页面预览;2.表示列表预览页面
|
* @return
|
*/
|
@RequestMapping("/aerial-video")
|
public ModelAndView aerialVideo(
|
@RequestParam(value = "type", required = false) String type) {
|
|
if (StringUtils.isEmpty(type)) type = "1";
|
|
ModelAndView view = new ModelAndView();
|
|
IUser user = ContextUtil.getLoginUser();
|
view.addObject(Constant.MODEL_KEY_LOGIN_USER, user);
|
|
// 设置logo
|
String logName = FilesUtil.getAerialByDeptId(ContextUtil.subDeptId(null));
|
view.addObject("logo", "../../static/img/" + logName);
|
|
view.addObject("bizType", BizType.SECURITY.getCode());
|
|
String deptId = ContextUtil.subDeptId(user);
|
List<SecCameraDto> listCamera = securityManager.listCamera(deptId, user.getCompanyId());
|
|
view.addObject("deptId", deptId);
|
|
view.addObject("listCamera", listCamera);
|
|
view.setViewName("admin/afgl/aerial-video");
|
|
// 设置鸟瞰背景图
|
String aerialImg = FilesUtil.getAerialByDeptId(deptId);
|
view.addObject("backgroundImg", "../../static/img/" + aerialImg);
|
|
if ("2".equals(type)) {
|
view.setViewName("admin/afgl/aerial-video2");
|
}
|
|
return view;
|
}
|
|
/**
|
* 鸟瞰图页面 -- 视频播放,通过播放参数不同跳转不同页面播放
|
*
|
* @param cameraId 摄像机系统ID
|
* @param playType 配置的播放方式
|
* @param time 时间参数,无具体含义
|
* @return
|
*/
|
@RequestMapping("/video-play")
|
public ModelAndView play(
|
@RequestParam(value = "cameraId", required = true) String cameraId,
|
@RequestParam(value = "playType", required = false) String playType,
|
@RequestParam(value = "time", required = false) String time) {
|
ModelAndView view = new ModelAndView();
|
|
IUser user = ContextUtil.getLoginUser();
|
|
// 设置logo
|
String logName = FilesUtil.getLogoByCompanyId(user.getCompanyId());
|
view.addObject("logo", "../../static/img/" + logName);
|
|
// 设置默认播放方式
|
if (StringUtils.isEmpty(playType)) {
|
playType = CameraUtil.PLAY_TYPE_VLC;
|
}
|
|
SecCameraDto param = new SecCameraDto();
|
param.setId(cameraId);
|
SecCameraDto camera = securityManager.getPlayAddr(param);
|
|
if (camera == null) {
|
view.addObject("errorMsg", "获取视频设备出错,请先刷新缓存!");
|
view.setViewName("admin/afgl/video-error");
|
return view;
|
}
|
|
if (StringUtils.isEmpty(camera.getPlayAddr())) {
|
view.addObject("errorMsg", "获取视频流失败,请重试!");
|
view.setViewName("admin/afgl/video-error");
|
}
|
|
log.info("-----获取播放地址-----{}--{}", camera.getName(), camera.getPlayAddr());
|
|
//vlc播放页面
|
if (CameraUtil.PLAY_TYPE_VLC.equals(playType)) {
|
view.setViewName("admin/afgl/video-vlc");
|
}
|
|
//流媒体播放页面
|
if (CameraUtil.PLAY_TYPE_FZZY_GB.equals(playType)
|
|| CameraUtil.PLAY_TYPE_EASY_GBS.equals(playType)
|
|| CameraUtil.PLAY_TYPE_MEDIA_HIK_INFOVISION_IOT_161.equals(playType)) {
|
view.setViewName("admin/afgl/video-media");
|
}
|
|
if (CameraUtil.PLAY_TYPE_MEDIA_HIK.equals(playType)) {
|
view.setViewName("admin/afgl/video-hikmedia");
|
view.addObject("hikMediaProp", configHikMedia.getHikProp(ContextUtil.getCompanyId()));
|
}
|
|
//海康WEB插件播放页面
|
if (CameraUtil.PLAY_TYPE_HIK_WEB4.equals(playType)) {
|
view.setViewName("admin/afgl/video-hikweb4");
|
}
|
|
// 设置摄像头信息
|
view.addObject("cameraData", camera);
|
|
return view;
|
}
|
|
/**
|
* 获取视频播放地址
|
*
|
* @param param
|
* @return
|
*/
|
@RequestMapping("/get-media")
|
public @ResponseBody
|
SecCameraDto getMedia(@RequestBody SecCameraDto param) {
|
|
return securityManager.getPlayAddr(param);
|
}
|
|
/**
|
* 视频云台操作
|
*
|
* @param param
|
* @return
|
*/
|
@RequestMapping("/ptz-media")
|
public @ResponseBody
|
ApiCameraResp ptzMedia(@RequestBody ApiCameraData param) {
|
return securityManager.ptzMedia(param);
|
}
|
|
/**
|
* 视频云台预置位设置
|
*
|
* @param param
|
* @return
|
*/
|
@RequestMapping("/ptz-preset")
|
public @ResponseBody
|
ApiCameraResp ptzPreset(@RequestBody ApiCameraData param) {
|
return securityManager.ptzPreset(param);
|
}
|
|
/**
|
* 流媒体服务器,保证流媒体推流
|
*
|
* @param param
|
* @return
|
*/
|
@RequestMapping("/keep-alive")
|
public @ResponseBody
|
ApiCameraResp keepAlive(@RequestBody ApiCameraData param) {
|
return securityManager.keepAlive(param);
|
}
|
|
/***
|
* 视频鸟瞰图中更改摄像头位置
|
*
|
* @param params
|
* @return
|
*/
|
@RequestMapping("/update-pos")
|
public PageResponse<String> updatePos(
|
@RequestBody List<SecurityParam> params) {
|
return securityManager.updatePos(params);
|
}
|
|
|
/**
|
* 人员进出
|
*
|
* @param
|
* @return
|
*/
|
@RequestMapping("/personnel-access")
|
public ModelAndView personnelAccess(@RequestParam(value = "parentCode", required = false) String parentCode) {
|
|
ModelAndView view = new ModelAndView();
|
|
view.addObject("time", DateFormatUtils.format(new Date(), "yyyy-MM-dd"));
|
view.setViewName("admin/afgl/personnel-access");
|
return view;
|
}
|
|
/**
|
* 车辆进出
|
* @param
|
* @return
|
*/
|
@RequestMapping("/vehicle-access")
|
public ModelAndView vehicleAccess(@RequestParam(value = "parentCode", required = false) String parentCode) {
|
|
ModelAndView view = new ModelAndView();
|
|
view.addObject("time", DateFormatUtils.format(new Date(), "yyyy-MM-dd"));
|
view.setViewName("admin/afgl/vehicle-access");
|
return view;
|
}
|
|
/**
|
* 舱内抓拍
|
* @param
|
* @return
|
*/
|
@RequestMapping("/depot-capture")
|
public ModelAndView depotCapture(@RequestParam(value = "parentCode", required = false) String parentCode) {
|
|
ModelAndView view = new ModelAndView();
|
|
// 仓库列表做下拉框使用
|
List<Depot> listDepot = commonManager.listDepot(null);
|
view.addObject(Constant.MODEL_KEY_DEPOT_LIST, listDepot);
|
view.addObject("time", DateFormatUtils.format(new Date(), "yyyy-MM-dd"));
|
view.setViewName("admin/afgl/depot-capture");
|
return view;
|
}
|
|
/**
|
* 贷款监管
|
* @param
|
* @return
|
*/
|
@RequestMapping("/provide")
|
public ModelAndView provide(@RequestParam(value = "parentCode", required = false) String parentCode) {
|
|
ModelAndView view = new ModelAndView();
|
|
view.setViewName("test/provide");
|
return view;
|
}
|
|
/**
|
* 页面控制--数量检测页面
|
*
|
* @param depotId
|
* @return
|
*/
|
@RequestMapping("/video-test")
|
public ModelAndView videoDetection(
|
@RequestParam(value = "depotId", required = false) String depotId,
|
@RequestParam(value = "deptId", required = false) String deptId,
|
@RequestParam(value = "t", required = false) String t) {
|
if (StringUtils.isEmpty(t)) t = "1";
|
|
ModelAndView view = new ModelAndView();
|
|
// 仓库列表做下拉框使用
|
List<Depot> listDepot = commonManager.listDepot(null);
|
view.addObject(Constant.MODEL_KEY_DEPOT_LIST, listDepot);
|
IUser user = ContextUtil.getLoginUser();
|
view.addObject(Constant.MODEL_KEY_LOGIN_USER, user);
|
|
if (StringUtils.isEmpty(deptId)) {
|
deptId = ContextUtil.subDeptId(user);
|
}
|
view.addObject("deptId", deptId);
|
|
view.addObject("bizType", BizType.QUANTITY.getCode());
|
view.addObject("depotId", depotId);
|
|
//获取当前用户所在的分库名称
|
DefaultDept dept = commonManager.getSubDept(user, deptId);
|
view.addObject("dept", dept);
|
|
view.setViewName("admin/afgl/video-test");
|
|
return view;
|
}
|
|
}
|