Commit 67822299 by 高晓磊

新建production工程,添加视频播放接口

parent 6065c97b
...@@ -137,6 +137,7 @@ dependencies { ...@@ -137,6 +137,7 @@ dependencies {
compile "com.beecode:xyst.dinas.oa:${inzVersion}" compile "com.beecode:xyst.dinas.oa:${inzVersion}"
compile "com.beecode:xyst.dinas.biz:${inzVersion}" compile "com.beecode:xyst.dinas.biz:${inzVersion}"
compile "com.beecode:xyst.dinas.project:${inzVersion}" compile "com.beecode:xyst.dinas.project:${inzVersion}"
compile "com.beecode:xyst.dinas.production:${inzVersion}"
providedRuntime lib.spring_boot_starter_tomcat providedRuntime lib.spring_boot_starter_tomcat
} }
......
...@@ -14,6 +14,7 @@ includeBuild("../") { ...@@ -14,6 +14,7 @@ includeBuild("../") {
substitute module('com.beecode:xyst.dinas.oa') with project(':xyst.dinas.oa') substitute module('com.beecode:xyst.dinas.oa') with project(':xyst.dinas.oa')
substitute module('com.beecode:xyst.dinas.biz') with project(':xyst.dinas.biz') substitute module('com.beecode:xyst.dinas.biz') with project(':xyst.dinas.biz')
substitute module('com.beecode:xyst.dinas.project') with project(':xyst.dinas.project') substitute module('com.beecode:xyst.dinas.project') with project(':xyst.dinas.project')
substitute module('com.beecode:xyst.dinas.production') with project(':xyst.dinas.production')
} }
} }
......
...@@ -12,4 +12,5 @@ include "inz.workflow" ...@@ -12,4 +12,5 @@ include "inz.workflow"
include "xyst.dinas.oa" include "xyst.dinas.oa"
include "xyst.dinas.biz" include "xyst.dinas.biz"
include "xyst.dinas.project" include "xyst.dinas.project"
include "xyst.dinas.production"
...@@ -9,7 +9,9 @@ import com.beecode.bcp.type.KObject; ...@@ -9,7 +9,9 @@ import com.beecode.bcp.type.KObject;
import com.beecode.inz.basis.internal.dao.AbstractBaseDao; import com.beecode.inz.basis.internal.dao.AbstractBaseDao;
import com.xyst.dinas.biz.constant.CameraInfoConstant; import com.xyst.dinas.biz.constant.CameraInfoConstant;
import com.xyst.dinas.biz.dao.CameraInfoDao; import com.xyst.dinas.biz.dao.CameraInfoDao;
import org.apache.commons.lang3.StringUtils;
import org.hibernate.criterion.DetachedCriteria; import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions; import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate5.HibernateTemplate; import org.springframework.orm.hibernate5.HibernateTemplate;
...@@ -56,17 +58,20 @@ public class CameraInfoDaoImpl extends AbstractBaseDao implements CameraInfoDao, ...@@ -56,17 +58,20 @@ public class CameraInfoDaoImpl extends AbstractBaseDao implements CameraInfoDao,
DetachedCriteria detachedCriteria = DetachedCriteria.forEntityName(bean.getName()); DetachedCriteria detachedCriteria = DetachedCriteria.forEntityName(bean.getName());
detachedCriteria.add(Restrictions.eq("del", false)); detachedCriteria.add(Restrictions.eq("del", false));
detachedCriteria.add(Restrictions.eq("regionalCompany.id", currentLoginRegionalCompany.getUuid("id"))); detachedCriteria.add(Restrictions.eq("regionalCompany.id", currentLoginRegionalCompany.getUuid("id")));
detachedCriteria.addOrder(Order.desc("sortOrder"));
if(null!=stationId){ if(null!=stationId){
detachedCriteria.add(Restrictions.eq("regionalStation.id", stationId)); detachedCriteria.add(Restrictions.eq("regionalStation.id", stationId));
} }
if(null!=watershedId){ if(null!=watershedId){
detachedCriteria.add(Restrictions.eq("watershedId", watershedId)); detachedCriteria.add(Restrictions.eq("watershedId", watershedId));
} }
detachedCriteria.add(Restrictions.like("cameraName", "%"+cameraName+"%")); if(StringUtils.isNotBlank(cameraName)){
detachedCriteria.add(Restrictions.like("cameraName", "%"+cameraName+"%"));
}
page.setTotal(template.findByCriteria(detachedCriteria).size());
int offset = page.getPageSize() * (page.getPageNo() - 1); int offset = page.getPageSize() * (page.getPageNo() - 1);
List<KObject> list = (List<KObject>) template.findByCriteria(detachedCriteria, offset, page.getPageSize()); List<KObject> list = (List<KObject>) template.findByCriteria(detachedCriteria, offset, page.getPageSize());
page.setDatas(list); page.setDatas(list);
page.setTotal(template.findByCriteria(detachedCriteria).size());
return page; return page;
} }
......
...@@ -11,6 +11,7 @@ import com.xyst.dinas.biz.constant.DinasTypeConstant; ...@@ -11,6 +11,7 @@ import com.xyst.dinas.biz.constant.DinasTypeConstant;
import com.xyst.dinas.biz.dao.DinasOrganizationDao; import com.xyst.dinas.biz.dao.DinasOrganizationDao;
import com.xyst.dinas.biz.dao.DinasTypeDao; import com.xyst.dinas.biz.dao.DinasTypeDao;
import org.hibernate.criterion.DetachedCriteria; import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions; import org.hibernate.criterion.Restrictions;
import org.hibernate.query.NativeQuery; import org.hibernate.query.NativeQuery;
import org.json.JSONObject; import org.json.JSONObject;
...@@ -70,10 +71,11 @@ public class DinasTypeDaoImpl extends AbstractBaseDao implements DinasTypeDao, D ...@@ -70,10 +71,11 @@ public class DinasTypeDaoImpl extends AbstractBaseDao implements DinasTypeDao, D
DetachedCriteria detachedCriteria = DetachedCriteria.forEntityName(bean.getName()); DetachedCriteria detachedCriteria = DetachedCriteria.forEntityName(bean.getName());
detachedCriteria.add(Restrictions.eq("regionalCompany.id", getCurrentLoginRegionalCompany().getUuid("id"))); detachedCriteria.add(Restrictions.eq("regionalCompany.id", getCurrentLoginRegionalCompany().getUuid("id")));
detachedCriteria.add(Restrictions.eq("del", false)); detachedCriteria.add(Restrictions.eq("del", false));
detachedCriteria.addOrder(Order.desc("sortOrder"));
page.setTotal(template.findByCriteria(detachedCriteria).size());
int offset = page.getPageSize() * (page.getPageNo() - 1); int offset = page.getPageSize() * (page.getPageNo() - 1);
List<KObject> list = (List<KObject>) template.findByCriteria(detachedCriteria, offset, page.getPageSize()); List<KObject> list = (List<KObject>) template.findByCriteria(detachedCriteria, offset, page.getPageSize());
page.setDatas(list); page.setDatas(list);
page.setTotal(template.findByCriteria(detachedCriteria).size());
return page; return page;
} }
......
...@@ -14,6 +14,7 @@ import com.xyst.dinas.biz.dao.ShipInfoDao; ...@@ -14,6 +14,7 @@ import com.xyst.dinas.biz.dao.ShipInfoDao;
import com.xyst.dinas.biz.service.CameraInfoService; import com.xyst.dinas.biz.service.CameraInfoService;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.hibernate.criterion.DetachedCriteria; import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions; import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate5.HibernateTemplate; import org.springframework.orm.hibernate5.HibernateTemplate;
...@@ -70,10 +71,11 @@ public class ShipInfoDaoImpl extends AbstractBaseDao implements ShipInfoDao, Shi ...@@ -70,10 +71,11 @@ public class ShipInfoDaoImpl extends AbstractBaseDao implements ShipInfoDao, Shi
if(StringUtils.isNotBlank(shipCodeNum)){ if(StringUtils.isNotBlank(shipCodeNum)){
detachedCriteria.add(Restrictions.like("shipCodeNum", "%"+shipCodeNum+"%")); detachedCriteria.add(Restrictions.like("shipCodeNum", "%"+shipCodeNum+"%"));
} }
detachedCriteria.addOrder(Order.desc("sortOrder"));
page.setTotal(template.findByCriteria(detachedCriteria).size());
int offset = page.getPageSize() * (page.getPageNo() - 1); int offset = page.getPageSize() * (page.getPageNo() - 1);
List<KObject> list = (List<KObject>) template.findByCriteria(detachedCriteria, offset, page.getPageSize()); List<KObject> list = (List<KObject>) template.findByCriteria(detachedCriteria, offset, page.getPageSize());
page.setDatas(list); page.setDatas(list);
page.setTotal(template.findByCriteria(detachedCriteria).size());
return page; return page;
} }
......
...@@ -10,6 +10,7 @@ import com.xyst.dinas.biz.constant.StationConstant; ...@@ -10,6 +10,7 @@ import com.xyst.dinas.biz.constant.StationConstant;
import com.xyst.dinas.biz.dao.DinasTypeDao; import com.xyst.dinas.biz.dao.DinasTypeDao;
import com.xyst.dinas.biz.dao.StationDao; import com.xyst.dinas.biz.dao.StationDao;
import org.hibernate.criterion.DetachedCriteria; import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions; import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate5.HibernateTemplate; import org.springframework.orm.hibernate5.HibernateTemplate;
...@@ -33,7 +34,6 @@ public class StationDaoImpl extends AbstractBaseDao implements StationDao, Stat ...@@ -33,7 +34,6 @@ public class StationDaoImpl extends AbstractBaseDao implements StationDao, Stat
@Override @Override
public Page<KObject> listStationInfoPaging(Page<KObject> page, Integer stationStatus) { public Page<KObject> listStationInfoPaging(Page<KObject> page, Integer stationStatus) {
// UUID departmentId = AminoContextHolder.getContext().getStaff().get("department").getUuid("id");
KClass bean = Amino.getStaticMetadataContext().getBean(StationConstant.ENTITY, KClass.class); KClass bean = Amino.getStaticMetadataContext().getBean(StationConstant.ENTITY, KClass.class);
DetachedCriteria detachedCriteria = DetachedCriteria.forEntityName(bean.getName()); DetachedCriteria detachedCriteria = DetachedCriteria.forEntityName(bean.getName());
// detachedCriteria.add(Restrictions.eq("department.id", departmentId)); // detachedCriteria.add(Restrictions.eq("department.id", departmentId));
...@@ -43,10 +43,11 @@ public class StationDaoImpl extends AbstractBaseDao implements StationDao, Stat ...@@ -43,10 +43,11 @@ public class StationDaoImpl extends AbstractBaseDao implements StationDao, Stat
} }
KObject currentLoginRegionalCompany = dinasTypeDao.getCurrentLoginRegionalCompany(); KObject currentLoginRegionalCompany = dinasTypeDao.getCurrentLoginRegionalCompany();
detachedCriteria.add(Restrictions.eq("regionalCompany.id",currentLoginRegionalCompany.getUuid("id"))); detachedCriteria.add(Restrictions.eq("regionalCompany.id",currentLoginRegionalCompany.getUuid("id")));
detachedCriteria.addOrder(Order.desc("sortOrder"));
int offset = page.getPageSize() * (page.getPageNo() - 1); int offset = page.getPageSize() * (page.getPageNo() - 1);
page.setTotal(template.findByCriteria(detachedCriteria).size());
List<KObject> list = (List<KObject>) template.findByCriteria(detachedCriteria,offset,page.getPageSize()); List<KObject> list = (List<KObject>) template.findByCriteria(detachedCriteria,offset,page.getPageSize());
page.setDatas(list); page.setDatas(list);
page.setTotal(template.findByCriteria(detachedCriteria).size());
return page; return page;
} }
......
dependencies {
compile lib.bcp_import
compile lib.bcp_type
compile lib.bcp_store
compile lib.hibernate_core
compile lib.spring_web
compile lib.spring_boot_autoconfigure
compile lib.jackson_datatype_jdk8
compile lib.jackson_datatype_jsr310
compile lib.json
compile "com.beecode:bap2.participant:${aminoVersion}"
compile "com.beecode:bcp.org:${aminoVersion}"
compile "com.beecode:bap2.department:${aminoVersion}"
compile "com.beecode:bap2.staff:${aminoVersion}"
compile 'com.deepoove:poi-tl:1.5.0'
compile project(":inz.common")
compile project(":inz.query")
compile project(":inz.workflow")
compile project(":inz.basis")
compile project(":xyst.dinas.project")
compile project(":xyst.dinas.biz")
testCompile lib.amino_boot_web
testCompile lib.mysql_connector
}
rootProject.name = 'xyst.dinas.production'
\ No newline at end of file
package com.xyst.dinas.production.config;
import com.xyst.dinas.production.dao.CameraPlayDao;
import com.xyst.dinas.production.internal.dao.CameraPlayDaoImpl;
import com.xyst.dinas.production.internal.service.CameraPlayServiceImpl;
import com.xyst.dinas.production.service.CameraPlayService;
import com.xyst.dinas.production.web.CameraPlayController;
import org.springframework.context.annotation.Bean;
public class CameraPlayConfiguration {
//CameraPlay相关bean配置
@Bean
public CameraPlayDao CameraPlayDao() {
return new CameraPlayDaoImpl();
}
@Bean
public CameraPlayService CameraPlayService(){
return new CameraPlayServiceImpl();
}
@Bean
public CameraPlayController CameraPlayController(){
return new CameraPlayController();
}
}
\ No newline at end of file
package com.xyst.dinas.production.constant;
/**
* @author scol
*/
public interface CameraPlayConstant {
String YS7_URL="https://open.ys7.com";
String YS7_LAPP_URL="/api/lapp/device";
/**
* 获取摄像头列表的url
*/
String CAMERA_LIST_URL = YS7_URL+YS7_LAPP_URL+"/camera/list";
/**
* 抓图url
*/
String CAPTURE_URL = YS7_URL+YS7_LAPP_URL+"/capture";
/**
* 移动到预置点的URL
*/
String MOVE_PRESET_URL = YS7_URL+YS7_LAPP_URL+"/preset/move";
/**
* 添加预置点url
*/
String ADD_PRESET_URL = YS7_URL+YS7_LAPP_URL+"/preset/add";
/**
* 清除预置点url
*/
String CLEAR_PRESET_URL = YS7_URL+YS7_LAPP_URL+"/preset/clear";
/**
* 云台控制开始url
*/
String CONTR_PIZ_START_URL = YS7_URL+YS7_LAPP_URL+"/ptz/start";
/**
* 云台控制结束URL
*/
String CONTR_PIZ_STOP_URL = YS7_URL+YS7_LAPP_URL+"/ptz/stop";
/**
* 获取本地视频文件url
*/
String VIDEO_FILE_URL = "https://open.ys7.com/api/lapp/video/by/time";
/**
* 获取TOKEN URL
*/
String TOKEN_URL = YS7_URL+"/api/lapp/token/get";
}
\ No newline at end of file
package com.xyst.dinas.production.dao;
import com.beecode.bap.attachment.common.Page;
import com.beecode.bcp.type.KObject;
import com.beecode.inz.basis.dao.BaseDao;
import java.util.List;
import java.util.UUID;
public interface CameraPlayDao extends BaseDao {
}
package com.xyst.dinas.production.internal.dao;
import com.beecode.amino.core.Amino;
import com.beecode.bap.attachment.common.Page;
import com.beecode.bcp.core.context.AminoContextHolder;
import com.beecode.bcp.type.KClass;
import com.beecode.bcp.type.KObject;
import com.beecode.inz.basis.internal.dao.AbstractBaseDao;
import com.xyst.dinas.biz.constant.CameraInfoConstant;
import com.xyst.dinas.biz.dao.CameraInfoDao;
import com.xyst.dinas.production.dao.CameraPlayDao;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate5.HibernateTemplate;
import java.util.Date;
import java.util.List;
import java.util.UUID;
public class CameraPlayDaoImpl extends AbstractBaseDao implements CameraPlayDao, CameraInfoConstant {
/**
* 抽象方法,需要实现类提供HibernateTemplate
*
* @return
*/
@Override
protected HibernateTemplate getHibernateTemplate() {
return null;
}
/**
* 抽象方法,需要实现类提供当前ModelName
*
* @return
*/
@Override
protected String getModelName() {
return null;
}
}
package com.xyst.dinas.production.internal.service;
import com.beecode.bcp.type.KObject;
import com.beecode.inz.basis.team.pojo.ResponseObj;
import com.xyst.dinas.biz.constant.CameraInfoConstant;
import com.xyst.dinas.biz.dao.CameraInfoDao;
import com.xyst.dinas.production.service.CameraPlayService;
import com.xyst.dinas.production.util.CameraContrUtil;
import com.xyst.dinas.production.util.PTZVo;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.transaction.annotation.Transactional;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
/**
* @author scol
*/
@Transactional(rollbackFor = Exception.class)
public class CameraPlayServiceImpl implements CameraPlayService {
@Autowired
private CameraInfoDao cameraInfoDao;
@Autowired
@Qualifier("com.beecode.inz.basis.config.AuthcConfiguration.tenantRedisTemplate")
RedisTemplate<String, String> redisTemplate;
@Override
public ResponseObj ptzControl(UUID cameraId, int direction, int speed, int op) {
KObject cameraInfo = cameraInfoDao.load(CameraInfoConstant.ENTITY, cameraId);
//判断是否可以拍摄
if (cameraInfo.getBigInteger("cameraType") == null) {
return ResponseObj.error("cameraType错误!此类型不支持操作");
}
if (!"1".equals(cameraInfo.getString("aggType"))) {
return ResponseObj.error("aggType错误!此类型不支持操作");
}
if ((cameraInfo.getBoolean("isShare"))) {
return ResponseObj.error("分享的camera不支持操作");
}
if (cameraInfo.getString("deviceSerial") == null) {
return ResponseObj.error("无效的设备序列号");
}
String accessToken = getEZVIZToken(cameraId);
String deviceSerial = cameraInfo.get("deviceSerial").toString();
Object channel_No = cameraInfo.get("channel_no");
Integer channelNo = null;
if (channel_No != null) {
channelNo = Integer.parseInt(channel_No.toString());
}
PTZVo pztVo;
if (op == 1) {
pztVo = CameraContrUtil.ptzControlStart(deviceSerial, accessToken, direction, speed, channelNo);
} else {
pztVo = CameraContrUtil.ptzControlStop(deviceSerial, accessToken, direction, channelNo);
}
return ResponseObj.success("请查看", pztVo);
}
@Override
public String getEZVIZToken(UUID accountId) {
KObject cameraInfo = cameraInfoDao.load(CameraInfoConstant.ENTITY, accountId);
KObject cameraAccount = cameraInfo.get("cameraAccount");
String appKey = cameraAccount.getString("buildinParamFir");
String appSecret = cameraAccount.getString("buildinParamSec");
String tokenRedisKey = CameraContrUtil.getYsTokenRedisKey(appKey, appSecret);
String token = redisTemplate.opsForValue().get(tokenRedisKey);
if (StringUtils.isNotBlank(token)) {
return token;
} else {
JSONObject map = null;
try {
map = CameraContrUtil.getToken(appKey, appSecret);
} catch (Exception e) {
e.printStackTrace();
}
if (map != null && map.get("accessToken") != null) {
String accessToken = map.get("accessToken").toString();
if (map.get("expireTime") != null) {
long millis = Long.parseLong(map.get("expireTime").toString());
//token缓存时间为7天,根据过期时间设置redis缓存
redisTemplate.opsForValue().set(tokenRedisKey, accessToken, (millis - System.currentTimeMillis()), TimeUnit.MILLISECONDS);
}
return accessToken;
}
}
return null;
}
@Override
public String capturePic(UUID id, String deviceSerial, String channelNo) {
String token = getEZVIZToken(id);
if (StringUtils.isBlank(channelNo)) {
channelNo = "1";
}
String ysPicRedisKey = CameraContrUtil.getYsPicRedisKey(deviceSerial, channelNo);
String ysPicUrl = redisTemplate.opsForValue().get(ysPicRedisKey);
if (StringUtils.isNotBlank(ysPicUrl)) {
return ysPicUrl;
} else {
PTZVo ptzVo = null;
ptzVo = CameraContrUtil.capturePic(deviceSerial, Integer.valueOf(channelNo), token);
if (ptzVo.getIsSuccess()) {
//萤石云建议4分钟调用1次,并存储图片url2小时,这边每隔1小时抓图,避免调用次数过多,也不会查询到的图片太近
redisTemplate.opsForValue().set(ysPicRedisKey, ptzVo.getPicUrl(), 60 * 60 * 1000, TimeUnit.MILLISECONDS);
return ptzVo.getPicUrl();
}
}
return null;
}
@Override
public JSONObject getCameraVideFileInfo(UUID id, Long startDate, Long endDate, Integer recType) {
KObject cameraInfo = cameraInfoDao.load(CameraInfoConstant.ENTITY, id);
String token = getEZVIZToken(id);
return CameraContrUtil.getCameraVideFileInfo(token, cameraInfo.getString("deviceSerial"), Integer.valueOf(cameraInfo.getString("channelNo")), startDate, endDate, recType);
}
@Override
public ResponseObj getCameraStatus(UUID id) {
KObject cameraInfo = cameraInfoDao.load(CameraInfoConstant.ENTITY, id);
String token = getEZVIZToken(id);
JSONObject pztVo = CameraContrUtil.getCameraInfo(token, cameraInfo.getString("deviceSerial"), Integer.valueOf(cameraInfo.getString("channelNo")));
if (pztVo != null) {
if (null != pztVo.getString("code") && "10007".equals(pztVo.getString("code"))) {
return ResponseObj.error("接口调用次数达到上限");
}
return ResponseObj.success("查询成功", pztVo.toString());
} else {
return ResponseObj.error("无效的设备序列号");
}
}
}
package com.xyst.dinas.production.service;
import com.beecode.inz.basis.team.pojo.ResponseObj;
import org.json.JSONObject;
import java.util.UUID;
public interface CameraPlayService {
ResponseObj ptzControl(UUID cameraId, int direction, int speed, int op) ;
String getEZVIZToken(UUID accountId) ;
String capturePic(UUID id, String deviceSerial, String channelNo) ;
JSONObject getCameraVideFileInfo(UUID id, Long startDate, Long endDate, Integer recType) ;
ResponseObj getCameraStatus(UUID id) ;
}
package com.xyst.dinas.production.util;
import java.io.Serializable;
public class PTZVo implements Serializable {
/** 云台返回值 */
private static final long serialVersionUID = -2039961655880584732L;
private boolean isSuccess;
private String code;
private String msg;
private String picUrl;
private Integer index;
public Integer getIndex() {
return index;
}
public void setIndex(Integer index) {
this.index = index;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getMsg() {
return msg;
}
public void setPicUrl(String picUrl) {
this.picUrl = picUrl;
}
public String getPicUrl() {
return picUrl;
}
public void setIsSuccess(boolean isSuccess) {
this.isSuccess = isSuccess;
}
public boolean getIsSuccess() {
return isSuccess;
}
}
package com.xyst.dinas.production.web;
import com.beecode.bap.attachment.common.Page;
import com.beecode.bcp.type.KObject;
import com.beecode.inz.basis.team.pojo.ResponseObj;
import com.xyst.dinas.biz.service.CameraInfoService;
import com.xyst.dinas.biz.service.StationService;
import com.xyst.dinas.production.service.CameraPlayService;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.*;
/**
* @author scol
*/
@RestController()
@RequestMapping(value = "/production/cameraPlay")
public class CameraPlayController {
@Autowired
private CameraInfoService cameraInfoService;
@Autowired
private CameraPlayService cameraPlayService;
@Autowired
private StationService stationService;
@GetMapping("/getStationCameraTree")
public ResponseObj<ArrayList<Map<String, Object>>> getStationCameraTree() throws Exception {
Page<KObject> kObjectPage = new Page<>();
kObjectPage.setPageNo(1);
kObjectPage.setPageSize(1000);
Page<KObject> stationPage = stationService.queryByPaging(kObjectPage, 1);
HashMap<String, Object> stringObjectHashMap;
ArrayList<Map<String, Object>> maps = new ArrayList<>();
for (KObject data : stationPage.getDatas()) {
stringObjectHashMap = new HashMap<>();
stringObjectHashMap.put("name",data.getString("stationName"));
stringObjectHashMap.put("id",data.getUuid("id"));
List<KObject> datas = cameraInfoService.queryByPaging(kObjectPage, data.getUuid("id"), null, null).getDatas();
for (KObject kObject : datas) {
String picUrl = cameraPlayService.capturePic(kObject.getUuid("id"),kObject.getString("deviceSerial"),kObject.getString("channelNo"));
kObject.set("videoUrl",picUrl);
}
stringObjectHashMap.put("cameras", datas);
maps.add(stringObjectHashMap);
}
return ResponseObj.response(200, "查询成功", maps);
}
/**
* @return
* @Description 云台控制
* @author zhouzy-a
* @date 2017年5月22日 下午1:47:41
* @direction 操作命令:0-上,1-下,2-左,3-右,4-左上,5-左下,6-右上,7-右下,8-放大,9-缩小,10-近焦距,11-远焦距
* @speed 云台速度:0-慢,1-适中,2-快
* @speed 控制操作:1-开始转动,2-停止转动
*/
@GetMapping("/ptzControl")
public ResponseObj ptzControl(UUID cameraId, int direction, int speed, int op) {
Map<String, Object> retMap = new HashMap<>();
retMap.put("status", "00");
try {
//调用后台服务
return cameraPlayService.ptzControl(cameraId, direction, speed, op);
} catch (Exception e) {
return ResponseObj.error("控制失败");
}
}
/**
*得到萤石云token
* @return
*/
@GetMapping("/getEZVIZToken/{id}")
public ResponseObj getEZVIZToken(@PathVariable("id")UUID id) {
//调用后台服务
String token = cameraPlayService.getEZVIZToken(id);
return ResponseObj.success(token);
}
/**
*获取萤石云文件信息
* @return
*/
@GetMapping("/getCameraVideFileInfo")
public ResponseObj getCameraVideFileInfo(@RequestParam("id") UUID id,@RequestParam(value = "startDate",required = false) Long startDate,@RequestParam(value ="endDate",required = false)Long endDate,@RequestParam(value ="recType",required = false)Integer recType) {
return ResponseObj.success("",cameraPlayService.getCameraVideFileInfo(id,startDate,endDate,recType));
}
/**
*获取萤石云状态
* @return
*/
@GetMapping("/getCameraStatus/{id}")
public ResponseObj getCameraStatus(@PathVariable("id") UUID id) {
return cameraPlayService.getCameraStatus(id);
}
}
# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.xyst.dinas.production.config.CameraPlayConfiguration
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment