Commit 2bd8fbde authored by gaoyingwei's avatar gaoyingwei

修改连续抓拍图片

parent f62b2389
......@@ -6,6 +6,7 @@ import org.rcisoft.integration.video.Service.IDaHuaVideoService;
import org.rcisoft.integration.video.common.VideoDeviceHandel;
import org.rcisoft.integration.video.config.CapturePicCallBack;
import org.rcisoft.integration.video.config.DaHuaVideoInitConfig;
import org.rcisoft.integration.video.lib.NetSDKLib;
import org.rcisoft.integration.video.utils.CapturePictureUtils;
import org.rcisoft.sys.doorreportdata.entity.DoorReportData;
import org.rcisoft.sys.doorvideodevice.entity.DoorVideoDevice;
......@@ -18,6 +19,9 @@ import org.springframework.transaction.annotation.Transactional;
import java.io.File;
import java.util.Date;
import java.util.concurrent.TimeUnit;
import static java.lang.Thread.sleep;
/**
* 大华视频监控设备服务
......@@ -48,7 +52,7 @@ public class DahuaVideoServiceImpl implements IDaHuaVideoService {
VideoDeviceHandel handel = null;
if(!DaHuaVideoInitConfig.videoDeviceMap.containsKey(0L)){
String deviceIp="192.168.1.199";
String deviceIp="192.168.42.225";
int devicePort = 37777;
String deviceAccount = "admin";
String deviceSign = "admin123";
......@@ -59,7 +63,7 @@ public class DahuaVideoServiceImpl implements IDaHuaVideoService {
}else{
handel = DaHuaVideoInitConfig.videoDeviceMap.get(0l);
if(handel.isLoginStatus()){
String deviceIp="192.168.1.199";
String deviceIp="192.168.42.225";
int devicePort = 37777;
String deviceAccount = "admin";
String deviceSign = "admin123";
......@@ -131,7 +135,20 @@ public class DahuaVideoServiceImpl implements IDaHuaVideoService {
String picSavePath ="VIDEOPIC"+File.separator+ CyDateUtil.getSimpleDate("yyyyMMdd", new Date());
CapturePicCallBack callBack = new CapturePicCallBack(basePath,picSavePath,reportData);
CapturePictureUtils.setSnapRevCallBack(callBack,null);
boolean picture = CapturePictureUtils.remoteCapturePicture(handel.getDeviceLoginHandle(), 0);
boolean picture = CapturePictureUtils.timerCapturePicture(handel.getDeviceLoginHandle(), 0);
NetSDKLib.LLong llong = handel.getDeviceLoginHandle();
//异步
new Thread(new Runnable(){
@Override
public void run() {
try {
TimeUnit.SECONDS.sleep(3);
CapturePictureUtils.stopCapturePicture(llong, 0);
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
return picture;
}
}
......@@ -5,6 +5,7 @@ import cn.hutool.core.util.IdUtil;
import com.alibaba.fastjson.JSONObject;
import com.sun.jna.Pointer;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.rcisoft.integration.video.lib.NetSDKLib;
import org.rcisoft.integration.video.utils.SpringBeanUtils;
import org.rcisoft.sys.doorreportdata.entity.DoorReportData;
......@@ -61,6 +62,7 @@ public class CapturePicCallBack implements NetSDKLib.fSnapRev{
public void invoke(NetSDKLib.LLong lLoginID, Pointer pBuf, int RevLen, int EncodeType, int CmdSerial, Pointer dwUser) {
BufferedImage bufferedImage = null;
if(pBuf != null && RevLen > 0) {
log.error("抓图回调函数:"+lLoginID +" - "+pBuf.toString() +" - "+RevLen +" - "+EncodeType +" - "+CmdSerial);
String savePicPath =basePath+File.separator+ savePath;
String picFileName = IdUtil.simpleUUID()+".JPG";
if(!FileUtil.exist(savePicPath)){
......@@ -79,7 +81,13 @@ public class CapturePicCallBack implements NetSDKLib.fSnapRev{
String picRelativePath = savePath+File.separator+picFileName;
picRelativePath = picRelativePath.replaceAll("\\\\","/");
//转换文件的路径,从存储路径转换到访问路径
reportData.setCapturePic(picRelativePath);
DoorReportData data = doorReportDataService.findById(Long.valueOf(reportData.getBusinessId()));
String pic = null;
if (StringUtils.isNotBlank(data.getCapturePic())){
pic = data.getCapturePic() + "," + picRelativePath;
} else
pic = picRelativePath;
reportData.setCapturePic(pic);
reportData.setCaptureTime(new Date());
doorReportDataService.merge(reportData);
} catch (IOException e) {
......
......@@ -38,7 +38,7 @@ public class CapturePictureUtils {
* 定时抓图
*/
public static boolean timerCapturePicture(NetSDKLib.LLong m_hLoginHandle,int chn) {
return snapPicture(m_hLoginHandle,chn, 1, 2);
return snapPicture(m_hLoginHandle,chn, 1, 1);
}
/**
......
......@@ -11,6 +11,7 @@ import org.rcisoft.core.entity.CyIdNotDataEntity;
import org.springframework.data.annotation.Transient;
import java.util.Date;
import java.util.List;
/**
* Created with cy on 2022年12月23日 下午2:04:50.
......@@ -142,5 +143,12 @@ public class DoorDeviceInfo extends CyIdIncreEntity<DoorDeviceInfo> {
@TableField(exist = false)
private String dataVal;
/**
* 抓拍图像list
*/
@Transient
@TableField(exist = false)
private List<String> capturePicList;
}
......@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.rcisoft.core.util.CyUserUtil;
import org.rcisoft.core.aop.CyPageUtilAsp;
import org.rcisoft.core.model.CyPersistModel;
......@@ -21,6 +22,7 @@ import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.rcisoft.core.model.CyPageInfo;
import java.util.Arrays;
import java.util.List;
import lombok.extern.slf4j.Slf4j;
......@@ -100,7 +102,13 @@ public class DoorDeviceInfoServiceImpl extends ServiceImpl<DoorDeviceInfoReposit
@Override
public IPage<DoorDeviceInfo> findAllByPagination(CyPageInfo<DoorDeviceInfo> paginationUtility,
DoorDeviceInfo doorDeviceInfo) {
return baseMapper.queryDoorDeviceInfosPaged(paginationUtility, doorDeviceInfo);
IPage<DoorDeviceInfo> list = baseMapper.queryDoorDeviceInfosPaged(paginationUtility, doorDeviceInfo);
for (DoorDeviceInfo record : list.getRecords()) {
if (StringUtils.isNotBlank(record.getCapturePic())){
record.setCapturePicList(Arrays.stream(record.getCapturePic().split(",")).toList());
}
}
return list;
}
......
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