球机句柄线程不安全,采用线程安全map

焦作-mxbc-北起
LAPTOP-S9HJSOEB\昊天 2 years ago
parent b691cd8cf3
commit 287626e929

@ -43,13 +43,13 @@ public class CameraControlController {
return Result.success(); return Result.success();
} }
private NetSDKLib.LLong cameraLogin(Integer cameraId){ /*private NetSDKLib.LLong cameraLogin(Integer cameraId){
log.info("相机登录 cameraId:{}",cameraId); log.info("相机登录 cameraId:{}",cameraId);
Camera camera = cameraMapper.selectById(cameraId); Camera camera = cameraMapper.selectById(cameraId);
Assert.notNull(camera,"球机不存在"); Assert.notNull(camera,"球机不存在");
NetSDKLib.LLong lLong = loginControlModule.login(cameraId,camera.getIp(),camera.getPort(),camera.getUser(),camera.getPassword()); NetSDKLib.LLong lLong = loginControlModule.login(cameraId,camera.getIp(),camera.getPort(),camera.getUser(),camera.getPassword());
return lLong; return lLong;
} }*/
@PostMapping("/up/{id}") @PostMapping("/up/{id}")
@ApiOperation(value = "球机控制向上") @ApiOperation(value = "球机控制向上")
@ -314,9 +314,11 @@ public class CameraControlController {
//checkLogin(id); //checkLogin(id);
plcService.cameraVideo(1,LocalDateTime.now().minusSeconds(id),LocalDateTime.now().plusSeconds(3)); plcService.cameraVideo(1,LocalDateTime.now().minusSeconds(id),LocalDateTime.now().plusSeconds(3));
plcService.cameraVideo(2,LocalDateTime.now().minusSeconds(id),LocalDateTime.now().plusSeconds(3)); plcService.cameraVideo(2,LocalDateTime.now().minusSeconds(id),LocalDateTime.now().plusSeconds(3));
/*String path = PathUtil.createFileName("mp4",id); String path = PathUtil.createFileName("mp4",id);
String realPath = configProperties.getSavePath().getMp4Path() + path; String realPath = configProperties.getSavePath().getMp4Path() + path;
TaskDelayExecutor.addMp4DelayTask(id,realPath,LocalDateTime.now().minusMinutes(2),LocalDateTime.now().minusSeconds(7),12000L);*/ TaskDelayExecutor.addMp4DelayTask(id,realPath,LocalDateTime.now().minusMinutes(3),LocalDateTime.now().minusMinutes(2),12000L);
/*
*/
//cameraControlModule.downloadMp4(id,"D:\\work\\"+LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))+".mp4", LocalDateTime.now().minusMinutes(10),LocalDateTime.now().minusMinutes(8)); //cameraControlModule.downloadMp4(id,"D:\\work\\"+LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))+".mp4", LocalDateTime.now().minusMinutes(10),LocalDateTime.now().minusMinutes(8));
return Result.success(); return Result.success();
} }
@ -344,12 +346,12 @@ public class CameraControlController {
} else { } else {
ok = JoywareLoginModuleImpl.connectStatus(CameraConnMap.getConnId(cameraId)); ok = JoywareLoginModuleImpl.connectStatus(CameraConnMap.getConnId(cameraId));
} }
if (!ok) { /* if (!ok) {
{ {
CameraConnMap.disConn(cameraId); //CameraConnMap.disConn(cameraId);
cameraService.cameraLogin(camera); cameraService.cameraLogin(camera);
} }
} }*/
}else { }else {
Camera camera = cameraMapper.selectById(cameraId); Camera camera = cameraMapper.selectById(cameraId);
cameraService.cameraLogin(camera); cameraService.cameraLogin(camera);

@ -5,6 +5,7 @@ import com.zhehekeji.web.lib.joyware.NetSDKLib;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/** /**
* camera login handler * camera login handler
@ -15,19 +16,18 @@ public class CameraConnMap {
* key :cameraId * key :cameraId
* value: loginId * value: loginId
*/ */
public static Map<Integer, NetSDKLib.LLong> cameraMap = new HashMap<>(); public static Map<Integer, NetSDKLib.LLong> cameraMap = new ConcurrentHashMap<>();
public static Map.Entry<Integer, NetSDKLib.LLong> cameraMapEntry = new HashMap.SimpleEntry<>(0,null);
/** /**
* key :cameraId * key :cameraId
* value: loginId * value: loginId
*/ */
public static Map<Integer, Camera> cameraByIdMap = new HashMap<>(); public static Map<Integer, Camera> cameraByIdMap = new ConcurrentHashMap<>();
/** /**
* key:loginId * key:loginId
* value: cameraId * value: cameraId
*/ */
public static Map<NetSDKLib.LLong,Integer> loginMap = new HashMap<>(); public static Map<NetSDKLib.LLong,Integer> loginMap = new ConcurrentHashMap<>();
public static void conn(Integer cameraId,NetSDKLib.LLong handlerId){ public static void conn(Integer cameraId,NetSDKLib.LLong handlerId){
@ -40,10 +40,16 @@ public class CameraConnMap {
synchronized (cameraId.toString().intern()){ synchronized (cameraId.toString().intern()){
NetSDKLib.LLong lLong = cameraMap.get(cameraId); NetSDKLib.LLong lLong = cameraMap.get(cameraId);
cameraMap.remove(cameraId); cameraMap.remove(cameraId);
loginMap.remove(lLong); if(lLong!=null) {
loginMap.remove(lLong);
}
} }
} }
public static void main(String[] args) {
disConn(55);
}
public static NetSDKLib.LLong getConnId(Integer cameraId){ public static NetSDKLib.LLong getConnId(Integer cameraId){
return cameraMap.get(cameraId); return cameraMap.get(cameraId);

@ -137,7 +137,7 @@ public interface CameraControlModule {
* @param ptzId * @param ptzId
* @param cameraId * @param cameraId
*/ */
void toPtz(Integer ptzId, Integer cameraId); boolean toPtz(Integer ptzId, Integer cameraId);
/** /**
* *

@ -6,6 +6,9 @@ import lombok.extern.slf4j.Slf4j;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.concurrent.*; import java.util.concurrent.*;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import static com.zhehekeji.web.lib.CameraConnMap.cameraMap; import static com.zhehekeji.web.lib.CameraConnMap.cameraMap;
@ -13,33 +16,34 @@ import static com.zhehekeji.web.lib.CameraConnMap.cameraMap;
public class TaskDelayExecutor { public class TaskDelayExecutor {
private static ExecutorService exec = Executors.newFixedThreadPool(20); private static ExecutorService exec = Executors.newFixedThreadPool(20);
private static DelayQueue<CameraDelayTask> queue = new DelayQueue<>(); private static DelayQueue<CameraDelayTask> queue = new DelayQueue<>();
public static void addMp4DelayTask(Integer cameraId, String path, LocalDateTime startTime, LocalDateTime endTime, Long delayTime) { public static void addMp4DelayTask(Integer cameraId, String path, LocalDateTime startTime, LocalDateTime endTime, Long delayTime) {
CameraDelayTask cameraDelayTask = new CameraDelayTask(cameraId, startTime, endTime,path, 0,delayTime); CameraDelayTask cameraDelayTask = new CameraDelayTask(cameraId, startTime, endTime, path, 0, delayTime);
queue.add(cameraDelayTask); queue.add(cameraDelayTask);
} }
public static void addPicDelayTask(Integer cameraId, String path, Long delayTime) { public static void addPicDelayTask(Integer cameraId, String path, Long delayTime) {
CameraDelayTask cameraDelayTask = new CameraDelayTask(cameraId, null, null,path, 1,delayTime); CameraDelayTask cameraDelayTask = new CameraDelayTask(cameraId, null, null, path, 1, delayTime);
queue.add(cameraDelayTask); queue.add(cameraDelayTask);
} }
public static void addGyrateCameraTask(Integer cameraId, Long delayTime,Integer ptzId){ public static void addGyrateCameraTask(Integer cameraId, Long delayTime, Integer ptzId) {
CameraDelayTask cameraDelayTask = new CameraDelayTask(cameraId, null, null,null, 2,delayTime); CameraDelayTask cameraDelayTask = new CameraDelayTask(cameraId, null, null, null, 2, delayTime);
cameraDelayTask.setPtzId(ptzId); cameraDelayTask.setPtzId(ptzId);
queue.add(cameraDelayTask); queue.add(cameraDelayTask);
} }
private static CameraService cameraService = SpringContextUtil.getBean(CameraService.class); private static CameraService cameraService = SpringContextUtil.getBean(CameraService.class);
public static void runMp4DownloadExecutor(){
exec.execute(new Consumer()); public static void runMp4DownloadExecutor() {
exec.execute(new ConsumerTask());
} }
private static class Consumer implements Runnable { private static class ConsumerTask implements Runnable {
@Override @Override
public void run() { public void run() {
@ -47,58 +51,60 @@ public class TaskDelayExecutor {
try { try {
CameraControlModule cameraControlModule = SpringContextUtil.getBean(CameraControlModule.class); CameraControlModule cameraControlModule = SpringContextUtil.getBean(CameraControlModule.class);
CameraDelayTask cameraDelayTask = queue.take(); CameraDelayTask cameraDelayTask = queue.take();
if(cameraDelayTask != null){ if (cameraDelayTask != null) {
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<?> future ; if (cameraDelayTask.getType() == 0) {
if(cameraDelayTask.getType() == 0){ foreach(s->{
future = executor.submit(() -> { return cameraControlModule.downloadMp4(cameraDelayTask.getCameraId(), cameraDelayTask.getPath(), cameraDelayTask.getStartTime(), cameraDelayTask.getEndTime());
if(cameraControlModule.downloadMp4(cameraDelayTask.getCameraId(), cameraDelayTask.getPath(), cameraDelayTask.getStartTime(), cameraDelayTask.getEndTime())) {
log.info("录像成功");
} // 录像线程任务
}); });
try {
future.get(15, TimeUnit.SECONDS); // 设置5秒超时
} catch (TimeoutException e) { } else if (cameraDelayTask.getType() == 1) {
future.cancel(true); // 超时时取消任务 //
System.out.println("视频线程超时"); // if (cameraControlModule.pic(cameraDelayTask.getCameraId(), 0, cameraDelayTask.getPath())) {
} // log.info("拍照成功");
// }
foreach(s->{
}else if(cameraDelayTask.getType() == 1){ return cameraControlModule.pic(cameraDelayTask.getCameraId(), 0, cameraDelayTask.getPath());
future = executor.submit(() -> {
if(cameraControlModule.pic(cameraDelayTask.getCameraId(), 0, cameraDelayTask.getPath())){
log.info("拍照成功");
}
}); });
try {
future.get(15, TimeUnit.SECONDS); // 设置5秒超时
} catch (TimeoutException e) {
future.cancel(true); // 超时时取消任务
System.out.println("拍照线程超时");
}
}else if(cameraDelayTask.getType() == 2){ } else if (cameraDelayTask.getType() == 2) {
future = executor.submit(() -> {
cameraControlModule.toPtz(cameraDelayTask.getPtzId(),cameraDelayTask.getCameraId()); foreach(s->{
return cameraControlModule.toPtz(cameraDelayTask.getPtzId(), cameraDelayTask.getCameraId());
}); });
try { ;
future.get(15, TimeUnit.SECONDS); // 设置5秒超时
} catch (TimeoutException e) {
future.cancel(true); // 超时时取消任务
System.out.println("云台线程超时");
}
} }
} }
} catch (InterruptedException e) {
log.error("任务执行失败", e);
} catch (Exception e) {
log.error("队列失败", e);
}
}
}
}
public static void foreach(Predicate<String> predicate){
int i = 0;
while (i<5){
if(predicate.test("")){
try {
Thread.sleep(300);
} catch (InterruptedException e) { } catch (InterruptedException e) {
log.error("任务执行失败",e); throw new RuntimeException(e);
}catch (Exception e){
log.error("队列失败",e);
} }
log.info("任务成功");
break;
} else {
System.out.printf("未成功");
} }
i++;
} }
} }

@ -462,7 +462,7 @@ public class HikCameraControlModuleImpl implements CameraControlModule {
* @param ptzId * @param ptzId
* @param cameraId * @param cameraId
*/ */
public void toPtz(Integer ptzId, Integer cameraId) public boolean toPtz(Integer ptzId, Integer cameraId)
{ {
int dwPTZCommand = HCNetSDK.GOTO_PRESET; int dwPTZCommand = HCNetSDK.GOTO_PRESET;
Boolean ok = false; Boolean ok = false;
@ -474,6 +474,9 @@ public class HikCameraControlModuleImpl implements CameraControlModule {
} }
if(!ok){ if(!ok){
log.error("toPtz error:{},cameraId:{}", HikLoginModuleImpl.hcNetsdk.NET_DVR_GetLastError(),cameraId); log.error("toPtz error:{},cameraId:{}", HikLoginModuleImpl.hcNetsdk.NET_DVR_GetLastError(),cameraId);
return false;
}else {
return true;
} }
} }

@ -123,6 +123,7 @@ public class HikLoginModuleImpl implements CameraControlLoginModule {
m_lUserID = hcNetsdk.NET_DVR_Login_V40(m_strLoginInfo,m_strDeviceInfo); m_lUserID = hcNetsdk.NET_DVR_Login_V40(m_strLoginInfo,m_strDeviceInfo);
tryTimes ++; tryTimes ++;
} }
if(m_lUserID >= 0){ if(m_lUserID >= 0){
log.info("hik login success"); log.info("hik login success");
//此id是用来保存视频的 且id不是固定的 //此id是用来保存视频的 且id不是固定的

@ -341,12 +341,16 @@ public class JoywareCameraControlModuleImpl implements CameraControlModule {
* @param ptzId * @param ptzId
* @param cameraId * @param cameraId
*/ */
public void toPtz(Integer ptzId, Integer cameraId) { public boolean toPtz(Integer ptzId, Integer cameraId) {
log.info("to ptz,ptzId:{},cameraId:{}",ptzId,cameraId); log.info("to ptz,ptzId:{},cameraId:{}",ptzId,cameraId);
int dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_POINT_MOVE_CONTROL; int dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_POINT_MOVE_CONTROL;
Boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx2(CameraConnMap.getConnId(cameraId), 0, dwPTZCommand, 0, ptzId, 0, 0, null); Boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx2(CameraConnMap.getConnId(cameraId), 0, dwPTZCommand, 0, ptzId, 0, 0, null);
if (!ok) { if (!ok) {
log.error("toPtz error, cameraId:{},ptzId:{},errorCode:{}", cameraId, ptzId,ToolKits.getErrorCodePrint());
log.error("toPtzSlow cameraId:{},error:{}", cameraId,ToolKits.getErrorCodePrint());
return false;
}else {
return true;
} }
} }
@ -370,6 +374,7 @@ public class JoywareCameraControlModuleImpl implements CameraControlModule {
if (!ok) { if (!ok) {
log.error("toPtzSlow cameraId:{},error:{}", cameraId,ToolKits.getErrorCodePrint()); log.error("toPtzSlow cameraId:{},error:{}", cameraId,ToolKits.getErrorCodePrint());
}else {
} }
} }

@ -58,11 +58,11 @@ public class CameraService {
private CameraControlLoginModule cameraControlLoginModule; private CameraControlLoginModule cameraControlLoginModule;
public void setCameraControlModule(CameraControlModule cameraControlModule){ public void setCameraControlModule(CameraControlModule cameraControlModule) {
this.cameraControlModule = cameraControlModule; this.cameraControlModule = cameraControlModule;
} }
public void setCameraLoginModule(CameraControlLoginModule cameraControlLoginModule){ public void setCameraLoginModule(CameraControlLoginModule cameraControlLoginModule) {
this.cameraControlLoginModule = cameraControlLoginModule; this.cameraControlLoginModule = cameraControlLoginModule;
} }
@ -71,8 +71,8 @@ public class CameraService {
camera.setPassword(configProperties.getCameraConfig().getCameraPassword()); camera.setPassword(configProperties.getCameraConfig().getCameraPassword());
camera.setPort(configProperties.getCameraConfig().getCameraPort()); camera.setPort(configProperties.getCameraConfig().getCameraPort());
camera.setUpdateTime(LocalDateTime.now()); camera.setUpdateTime(LocalDateTime.now());
camera.setRtsp("rtsp://"+configProperties.getCameraConfig().getCameraUser()+":"+configProperties.getCameraConfig().getCameraPassword()+"@"+camera.getIp()+":554/h264/ch1/sub/av_stream"); camera.setRtsp("rtsp://" + configProperties.getCameraConfig().getCameraUser() + ":" + configProperties.getCameraConfig().getCameraPassword() + "@" + camera.getIp() + ":554/h264/ch1/sub/av_stream");
if(StringUtils.isEmpty(camera.getRtcServer())){ if (StringUtils.isEmpty(camera.getRtcServer())) {
camera.setRtcServer("127.0.0.1"); camera.setRtcServer("127.0.0.1");
} }
camera.setRtcServerPort(8083); camera.setRtcServerPort(8083);
@ -88,12 +88,12 @@ public class CameraService {
public void edit(Camera camera) { public void edit(Camera camera) {
camera.setUpdateTime(LocalDateTime.now()); camera.setUpdateTime(LocalDateTime.now());
camera.setPtzId(null); camera.setPtzId(null);
if(StringUtils.isEmpty(camera.getRtcServer())){ if (StringUtils.isEmpty(camera.getRtcServer())) {
camera.setRtcServer("127.0.0.1"); camera.setRtcServer("127.0.0.1");
} }
camera.setPort(configProperties.getCameraConfig().getCameraPort()); camera.setPort(configProperties.getCameraConfig().getCameraPort());
camera.setUser(configProperties.getCameraConfig().getCameraUser()); camera.setUser(configProperties.getCameraConfig().getCameraUser());
camera.setRtsp("rtsp://"+configProperties.getCameraConfig().getCameraUser()+":"+configProperties.getCameraConfig().getCameraPassword()+"@"+camera.getIp()+":554/h264/ch1/sub/av_stream"); camera.setRtsp("rtsp://" + configProperties.getCameraConfig().getCameraUser() + ":" + configProperties.getCameraConfig().getCameraPassword() + "@" + camera.getIp() + ":554/h264/ch1/sub/av_stream");
try { try {
cameraMapper.updateById(camera); cameraMapper.updateById(camera);
} catch (DuplicateKeyException e) { } catch (DuplicateKeyException e) {
@ -110,10 +110,10 @@ public class CameraService {
public PageInfo<Camera> cameras(StreetSearch streetSearch) { public PageInfo<Camera> cameras(StreetSearch streetSearch) {
PageHelper.startPage(streetSearch.getPageNum(), streetSearch.getPageSize()); PageHelper.startPage(streetSearch.getPageNum(), streetSearch.getPageSize());
List<Camera> cameras = cameraMapper.selectByMap(new HashMap<>(0)); List<Camera> cameras = cameraMapper.selectByMap(new HashMap<>(0));
if(cameras.size() > 0){ if (cameras.size() > 0) {
CountDownLatch latch = new CountDownLatch(cameras.size()); CountDownLatch latch = new CountDownLatch(cameras.size());
cameras.forEach(camera -> { cameras.forEach(camera -> {
StatusThread statusThread = new StatusThread(camera,latch); StatusThread statusThread = new StatusThread(camera, latch);
statusThread.start(); statusThread.start();
}); });
try { try {
@ -126,66 +126,69 @@ public class CameraService {
return new PageInfo<>(cameras); return new PageInfo<>(cameras);
} }
public class StatusThread extends Thread{ public class StatusThread extends Thread {
private Camera camera; private Camera camera;
private CountDownLatch latch; private CountDownLatch latch;
public StatusThread(Camera camera,CountDownLatch latch){
public StatusThread(Camera camera, CountDownLatch latch) {
this.camera = camera; this.camera = camera;
this.latch = latch; this.latch = latch;
} }
@Override @Override
public void run() { public void run() {
try { try {
Boolean ok = false; Boolean ok = false;
if(configProperties.getCameraConfig().getCameraType() == ConfigProperties.HIK_CAMERA){ if (configProperties.getCameraConfig().getCameraType() == ConfigProperties.HIK_CAMERA) {
ok = HikLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId()).intValue()); ok = HikLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId()).intValue());
}else { } else {
ok = JoywareLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId())); ok = JoywareLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId()));
} }
if(ok){ if (ok) {
camera.setStatus("连接正常"); camera.setStatus("连接正常");
}else { } else {
CameraConnMap.disConn(camera.getId()); //CameraConnMap.disConn(camera.getId());
camera.setStatus("未连接"); camera.setStatus("未连接");
} }
}catch (Exception e){ } catch (Exception e) {
camera.setStatus("未连接"); camera.setStatus("未连接");
}finally { } finally {
latch.countDown(); latch.countDown();
} }
} }
} }
public Camera detail(Integer id){ public Camera detail(Integer id) {
return cameraMapper.selectById(id); return cameraMapper.selectById(id);
} }
public List<Camera> allCameras(){ public List<Camera> allCameras() {
return cameraMapper.selectByMap(new HashMap<>()); return cameraMapper.selectByMap(new HashMap<>());
} }
/** /**
* HD01 - HD05 * HD01 - HD05
*
* @return * @return
*/ */
public List<Camera> allCameras1(){ public List<Camera> allCameras1() {
//Integer num = configProperties.getVideoStyleConfig().getVideoStyleRow() *configProperties.getVideoStyleConfig().getVideoStyleColumn(); //Integer num = configProperties.getVideoStyleConfig().getVideoStyleRow() *configProperties.getVideoStyleConfig().getVideoStyleColumn();
Integer count = cameraMapper.selectCount(new QueryWrapper<Camera>()); Integer count = cameraMapper.selectCount(new QueryWrapper<Camera>());
List<Camera> cameras = cameraMapper.selectList(new QueryWrapper<Camera>().last("limit "+8)); List<Camera> cameras = cameraMapper.selectList(new QueryWrapper<Camera>().last("limit " + 8));
return cameras; return cameras;
} }
public List<Camera> allCameras2(){ public List<Camera> allCameras2() {
Integer num = configProperties.getVideoStyleConfig().getVideoStyleRow() *configProperties.getVideoStyleConfig().getVideoStyleColumn(); Integer num = configProperties.getVideoStyleConfig().getVideoStyleRow() * configProperties.getVideoStyleConfig().getVideoStyleColumn();
List<Camera> cameras = cameraMapper.selectList(new QueryWrapper<Camera>().last("limit 0,4")); List<Camera> cameras = cameraMapper.selectList(new QueryWrapper<Camera>().last("limit 0,4"));
return cameras; return cameras;
} }
public List<Camera> allCameras3(){ public List<Camera> allCameras3() {
Integer num = configProperties.getVideoStyleConfig().getVideoStyleRow() *configProperties.getVideoStyleConfig().getVideoStyleColumn(); Integer num = configProperties.getVideoStyleConfig().getVideoStyleRow() * configProperties.getVideoStyleConfig().getVideoStyleColumn();
List<Camera> cameras = cameraMapper.selectList(new QueryWrapper<Camera>().last("limit 4,4")); List<Camera> cameras = cameraMapper.selectList(new QueryWrapper<Camera>().last("limit 4,4"));
return cameras; return cameras;
@ -244,6 +247,7 @@ public class CameraService {
/** /**
* io * io
*
* @param cameraId * @param cameraId
* @return * @return
*/ */
@ -255,11 +259,12 @@ public class CameraService {
/** /**
* *
* synchronized ptzId * synchronized ptzId
*
* @param IOId * @param IOId
* @param cameraId * @param cameraId
*/ */
@CacheEvict(value = "ptz",key = "#cameraId+'-'+#code") @CacheEvict(value = "ptz", key = "#cameraId+'-'+#code")
public synchronized Integer ptz(Integer IOId, Integer cameraId, String name,Integer type,String code) { public synchronized Integer ptz(Integer IOId, Integer cameraId, String name, Integer type, String code) {
Camera camera = cameraMapper.selectById(cameraId); Camera camera = cameraMapper.selectById(cameraId);
Assert.notNull(camera, "球机不存在"); Assert.notNull(camera, "球机不存在");
CameraIO cameraIO = null; CameraIO cameraIO = null;
@ -275,11 +280,11 @@ public class CameraService {
cameraIO.setName(name); cameraIO.setName(name);
cameraIO.setPtzId(ptzId); cameraIO.setPtzId(ptzId);
cameraIO.setCode(code); cameraIO.setCode(code);
conver(cameraIO,0); conver(cameraIO, 0);
try { try {
ioMapper.insert(cameraIO); ioMapper.insert(cameraIO);
}catch (DuplicateKeyException e){ } catch (DuplicateKeyException e) {
Assert.isTrue(false,"code已存在:"+code); Assert.isTrue(false, "code已存在:" + code);
} }
camera.setPtzId(ptzId); camera.setPtzId(ptzId);
cameraMapper.updateById(camera); cameraMapper.updateById(camera);
@ -290,75 +295,67 @@ public class CameraService {
//将ptzId赋值为旧的不能用新的 //将ptzId赋值为旧的不能用新的
ptzId = cameraIO.getPtzId(); ptzId = cameraIO.getPtzId();
cameraIO.setUpdateTime(LocalDateTime.now()); cameraIO.setUpdateTime(LocalDateTime.now());
conver(cameraIO,type); conver(cameraIO, type);
ioMapper.updateById(cameraIO); ioMapper.updateById(cameraIO);
} }
boolean ok = cameraControlModule.connectStatus(cameraId); boolean ok = cameraControlModule.connectStatus(cameraId);
if(!ok){ if (!ok) {
} }
cameraControlModule.ptz(ptzId,cameraIO.getName(),cameraId); cameraControlModule.ptz(ptzId, cameraIO.getName(), cameraId);
log.info("设置 预置点 球机ID:{},预置点ID:{}", cameraId, ptzId); log.info("设置 预置点 球机ID:{},预置点ID:{}", cameraId, ptzId);
return cameraIO.getId(); return cameraIO.getId();
} }
/** /**
* codecaameraId使 * codecaameraId使
*
* @param code * @param code
* @param cameraId * @param cameraId
* @return * @return
*/ */
@Cacheable(value = "ptz",key = "#cameraId+'-'+#code") @Cacheable(value = "ptz", key = "#cameraId+'-'+#code")
public Integer getPtzIdByCodeAndCameraId(String code,Integer cameraId){ public Integer getPtzIdByCodeAndCameraId(String code, Integer cameraId) {
CameraIO cameraIO = ioMapper.getByCodeAndCameraId(code,cameraId); CameraIO cameraIO = ioMapper.getByCodeAndCameraId(code, cameraId);
if(cameraIO != null){ if (cameraIO != null) {
return cameraIO.getPtzId(); return cameraIO.getPtzId();
} }
return null; return null;
} }
public Integer getPtzId(Integer ioId){ public Integer getPtzId(Integer ioId) {
CameraIO cameraIO = ioMapper.selectById(ioId); CameraIO cameraIO = ioMapper.selectById(ioId);
Assert.notNull(cameraIO,"IO配置不存在"); Assert.notNull(cameraIO, "IO配置不存在");
return cameraIO.getPtzId(); return cameraIO.getPtzId();
} }
private void conver(CameraIO cameraIO,Integer type){ private void conver(CameraIO cameraIO, Integer type) {
if(type == 0){ if (type == 0) {
cameraIO.setPosition("OK"); cameraIO.setPosition("OK");
}else if(type == 1){ } else if (type == 1) {
cameraIO.setFocusing("OK"); cameraIO.setFocusing("OK");
}else if(type == 2){ } else if (type == 2) {
cameraIO.setMultiple("OK"); cameraIO.setMultiple("OK");
}else if(type == 3){ } else if (type == 3) {
cameraIO.setAperture("OK"); cameraIO.setAperture("OK");
} }
} }
public void cameraConnectStatus(Integer cameraId){ public void cameraConnect(Integer cameraId) {
Boolean ok = cameraControlModule.connectStatus(cameraId);
if(!ok){
log.error("camera unconnected,cameraId:{}",cameraId);
Camera camera = cameraMapper.selectById(cameraId);
cameraLogin(camera);
}
}
public void cameraConnect(Integer cameraId){
log.error("camera unconnected,cameraId:{}",cameraId); log.error("camera unconnected,cameraId:{}", cameraId);
Camera camera = cameraMapper.selectById(cameraId); Camera camera = cameraMapper.selectById(cameraId);
cameraLogin(camera); cameraLogin(camera);
} }
public void cameraLogin(Camera camera){ public void cameraLogin(Camera camera) {
synchronized (camera.getId().toString().intern()){ synchronized (camera.getId().toString().intern()) {
NetSDKLib.LLong lLong = cameraControlLoginModule.login(camera.getId(),camera.getIp(),camera.getPort(),camera.getUser(),camera.getPassword()); NetSDKLib.LLong lLong = cameraControlLoginModule.login(camera.getId(), camera.getIp(), camera.getPort(), camera.getUser(), camera.getPassword());
if(lLong != null){ if (lLong != null) {
log.info("camera login success,cameraId:{},ip:{}",camera.getId(),camera.getIp()); log.info("camera login success,cameraId:{},ip:{}", camera.getId(), camera.getIp());
CameraConnMap.conn(camera.getId(),lLong); CameraConnMap.conn(camera.getId(), lLong);
} }
} }
} }

Loading…
Cancel
Save