球机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