球机IO
parent
02ace2769a
commit
4e0ef0482a
@ -0,0 +1,24 @@
|
||||
package com.zhehekeji.web.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
@TableName("camera_io")
|
||||
public class CameraIO {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
private Integer cameraId;
|
||||
|
||||
private String name;
|
||||
|
||||
private Integer ptzId;
|
||||
|
||||
private LocalDateTime updateTime;
|
||||
}
|
||||
@ -0,0 +1,45 @@
|
||||
package com.zhehekeji.web.lib;
|
||||
|
||||
import com.sun.jna.Pointer;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
@Slf4j
|
||||
public class CallBack {
|
||||
|
||||
/**
|
||||
* 球机掉线回调
|
||||
*/
|
||||
public static class DisConnectCallBack implements NetSDKLib.fDisConnect {
|
||||
|
||||
@Override
|
||||
public void invoke(NetSDKLib.LLong lLoginID, String pchDVRIP, int nDVRPort, Pointer dwUser) {
|
||||
Integer cameraId = CameraConnMap.getCameraIdByLoginId(lLoginID);
|
||||
log.error("球机:{}掉线",cameraId);
|
||||
//CameraConnMap.disConn(cameraId);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* mp4下载回调
|
||||
*/
|
||||
public static class Mp4ReceiveCB implements NetSDKLib.fTimeDownLoadPosCallBack {
|
||||
|
||||
@Override
|
||||
public void invoke(NetSDKLib.LLong lPlayHandle, int dwTotalSize, int dwDownLoadSize, int index, NetSDKLib.NET_RECORDFILE_INFO.ByValue recordfileinfo, Pointer dwUser) {
|
||||
if(dwDownLoadSize == -1) {
|
||||
StopDownLoadThread stopDownLoadThread = new StopDownLoadThread(lPlayHandle);
|
||||
stopDownLoadThread.start();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class HaveReConnect implements NetSDKLib.fHaveReConnect {
|
||||
@Override
|
||||
public void invoke(NetSDKLib.LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
|
||||
log.info("球机:{}重连,loginId:{}",pchDVRIP,m_hLoginHandle.longValue());
|
||||
System.out.printf("ReConnect Device[%s] Port[%d]\n", pchDVRIP, nDVRPort);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,22 +0,0 @@
|
||||
package com.zhehekeji.web.lib;
|
||||
|
||||
import com.sun.jna.Pointer;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
public class DisConnectCallBack implements NetSDKLib.fDisConnect {
|
||||
|
||||
private Integer cameraId;
|
||||
|
||||
public DisConnectCallBack(Integer id){
|
||||
cameraId = id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invoke(NetSDKLib.LLong lLoginID, String pchDVRIP, int nDVRPort, Pointer dwUser) {
|
||||
log.info("球机:{}掉线",cameraId);
|
||||
CameraConnMap.disConn(cameraId);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -1,16 +0,0 @@
|
||||
package com.zhehekeji.web.lib;
|
||||
|
||||
import com.sun.jna.Pointer;
|
||||
|
||||
public class Mp4ReceiveCB implements NetSDKLib.fTimeDownLoadPosCallBack {
|
||||
|
||||
@Override
|
||||
public void invoke(NetSDKLib.LLong lPlayHandle, int dwTotalSize, int dwDownLoadSize, int index, NetSDKLib.NET_RECORDFILE_INFO.ByValue recordfileinfo, Pointer dwUser) {
|
||||
System.out.println("ing.... dwDownLoadSize:"+dwDownLoadSize+" dwTotalSize:"+dwTotalSize+
|
||||
" lPlayHandle:"+lPlayHandle.longValue()+" index:"+index);
|
||||
if(dwDownLoadSize == -1) {
|
||||
System.out.println("下载结束");
|
||||
LoginModule.netsdk.CLIENT_StopDownload(lPlayHandle);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
package com.zhehekeji.web.lib;
|
||||
|
||||
public class StopDownLoadThread extends Thread {
|
||||
|
||||
private NetSDKLib.LLong lPlayHandle;
|
||||
|
||||
public StopDownLoadThread(NetSDKLib.LLong lPlayHandle){
|
||||
this.lPlayHandle = lPlayHandle;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
System.out.println("下载结束"+lPlayHandle.longValue());
|
||||
LoginModule.netsdk.CLIENT_StopDownload(lPlayHandle);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,11 @@
|
||||
package com.zhehekeji.web.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.zhehekeji.web.entity.CameraIO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface CameraIOMapper extends BaseMapper<CameraIO> {
|
||||
|
||||
void batchInsert(List<CameraIO> list);
|
||||
}
|
||||
@ -0,0 +1,18 @@
|
||||
package com.zhehekeji.web.pojo.camera;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
@Data
|
||||
public class CameraSearchReq {
|
||||
|
||||
@NotNull(message = "page不能为空")
|
||||
private Integer page;
|
||||
|
||||
@NotNull(message = "size不能为空")
|
||||
private Integer size;
|
||||
|
||||
@NotNull(message = "cameraId不能为空")
|
||||
private Integer cameraId;
|
||||
}
|
||||
@ -0,0 +1,9 @@
|
||||
package com.zhehekeji.web.pojo.camera;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class IOImport {
|
||||
|
||||
private String name;
|
||||
}
|
||||
@ -0,0 +1,65 @@
|
||||
package com.zhehekeji.web.service;
|
||||
|
||||
import com.alibaba.excel.context.AnalysisContext;
|
||||
import com.alibaba.excel.event.AnalysisEventListener;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.zhehekeji.web.entity.CameraIO;
|
||||
import com.zhehekeji.web.mapper.CameraIOMapper;
|
||||
import com.zhehekeji.web.pojo.camera.IOImport;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
public class IOImportListener extends AnalysisEventListener<IOImport> {
|
||||
|
||||
private static Integer LENGTH = 5000;
|
||||
|
||||
private CameraIOMapper cameraIOMapper;
|
||||
|
||||
private Integer cameraId;
|
||||
|
||||
private List<String> names = new ArrayList<>();
|
||||
|
||||
public IOImportListener(CameraIOMapper cameraIOMapper,Integer cameraId){
|
||||
this.cameraIOMapper = cameraIOMapper;
|
||||
this.cameraId = cameraId;
|
||||
List<CameraIO> cameraIOS = cameraIOMapper.selectList(new QueryWrapper<CameraIO>().select("name").eq("camera_id",cameraId));
|
||||
if(cameraIOS.size() >0){
|
||||
this.names = cameraIOS.stream().map(CameraIO::getName).collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
|
||||
private List<CameraIO> stocks = new ArrayList<>(LENGTH);
|
||||
|
||||
@Override
|
||||
public void invoke(IOImport ioImport, AnalysisContext analysisContext) {
|
||||
if(!names.contains(ioImport.getName())){
|
||||
CameraIO cameraIO = new CameraIO();
|
||||
cameraIO.setName(ioImport.getName());
|
||||
cameraIO.setCameraId(cameraId);
|
||||
cameraIO.setUpdateTime(LocalDateTime.now());
|
||||
stocks.add(cameraIO);
|
||||
if(stocks.size() > LENGTH){
|
||||
save(stocks);
|
||||
stocks.clear();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
|
||||
save(stocks);
|
||||
log.info("导入球机IO");
|
||||
}
|
||||
|
||||
private void save(List<CameraIO> stocks) {
|
||||
if(stocks.size() > 0){
|
||||
cameraIOMapper.batchInsert(stocks);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||
<mapper namespace="com.zhehekeji.web.mapper.CameraIOMapper">
|
||||
|
||||
<insert id="batchInsert" parameterType="java.util.List">
|
||||
insert into camera_io(
|
||||
name,camera_id
|
||||
) values
|
||||
<foreach collection="list" item="item" separator=",">
|
||||
(#{item.name},#{item.cameraId})
|
||||
</foreach>
|
||||
</insert>
|
||||
</mapper>
|
||||
Loading…
Reference in New Issue